Примеры кадров протокола Modbus
На рис. 16 рассмотрен запрос данных от Master на чтение в устройстве по адресу 6 (Slave Address =06h) трех регистров с 40108 по 40110 (AE41h-AE43h). Особенность указания номеров регистров в Modbus в том, что к указанным в сообщениях значениям в зависимости от кода команды добавляется смещение адреса (в нашем случае 40001). Так для данного запроса в стартовом адресе будет указано 107 (Starting Address Lo = 6Вh, Starting Address Hi=00h). Адрес приходится записывать по частям, поскольку каждое поле содержит только 8 бит, а для указания максимально возможного допустимого адреса без смещения (9998) потребуется 16 бит (270Eh). Запрашиваемое число регистров (0003h) также указывается в виде двух чисел (No. of Registers Lo=03h; No. of Registers Hi=00h). Значение контрольной секции кадра в примере не показано. Ответ, полученный от подчиненного устройства, содержит следующие сведения. Запрос принят и исполнен без обнаруженных ошибок (Function=03h); всего передается содержимое 6-ти байт данных (по два байта на каждый запрошенный регистр (Byte Count=06h); значения запрошенных регистров (Data Нi, Data Lo) составляют: 022Bh, 0000h и 0063h.
|
|
Рис. 16. Кадры протокола Modbus при запросе на чтение регистров
На рис. 17 приведен пример установки значения FFh в 40002-й регистр подчиненного устройства (смещение 40001) с адресом 01h. Кадры Master и Slave при успешном выполнении данной операции будут совпадать. Значения полей указано в шестнадцатеричном коде.
Slave adress | Function | Starting Addr Hi | Starting Addr Lo | Data Hi | Data Lo | Error Check | |
Адрес подчиненного | Номер функции | Адрес ст байта | Адрес мл байта | Данные ст.байта | Данные мл.байта | CRC мл.байт | CRC ст.байт |
FF | FF | D9 | ВA |
Рис. 17. Кадр протокола Modbus при установке значения в один регистр
Пример запроса состояния 37-ми дискретных выходов (с 20 по 56) в устройстве 17 приведен на рис.18. Значение каждого выхода представляется одним битом. В кадре ответа они группируются в байты. Если возвращаемое количество выходов не кратно восьми, то оставшиеся биты в последнем байте сообщения будут установлены в 0. Счетчик байт содержит количество байт передаваемых в поле данных (5).
|
|
Рис. 18. Кадры Modbus при чтении группы дискретных данных
Дата добавления: 2019-09-30; просмотров: 550;