Modbus Tcp

Modbus数据帧

Modbus Tcp_第1张图片

MBAP报文头

MBAP为报文头,长度为7字节

长度 描述
事务处理标识符 2字节 可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文
协议标识符 2字节 00 00表示ModbusTCP协议
长度 2字节 表示接下来的数据长度,单位为字节
单元表示符 1字节 串行链路或其它总线上连接的远程从站地址

帧结构PDU

PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。

功能码

modbus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器。

线圈:PLC的输出位,开关量,在MODBUS中可读可写
离散量:PLC的输入位,开关量,在MODBUS中只读
输入寄存器:PLC中只能从模拟量输入端改变的寄存器,在MODBUS中只读
保持寄存器:PLC中用于输出模拟量信号的寄存器,在MODBUS中可读可写
根据对象的不同,modbus的功能码有:

0x01:读线圈
0x05:写单个线圈
0x0F:写多个线圈
0x02:读离散量输入
0x04:读输入寄存器
0x03:读保持寄存器
0x06:写单个保持寄存器
0x10:写多个保持寄存器

示例

读取从站保持寄存器40001-40024的值

查询命令:
0, 30, 0, 0, 0, 6, 6, 3, 0, 1, 0, 24

0, 30, 事务处理标识符 2字节
0, 0, 协议标识符 2字节
0, 6, 长度 2字节
6, 从站地址 1字节
3, 功能码 1字节 0x03:读保持寄存器
0, 1, 起始地址,高位在前 2字节
0, 24 读寄存器数量 高位在前 2字节

响应命令:
0, 30, 0, 0, 0, 51, 6, 3, 48, 144, 194, 252, 65, 89, 114, 59, 66, 187, 187, 121, 66, 123, 148, 153, 66, 205, 12, 177, 66, 7, 250, 192, 66, 205, 204, 199, 66, 79, 219, 196, 66, 20, 110, 184, 66, 113, 189, 163, 66, 92, 207, 136, 66, 167, 141, 84, 66

你可能感兴趣的:(协议)