Modbus-TCP通讯

1、Modbus-TCP

Modbus 由 Modicon 公司于 1979 年开发,是一种工业现场总线协议。
1996 年施耐德公司推出基于
以太网 TCP/IP 的 Modbus 协议:ModbusTCP。

2、Modbus TCP 协议的使用说明

2.1、Modbus TCP 数据帧

Modbus TCP 的数据帧可分为两部分:MBAP+PDU。

2.2、MBAP 报文头

MBAP 报文的长度为 7 个字节,组成如下:

处理标识 协议标识 数据长度 单元标识符
2 字节 2 字节 2 字节 1 字节

 

内容 注释
处理标识 报文的序列号,一般每次通信之后需要加 1 用以区别不同
通信数据报文,2 个字节。
协议标识 00 00 ,2 个字节,用以表示 Modbus TCP 协议
数据长度 后续报文的数据长度,2 个字节
单元标识符 在 Modbus TCP 中,单元标识符对应于 Modbus-RTU 中的设备地址

2.3、PDU

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

功能码(编码器使用) 注释
03H 读保持寄存器
04H 读输入寄存器
06H 写单个保持寄存器
10H 写多个保持寄存器

 2.4、Modbus TCP/IP 读取编码器位置数据示例

编码器分辨率为 4096/8192:多圈分辨率为 4096,单圈分辨率为 8192。
主站发送报文(16 进制):
00 01 00 00 00 06 01 03 00 00 00 04
根据上面的协议格式从左到右依次为:
00 01 为传输标识符;
00 00 协议标识符(这里是 Modbus TCP 协议);
00 06 报文后边的字节数;
01 单元标识符 ;

03 功能码(读保持寄存器的值);
00 00 寄存器起始地址;
00 04 读取寄存器的个数 (这里读取 4 寄存器,一个寄存器 2 个字节);


从站应答报文(16 进制):
00 01 00 00 00 0B 01 03 08 00 08 D8 DA 00 46 18 DA
从左到右依次为:
00 01 为传输标识符(与请求报文一致);
00 00 协议标识符;
00 0B 报文后边的字节数(11 个字节);
01 单元标识符;
03 功能码;
08 返回数据的字节数;
00 08 为编码器当前位置数据高 16 位–00 00 寄存器的数据(8);
D8 DA 为编码器当前位置数据低 16 位–00 01 寄存器的数据(55514);
编码器当前位置数据为:8*65536+55514=579802;
00 46 为编码器当前圈数–00 02 寄存器的数据(70);
18 DA 为编码器当前单圈数–00 03 寄存器的数据(6362)。
编码器当前位置数据为:70*8192+6362=579802,与上文计算一致

3、通讯例程

3.1与西门子PLC通讯

https://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/077.html

3.2Modbus Poll通讯

ModbusPoll使用方法

error: Content is protected !!

鲁公网安备 37100402000539号

鲁ICP备2023019584号