MODBUS协议介绍
Modbus是一种串行通信协议,由于其协议简单易用,且没有版权要求,目前已经成为工业领域通信协议的实时标准。Modbus协议由Modicon公司在1979年提出,目标是为使用可编程逻辑控制器(PLC)通信。Modicon后来被施耐德电气Schneider Electric收购,Modbus 协议现在也成为 工业电子设备之间常用的连接方式。
总体来说,Modbus协议被工业领域接受主要的原因如下:
公开发表并且无版权要求
易于部署和维护
对供应商来说,修改移动本地的比特或字节没有很多限制
简单来说,他就是免费+简单+方便修改!
Modbus协议类型
Modbus协议属于应用层的报文传输协议,Modbus目前有两个主要版本 Modbus串口,Modbus TCP/IP。,Modbus 串口又有两个变种:Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。三者的协议并不相同,但有类似的地方,所以说Modbus协议时,最好说这三种类型中的一种。这三者的关系如下:
下图说明Modbus协议规范和现有协议的关系
从图可以看出,Modbus协议主要是基于OSI 网络模型上应用层的应用协议,Modbus 协议和 ISO/OSI 模型对照如下
ModBus协议内容介绍
设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项。所以设备都有RTU协议,ASCII协议很少,Modbus协议,只需要了解RTU协议,ASCII作为学习的了解就足够了。
ModBus协议最基本的通信单位是帧,整个ModBus帧又被称之为应用数据单元(ADU),ADU中又包含了协议数据单元(PDU)用于传真正需要传输的数据。从上图可以看出:
帧结构 = 地址域 + 功能码 + 数据 + 差错校验
地址域: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。每个终端设备的地址是唯一的,如果查询某个终端设备,必须包含该设备的地址。终端回应也会包含该地址,通过该地址,主机知道哪个终端在与自己进行通信。
功能码: 常用的功能码有01、05、03、06、16。一般占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。常用的功能码是03和06。
数据: 通信的主要内容,可能是数值、参考地址或者极限值。可能是终端执行特定功能所需要的数据或者终端响应查询时采集到的数据,根据功能码不同,有不同结构。
差错校验: 为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了16位循环冗余的方法。
ModBus协议传输和应答架构
Modbus协议是一个主/从架构的协议。在同一个Modbus网络中同一时刻只有一个节点是主(master)节点,其他使用Modbus协议参与通信的节点是从(slave)节点,从节点的最大编号为247。每一个slave设备都有一个唯一的地址。
在串行网络中,通讯总是由主节点发起 ,子节点在没有收到主节点请求时不会发送数据。各个子节点之间不会直接相互通信。
在以太网上,任何一个设备都能发送一个Modbus命令,通常启动指令是某个主节点,子节点会进行应答、在同一个时刻,主节点只会发起一个Modbus事务处理。什么是事务处理呢?其实就是一次网络上完整的应答通讯。主要包含两种形式,1 单播模式 , 2 广播模式
所谓单播模式就是主节点给某个指定的节点发送消息(通过ADU中的地址域指定),从节点收到并处理完请求后,从节点向主节点返回一个应答报文,在这种模式下,一个Modbus事务包含两个报文,一个来自主节点的请求,一个来自子节点的应答
所谓广播模式,是主节点向所有的子节点发送请求,当主节点发送的请求报文的地址域值为0时,代表广播请求,所有的从节点都需要接受处理,但不需要向主节点返回报文。
其实在物理层所有设备都会收到所有的请求,但地址域不为0时,从机判断当前为单播模式,只有地址域和自身地址号相同的从机才会响应请求,当地址域为0时,从机判断为广播消息,所有的从机都会执行指令,所有收到指令的设备都会运行,只不过不回应指令。
物联百科是由钡铼技术组织行业上下游专业人员撰稿汇总的物联网知识板块,可以助力行业人员更加快速的熟悉物联网、工业互联网、工业物联网人员快速了解、掌握各种基础的物联网基础知识以及工业物联网技术的发展动态。同时本栏目也欢迎广大工业互联网、工业物联网从业工程师积极投稿。