1、基础定义
Modbus协议是应用于 电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)
和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成 工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备
的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
2、传输方式
在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,
每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息 交换码),另一种模式是RTU(远程 终端设备)。
用户选择想要的模式,包括 串口通信参数( 波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都
必须选择相同的传输模式和串口参数。所选的ASCII或RTU方式仅适用于标准的Modbus网络,它定义了在这些网络上连续传输的消息段
的每一位,以及决定怎样将信息打包成消息域和如何解码。在其它网络上(像MAP和Modbus Plus)Modbus消息被转成与串行传输无关的帧。
3、RTU模式
当控制器设为在Modbus网络上以RTU模式通信,在消息中的每个8Bit字节按照原值传送,不做处理,如63H,RTU将直接发送01100011。
这种方式的主要优点是:数据帧传送之间没有间隔,相同波特率下传输数据的密度要比ASCII高,传输速度更快。
代码系统8位二进制, 十六进制数0...9,A...F消息中的每个8 位域都是一或两个十六进制字符组成
每个字节的位1个起始位8个 数据位,最小的有效位先发送1个奇偶校验位,无校验则无1个停止位(有校验时),2个Bit(无校验时)
4、应用举例
4.1 读取地址为01的模块的4009-40010的2个寄存器的值
发送指令:01 03 00 08 00 02 45 c9
.地址:01
.功能码(读):03
.起始地址:00 08
.寄存器数:00 02
.CRC校验:45 c9
4.2 地址为01的模块返回的2个寄存器的报文
返回的报文:01 03 04 f1 03 f7 ff 3e bf
.地址:01
.功能码(读):03
.寄存器数:04
.寄存器4009字节0:f1
.寄存器4009字节1:03
.寄存器4010字节0:f7
.寄存器4010字节1:ff
.CRC校验:3e bf
4.3 解析寄存器的值
.寄存器4009:f1 03
.以上是16进制,换算成10进制为:61699
.寄存器4010:f7 ff
.以上是16进制,换算成10进制为:63487
5、推荐用调试工具
5.1 Modscan
5.2 Sscom