PDA

Просмотр полной версии : ПЛК73-L Modbus время тишины



Ivan.Koryshkin
16.08.2018, 18:41
Доброе время суток, в проекте использую ПЛК73-L для управления другим устройством через протокол modbus. Собственно проблема в том что контроллер после запроса удерживает линию, тем самым "срезая" первые биты ответа от второго устройства. В разделе "Конфигурация" пробовал менять значение "Задержка ответа" ноль реакции. Пробовал прописывать в программе через COMSETTINGS параметр dwTimeout результат тот же. Подскажите в какую сторону копать

IVM
16.08.2018, 20:36
Доброе время суток, в проекте использую ПЛК73-L для управления другим устройством через протокол modbus. Собственно проблема в том что контроллер после запроса удерживает линию, тем самым "срезая" первые биты ответа от второго устройства. В разделе "Конфигурация" пробовал менять значение "Задержка ответа" ноль реакции. Пробовал прописывать в программе через COMSETTINGS параметр dwTimeout результат тот же. Подскажите в какую сторону копать

Master сети и не должен сразу после запроса отпускать шину. Slave перед ответом должен выдержать паузу. Если в Slave невозможно ничего поправить, то без библиотеки для ПЛК тут не обойтись.

melky
17.08.2018, 09:55
В ПЛК63/73 конфигурация только для slave режима, на библиотеки мастера оказывать влияние и не должны в принципе.

Dmitriy422
17.08.2018, 13:16
Попробуйте перейти на бОльшую скорость (если есть возможность). И посмотрите, что будет (осциллографом).
Если не секрет, кого опрашиваете?

Ivan.Koryshkin
17.08.2018, 15:35
Попробуйте перейти на бОльшую скорость (если есть возможность). И посмотрите, что будет (осциллографом).
Если не секрет, кого опрашиваете?

Перейти на другую скорость, к сожалению, нет возможности, slave-устройство отвечает только на одной заранее установленной производителем. Slave-устройство блок управления ДГУ

Ivan.Koryshkin
17.08.2018, 15:41
Master сети и не должен сразу после запроса отпускать шину. Slave перед ответом должен выдержать паузу. Если в Slave невозможно ничего поправить, то без библиотеки для ПЛК тут не обойтись.
Спасибо за ответ, я правильно понимаю что стандартная библиотека в Codesys для работы с Modbus основана на методах библиотеки SysLibCom?

ASo
17.08.2018, 15:48
Можно сказать и так. Она использует вызовы этой библиотеки для отправки приема данных.

murdemon
17.08.2018, 16:19
Тоже сталкивался с этой проблемой, при прямой работе с портом. SyslibCom ПЛК100. Протокол не модбас. Так и не решил. На ПК - все байты принимает. А на ПЛК 1й байт все время теряет.

Екатерина Аладышева
20.08.2018, 13:53
Добрый день!

Попробуйте опросить Slave-устройство,к примеру, с помощью OPC-сервера, и посмотреть,будет ли повторяться данная ситуация.

Филоненко Владислав
20.08.2018, 14:48
При обмене по протоколу ModBus RTU конец пачки определяется паузой в передаче, строго фиксированной длины (не менее).
Если Slave отвечает ранее, чем проходит эта пауза, ответ не воспринимается ПЛК, т.к. заведомо неверен.

Величина паузы выражается в битах, так что чем выше бодрейт, тем меньше пауза в мс. Обычно такая проблема наблюдается на низких скоростях на нестандартных устройствах.

Параметр "Framing time" отвечает за (дополнительную) задержку ответа, и имеет смысл при использовании ПЛК как slave.

aRRma99
21.11.2018, 12:04
Доброе время суток, в проекте использую ПЛК73-L для управления другим устройством через протокол modbus. Собственно проблема в том что контроллер после запроса удерживает линию, тем самым "срезая" первые биты ответа от второго устройства. В разделе "Конфигурация" пробовал менять значение "Задержка ответа" ноль реакции. Пробовал прописывать в программе через COMSETTINGS параметр dwTimeout результат тот же. Подскажите в какую сторону копать

Я уже когда-то писал тут про эту проблему. Делайте следующее:
В БИБЛИОТЕКЕ OWEN MODBUS.LIB В ФБ MB_UNI_IO ЗАМЕНЯЕМ СТРОКУ 7 НА
WHILE SysComRead(ComHandle, ADR(DataBuf)+DataSize, SIZEOF(DataBuf)-DataSize, 0) <> 0 DO;
инче в случае получения ошибки таймаута FF в след пачке пойдем мусор.
Также для скорости 9600 необходимо установить значение таймера T_FRTU = ~5ms

У меня тоже были проблемы с удержанием линии и редактирование параметра T_FRTU мне помогло. Как я его подобрал тогда уже не помню. Но после этого все нормально стало.

Это фото до редактирования параметра.
39974