MODBUS通讯规约

上传人:n**** 文档编号:37520732 上传时间:2018-04-17 格式:DOC 页数:20 大小:283KB
返回 下载 相关 举报
MODBUS通讯规约_第1页
第1页 / 共20页
MODBUS通讯规约_第2页
第2页 / 共20页
MODBUS通讯规约_第3页
第3页 / 共20页
MODBUS通讯规约_第4页
第4页 / 共20页
MODBUS通讯规约_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《MODBUS通讯规约》由会员分享,可在线阅读,更多相关《MODBUS通讯规约(20页珍藏版)》请在金锄头文库上搜索。

1、Modbus通讯协议通讯协议(RTU传输模式)传输模式)本说明仅做内部参考,详细请参阅英文版本。Modbus 通讯协议通讯协议(RTU传输模式)传输模式)第一章Modbus 协议简介Modbus 协议是应用于电子控制器上的一种通用语言通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格

2、局和内容的公共格式。当在一 Modbus 网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus 协议发出。在其它网络上,包含了 Modbus 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。协议在一根通讯线上使用应答式连接(半双工) ,这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机) ,然后,在相反的方向上终端设备发出的应答信号传输给主机。 协议只允许在主计算机和终端设备之

3、间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。1 1 传输方式传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以RTU 模式在 Modbus 总线上进行通讯时,信息中的每 8 位字节分成 2 个 4 位 16 进制的字符,每个信息必须连续传输下面定义了与 Modebus 协议 RTU 方式相兼容的传输方式。代码系统8 位二进制,十六进制数 0.9,A.F 消息中的每个 8 位域都是一个两个十六进制字符组成 每个字节的位1 个起始位 8 个数据位,最小的有效位先发送 1 个奇偶校验位,无校验则无 1 个停止位(有

4、校验时),2 个 Bit(无校验时) 错误检测域CRC(循环冗长检测) Modbus 通讯协议通讯协议(RTU传输模式)传输模式)12协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封” (数据头) ,读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应。121信息帧AddressFunction

5、DataCheck8-Bits8-BitsN x 8-Bits16-Bits特注:特注:ModbusModbus 信息帧所允许的信息帧所允许的最大长度为最大长度为 256256 个字节个字节,即,即 N N 的范围是大于等于零且小的范围是大于等于零且小于等于于等于 252252(N0N0,252252) 。图 1 1 . 信息帧格式122地址(Address)域 信息帧地址域(信息地址)在帧的开始部分,由 8 位组成,有效的从机设备地址范围有效的从机设备地址范围 0- 247(十进制十进制),各从机设备的寻址范围为,各从机设备的寻址范围为 1-247。主机把从机地址放入信息帧的地址区,并 向从

6、机寻址。从机响应时,把自己的地址放入响应信息的地址区,让主机识别已作出响应 的从机地址。地址地址 0 用于广播地址,所有从机均能识别。用于广播地址,所有从机均能识别。当 Modbus 协议用于高级网络时,则不允 许广播或其它方式替代。123功能(Function)域信息帧功能域代码告诉了被寻址到的终端执行何种功能。有效码范围 1-225(十进制) ,有些代码是适用于所有控制器,有此是应用于某种控制器,还有些保留以备后用。有关 功能代替码的全部内容见附录附录 A。当主机向从句发送信息时,功能代码向从机说明应执行的动作。如读一组离散式线圈 或输入信号的 ON/OFF 状态,读一组寄存器的数据,读从

7、机的诊断状态,写线圈(或寄存 器) ,允许下截、记录、确认从机内的程序等。当从机响应主机时,功能代码可说明从机正 常响应或出现错误(即不正常响应),正常响应时,从句简单返回原始功能代码;不正常响 应时,从机返回与原始代码相等效的一个码,并把最高有效位设定为“1” 。如,主机要求从机读一组保持寄存器时,则发送信息的功能码为:0000 0011 (十六进制 03) 若从机正确接收请求的动作信息后,则返回相同的代码值作为正常响应。发现错时, 则返回一个不正常响信息:1000 0011(十六进制 83)从机对功能代码作为了修改,此外,还把一个特殊码放入响应信息的数据区中,告诉主机出现的错误类型和不正常

8、响应的原因,不正常响应见附录附录 B。主机设备的应用程序负责处理不正常响应,典型处理过程是主机把对信息的测试和诊断送给从机,并通知操作者。表 1 1 列出了所有设备常用的功能码、它们的意义及它们的初始功能。Modbus 通讯协议通讯协议(RTU传输模式)传输模式)表 1 1 常用功能码代码名称作用01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)02读取输入状态取得一组开关输入的当前状态(ON/OFF)03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05强置单线圈强置一个逻辑线圈的通断状态06预置单寄存器放置一个特

9、定的二进制值到一个单寄存器中07读取异常状态取得 8 个内部线圈的通断状态15强置多线圈强置一串连续逻辑线圈的通断16预置多寄存器放置一系列特定的二进制值到一系列多寄存器中17报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态124数据域数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这 些数据的内容可能是数值、参考地址或者极限值。他由数据区有 2 个 16 进制的数据位, 数据范围为 00-FF(16 进制)。例如:功能域码告诉终端读取一个寄存器,数据域则需要指 明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同能 力而有所不同。

