Страница 3 из 130 ПерваяПервая 123451353103 ... ПоследняяПоследняя
Показано с 21 по 30 из 1291

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

  1. #21

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    1) забавно читается, что к недостаткам относится навыки программирования и знание работы интерфейсов
    2) по поводуна этот протокол распространяются те же правила, нумерация адресов слейвов помещается в размерность байта, так что ограничение имеется, да и с мастерами тоже, всё зависит сколько клиентов может одновременно подключиться к слейву
    capzap, Вы прекрасно знаете что большинство "программистов" это электронщики, КИПовцы и выходцы из других сфер. Многие о протоколах мало чего знают, еще больше не понимают как это работает на низком уровне. Вот поэтому мы стремимся упростить и работу с контроллерами. Это поможет нам привлекать людей разного уровня подготовки с разными знаниями. Возможно этот человек не понимает в протоколах, но отличный технолог. Для него глубокие познания в программировании не так важны и писать обмен на ассемблере ему не надо.. ) С помощью шаблонов он за 2 минуты осилит всю конфигурацию и дальше будет рисовать в CFC.

    По второму замечанию акцент делался на то, что в RTU есть физические ограничения самой линии RS. Т.е. если надо подключить более 32 устройств нужен повторитель интерфейса. В TCP такого ограничения нет. Но верхний потолок действительно есть и он равен 255. При этом CODESYS крайние адреса 254, 255 не дает использовать. 0-адрес широковещательной рассылки.

    Евгений в заслуженном отпуске. Когда появится, внесем уточнения.

  2. #22
    Пользователь
    Регистрация
    10.04.2010
    Адрес
    Алтайский край,г.Рубцовск
    Сообщений
    955

    По умолчанию

    Нарисовал программу опроса как в примере
    PHP код:
    com_2(enable:=TRUE,PortNum:=3,PortBaudrate:=19200,Port_Mode:=2,Port_ModeOn:=TRUE,Port_closeon:=FALSE);//Открытие портa
        
    CASE step OF    
            0
    ://Опрос модуля МК110-4ДН4Р(1)(адресс 8)
              
    MK110_4dn_4R_inputs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=8,
                
    TimeOut:=T#500MS);
              
    IF MK110_4dn_4R_inputs1.done THEN
                
    IF MK110_4dn_4R_inputs1.wErrCode=0 THEN
                    dout1
    :=MK110_4dn_4R_inputs1.inp1;
                    
    dout2:=MK110_4dn_4R_inputs1.inp2;
                    
    dout3:=MK110_4dn_4R_inputs1.inp3;
                    
    dout4:=MK110_4dn_4R_inputs1.inp4;
              
    END_IF;
              
    MK110_4dn_4R_inputs1.Enabl:=FALSE;step:=1;
              
    END_IF
            1
    ://Запись в модуль МК110-4ДН4Р(1)(адресс 8) 
              
    MK110_4dn_4R_outs1(Handle:=com_2.HandleEnabl:=com_2.Done AND com_2.ErrCode=0Addr:=8,   
              
    out1:=din1,out2:=din2,out3:=din3,out4:=din4,TimeOut:=MK110_4dn_4R_inputs1.TimeOut);
              IF 
    MK110_4dn_4R_outs1.done  THEN
                MK110_4dn_4R_outs1
    .Enabl:=FALSE;step:=2;
              
    END_IF
            2
    ://Опрос модуля МК110-4K.4Р(адресс 16)
              
    MK110_4K_4R_inputs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=16,
                
    TimeOut:=T#500MS);
              
    IF MK110_4K_4R_inputs1.done THEN
                
    IF MK110_4K_4R_inputs1.wErrCode=0 THEN
                    dout5
    :=MK110_4K_4R_inputs1.inp1
                    
    dout6:=MK110_4K_4R_inputs1.inp2
                    
    dout7:=MK110_4K_4R_inputs1.inp3
                    
    dout8:=MK110_4K_4R_inputs1.inp4 
                
    ;END_IF
                MK110_4K_4R_inputs1
    .Enabl:=FALSE;step:=3;
              
    END_IF
            3
    ://Запись в модуль МК110-4K.4Р(адресс 16)
              
    MK110_4K_4R_outs1(Handle:=com_2.HandleEnabl:=com_2.Done AND com_2.ErrCode=0,Addr:=16,
              
    out1:=din5
              
    out2:=din6
              
    out3:=din7
              
    out4:=din8,TimeOut:=MK110_4K_4R_inputs1.TimeOut);
              IF 
    MK110_4K_4R_outs1.done  THEN
              MK110_4K_4R_outs1
    .Enabl:=FALSE;step:=4;
              
    END_IF
            4
    ://Опрос модуля МВ110-8ДФ(адресс 24)
              
    MV110_8D_inputs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=24,TimeOut:=T#500MS);
              
    IF MV110_8D_inputs1.done  THEN
                
    IF MV110_8D_inputs1.wErrCode=0 THEN
                    dout9
    :=MV110_8D_inputs1.inp1;
                    
    dout10:=MV110_8D_inputs1.inp2;
                    
    dout11:=MV110_8D_inputs1.inp3;
                    
    dout12:=MV110_8D_inputs1.inp4;
                    
    dout13:=MV110_8D_inputs1.inp5;
                    
    dout14:=MV110_8D_inputs1.inp6;
                    
    dout15:=MV110_8D_inputs1.inp7;
                    
    dout16:=MV110_8D_inputs1.inp8;
                
    END_IF
                MV110_8D_inputs1
    .Enabl:=FALSE;step:=5;
              
    END_IF
            5
    ://Опрос модуля МВ110-8А(адресс 32)
              
    MV110_8A_inputs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=32,TimeOut:=T#500MS);
              
    IF MV110_8A_inputs1.done THEN
                
    IF MV110_8A_inputs1.wErrCode=0 THEN
                    aout1
    :=MV110_8A_inputs1.inp1;
                    
    aout2:=MV110_8A_inputs1.inp2;
                    
    aout3:=MV110_8A_inputs1.inp3;
                    
    aout4:=MV110_8A_inputs1.inp4;
                    
    aout5:=MV110_8A_inputs1.inp5;
                    
    aout6:=MV110_8A_inputs1.inp6;
                    
    aout7:=MV110_8A_inputs1.inp7;
                    
    aout8:=MV110_8A_inputs1.inp8;
                
    END_IF
                MV110_8A_inputs1
    .Enabl:=FALSE;step:=6;
               
    END_IF
            6
    ://Запись в модуль МУ110-8Р(адресс 40)
              
    MY110_8R_outs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=40,TimeOut:=T#500MS,
              
    out1:=din9
              
    out2:=din10
              
    out3:=din11
              
    out4:=din12
              
    out5:=din13
              
    out6:=din14
              
    out7:=din15
              
    out8:=din16);
              IF 
    MY110_8R_outs1.done  THEN
                MY110_8R_outs1
    .Enabl:=FALSE;step:=7;
              
    END_IF
            7
    ://Чтение ТРМ202(адресс 48)
              
    TRM_202_read1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Modd:=, 
              
    Addr:=48,TimeOut:=T#500MS,ErCL:=,inp1=>aout9,inp2=>,ust1=>aout11, 
              
    ust2=>,out1=>aout10,out2=>,ges1=>aout12,ges2=>,wErrCode=>,done=>);
              IF 
    TRM_202_read1.done  THEN
                TRM_202_read1
    .Enabl:=FALSE;step:=8;
              
    END_IF
            8
    ://Запись в ТРМ202(адресс 48)
              
    TRM_202_write1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Modd:=,Addr:=48
              
    TimeOut:=TRM_202_read1.TimeOut,ust1:=ain1,ust2:=,ges1:=ain2,ges2:=,ErCL:=,wErrCode=>,done=>);
              IF 
    TRM_202_write1.done   THEN
                TRM_202_write1
    .Enabl:=FALSE;step:=9;END_IF
            9
    ://Чтение АТВ312(адресс 54)
                
    ATV312_read1(
                    
    Handle:=com_2.Handle
                    
    Enabl:=com_2.Done AND com_2.ErrCode=0
                    
    Modd:= , 
                    
    Addr:=54
                    
    TimeOut:=T#500MS, 
                    
    ErCL:= , 
                    
    status=>aout13
                    
    freg=>aout14
                    
    tok=>aout15
                    
    volt=>aout16
                    
    narab=>aout17
                    
    eror=>aout18
                    
    wErrCode=> , 
                    
    done=> );
                 IF 
    ATV312_read1.done  THEN
                ATV312_read1
    .Enabl:=FALSE;step:=10;END_IF
            10
    ://Запись в АТВ312(адресс 54)
             
    ATV312_write1(
             
    Handle:=com_2.Handle
             
    Enabl:=com_2.Done AND com_2.ErrCode=0
             
    Modd:= , 
             
    Addr:=54
             
    TimeOut:=ATV312_read1.TimeOut
             
    fr_w:=ain3
             
    st_w:=ain4
             
    ErCL:= , 
             
    wErrCode=> , 
             
    done=> );
              IF 
    ATV312_write1.done  THEN
                ATV312_write1
    .Enabl:=FALSE;step:=11;END_IF
            11
    ://Чтение МК110-4ДН4Р(2)(адресс 64)
                
    MK110_4dn_4R_inputs2(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=64,TimeOut:=T#500MS);
                
    IF MK110_4dn_4R_inputs2.done  THEN
                
    IF MK110_4dn_4R_inputs2.wErrCode=0 THEN
                    dout17
    :=MK110_4dn_4R_inputs2.inp1;
                    
    dout18:=MK110_4dn_4R_inputs2.inp2;
                    
    dout19:=MK110_4dn_4R_inputs2.inp3;
                    
    dout20:=MK110_4dn_4R_inputs2.inp4;
                
    END_IF;
            
    MK110_4dn_4R_inputs2.Enabl:=FALSE;step:=12;
            
    END_IF
            12
    ://Запись в модуль МК110-4ДН4Р(2)(адресс 64) 
            
    MK110_4dn_4R_outs2(Handle:=com_2.HandleEnabl:=com_2.Done AND com_2.ErrCode=0Addr:=64,   
            
    out1:=din17,out2:=din18,out3:=din19,out4:=din20,TimeOut:=MK110_4dn_4R_inputs2.TimeOut);
            IF 
    MK110_4dn_4R_outs2.done  THEN
                MK110_4dn_4R_outs2
    .Enabl:=FALSE;step:=0
            
    END_IF
        END_CASE 
    проходит один опрос и все встает где накосячил не пойму
    Изображения Изображения

  3. #23
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию

    Код:
    0://Опрос модуля МК110-4ДН4Р(1)(адресс 8)
              MK110_4dn_4R_inputs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=8,
                TimeOut:=T#500MS);
              IF MK110_4dn_4R_inputs1.done THEN
                IF MK110_4dn_4R_inputs1.wErrCode=0 THEN
                    dout1:=MK110_4dn_4R_inputs1.inp1;
                    dout2:=MK110_4dn_4R_inputs1.inp2;
                    dout3:=MK110_4dn_4R_inputs1.inp3;
                    dout4:=MK110_4dn_4R_inputs1.inp4;
              END_IF;
              MK110_4dn_4R_inputs1.Enabl:=FALSE;
              step:=1;
                    END_IF
    Вы присвоили что-то там входу ФБ. Но пока сам ФБ не вызван, это не имеет никакого значения. Надо делать так:

    Код:
    MK110_4dn_4R_inputs1(Enabl:=FALSE);
    Ну или так:

    Код:
    MK110_4dn_4R_inputs1.Enabl:=FALSE
    MK110_4dn_4R_inputs1();

  4. #24
    Пользователь
    Регистрация
    10.04.2010
    Адрес
    Алтайский край,г.Рубцовск
    Сообщений
    955

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Код:
    0://Опрос модуля МК110-4ДН4Р(1)(адресс 8)
              MK110_4dn_4R_inputs1(Handle:=com_2.Handle,Enabl:=com_2.Done AND com_2.ErrCode=0,Addr:=8,
                TimeOut:=T#500MS);
              IF MK110_4dn_4R_inputs1.done THEN
                IF MK110_4dn_4R_inputs1.wErrCode=0 THEN
                    dout1:=MK110_4dn_4R_inputs1.inp1;
                    dout2:=MK110_4dn_4R_inputs1.inp2;
                    dout3:=MK110_4dn_4R_inputs1.inp3;
                    dout4:=MK110_4dn_4R_inputs1.inp4;
              END_IF;
              MK110_4dn_4R_inputs1.Enabl:=FALSE;
              step:=1;
                    END_IF
    Вы присвоили что-то там входу ФБ. Но пока сам ФБ не вызван, это не имеет никакого значения. Надо делать так:

    Код:
    MK110_4dn_4R_inputs1(Enabl:=FALSE);
    Ну или так:

    Код:
    MK110_4dn_4R_inputs1.Enabl:=FALSE
    MK110_4dn_4R_inputs1();
    С вашего примера срисововал)))))))))

  5. #25

  6. #26

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Скриншот, приведите, пожалуйста, с которого срисовывали.
    Можно сделать так, чтобы с примеров копировать можно было?
    Т.е. не картинкой примеры показывать, а текстом.

  7. #27
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Можно сделать так, чтобы с примеров копировать можно было?
    Т.е. не картинкой примеры показывать, а текстом.
    Копировать текстом можно из выложенных проектов CODESYS - скриншоты снимались именно с них.

  8. #28

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Копировать текстом можно из выложенных проектов CODESYS - скриншоты снимались именно с них.
    Я прекрасно понимаю, что скриншоты снимались с codesys, и что есть отдельные файлы.
    Но вы поймите, что показывать код, с которого нельзя скопировать это ай как нехорошо.

    Гораздо удобнее будет, если прямо из документа можно будет скопировать.
    Листингов не так много.

    А польза следующая:
    1) Нашёл в документе раздел -- скопировал, работает. Открывать и ещё раз искать в "спец проекте" уже не нужно.
    2) Можно поиском найти фрагмент кода. По картинке, сами знаете, ctrl+f не работает.
    3) Шрифты будут выглядеть на порядок лучше, без замыливания, которое дают картинки. Не удивлюсь, если кто-нибудь догадается распечатать этот документ, и как "код-картинкой" будет выглядеть на печати сказать сложно. Вряд ли хорошо.
    4) Последовательность действий в духе "стр 76 Добавьте в проект объединение с именем String_Word....Рис. 4.79. Объявление переменных объединения" будет гораздо проще выполнять. Сейчас надо смотреть на картинку и перерисовывать. Если бы можно было скопировать, то было бы гораздо проще (да и ошибок меньше)

    Да, для CFC скопировать не получится, но те, кто выбрали CFC сами виноваты. А текстовые примеры очень даже можно и сделать "копируемыми".
    Последний раз редактировалось Владимир Ситников; 05.05.2016 в 10:34.

  9. #29

  10. #30

    По умолчанию

    Не проще выложить файлы проекта, дав ссылку в документе?

Страница 3 из 130 ПерваяПервая 123451353103 ... ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 14:38

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •