Russian Qt Forum

Программирование => Общий => Тема начата: sergek от Март 28, 2015, 14:32



Название: Транзакция Modbus RTU
Отправлено: sergek от Март 28, 2015, 14:32
Коллеги, существует ли принципиальная возможность при использовании протокола Modbus RTU связать ответный кадр с запросом? В Modbus TCP/IP это делается легко с помощью идентификатора транзакции, который содержится в заголовке фрейма.

Можно, конечно, использовать блокирующий режим, и не отправлять следующий запрос, пока не получен ответ. Но хочется ответы читать в асинхронном режиме.
Кроме того, что использовать для идентификации адрес устройства и код функции, больше ничего в голову не приходит. Но это не решает проблему, если есть несколько запросов к одному устройству. Как эту проблему решают SCADA?


Название: Re: Транзакция Modbus RTU
Отправлено: lit-uriy от Октябрь 24, 2018, 10:25
Хоть и поздно.
"Modbus on serial line"
подразумевает только синхронный режим (запрос-ответ, запрос-ответ).
Т.е. мастер не может послать запрос одному устройству и следом ещё один запрос, т.к. первое устройство может уже начать отвечать и возникнет конфликт (электрический).


Название: Re: Транзакция Modbus RTU
Отправлено: sergek от Октябрь 24, 2018, 10:34
Спасибо, уже давно во всем разобрался и все сделал)) Даже есть серийные образцы.


Название: Re: Транзакция Modbus RTU
Отправлено: kuzulis от Октябрь 24, 2018, 12:31
Если хочется асинхронщины, милости просим в глубины DNP3, IEC-101/103/104


Название: Re: Транзакция Modbus RTU
Отправлено: sergek от Октябрь 24, 2018, 22:53
Так глубоко не нырял. Не встречал устройств с таким интерфейсом.