Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: ПЛК 63 modbus RTU

  1. #1

    Question ПЛК 63 modbus RTU

    Здравствуйте.
    Имеется плк 63. Нужно настроить его работу в сети modbus rtu как slave или master.
    Можно ли это сделать каким либо образом настроить через конфигурацию?
    Скачивал библиотеку modbus.lib и примеры к ней.
    При запуске примеров появляется ошибка - время выполнения цикла очень большое.
    Это происходит из-за строчек

    IF enabl = FALSE THEN
    enabl := TRUE;
    END_IF

    Так же не могу разобраться с переменными для настройки com порта

    Settings.Port:=com_num; (*номер COM-порта*)
    Settings.dwBaudRate:=9600; (*скорость*)
    Settings.byParity:=0;
    Settings.dwTimeout:=0;
    Settings.byStopBits:=0;
    Settings.dwBufferSize:=0;
    Settings.dwScan:=0;
    Что такое номер Com порта, и почему все остальные значения равны нулю? особенно размер буфера..

    на всякий случай, вложу файл с примером проги..
    Вложения Вложения

  2. #2
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Для работы ПЛК63 в качестве ведомого библиотека не нужна. Достаточно правильно объявить необходимые переменные и настроить порт в конфигурации. Гоу ту руководство по программированию для ПЛК63.

  3. #3

    По умолчанию

    не знаю в чем дело, но не выходит читать параметры по RS232 из конфигурации ПЛК63 в качестве ведомого! Вы это точно делали?

  4. #4

    По умолчанию

    ни в настройках по программированию, ни в руководстве по эксплуатации нигде не написано modbus RTU или ASCII.
    надстроил порт в конфигурации и несколько переменных... связи пока нету

  5. #5

    По умолчанию

    RTU или ASCII он, оказывается, сам определяет...

    "Значение адреса прибора зависит от установленного пара-
    метра «Длина адреса» (см. ниже) – при 8-битной адресации значение пара-
    метра «Адрес прибора» может принимать значение от 1 до 255, а при 11-
    битной адресации – от 1 до 2047. Для протокола Modbus данный параметр не
    действует
    ."
    И как установить адрес для протокола modbus ?

  6. #6
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Цитата Сообщение от Alex12345 Посмотреть сообщение
    RTU или ASCII он, оказывается, сам определяет...

    "Значение адреса прибора зависит от установленного пара-
    метра «Длина адреса» (см. ниже) – при 8-битной адресации значение пара-
    метра «Адрес прибора» может принимать значение от 1 до 255, а при 11-
    битной адресации – от 1 до 2047. Для протокола Modbus данный параметр не
    действует
    ."
    И как установить адрес для протокола modbus ?
    Длина адреса - 8, сам адрес - по ссылке г. Валенка.

  7. #7

    По умолчанию

    Про библиотеку тут уже терто-перетерто много раз! Ищите на форуме, даже примеров куча.

  8. #8

    По умолчанию

    Здравствуйте! Имеется в наличии ПЛК63 и модуль МВ110-8АС. Соединены по Modbus_RTU. Чтение параметров проходит, а вот запись нет.
    Возможно ошибка в том что запись и чтение организовал через разные массивы.
    В тексте программы:параметр (WORD) пытаюсь записать и читаю два параметра(Real и WORD( который пытаюсь записать)). Чтение происходит, а вот изменения нет.

    PROGRAM modbus_read_and_write

    VAR_INPUT

    END_VAR

    VAR_OUTPUT

    END_VAR

    VAR
    RD_REGS:MB_RD_INP_REGS;
    send_modbus: MB_WR_REGS;
    RD_REGS1:MB_RD_INP_REGS;

    Buffer: ARRAY[0..255] OF BYTE;
    RD_Buffer: ARRAY[0..255] OF BYTE;

    COM_SERVICE1: COM_SERVICE;
    cmpl : BOOL;
    port_opened: BYTE := 0;
    Settings:COMSETTINGS;
    enabl : BOOL;
    err : INT;
    TimeOut: TIME:=T#50ms;
    ptr_D :POINTER TO BYTE;
    ptr_f2 :POINTER TO BYTE;
    DataSize :WORD;
    WORK_IDENT :BYTE;
    INP_WORD :WORD;
    f1:WORD:=2;
    TEMP:REAL;
    out1 :REAL;
    com_num :BYTE;


    END_VAR


    IF port_opened=0 THEN
    Settings.Port:=com_num;
    Settings.dwBaudRate:=9600;
    Settings.byParity:=0;
    Settings.dwTimeout:=0;
    Settings.byStopBits:=0;
    Settings.dwBufferSize:=0;
    Settings.dwScan:=0;
    END_IF

    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );


    IF COM_SERVICE1.ready THEN
    port_opened:=2;
    END_IF
    IF port_opened=2 THEN

    CASE WORK_IDENT OF
    0:

    RD_REGS(
    Enable:=enabl ,
    Mode:=MB_RTU ,
    DevAddr:=32 ,
    FirstAddr:=288 ,
    Quantity:=1,
    ComHandle:=Settings.Port ,
    TimeOut:=TimeOut ,
    Buffer:=RD_Buffer ,
    Complete=>cmpl ,
    Exception=>err ,
    ByteCnt=>DataSize );


    IF cmpl AND err=0 THEN
    ptr_D:=ADR(TEMP);
    ptr_D^:=RD_Buffer[3];
    ptr_D:=ptr_D+1;
    ptr_D^:=RD_Buffer[2];
    ptr_D:=ptr_D+1;
    ptr_D^:=RD_Buffer[1];
    ptr_D:=ptr_D+1;
    ptr_D^:=RD_Buffer[0];
    END_IF
    IF cmpl THEN WORK_IDENT:=1;END_IF

    1:

    RD_REGS1(
    Enable:=enabl ,
    Mode:=MB_RTU ,
    DevAddr:=32 ,
    FirstAddr:=0 ,
    Quantity:=1,
    ComHandle:=Settings.Port ,
    TimeOut:=TimeOut ,
    Buffer:=RD_Buffer ,
    Complete=>cmpl ,
    Exception=>err ,
    ByteCnt=>DataSize );


    IF cmpl AND err=0 THEN
    out1:=BYTE_TO_WORD(RD_Buffer[1]) OR SHL(BYTE_TO_WORD(RD_Buffer[0]),8);
    END_IF
    IF cmpl THEN WORK_IDENT:=2;END_IF

    2:

    IF cmpl AND err=0 THEN

    Buffer[3] := DWORD_TO_BYTE(f1);
    Buffer[2] := DWORD_TO_BYTE( SHR(f1,8));
    Buffer[1] := DWORD_TO_BYTE( SHR(f1,16));
    Buffer[0] := DWORD_TO_BYTE( SHR(f1,24));

    END_IF

    send_modbus(
    Enable:=enabl ,
    Mode:=MB_RTU ,
    DevAddr:=32 ,
    FirstAddr:=0 ,
    Quantity:=1,
    ComHandle:=Settings.Port ,
    TimeOut:=TimeOut ,
    Buffer:=Buffer ,
    Complete=>cmpl ,
    Exception=>err,
    RegCnt=>DataSize);

    WORK_IDENT:=0;

    END_CASE
    END_IF


    IF enabl = FALSE THEN
    enabl := TRUE;
    END_IF

    IF err <> 0 THEN
    enabl := FALSE;
    END_IF


  9. #9
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,642

    По умолчанию

    ПЛК63/73 не поддерживает групповые запросы по объявленным адресам переменных, используйте служебную копию переменных, она поддерживает групповые запросы.

    Добейтесь чтения одной переменной для начала.

    ох блин какая старинная тема...

  10. #10

    По умолчанию

    Первый раз программирую ПЛК73. Не смог найти "служебная копия переменных". Расскажите пожалуйста про неё или где можно прочитать?

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ПЛК-63 и ОВЕН ОРС modbus
    от Gosha в разделе ПЛК63/73
    Ответов: 6
    Последнее сообщение: 07.04.2010, 09:30
  2. ПЛК 63 + овен OPC modbus
    от top_hill в разделе ПЛК63/73
    Ответов: 3
    Последнее сообщение: 18.03.2010, 13:33
  3. ПЛК 63 modbus
    от Pomar в разделе ПЛК63/73
    Ответов: 2
    Последнее сообщение: 14.02.2010, 21:48
  4. ПЛК 110 и ModBus RTU
    от Kraft в разделе Подбор Оборудования
    Ответов: 1
    Последнее сообщение: 24.09.2009, 10:20
  5. ПЛК+Modbus RTU
    от FigoNEt в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.09.2008, 17:46

Ваши права

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