最近做智能检测的项目,设备、串口之间的通讯比较多,一会儿485,一会儿modbus RTU,有点晕了,这里重新梳理一下RS485、485通讯协议、ModBus通讯协议、Modbus Rtu通讯这几个点的联系和区别。
先说RS485吧,RS485是一个工业常用的物理接口,是物理层的硬件设备(串口)。是在电脑设置上看得到的(windows系统-我的电脑-设备管理器)设备。
Modbus是一种国际标准的通讯协议,一般用于不同厂商设备之间进行数据交换,是应用层的软件协议,不能自己单独存在,必须要依赖于硬件设备作为实现平台。不同的硬件具有不同的电气特性和连接方式,比如RS232、RS485。可以把Modbus比作英语,RS232比作印度人,RS485比作美国人,印度人之间讲英语时,理解为基于RS232的modbus通信,美国人之间讲英语时,理解为基于RS485的modbus通信。
两台设备之间通过Modbus协议传输数据,需要硬件接口,于是就有了RS232\RS422\RS485等,其中RS485传输距离远,成为现在最主流的工业现场硬件接口。
Modbus按照一般维度分为Modbus Rtu、Modbus ASCII、Modbus TCP三种模式。
从接口类型维度来说,Modbus Rtu和ASCII基于串行链路,属于串行通讯口(serial port),Mobus tcp基于TCP/IP协议,属于网络(以太网)通讯口。
协议分为硬件协议和软件协议。而通讯协议属于软件协议,它包含报头包围的格式,MODBUS是应用层的通讯协议,主要用于传送和接收文件包的格式。而RS232,RS485是物理层的串行接口,它可以支持几十种通讯协议,MODBUS只是其中的一种。
Modbus的特征:(1) 主从协议方式(master/slave)
(2) 通讯规约:初始结构-地址码-功能码-数据区-校验码-结束结构
(3) modbus协议本质是对寄存器读写,通过指定寄存器地址,来交换数据
写了一大堆概念性的东西,现在在面对实际问题,以下是供应商给出来的一句话:
大概需求是我需要通过485串口,给供应商的设备发送一个速度信号,这个速度信号的格式要求,是485格式,波特率、奇偶校验、8个数据位这些就不用再说了,了解下串口基础就知道了,一般都是N81,即“无奇偶校验、8个数据位、1个停止位”,问题的关键在于这个“485格式”。RS485做为一个标准串口通讯,是有自己的标准通信格式的。
可以看到,跟modbus是有些相似的,除了自己的格式外,也可以选择遵循Modbus通讯规约,更多的是使用modbus RTU模式通讯格式。
上图是modbus rtu的通讯规约,接下里的任务,是搞懂485通讯规约和modbus rtu通讯规约的区别,两种格式到底区别在哪里。为什么供应商选择用485格式,而不是使用的更广泛的modbus rtu?这两者之间的优缺点又分别是什么?