Modbus协议
Байду номын сангаас
编码系统: 8位二进制,十六进制0-9,A-F 每个8位的信息域中包含2个十六进制字符
字节的位: 1个开始位
8个数据位,首先发送最低位
1个位用于奇偶校验;无校验时没有这一位
1个停止位(有校验时);2个停止位(无校 验时)
错误校验区: 循环冗余校验(CRC)
Modbus信息的帧结构
无论在哪种串行传输模式中(ASCII或RTU),发送设备都将Modbus信
控制器的通讯采用的是一种主从通讯技术,网络中只有一个设备(称为
主设备)能够建立协议(称为“查询”)。其他的设备(称为从机)只能
通过提供数据响应主机的查询,或根据查询作出相应的动作。主机一般
包括主从处理器和可编程的控制盘。从机一般包括可编程控制器等。
主机既能对某个从机单独访问,又能对所有的从机发布广播信息。对于
1100 0101 其中逻辑1的个数为4。如果采用偶校验,逻辑1的数量累加的最后仍是 偶数(4个)。如果采用奇校验,累加的最后仍是一个奇数(5个)。 数据传输时奇偶位经过计算放在每个字符框架中。接收设备也要计算逻 辑1的数量,如果发现和预置的奇偶性不一致,就认定发生了错误。 Modbus网络中的所有装置必须采用相同的奇偶性校验。 ●请注意,只有当字符增加或减少的位数是奇数时,错误才可能被奇偶 校验发现。例如,采用奇校验时,某个字符中原来的三个逻辑1多了2个 (偶数),累加的结果仍为奇数(无法发现错误)。 如果不使用奇偶校验,就无奇偶位传输,也不进行奇偶检查。字符框架 中空出的位置由停止位填充。 ●Modbus功能格式 本章详细说明了ACS140/ACS400变频器支持的所有Modbus信息的数据 内容。 如何表达数字值 除非另有说明,正文的数字(诸如地址、编码或者数据)都以十进制的 形式表达,信息域中则以十六进制表达。 ●Modbus信息的数据地址 Modbus信息的数据地址都以0为参考。第一个发出的数据项从0开始, 例如:
设定。在ACS400有标准的RS485串行口,RS485/232适配器只在使用
RS232总线时才需要。
Modebus网络的执行过程
Modicon控制器使用的是与RS232C兼容的标准通讯接口。它定义了插头
外型、接线管脚、信号等级、传输波特率和奇偶校验等。控制器可以直
接与网络联接,也可以通过调制解调器联接。
0000 0011 (十六进制03) 如果从机准确无误的执行了所要求的动作,返回主机的功能编码相同, 如果例外情况发生,从机返回的功能编码是:
1000 0011 (十六进制83) 除此之外,从机还在返回的数据域设置了一个特殊代码,告诉从机发生 了什么样的错误,或者发生例外情况的原因是什么。主机的应用程序负 责处理响应。一般的处理方法是:发出重复信息,实验从机对诊断信息 的反应,或者提示操作人员。 ●数据域 数据域由多组这样的数据构成的:两个十六进制数为一组,范围在00FF之间,按照串行的网络结构,这些数据产生于RTU字符。 主机发给从机的数据域中包括了从机完成功能域的动作时必需的附加信 息,可能包括这样一些项目,如:数字寄存器和保持寄存器地址、将要 处理的项目数量和实际的数据字节数。 例如,主机要求从机读一组保持寄存器(功能码03),数据域就指定了 起始寄存器、需要读多少个寄存器;如果主机要向从机中的一组寄存器 写入数值(功能编码为10,十六进制),数据域就规定了起始寄存器、 要向多少个寄存器写入数据、数据字节数、以及写入寄存器什么样的数 据。 如果没有发生什么错误,从机在响应的数据域中包括了要求的数据,如
Modbus协议
本手册介绍了Modbus串行通讯协议。希望能对Modbus主机编程的用户
提供一定的帮助。
本章的版权属于Modicon,已经过Schneider Automation(modicon)同意。
Modicon出版的《Modicon
Modbus通讯协议参考手册(PI-MBUS-
300Rev.e)》包含本章的内容。
果错误发生,数据区中将包括例外情况编码,主机能够根据这一编码决 定下一步的行动。 在有些信息中,允许数据域不包含任何数据(长度为0)。例如,对于 主机的查询,从机以通讯事件的记录(功能编码为0B,十六进制)作响 应从机不需要任何附加信息,ACS140/ACS400不支持功能编码0B(十 六进制)。仅一个功能编码就是以说明这项动作要求。 ●错误校验域 在标准的Modbus网络中,有两种错误校验方法可以采用。错误校验域 的内容与使用的校验方法有关 ●ASCII。 使用ASCII方式定义字符的帧结构时,校验区包括了两个ASCII字符。 校验字符是采用纵向冗余校验(LRC)计算的结果。它总是以“colon”开 头,以“CRLF”字符终止。 LRC校验字符附加于信息的最后一段,位于CRLF之前。 ●RTU 使用RTU方式定义字符的帧结构时,错误校验域 包含一个16位数当作 两个8位字节执行,错误校验值是根据传送信息的内容,利用循环冗余 校验CRC计算的结果。 CRC域位于信息的最后,当CRC生成之后,低字节在前,高字节在后, 在发送信息时,最后传输CRC的高字节。 关于错误校验的附加信息,参见随后的附录内容。 ●字符的串行传输 在标准的Modbus网络上串行传输信息时字符或字节都按一定的顺序发 送(从左到右): 最低标志位(LSB)-最高标志位(MSB) ●RTU方式字符的位顺序是: 有奇偶校验
单独访问的主机查询,从机都要返回一个信息(称为响应);对于主机
发出的广播信息,不需要从机的响应。
Modbus协议定义了主机查询的格式,包括:从机的编址方法(或广
播)、要求动作的功能代码、传输数据和错误校验等。从机的响应也是
采用Modbus协议结构,包括:动作却认、返回数据和错误校验等。如
果从机在接受信息时发生错误,或不能完成主机要求的动作,它将组织
一个故障信息作为响应。
图1 主机-从机与查询-响应 从机的响应信息 错误校验 8位数据字节 功能代码 错误校验 8位数据字节 功能代码 主机的查询信息 设备地址 设备地址
查询:查询中的功能代码告诉指定的从机完成什么样的动作。数据字节 中包含了从机执行任务时所需的附加信息。例如,功能代码03表示读从 机的保持寄存器并返回其中的内容。数据区必须告诉从机应该从哪个寄 存器开始读,需要读多少个寄存器。错误校验区为从机指定了信息完整 性校验的方法。 响应:正常情况下,从机响应的功能代码与查询的功能代码相对应,数 据区包含从机根据查询要求收集到的数据,如寄存器的值或状态等。当 发生通讯错误时,功能代码就转而指示该响应为故障响应,数据字节则 包含故障描述代码。错误校验域允许主机确认信息内容是否有效。 两种串行传输格式 在标准Modbus网络中,控制器可以配置为ASCII或RTU中的任意一种通 讯模式。在配置处理器时,用户选择一种自己需要的一种模式,设置串 行通讯接口的通讯参数(波特率、奇偶校验模式等)。在同一Modbus 网络中,所有设备的传输模式和通讯参数必须相同。ASCII或RTU模式 的选择仅适用于标准Modbus网络,它定义了传输信息中的每一位含 义,决定了信息的组织发送和解码方式。
息放入一个起点和终点已知的框架中。这样接收设备就知道从信息的起
始点开始,取出其中的地址信息,确定用于哪个设备(广播信息针对所
有设备),并判断信息是否结束。不完整的信息会被发现并当做故障处
理。
●RTU的帧结构
在RTU模式中,新的信息总是以至少3.5 个字符的静默时间开始。在以
波特率计算传输速率的网络上,以字符为单位计算时间显得很容易(如
用来标志本次的信息传输已经结束。在此之后,又将开始一个新的信
息。
整帧的信息必须以一个连续的数据流进行传输。如果信息结束前存在超
过1.5个字符以上的间隔时间,接收设备将清除这些不完整的信息,并
错误的认为随后一个字符是新一帧信息的地址部分。
同样地,如果一帧新信息的开始与前一信息的间隔小于3.5个字符时
间,接收设备将认为它是前一信息的继续。由于信息的错乱,最终的
Modebus协议概述
Modebus协议是一种串行的主从通讯协议。本手册的内容仅限于ACS140
和ACS400传动控制所涉及到的Modebus通讯协议部分。Modebus协议定
义了串行通讯中传输哪些信号。ACS140/ACS400 的物理接口是半双工
的。ACS140必须使用RS485/232适配器,信号等级由RS485/232适配器
主机退出协议之前,将按照用户预先设定的时间进行延时等待,这个时 间间隔,要保证每台从机都能够做出正确的响应。如果从机发现传输错 误,信息将不被执行,从机也不对主机做出响应。这样设定的时间就会 超出,主机程序会加以处理。请注意,如果向并不存在的从机发出信息 时也会产生超时,对于ACS140/ACS400适当的超时设定值应大于 100ms。 ●奇偶校验 用户可以根据自己的需要将控制器设定为起;奇校验或偶校验,或无奇 偶校验。这将影响每个字符的奇偶位设置。 奇偶校验时将对字符中逻辑1位的个数进行累加(RTU,8位)。根据累 加值的奇偶性,设置校验位为1或0。 例如,在RTU字符中包括以下8个数据位:
Start 1 2 3 4 5 6 7 8 Par Stop
无奇偶校验
Start 1 2 3 4 5 6 7 8 Stop Stop
●错误校验方法 标准的Modbus串行网络中使用了两种错误校验方法:奇偶校验和CRC 校验。奇偶校验(奇或偶)是可选择的字符校验方式,CRC校验应用于 正条信息。字符校验和帧校验都由主机发出,信息传输之前就已被首先 校验,从机在接收期间对每个字符和整条信息进行再次检查。
CRC域不正确,将导致产生一个故障。下图是一帧信息的标准结构。
开始
地址域
功能域 数据域 CRC校验 结束
T1-T2-T3-T4 8位
8位
N*8位
图2 信息的帧结构
16位
T1-T2-T3-T4
●地址域 信息的地址域包括8位(RTU)。从机的有效地址范围为0-247(十进
制)。单个从机的地址范围为1-247。主机寻址从机的方法就是将从机 的地址信息放在地址域中。从机返回响应信息时,也将自己的地址放在 地址域,以便让主机知道是从哪台从机返回的。 地址0表示广播方式,所有的从机都认可。在更高一级网络中应用 Modbus协议时,广播方式其他方式取代有可能不允许或被。例如, Modbus Plus使用全局共享的数据库,通过令牌的循环进行数据更新。 ●功能域 信息的功能包括8位(RTU)。有效码为1-255(十进制)。其中,有些 适用于所有Modicon控制器,有些仅适用于某些特定的模式,还有一些 为将来保留它用。ACS140/ACS400变频器支持3、6和16形式的编码(十 六进制为0*03、0*06和0*10)。 当一帧数据由主机传送到从机时,功能域的编码会告诉从机去干什么。 示例是读一组输出数据。 ?????响应,也使用功能编码的方式进行,或表示响应正常(无错 误),或表示???(称为例外情况响应)。正常响应时,从机将原来 功能编码的最高位置1后返回。例如主机发送到从机的从机的一条信息 是要读一组保持寄存器,功能编码可能如下:
注意!ACS140/ACS400变频器只支持 RTU模式。本手册也只对RTU模 式进行介绍。
●RTU模式 当控制器在Modbus网络上被设定为采用RTU(远程终端单元)模式进 行通讯时,信息中的每一个8位字节包括两个4位的十六进制字符。这种 方式的最大好处就是字符的密度可以更高,相同波特率的数据流量比 ASCII模式更大。每个信息必须在一个连续的数据流中进行传输。 RTU模式中每个字节的格式是:
可编程控制器中已知为1的“线圈”,在Modbus信息中被编址为“线 圈”0000。
“线圈”127(十进制)的地址为007E(十六进制,十进制是126) 保持寄存器40001在信息中被编址为寄存器0000。功能区的编码已经 确定
下面图所示的T1-T2-T3-T4).紧接着传送第一个域:设备地址。
每个域的允许传输字符都是0-9,A-F的十六进制数。网络设备始终监视
着通讯总线的活动,即使在静默间隔时间内。当接收到第一信息域后
(地址信息),每个网络设备都对此进行译码,以确定自己是不是所寻
址的设备。
随着最后一个字符传输结束,又有一段类似的3.5个字符的间隔时间,