公司新闻
ModbusTCP协议详解
发布时间: 2024-04-27 08:53 更新时间: 2024-11-25 08:50
【导读】【视频+图文】详解ModbusTCP协议。
AModbus TCP数据帧
ModbusTCP的数据帧可分为两部分:MBAP+PDU。(一)报文头MBAP:MBAP为报文头,长度为7字节,组成如下:请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节) 响应:MBAP 功能码 数据长度 数据(一个地址的数据为1位) 如:在从站0x01中,读取开始地址为0x0002的线圈数据,读0x0008位
00 01 00 00 00 06 01 01 00 02 00 08 回:数据长度为0x01个字节,数据为0x01,个线圈为ON,其余为OFF
00 01 00 00 00 04 01 01 01 01 请求:MBAP 功能码 输出地址H 输出地址L 输出值H 输出值L(共12字节) 响应:MBAP 功能码 输出地址H 输出地址L 输出值H 输出值L(共12字节) 如:将地址为0x0003的线圈设为ON
00 01 00 00 00 06 01 05 00 03 FF 00 回:写入成功
00 01 00 00 00 06 01 05 00 03 FF 00 请求:MBAP 功能码 起始地址H 起始地址L 输出数量H 输出数量L 字节长度 输出值H 输出值L 响应:MBAP 功能码 起始地址H 起始地址L 输出数量H 输出数量L 请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节) 响应:MBAP 功能码 数据长度 数据(长度:9+ceil(数量/8)) 如:从地址0x0000开始读0x0012个离散量输入
00 01 00 00 00 06 01 02 00 00 00 12 回:数据长度为0x03个字节,数据为0x01 04 00,表示个离散量输入和第11个离散量输入为ON,其余为OFF
00 01 00 00 00 06 01 02 03 01 04 00 请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节) 响应:MBAP 功能码 数据长度 寄存器数据(长度:9+寄存器数量×2) 如:读起始地址为0x0002,数量为0x0005的寄存器数据
00 01 00 00 00 06 01 04 00 02 00 05 回:数据长度为0x0A,个寄存器的数据为0x0c,其余为0x00
00 01 00 00 00 0D 01 04 0A 00 0C 00 00 00 00 00 00 00 00 请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节) 响应:MBAP 功能码 数据长度 寄存器数据(长度:9+寄存器数量×2) 如:起始地址是0x0000,寄存器数量是 0x0003
00 01 00 00 00 06 01 03 00 00 00 03 回:数据长度为0x06,个寄存器的数据为0x21,其余为0x00
00 01 00 00 00 09 01 03 06 00 21 00 00 00 00 请求:MBAP 功能码 寄存器地址H 寄存器地址L 寄存器值H 寄存器值L(共12字节) 响应:MBAP 功能码 寄存器地址H 寄存器地址L 寄存器值H 寄存器值L(共12字节) 如:向地址是0x0000的寄存器写入数据0x000A
00 01 00 00 00 06 01 06 00 00 00 0A 回:写入成功
00 01 00 00 00 06 01 06 00 00 00 0A 请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L 字节长度 寄存器值(13+寄存器数量×2) 响应:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节) 如:向起始地址为0x0000,数量为0x0001的寄存器写入数据,数据长度为0x02,数据为0x000F
00 01 00 00 00 09 01 10 00 00 00 01 02 00 0F
DModbus TCP通信主站请求:功能码+数据 从站正常响应:请求功能码+响应数据 从站异常响应:异常功能码+异常码,其中异常功能码即将请求功能码的高有效位置1,异常码指示差错类型 需要超时管理机制,避免无期限的等待可能不出现的应答 IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus协议赋予TCP端口号为502,这是目前在仪表与自动化行业中唯一分配到的端口号。 connect 建立TCP连接 准备Modbus报文 使用send命令发送报文 在同一连接下等待应答 使用recv命令读取报文,完成一次数据交换 通信任务结束时,关闭TCP连接
AModbus TCP数据帧
ModbusTCP的数据帧可分为两部分:MBAP+PDU。(一)报文头MBAP:MBAP为报文头,长度为7字节,组成如下:
(二)帧结构PDU:PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。
(1)功能码:Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。
(2)根据对象的不同,Modbus的功能码有:
(3)说明更详细的表:
(1)0x01:读线圈:在从站中读1~2000个连续线圈状态,ON=1,OFF=0
00 01 00 00 00 06 01 01 00 02 00 08
00 01 00 00 00 04 01 01 01 01
00 01 00 00 00 06 01 05 00 03 FF 00
00 01 00 00 00 06 01 05 00 03 FF 00
00 01 00 00 00 06 01 02 00 00 00 12
00 01 00 00 00 06 01 02 03 01 04 00
00 01 00 00 00 06 01 04 00 02 00 05
00 01 00 00 00 0D 01 04 0A 00 0C 00 00 00 00 00 00 00 00
00 01 00 00 00 06 01 03 00 00 00 03
00 01 00 00 00 09 01 03 06 00 21 00 00 00 00
00 01 00 00 00 06 01 06 00 00 00 0A
00 01 00 00 00 06 01 06 00 00 00 0A
00 01 00 00 00 09 01 10 00 00 00 01 02 00 0F
回:写入成功
00 01 00 00 00 06 01 10 00 00 00 01
ModBusTcp与串行链路Modbus的数据域是一致的,具体数据域可以参考串行Modbus。这里给出几个ModbusTcp的链路解析说明,辅助新人分析报文。
DModbus TCP通信
(一)通信方式
Modbus设备可分为主站(poll)和从站(slave)。主站只有一个,从站有多个,主站向各从站发送请求帧,从站给予响应。在使用TCP通信时,主站为client端,主动建立连接;从站为server端,等待连接。Modbus poll 和Modbus slave是一组Modbus仿真软件,可以实现Modbus RTU、TCP、串口仿真等。
仿真软件网址:https://modbustools.com/download.html
在ModbusTCP中,Modbus poll 作为客户端请求数据,Modbus slave 作为服务器端处理请求。
使用c语言编写客户端连接Modbus slave时,注意数据格式,一条指令一次性发出,否则连接会出错。
使用软件时,需要指定功能码,在setup->slave definition或者poll definition中进行设置。
– slave ID:从站编号(事务标识符)
– function:功能码,0x01对应线圈操作,0x02对应离散量操作,0x03对应保持寄存器操作,0x04对应输入寄存器操作
– address:开始地址
– quantity:寄存器/线圈/离散量 的数量
其他新闻
- 西门子库指令,新手秒懂! 2024-11-25
- 如何用西门子PLC搭建一个完整AGV控制系统? 2024-11-25
- 西门子S7-1500标准轴控应用库合集(更新至V19) 2024-11-25
- 自动化早已成为一个“软件”行业 2024-11-25
- 如何用西门子PLC和上位机实现自动画圆? 2024-11-25
- 自控工程师不会被取代,PLC也用AI了,直接就能生成PLC代码,西门子、AB、倍福、中控都已经加入 2024-11-25
- 行业动态 | 西门子、施耐德携手超级巨头 2024-11-25
- 谁才是西门子博途、PROFINETZui强大的对手? 2024-11-25
- 西门子软件安装疑难杂症Windows11无法安装WinCC flexible SMARTV4 SP2 2024-11-25
- 西门子全新控制器Simatic S7-1200 G2 将发布 2024-11-25
- 西门子PLC的前世今生 2024-11-25
- 西门子生成式AI与博途深度融合,SCL编程轻松实现! 2024-11-25
- S7-1500 连接 S200 PN,这两点很重要! 2024-11-25
- 简单6步,带你轻松玩转FX5U和三菱触摸屏RS-485连接 2024-11-25
- 重庆西门子电线电缆(6XV)、光纤代理商销售维修支持保内更换及售后服务 2024-11-25
产品分类
联系方式
- 电 话:17838383235
- 经理:徐嘉泉
- 手 机:17838383235
- 微 信:17838383235