因水表远程监控和水泵数据监控系统,需了解物联网开发协议。
通信协议
通信协议说白了就是一种语言,一种通信双方都能听的懂得语言。
设备常用的通信协议有MODBUS RTU,PPI,MPI等,通信协议和我们常用的语言只是叫法不一样,但它们的原理和本质都是一样的。
波特率
波特率好比我们说话的频率,嘴慢的一秒说1个字,嘴快的一秒可以说3个字,并且这个快慢我们还能自己调节。那么设备的波特率的意思就是,一秒钟可以往外发送多少个0或1,即设备通信端口的高低电压一秒钟可以变化多少次,并且这个一秒钟变化的次数也可以调节。波特率的单位是:bit/s。我们常用的波特率9600bit/s,19200bit/s等。
举例:9600bit/s指的就是设备一秒钟可以以往外发送9600个0或1,也就是PLC的通信端口的高低电压一秒钟可以变化9600次。PLC通信时必须按“帧”发送数据,1“帧”=12位,也就是1“帧”=12个0或1。所以波特率为9600bit/s时,一秒钟就可以发送800帧的数据(9600/12=800)。
通信端口指的就是我们的数据要从哪里发送出去。就像我们说话需要用嘴,设备通信就用通信端口,两个设备的通信连接线就接在通信端口上。
主站和从站的地址指的就是通信双方要有各自的名字,也可以叫地址,这个地址不能乱写,并且不能相同,它的书写格式和地址范围,都在上面讲的通信协议中有明确的规定,我们只要按照通信协议里面规定的格式书写就没有问题。
一、什么是Modbus?
Modbus是一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus通信协议的特点:
二、ModBus分类
Modbus协议分为三种,包括:
Modbus-RTU
Modbus-ASCII
Modbus-TCP
这三种协议中我们最常使用的是ModBus-RTU形式
设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项。
三、ModBus通信
在通信上我们可将其分为硬件层和软件层两部分:
1)硬件层:RS232、RS485 、CAN等 。主要解决硬件传输问题,解决如何传输0与1的问题(物理上以什么样的电平、多少伏电压传输,仪表可以测到这个电压,还有以双绞线还是什么线传输)。【形象来说硬件层就是我们的交通道路】
2)软件层:怎么传数据,Modbus、TCP/IP【形象来说软件层就是我们的交通灯】对传输的数据有着一定的约束作用。
传输形式:
1)单工模式:只有一个方向可以进行读和写
2)半双工:两个方向都可以进行读和写,但同一时刻只能一边进行
3)全双工:两个方向读和写可以同时进行
ModBus是一种半双工的通信形式,更多的作为主从模式使用。也就是说在整个系统中,只有一个主机,其余的全都是从机(从机的的数量也有一定的限制),系统中的从机不能主动发送信息给主机。
3.1 硬件层半双工通讯方式的实现
主从模式:
(3)系统上电之后,默认状态,主机,从机都是在监听状态;
(4)主机与从机之间的通信,只能由主机发起;
主机要建立起一次通信,要满足以下要求:
(1)主机要将自己置为发送状态;
(2)主机要按照预先约定好的格式(比如MODBUS协议格式)发送寻址数据帧,发完之后立刻把自己转回接收状态;
(3)寻址完成之后,目标从机要返回给我消息,才能算这次通信成功;
3.2 软件层(数据帧格式)
(1).MODBUS是主从模式:
整个系统只能有一个主机,每个从机都有唯一的地址(0-247),0号地址是广播地址,发送给所有的从机。0号地址寻址,所有从机不回应,否则会造成消息错误。
(2).MODBUS主机寻址帧格式:
RTU方式:也叫16进制方式,或者2进制方式
比如:0x03: 0000 0011
(2)ASC方式:字符方式(方便调试)
比如:0x03–> 转换成字符’0’与字符’3’再发送出去;那么就会发
字符’0’(ASCII码是0x30)的2进制0011 0000 + 字符’3’(ASCII码0x33)的2进制 0011 0011,最终发送的就是:0011 0000 0011 0011
四、 RS485总线
RS485使用差分电平表示逻辑0或1,线A与B的电压差为+2v ~ +6v 时表示逻辑1,-2v ~ -6v时表示逻辑0。通信节点通过A、B两根线接入总线,总线结构如图1.1所示
1. 主/从协议
基于RS485的Modbus协议是一个主/从协议,总线上有一台主机,一台或多台从机,通信总是由主机发起,从机没有收到来自主机的请求时不会发送数据,从机之间不能相互通信。
主机以两种方式向从机发送Modbus请求:
(1)单播模式
在单播模式中,主机以特定的地址访问某个从机,该从机接收并处理完请求后,向主机返回一个应答。一个Modbus事务包含2个报文:一个来自主机的请求报文,一个来自从机的应答报文。每个从机有唯一的地址(1 ~ 247),这样才能区别于其它从机被独立的寻址。
(2)广播模式
在广播模式中,主机以广播地址向所有从机发送请求,从机不会向主机返回应答,地址0为广播地址。
2 RTU模式
2.1.1 帧结构
帧结构 = 地址 + 功能码+ 数据 + 校验
-
地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。
-
功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。
-
数据:根据功能码不同,有不同结构,在下面的实例中有说明。
-
校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。