1、ADU(应用数据单元):地址域+功能码+数据+差错检验
RS232/RS485 ADU = 253 + 1(服务器地址) + 2(CRC) = 256
TCP MODBUS ADU = 249+7(MBAP) = 256
2、PDU(协议数据单元,与基础通信层无关):功能码(1~255)+数据;
三种PDU:
mb_req_pdu = { function_code, request_data},其中
function_code - [1 个字节] MODBUS 功能码
request_data - [n 个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏移
量、子功能码等信息。
mb_rsp_pdu = { function_code, response_ data},其中
function_code - [1 个字节] MODBUS 功能码
response_data - [n 个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏
移量、子功能码等信息。
定义 mb_excep_rsp_pdu 为:
mb_excep_rsp_pdu = { function_code, request_data},其中
function_code - [1 个字节] MODBUS 功能码 + 0x80
exception_code - [1 个字节],在下表中定义了 MODBUS 异常码。
3、主节点以两种方式向子节点发送Modbus请求:
*单播模式,在这种模式下,一个Modbus实物处理包含2个报文:一个来自主节点的请求,一个来自子节点的应答。
*广播模式,对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址0是专门用于表示广播数据的。
4、Modbus主节点没有地址,只有子节点必须有一个地址,0为广播地址,1~47为子节点单独地址。
5、串行传输模式有RTU和ASCII两种模式。它定义了报文域的位内容在线路上的传送,所有设备必须实现RTU模式。