Modbus协议-04

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功