文档介绍:Modbus 通讯协议( RTU 传输模式) 本说明仅做内部参考,详细请参阅英文版本。 Modbus 通讯协议( RTU 传输模式) 1 第一章 Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构, 而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程, 如果回应来自其它设备的请求, 以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在一 Modbus 网络上通信时, 此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用 Modbus 协议发出。在其它网络上,包含了 Modbus 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。协议在一根通讯线上使用应答式连接( 半双工), 这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机) ,然后,在相反的方向上终端设备发出的应答信号传输给主机。协议只允许在主计算机和终端设备之间, 而不允许独立的设备之间的数据交换, 这就不会在使它们初始化时占据通讯线路, 而仅限于响应到达本机的查询信号。 传输方式传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以 RT U 模式在 Modbus 总线上进行通讯时,信息中的每 8 位字节分成 2个4位 16 进制的字符,每个信息必须连续传输下面定义了与 Modebus 协议– RTU 方式相兼容的传输方式。代码系统?8 位二进制,十六进制数 0...9 , A...F ?消息中的每个 8 位域都是一个两个十六进制字符组成每个字节的位?1 个起始位?8 个数据位,最小的有效位先发送?1 个奇偶校验位,无校验则无?1 个停止位( 有校验时), 2个 Bit (无校验时) 错误检测域? CRC( 循环冗长检测) Modbus 通讯协议( RTU 传输模式) 2 协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头), 读取数据, 如果没有错误, 就执行数据所请求的任务, 然后, 它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容: 终端从机地址(Address) 、被执行了的命令(Function) 、执行命令生成的被请求数据(Data) 和一个校验码(Check) 。发生任何错误都不会有成功的响应。 信息帧 Address Function Data Check 8-Bits 8-Bits Nx 8-Bits 16-Bits 图1–1. 信息帧格式特注: Modbus 信息帧所允许的最大长度为 256 个字节,即 N 的范围是大于等于零且小于等于 252 ( N{0 , 252} )。即,所有的数据一共 256 个,数据剩下 253 个。 地址( Address )域信息帧地址域( 信息地址) 在帧的开始部分,由 8 位组成,有效的从机设备地址范围 0-247( 十进制) ,各从机设备的寻址范围为 1-247 。主机把从机地址放入信息帧的地址区,并向从机寻址。从机响应时, 把自己的地址放入响应信息的地址区, 让主机识别已作出响应的从机地址。地址 0为广播地址, 所有从机均能识别。当 Modbus 协议用于高级网络时, 则不允许广播或其它方式替代。 功能( F unction )域信息帧功能域代码告诉了被寻址到的终端执行何种功能。有效码范围 1-225( 十进制), 有些代码是适用于所有控制器,有些适应于某种控制器, 还有些保留以备后用。有关功能代替码的全部内容见附录 A。当主机向从句发送信息时, 功能代码向从机说明应执行的动作。如读一组离散式线圈或输入信号的 ON/OFF 状态, 读一组寄存器的数据, 读从机的诊断状态, 写线圈( 或寄存器), 允许下截、记录、确认从机内的程序等。当从机响应主机时, 功能代码可说明从机正常响应或出现错误( 即不正常响应) ,正常响应时,从句简单返回原始功能代码;不正常响应时,从机返回与原始代码相等效的一个码,并把最高有效位设定为“1”。如,主机要求从机读一组保持寄存器时,则发送信息的功能码为: 0000 0011 ( 十六进制 03) 若从机正确接收请求的动作信息后,则返回相同的代码值作为正常响应。发现错