Modbus是应用于电子控制器上的一种串行通信协议,是工业电子设备之间常用的连接方式,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
Modbus 串行链路协议
Modbus串行链路协议是一个主从模式(主机和从机),半双工的数据传输协议,485标准通常需要两条线,在某一个确定时刻,有一个主机和从机进行通讯。
主从模式:通常总线上有一个主机和多个从机,每个从机有唯一的ID,主机通过ID进行寻址从机,然后进行数据传输;
半双工传输:相对应半双工的是全双工,全双工运行发送数据和接收数据同时发生,所以半双工就不难理解了,同一时刻只能进行发送数据,或者只能接收数据;
整体的结构图如下所示:
一个485总线的主从模式
这里我们还要明确几点:
从机无法主动向从机发送数据,只有在主机发送数据给从机(发送请求),然后从机接收到主机发送的数据之后,再回传数据给主机;具体如下所示:
主从模式
正如前面所提到的,modbus是半双工传输的,即主机发送数据的时候,是不能接收数据的,所以这里总共分为两步来进行。
主机发送数据的方式有两种,一个是 1对1,一个是1对多,也就是我们常说的广播形式,所有从机都可以收到主机发送的数据;
1对1 只需要发送数据给特定地址的从机即可,广播只需要把发送地址设置为0即可,所以广播地址为0;
这里我们已经大致了解了主机和从机之间的数据传输的情况,下面我们就再来介绍一下数据传输的具体格式;
传输模式
先来说说Modbus有两种传输模式,RTU传输模式和ASCII传输模式;
RTU传输:Remote Terminal Unit模式在Modbus中消息由十六进制组成,数据密度高,吞吐率高;
ASCII传输:消息由ASCII 字符发送效率不及RTU模式,无法使用RTU模式的定时管理时,使用ASCII模式;
比如:0x12会被整合成两个字符发送:0x31和0x32发送,
因为 0x31等于字符1;0x32等于字符2