通信Modbus是如何工作的?

时间:2024-07-15来源:strongerHuang



学电子需要掌握一些常见的通信协议,Modbus就属其中一种,Modbus在现实生活中应用非常广泛,很多工业电子设备的系统中基本都有它的存在。


今天针对初学描述关于一些Modbus常见的问题。


什么是Modbus?

Modbus 是由 Modicon 公司(现施耐德),于1979年针对 PLC 开发的一种通信协议,当时主要用于工业电子设备之间联网通信。


Modbus 是一种应用层通信息协议,位于 OSI(开放式系统互联通信)模型的第 7 层。它在不同类型的总线或网络上连接的设备之间提供客户端/服务器通信。


Modbus 是由一个 Master(主机) 和最多 247 个 Slave(从机)组成的通信网络。


更多关于Modbus的介绍,可以参看:

https://modbus.org/


Modbus干什么用?

Modbus 是一种开放的通信协议,你可以免费将其应用到你的设备中,而无需支付版税。


Modbus 是一种广泛使用的标准通信协议,你和其他厂家的设备,如果都遵循 Modbus 标准协议,就可以进行通信传输数据。


Modbus是如何工作的?

Modbus 通常底层基于 UART 串口485进行通信,最简单的一个主设备和一个从设备通信,就是通过串口Tx和Rx进行收发数据。


底层串口的通信,就是大家熟悉的“0”“1”通信,在这个基础上,添加 Modbus 通信协议,方便解析协议和多设备组网。


一主多从,在从设备中都有唯一的地址,通过解析从机地址,主机就能和对应的从机进行通信。

什么是Modbus ASCII?

Modbus ASCII是Modbus协议中的一种传输方式,对应的还有另外一种

Modbus RTU传输方式。


施耐德电气(Schneider Electric)收购了Modicon公司之后,有推出了Modbus TCP协议。


协议格式:


什么是从机地址?

从机地址(或从站ID),就是为每一个从设备分配的唯一地址,方便主机建立通信时进行识别,从机地址在出厂时就会设置好。


什么是功能码?

功能码是 Modbus 通信协议中的一项,主机发送的第二个字节就是功能码。就是你看到的读写线圈寄存器那些内容。


下面贴几个常见功能码:


什么是CRC?

正规的通信协议基本都有校验码,目的就是为了确保传输的数据没有错误。像校验和、CRC校验等是嵌入式设备通信协议常见的校验码。


Modbus使用CRC循环冗余校验,其校验信息位于消息末尾的两个字节。


这里推荐阅读文章《自定义串口通信协议》中文末校验相关的内容。


参考:

http://www.simplymodbus.ca/crc.xls


什么是字/字节排序?

字节排序就是先存储(传输)高字节,还是先传输低字节。比如:0x1234,它是两个字节,传输时通常是分0x12和0x34传输。


在通信中,会牵涉到一个字节排序的问题,但在Modbus 规范中并未准确定义数据在寄存器中的存储方式。


Modbus标准协议没有具体约定,就需要开发者在开发过程中人为约定先传输高字节,还是低字节。


最后

Modbus是一种应用非常广泛的标准通信协议,工业自动化、电子、嵌入式等这些专业的同学,建议都抽时间学习一下。


由于时间有限,本文只介绍了一些基础内容,更多介绍和协议具体内容,请到官网深入了解。


https://modbus.org/


关键词: Modbus 通信协议

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版