目 录CONTENT

文章目录

Modbus协议的种类

焱
2025-03-21 / 0 评论 / 0 点赞 / 5 阅读 / 0 字
温馨提示:
本文最后更新于2025-03-21,若内容或图片失效,请留言反馈。 部分素材来自网络,若有影响到您的利益,请联系我们删除。

MODBUS的起源

Modbus是Modicon(施耐德)公司于1979年开发的串行通信协议。它最初设计用于公司的可编程逻辑控制器(PLC)。
Modbus是一种开放式协议,支持使用RS232/RS485/RS422协议的串行设备,同时还支持调制解调器。它的简单性以及制造商可以免费将其纳入其产品的事实使其成为连接工业电子设备的最流行的方法。

Modbus 的特性

Modbus协议是一个master/slave架构的总线协议。
有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。
Modbus主站(Master)负责从其他设备(Slave)请求信息。标准Modbus网络中有一个Modbus主站。具体如下图所示

在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个 Modbus 事务处理。

非目标从机则根据地址来判断不是发给自己的,因此即使接收到数据,也不予理会,不解析、不发送任何信息,以免和目标从机发送向冲突,导致主机接收数据错误,俗称数据粘包。非目标从机的数据解析一定要比较健壮,否则会导致其他从机解析数据而发送出去,和目标从机进行竞争,导致通信故障。

地址0:广播地址,所有的从设备必须处理广播报文。
1-247:从设备地址,主设备是没有地址的,这一点需要注意。
248-255:保留地址

主节点以两种模式对子节点发出 Modbus 请求:

单播模式
主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个 '应答')。
在这种模式, 一个 Modbus 事务处理包含 2 个报文: 一个来自主节点的请求, 一个来自子节点的应答。
每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。

广播模式
主节点向所有的子节点发送请求。
对于主节点广播的请求没有应答返回。 广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。

Modbus协议位于OSI模型的第二层和第七层。
OSI第二层在 Modbus 串行链路上客户机的功能由主节点提供而服务器功能由子节点实现。
OSI第7层的 Modbus 应用层报文传输协议,提供了连接于总线或网络的设备之间的客户机/服务器通信。

协议的分类

常用Modbus协议总共有以下四种:

  • Modbus ASCII

  • Modbus RTU

  • Modbus Plus

  • Modbus TCP

  • Modbus RTU和Modbus ASCII为串行连接。

  • Modbus TCP是应用于以太网的通讯协议。

TCP/RTU/ASCII的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的
Modbus RTU是一种紧凑的,采用二进制表示数据的方式,
Modbus ASCII是一种人类可读的,冗长的表示方式。

被配置为RTU变种的节点不会和设置为ASCII变种的节点通信。

ASCII多了帧头和帧尾,也就是说可以有用这个头尾判断一帧字节来判断是否结束;
RTU没有帧头和帧尾,所以协议里明确两帧之间要大于3.5个字节时间间隔,作为一帧结束的判断依据。
对于RS485来说,总线上一般允许最大32个设备。

Modbus从设备的回应数据格式是:
回应的数据包与主机查询的数据包格式一致。
从机正常回应时:功能码与主机发送的功能码一致(1-127) 如果异常回应时:功能码要在收的主机的功能码的基础上加128。

Modbus ASCII

当设备设置为使用ASCII(美国信息交换标准代码)模式在MODBUS串行线上进行通信时,消息中的每个8位字节将作为两个ASCII 4位字符发送。
当物理通信链路或设备的功能不允许符合RTU计时器管理要求时,使用此模式。
所以此模式的效率不如RTU,因为每个字节需要两个字符。示例:字节0x7D编码为两个字符:0x35和0x42(在ASCII表中为0x37 ='7',而0x44 ='D')。

Modbus RTU

Modbus RTU是一种紧凑的,采用二进制表示数据的方式;因为使用二进制编码和CRC错误检查的结合使得Modbus RTU适用于工业应用,因为它比ASCII字符的替代方案更有效地传输。
在Modbus RTU与ASCII之间进行选择时,如果考虑性能,则RTU是首选。

Modbus TCP

Modbus TCP 是在TCP/IP网络上运行的Modbus的实现,旨在允许Modbus ASCII / RTU协议在基于TCP / IP的网络上传输。
Modbus / TCP将Modbus消息嵌入TCP / IP帧内。
尽管实现起来非常简单,但是与网络相关的特性增加了一些挑战。
例如,由于Modbus主机期望并要求在一定时间范围内对其轮询做出响应,因此必须考虑TCP / IP网络的不确定性(和其他方面)。
Modbus ASCII和Modbus TCP之间的主要区别在于,Modbus ASCII所需的LRC错误检查由IP层执行。

Modbus Plus

Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。
它使用1Mbit/s的双绞线,并且每个节点都有转换隔离设备,是一种采用转换/边缘触发而不是电压/水平触发的设备。
连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区