4. MODBUS 协议解析
MODBUS 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。 该 协议 是 一个 请求/应答协议 ,采取主从通讯模式, 它描述了控制器请求访问其它设备的过程, 以及 如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 MODBUS 协议支持传统的 RS-232、RS-422、RS-48 5和以太网设备。许多工业设备,包括 PLC,DCS ,智能仪表等都在使用 MODBUS 协议作为他们之间的通讯标准。 其主要包含 MODBUS TCP 、 MODBUS RTU 与 MODBUS ASCII 三种。(1)MODBUS TCP协议
该协议是通过 以太网为通讯媒介。具体的数据格式分为两部分:MBAP(报文头)+PDU(帧结构)。
PDU(帧结构)由功能码+数据组成,数据长度由具体功能决定。功能码定义如下:
注:以下所列举内容均在三菱PLC( FX5U-32MT/ES)上测试通过,其中PLC为服务器,上位机为客户端。(1)线圈读取功能(01H)
样例1:读Y0-Y7,Y10-Y17
请求:12 34 00 00 00 06 01 01 00 00 00 10
响应:12 34 00 00 00 05 01 01 02 55 00
(2)输入读取功能(02H)
样例2:读X0-X7
请求:11 22 00 00 00 06 01 02 00 00 00 08
响应:11 22 00 00 00 04 01 02 01 00
(3)保持寄存器读取功能(03H)
样例3:读D0 - D3 (D0=1,D1=2,D2=3,D3=4)
请求:FF EE 00 00 00 06 01 03 00 00 00 04
响应:FF EE 00 00 00 0B 01 03 08 00 01 00 02 00 03 00 04
(4)1线圈写入功能(05H)
样例4:将Y1设置为0N
请求:11 22 00 00 00 06 01 05 00 01 FF 00
(5)1寄存器写入功能(06H)
样例5:将D1赋值为9
请求:99 99 00 00 00 06 01 06 00 01 00 09
(6)多线圈写入功能(0FH)
样例6:将Y0、Y2置ON, Y1、Y3置OFF
请求:14 15 00 00 00 08 01 0F 00 00 00 04 01 05
响应:14 15 00 00 00 06 01 0F 00 00 00 04
(7)多寄存器写入功能(10H)
样例7:将D0,D1,D2分别赋值1,2,3
请求:25 26 00 00 00 0D 01 10 00 00 00 03 06 00 01 00 02 00 03
响应:25 26 00 00 00 06 01 10 00 00 00 03
附录:三菱 PLC (FX5U)功能及地址对应关系表