Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 22 из 22

Тема: Modbus.lib портиться команда при таймауте

  1. #21

    По умолчанию

    Работаю с библиотекой давно и проблем (у меня) с ней не было.

    Код:
    VAR
       SendModbus : MB_WR_REGS;
       ES : BOOL := FALSE;
       DataReady : BOOL;
       MBTimeOut : TIME := T#150ms; //например
       Buffer : ARRAY[0..255] OF BYTE;
    END_VAR
    
    IF NOT DataReady THEN
       ...//кладем в Buffer данные
       DataReady := TRUE;
       ES := TRUE;
    END_IF
    
    //настраиваем и открываем порт
    
    //по готовности порта, "работаем" с ним
    SendModbus(
       Enable := ES,
       Mode := MB_RTU,
       DevAddr := 1, //например
       FirstAddr := 1, //например
       Quantity := 2, //например
       ComHandle := Settings.Port,
       TimeOut := MBTimeOut,
       Buffer := Buffer);
    ES := FALSE;
    
    IF SendModbus.Complete THEN //можно еще добавить проверку на Exception
       ...//тут Ваши условия/инструкции по необходимости
       ES := TRUE;
       DataReady := FALSE;
    END_IF
    Пользуюсь кодом (когда-то позаимствованным из поста ASo и немного измененным по совету Валенка), указанным выше (пример записи в устройство, чтение аналогичное с небольшими изменениями). Полет нормальный.
    Последний раз редактировалось Spawn; 04.12.2021 в 03:57.

  2. #22

    По умолчанию

    Цитата Сообщение от Spawn Посмотреть сообщение
    Работаю с библиотекой давно и проблем (у меня) с ней не было.
    Спасибо за Ваш вариант. К сожалению он работает так же.
    Вообще, почитав исходники библиотеки, прихожу к выводу, что никакими манипуляциями вызова FB библиотеки поменять это поведение не получится. Т. к. в FB MB_UNI_IO (вызывается любым FB чтения/записи Modbus.lib) первым делом читается порт, и если там что-то есть, оно попадает в, подготовленный вами или другим FB библиотеки, буфер. Модифицировать библиотеку ни времени ни желания нет, отладка изменений займет слишком много времени, которого уже не хватает на проект в целом.
    Альтернатив выставлению таймингов с большим запасом я не вижу, но имхо такое поведение - это баг.

Страница 3 из 3 ПерваяПервая 123

Похожие темы

  1. Широковещательная команда записи MODBUS RTU на СМИ2
    от Юрий_М в разделе Панели оператора (HMI)
    Ответов: 5
    Последнее сообщение: 20.01.2021, 11:45
  2. Команда APLY
    от Тоха в разделе Сетевые технологии
    Ответов: 0
    Последнее сообщение: 15.05.2015, 06:51
  3. СМИ1, modbus-rtu, мастер. Команда 4. КАК?
    от Matysik в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 26.05.2011, 15:32
  4. ТРМ - 138 и команда 'Aply'
    от alexei73p в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 24.04.2009, 20:10
  5. групповая команда для мдвв
    от Радик в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 27.12.2007, 07:48

Ваши права

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