一、介绍
modbus tcp是用于以太网的数据帧,比如和用网口和plc通信的时候就可以选择用modbus tcp。
二、modbus tcp协议详解
1、模式
和rtu一样,master和slave模式,master是主机,slave是从机,一个总线网络只能有一个主机,多个从机,一般作为边缘网关的时候边缘网关会建一个master和底下的从通信,然后建一个slave和云平台通信
注意:Modbus服务器默认端口 502 通信端口,在Modbus客户器程序中设置任意通信端口
2、协议描述
MBAP+PDU
(1)MBAP部分
事务处理标识 :简单理解报文的序列号,每次通信之后就要加1以区别不同的通信数据报文
协议标识符 :00 00 ModbusTCP协议
长度 :接下来的数据长度,单位字节
单元标识符 :简单理解设备地址
(2)PDU部分
功能码:
(1)标准功能01~21,以下为常用标准功能
01 (0x01) 读线圈
02 (0x02) 读离散量输入
03 (0x03) 读保持寄存器
04(0x04) 读输入寄存器
05 (0x05) 写单个线圈
06 (0x06) 写单个寄存器
15 (0x0F) 写多个线圈
16 (0x10) 写多个寄存器
(2)拓展功能备用,22~64
(3)用户功能,65~72
(4)非法功能,73~119
(5)内部使用保留,120~127
(6)异常应答保留,128~255
例如读取保持寄存器:
请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)
响应:MBAP 功能码 数据长度 寄存器数据(长度:9+寄存器数量×2)
00 01 00 00 00 06 01 03 00 00 00 03
请求读取起始地址0x0000的3个寄存器
00 01 00 00 00 09 01 03 06 00 21 00 00 00 00
回复起始地址0x0000的3个寄存器的值0x21 0x00 0x00
3、通信方式
应答模式,主机发出请求,从机响应请求
主站请求:功能码+数据
从站正常响应:请求功能码+响应数据
从站异常响应:异常功能码+异常码,其中异常功能码即将请求功能码的最高有效位置1,异常码指示差错类型