首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

物联网通讯协议之Modbus

历史沿革

modbus是由modicon公司(现在的施耐德电气)于1979年为可编程逻辑控制器PLC通信而发表的一种应用层串行通信协议。

协议特点与设计理由

由于modbus设计之初并不是在以太网传输,因此为了能同时在通信链路中让多个设备可以通信而又不发生冲突,整个协议设计出来就具备这样的特点:

1、主从结构。一个链路中只能有一个主站,其他全部是从站。

2、主站与从站之间是一问一答的形式,主站没有发数据,从站不能主动向链路中响应数据。要理解这个可以参考以太网,以太网由于每个站点都有一个独立网口连接路由器或交换机的网口,又有

交换机的底层分包能力,所以同时发送数据是不会有问题的,而modbus是基于rs485总线,所有设备手拉手连接,同时时刻总线上只能允许一个站点占用。

3、从站必须编号,且编号唯一。可以理解为类似以太网的IP地址。

4、整个通讯过程看起来像广播机制,一个主站拿着喇叭在喊,所有人都能听到,但是只有被叫到名字的从站才回应。

数据帧结构

接下来,我们了解一下modbus的数据帧结构。

一个完整的modbus数据帧,包含四个部分:

站号(通讯的站点标识)、功能码(本次通讯的动作是什么)、数据(传递了哪些数据)、校验(错误校验)

协议种类

为了适应多个场景,modbus主要有三个实现方式:Modbus RTU、Modbus ASCII、Modbus TCP

下面,我们来分别了解一下这三个协议的各自数据包的结构吧!

1、Modbus RTU:二进制传输,传输效率高,使用CRC校验。

它的帧结构:一个字节的地址+一个字节的功能码+数据+CRC校验。

一个完整的modbus RTU数据帧类似这样:  01 03 10 00 00 01 80 CA

其中, 01 为从站地址,03为功能码,10为十进制的2,表示传输的数据为两个字节。后面的两个 00 00 表示这两个字节的寄存器里的数据。  80 CA表示CRC校验码。

2、Modbus ASCII:文本传输,每个字节用两个ASCII字符表示,使用LRC校验。

帧结构:起始符(冒号)+地址+功能码+数据+LRC校验+结束符(换行、回车)。

它在modbus rtu的基础上,将CRC校验转换为了LRC校验,并将原始数据帧里每个字节的数据全部转成其对应的ascii字符,然后传输头部增加了冒号,尾部增加了回车与换行符。

一个完整的modbus ASCII数据帧形如:3A 30 31 30 33 31 30 31 38 30 30 30 31 44 33 0D 0A

其中3A就是冒号的ASCII码,30对应的是0的ASCII码,31对应的是1的ASCII码,后面的4 33  0D 0A分别对应回车与换行符的ASCII码。

其对应的modbus RTU为:01 03 10 18 00 01 D6

相比于modbus rtu,modbus ASCII数据帧的约为前者的两倍。

3、 Modbus TCP:以太网上传输,使用标准TCP/IP,通常不需要校验,应答更快捷。

帧结构:MBAP + MODBUS报文。

其中,MBAP为7个字节长度,包含传输标识、协议标识、长度、单元标识。 整个帧结构看起来就是原始的modbus RTU 之前加上了7个字节的包头。

传输介质

他们的传输介质是怎样的? 实践中,modbus RTU与modbusASCII 主要通过RS485串行总线实现设备间互联,而modbus TCP则使用网线实现数据传输。

这里所说的通过网线传输,中间其实需要增加一个转换设备,需要先从串口将modbus rtu数据帧读出后再投入以太网协议栈。

无论是采用哪种介质传输,其底层都需要关注波特率、数据位、停止位、校验位这些参数,且各设备间的这些参数都需要一致。

关于modbus的功能码就不多介绍,需要用到时候大家可以查一下手册即可。这里简单帮大家回忆几个常用的功能码,比如01表示读线圈状态,02表示读离散输入,03读保持寄存器,04读输入寄存器等。

总结时间

总结时间:modbus是一个主从架构的运行与串行总线上的用于设备控制的应用层协议,它支持多种电气接口、简单易用且标准开放,广泛应用在物联网的设备控制、数据采集等场景中。小伙伴们还不快学起来!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OctKnozzMj7iin9v5X0fho_Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券