Modbus: различия между версиями

Нет описания правки
Строка 26: Строка 26:
Функция кодируется одним байтом и определяет, какое действие должно выполнить устройство-сервер. Значение кодов функций лежат в диапазоне от 1 до 255, причем коды от 128 до 255 зарезервированы для сообщений об ошибках со стороны устройства-сервера. Код 0 не используется. Размер блока данных может варьироваться от нуля до максимально допустимого. Если обработка запроса прошла без ошибок, то устройство-сервер возвращает пакет ADU, содержащий запрошенные данные.
Функция кодируется одним байтом и определяет, какое действие должно выполнить устройство-сервер. Значение кодов функций лежат в диапазоне от 1 до 255, причем коды от 128 до 255 зарезервированы для сообщений об ошибках со стороны устройства-сервера. Код 0 не используется. Размер блока данных может варьироваться от нуля до максимально допустимого. Если обработка запроса прошла без ошибок, то устройство-сервер возвращает пакет ADU, содержащий запрошенные данные.


<!--T:9-->
<gallery mode="packed" heights="300px">
[[File:Modbus_transaction_OK.png|700px|thumb|center|Modbus-транзакция, прошедшая без ошибок]]
File:Modbus_transaction_OK.png|700px|thumb|center|Modbus-транзакция, прошедшая без ошибок
 
File:Modbus_transaction_ERR.png|700px|thumb|center|Modbus-транзакция с ошибками
</gallery>
<!--T:10-->
<!--T:10-->
----
----
Строка 34: Строка 35:
<!--T:11-->
<!--T:11-->
При возникновении ошибки устройством возвращается код ошибки. В случае обычной транзакции код функции в ответе возвращается без изменений; в случае ошибки старший бит кода функции устанавливается в единицу (то есть ''код функции'' + 0x80)
При возникновении ошибки устройством возвращается код ошибки. В случае обычной транзакции код функции в ответе возвращается без изменений; в случае ошибки старший бит кода функции устанавливается в единицу (то есть ''код функции'' + 0x80)
<!--T:12-->
[[File:Modbus_transaction_ERR.png|700px|thumb|center|Modbus-транзакция с ошибками]]


<!--T:13-->
<!--T:13-->