10、若无错误出现,从机向主机的响应信息中包含了请求数据,若有错误出现, 则数据中有一个不正常代码,使主机能判断并作出下一步的动作。数据区的长度可为数据区的长度可为“零零” 以表示某类信息。以表示某类信息。125错误校验域该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了 16 位循环冗余的方法,即 CRC 校验。错误检测域包含一 16Bits 值(用两个 8 位的字符来实现)。错误检测域的内容是通过对消息

11、内容进行循环冗长检测方法得出的。CRC 域附加在消息的最后,添加时先是低字节然后是高字节。故 CRC 的高位字节是发送消息的最后一个字节。126字符的连续传输当消息在标准的 Modbus 系列网络传输时,每个字符或字节按由左到右的次序方式发送:最低有效位(LSB).最高有效位(MSB)。位的序列是: 有奇偶校验 启始位12345678奇偶位停止位Modbus 通讯协议通讯协议(RTU传输模式)传输模式)无奇偶校验 启始位12345678停止位停止位图 1 2 . 位顺序(RTU) 13 错误检测1、奇偶校验 用户可以配置控制器是奇或偶校验,或无校验。这将决定了每个字符中的奇偶校验位是如何设置的

12、。 如果指定了奇或偶校验,“1”的位数将算到每个字符的位数中(ASCII 模式 7 个数据位,RTU 中 8 个数据位)。例如 RTU 字符帧中包含以下 8 个数据位: 1 1 0 0 0 1 0 1 整个“1”的数目是 4 个。如果便用了偶校验,帧的奇偶校验位将是 0,便得整个“1”的个数仍是 4 个。如果便用了奇校验,帧的奇偶校验位将是 1,便得整个“1”的个数是 5个。 如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。代替一附加的停止位填充至要传输的字符帧中。2、CRC 检测RTU 方式时,采用 CRC 方法计算错误校验码,CRC 校验传送的全部数据。它忽略信息中单个字符数

13、据的奇偶校验方法。循环冗余校验(CRC)域占用两个字节,包含了一个 16 位的二进制值。CRC 值由传送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算 CRC 值,然后与接收到的 CRC 域中的值进行比较,如果这两个值不相等,就发生了错误。CRC 开始时先把寄存器的 16 位全部置成“1”,然后把相邻 2 个 8 位字节的数据放入当前寄存器中,只有每个字符的 8 位数据用作产生 CRC,起始位,停止位和奇偶校验位不加到 CRC 中。在生成 CRC 时,每个 8 位字节与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是 1,该寄

14、存器就与一个预设的固定值进行一次异或运算,如果最低位为 0,不作任何处理。上述处理重复进行,知道执行完了 8 次移位操作,当最后一位(第 8 位)移完以后,下一个 8 位字节与寄存器材的当前值进行异或运算,同样进行上述的另一个 8 次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是 CRC 值。生成一个 CRC 的流程为:1、预置一个 16 位寄存器为 0FFFFH(全 1) ,称之为 CRC 寄存器。2、把数据帧中的第一个 8 位字节与 CRC 寄存器中的低字节进行异或运算,结果存回CRC 寄存器。3、将 CRC 寄存器向右移一位,最高位填以 0,最低位移出并检测。4、如果最低

15、位为 0:重复第 3 步(下一次移位) 。如果最低位为 1:将 CRC 寄存器与一个预设的固定值(0A001H)进行异或运算。Modbus 通讯协议通讯协议(RTU传输模式)传输模式)5、重复第 3 步和第 4 步直到 8 次移位。这样处理完了一个完整的八位。6、重复第 2 步到第 5 步来处理下一个八位,直到所有的字节处理结束。7、最终 CRC 寄存器得值就是 CRC 的值。CRC 值附加到信息时,低位在先,高位在后。查阅附录附录 C 中的一个实例,它详细说明了 CRC 的校验。第二章 Modbus 数据和控制功能详解Modbus 信息中的所有数据地址以零作为基准,各项数据的第一个数据地址的

16、编号为0。若无特殊说明在此节文中用进制值表示,图中的数据区则用十六进制表示。图 2-1 为一个例子,说明了 Modbus 的查询信息,图 2-2 为正常响应的例子,这两例 子中的数据均是 16 进制的,也表示了以 RTU 方式构成数据帧的方法。主机查询是读保持 寄存器,被请求的从机地址是 06,读取的数据来自地址 40108 保持寄有器。注意,该信息 规定了寄存器的起始地址为 0107 (006BH)。 从机响应返回该功能代码,说明是正常响应,字节数“Byle count”中说明有多少个 8位字节被返回。它表明了附在数据区中 8 位字节的数量,当在缓冲区组织响应信息时, “字节数”区域中的值应与该信息中数据区的字节数相等。如 RTU 方式时,63H 用一个字节(01100011)发送。8 个位为一个单位计算“字节数” ,它忽略了信息帧用组成的方法。AddrFunData start reg hiData start reg loData #of

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号