Modbus通信协议(tcp/ip)简述

Modbus通信协议

  • Modbus协议是一种单主/多从的通信协议,其特点是在同一时间,总线上只能有一个主设备,但可以有一个或者多个(最多247个 ip地址1-247)从设备。每一个从设备一个ip地址
    在请求的报文中请求的地址为0则为广播模式,248-255保留

小知识:一般请求方为主设备,应答方为从设备;从设备之间是不能直接通信的,原因是协议不支持

  • 主设备通过两种方式向从设备发送请求报文,即单播模式和广播模式;

  • 单播模式:主设备仅仅寻址单个从设备,从设备返回一个响应报文。

  • 广播模式:主设备向所有的从设备发送请求指令,从设备收到指令后,各自处理,不要求返回应答;这种模式下,请求指令必须是Modbus标准功能中的写指令;比如 0x06 指令 (写单个保持寄存器)

  • Modbus的消息帧有多种方式,这里主要说一下Modbus Tcp消息帧;

  • 主/从设备 - 转变为客户端和服务器;
    其实就是通过TCP/IP协议在502端口上接收报文
    ADU:应用数据单元
    PDU:协议数据单元
    下图是Modbus基本报文格式:
    在这里插入图片描述
    而Modbus TCP/IP协议在这个基础上添加一个MBAP(Modbus应用协议)
    在这里插入图片描述

Modbus TCP/IP 消息例子

请求报文:
00 00 00 00 00 06 09 03 00 04 00 01
根据上面的协议格式从左到右:
00 00 为传输标识符; 00 00 协议标识符(这里是modbus协议); 00 06 报文后边的字节数;
09 单元标识符 (比如IP地址:10.128.99.9这个地址的从设备);03 功能码(读保持寄存器的值);00 04 Modbus起始地址;00 01 读取寄存器的个数 (这里读取一个寄存器 一个寄存器2个字节);
响应报文:
00 00 00 00 00 05 09 03 02 00 05
从左到右:
00 00 为传输标识符(与请求报文一致);00 00 协议标识符;00 05 报文后边的字节数;09 单元标识符;03 功能码; 02 后边的字节数;00 05 具体数据 (这里是一个寄存器)
以上例子可以通过mbsalve 和 mbpoll工具实现;

如何有需要了解更多的内容我建议去看下《Modbus软件开发实践指南》里面写的很详细,包括原理、功能码的介绍和使用以及一些编程语言的实现方法

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlyingO123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值