实用变频器通讯控制_第1页
实用变频器通讯控制_第2页
实用变频器通讯控制_第3页
实用变频器通讯控制_第4页
实用变频器通讯控制_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 Modbus总线变频器控制第一节 Modbus协议Modbus协议是由第一台PLC的发明者Modicon公司(现在是施耐德电气公司的一部分)于1978年开发的,最早的设想是在RS232端口上实现控制器和智能型传感器之间控制数据的传输。1979年,Modicon公司将Modbus协议推广到市场上,为众多设备制造商在其不同的设备中所采用,成为智能型设备之间建立主从式或客户机-服务器通讯的“事实上”的标准。Modbus是一个应用层通信协议(即OSI模型第7层),目前基于Modbus协议的网络主要有三种:1、异步串行传输(RS232、RS422/485)2、Modbus Plus高速令牌网3、

2、TCP/IP以太网本章主要介绍Modbus异步串行传输网络。一、Modbus协议简介Modbus协议定义了一个独立于基本通讯层的简单的协议数据单元(PDU,Protocol Data Unit),由功能代码区和数据区组成;在特定总线或网络上,可以通过引入一些辅助区形成应用数据单元(ADU,Application Data Unit),如图31所示。图31 Modbus结构图ADUPDU数据错误校验功能代码服务器地址Modbus协议数据单元(PDU)定义了客户机向服务器发出请求的格式,其中功能是指服务器所执行的动作。例如,客户机可以向服务器请求读一组离散量输入或输出的“开/关”状态,或读/写一组

3、寄存器的数值,如图32所示。功能代码区由1个字节组成,有效的范围是1255,其中128255保留作为异常响应功能代码。当一个消息从客户机发送到服务器时,功能代码区将告诉服务器执行何种动作;一些功能代码还有子代码,以定义多重动作。数据区包含服务器执行功能代码所定义动作的必要信息,如离散量和寄存器地址、数量、以及实际数据字节的计数值等。在某些特定的请求中,可能没有数据区(0长度),在这种情况下,服务器动作由功能码直接指定,无需辅助信息。服务器一旦接收到客户机的请求,将作出相应的响应。如果没有与Modbus功能请求相关的错误发生,客户机将接收到服务器根据功能代码请求所返回的正确的数据;如果发生了错误

4、,客户机将接收到一个异常代码,可以根据这个异常代码决定下一步动作。当服务器回应客户机时,回应的功能代码区既可表示一个正常的响应,也可表示发生了错误(称异常响应)。对一个正常的响应,服务器简单地返回原功能代码;对异常响应,服务器将返回一个将原功能代码最高位置“1”(原功能代码+80H)的异常功能代码。图32 Modbus交换异常功能代码异常代码有错误响应接收回应错误检测发出错误请求数据功能代码发出请求客户机服务器服务器客户机发出请求功能代码请求数据执行动作发出回应功能代码响应数据接收回应无错误响应对异步串行传输,Modbus协议定义的应用数据单元(ADU)的长度最大为256个字节,包括服务器地址

5、的1个字节和错误校验(CRC)的2个字节,则协议数据单元()PDU的最大长度为253字节。同时,对于数据区内的地址和数据,当数值大于1个字节时,数据的传输是高位字节先发送,如数值“1234H”,先发送“12H”,再发送“34H”。二、功能代码及异常响应图33 Modbus交换状态图接收MB指令等待一个MB指令异常代码_1有效的功能代码有效的数据地址异常代码_2有效的数据值异常代码_3执行MB功能异常代码_4/5/6发送MB响应发送MB异常响应YYYYNNNNModbus协议被广泛应用于设备的监控和编程、智能设备与传感器和仪器的通讯、以及采用计算机和人机界面对现场设备的监控等场合;Modbus协

6、议还是一个理想的RTU(Remote Terminal Unit,远程终端测控单元)应用协议,广泛应用于石油、天然气及其子站等需要无线通讯的场合;Modbus协议不仅应用于工业领域,在建筑、市政工程、交通和能源等领域也得到了广泛的应用。第二节MODBUS协议的实现MODBUS协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在MODBUS网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动

7、。如果需要回应,控制器将生成反馈信息并用MODBUS协议发出。在其它网络上,包含了MODBUS协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法(如:MODBUS TCP/IP)。MODBUS 协议有 ASCII 和 RTU (远程终端单元)两种传输方式,在ASCII 方式中,消息中的每个8Bit字节需2个ASCII字符,其优点是允许字符的传输间隔达到1秒而不产生错误;在RTU方式,每个8Bit字节包含两个4Bit的十六进制字符,其优点是,在同样的波特率下,可比ASCII方式传送更多的数据,但每个消息必须以连续的流传输,约95%的Mo

8、dbus总线采用RTU方式。MODBUS的RTU方式采用CRC-16的冗余校验方式,规定通信字符串的最后两个字节用于传递循环冗余校验数据,其方法是将整个字符串(不包括最后两个字节)的所有字节按规定的方式进行位移并进行XOR(异或)计算,接收方在收到该字符串时按同样的方式进行计算,并将结果同收到的循环冗余校验的两个字节进行比较,如果一致则认为通信正确,如果不一致,则认为通信有误,从站将发送CRC错误应答。MODBUS的RTU方式的帧格式:1个起始位8个数据位,最小的有效位先发送1个奇偶校验位,无校验则无1个停止位或 2个停止位(无校验时)两种传输模式中(ASCII或RTU),传输设备以将MODB

9、US消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已完成。使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始(如下图的T1-T2-T3-T4所示)。在网络波特率多样的情况下,字符时间是最容易实现的。传输的第一个域是设备地址,可以使用的传输字符是十六进制的0.9,A.F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。整个消

10、息帧必须作为一连续的流传输。如果在帧完成之前有超过3.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这两种情形都将导致错误,因为在最后的CRC域的值不可能是正确的。一个典型的消息帧如下所示:起始位设备地址功能代码数据CRC校验结束符T1-T2-T3-T48Bit8Bitn个8Bit16BitT1-T2-T3-T4消息帧的地址域包含两个字符(8Bits),可能的从设备地址是十进制的0.247 。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。

11、当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。地址0是用作广播地址,以使所有的从设备都能认识。当MODBUS协议用于更高水准的网络,广播可能不允许或以其它方式代替。消息帧中的功能代码域包含了两个字符(8Bits),可能的代码范围是十进制的1.255。有些控制器适用所有的代码,有些控制器仅适用部分代码,取决于控制器采用的代码完整与否。当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。例如去读取输入的开关状态,读一组寄存器的数据内容,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。当从设备回应时,它使用功能代码域来指示是

12、正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备仅回应相应的功能代码。对异议回应,从设备返回一等同于正常代码的代码,但最高位为逻辑1(+80H)。数据域是由两个十六进制数集合构成的,范围00.FF。根据网络传输模式,这可以是由一对ASCII字符组成或由RTU字符组成。主设备发给从设备消息的数据域包含了附加的信息:如寄存器地址,要处理项的数目,域中实际数据字节等。从设备必须执行由功能代码所定义的请求。如果没有错误发生,从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。标准的MODBUS网络有两种错误检测方法。错误

13、检测域的内容视所选的检测方法而定。当选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。当消息在标准的MODBUS系列网络传输时,每个字符或字节以如下方式发送(从左到右):最低有效位.最高有效位。控制器与PLC之间通信的内容包括主站对从站的读取和写入,MODBUS规定,只有主站具有主动权,从站只能被动的响应,包括回答出错信息。数据通信的一般如下: (1) 查询查询消息中的功能代码告之被选中的从设备要执行何种

14、功能。数据段包含了从设备要执行功能的任何附加信息。数据段必须包含要告之从设备的信息:从何寄存器开始读或写及要读的寄存器数量或写的数值。错误检测域为从设备提供了一种验证消息内容是否正确的方法。例如:功能代码03(十进制)是要求读从设备保持寄存器并返回它们的内容,功能代码16(十进制)是对从设备输出寄存器写值 (允许采用广播方式)。(2) 回应如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的(功能代码80H),同时数据段包含了描述此错误信息的代码(1-从站不能

15、识别主站的请求,2-请求帧中的从站地址不存在,3-主站的请求不允许,4从站不能完成请求)。错误检测域允许主设备确认消息内容是否正确。例如:主站读取从站N个寄存器(MODBUS 功能03):主站命令:从站地址 命令字 欲读寄存器首地址 欲读字个数 CRC16 1 byte 1 byte 2 bytes 2 bytes 2 bytes 01 03 00 04 00 02 85 CA从站回送:从站地址 命令字 读到的字长度 寄存器内容 CRC16 1 byte 1 byte 1 byte n bytes 2 bytes 01 03 04 42 C8 00 00 6F B5标准的 MODBUS物理层采

16、用了RS-232串行通信标准,远距离或多点通讯时可以考虑用RS-422或者RS-485来代替。Modbus通信的网络结构为主从模式,因此在工业领域采用半双工的RS-485较多。在PC机上可以通过使用RS-485插卡或者RS-232/ RS-485转换模块,可实现多点通信。采用带有120W特性阻抗的屏蔽双绞线,确认在通讯电缆的两边都有终端匹配电阻(120W),并将屏蔽小心接地。从站数限制为32个以下。实现通信的过程中要对从站地址、寄存器地址、及数据量等进行判定。若是与PLC或者其它标准的通信设备进行连接时,需要考虑实际的结构,即寄存器地址围,如0x 表示输出线圈、1x 表示离散量输入、3x 表示

17、输入寄存器、4x 表示保持寄存器。注意,寄存器地址是从1开始的,如40001代表0号保持寄存器地址。Modbus协议规定每个消息不超过256个字节,在Windows下MODBUS通信可采用MSCOMM控件来实现。以从站为例,左面是实现通信的流程图。在PC机上实现Modbus协议的关键是CRC校验值的算法,有两种方法:根据CRC校验的定义公式进行计算,或在程序中建立CRC校验值表查找。因为对于固定字节CRC校验计算的多项式因子,其CRC值是固定的,因而,采用查表法可以简化了计算过程、节省应答时间、提高通信效率。查表法计算CRC校验值程序参见附录二。第三节ATV58变频器通讯控制PLC编程举例一、

18、硬件连接ATV58变频器内置的Modbus接口物理层为RS485,采用Modbus RTU方式(8个数据位、1个停止位、无校验位),波特率必须为19.2Kbit/s,连接介质可采用屏蔽双绞线,传输距离可达1000 米。注意:单总线上连接ATV58变频器最多为18台(物理层限制)。取下ATV58变频器的操作面板,可以看到本机上的Modbus 9针D型接口,该接口RS485管脚定义如下:¨ 管脚 3: D(A)¨ 管脚 7: D(B)控制器与变频器RS485连接参见图一。图一 PLC与变频器RS485连接示意图ATV58ATV58控制器ABABBA1nF120W屏蔽双绞线3、A

19、TV58 变频器的Modbus通讯设置ATV58 变频器的Modbus 通讯参数需要通过操作面板预先予以设置如下:控制菜单 (CTL: 4-CONTROL):面板控制 (LCC: Keypad Comm.) No (取消面板操作)变频器地址 (Add: DriveAddress) - 1,2, 18 (Modbus从站地址)ATV58变频器采用通讯功能时,其外部端子控制功能是无效的,通过对逻辑输入口(如LI4)进行编程设置为强制本地控制方式,可实现变频器的远程/本地切换控制。注意,最好将变频器在本地控制方式下调试完毕后,再进行通讯控制,一方面可以避免因为变频器参数设置的原因导致变频器工作不正常

20、;同时,可以简化通讯的内容和交换数据的数量。二、PLC编程举例施耐德电气公司的Modicon TSX Micro PLC是一种面向机器和设备的中小型PLC,本机最大可达256 I/O点,具备强大的内存扩展和通讯扩展功能;其编程软件PL7 PRO与中型PLC Premium兼容,不仅编程简单方便,同时具有中型PLC的强大功能(如丰富的库函数和算术表达式编程等)。在Micro PLC上实现Modbus主站有两种方式:1、通过编程软件直接将编程端口(Channel 0)设置为Modbus Master方式。2、在通讯扩展插槽(Channel 1)内插入TSXSCP114 - RS485 PCMCIA多协议通讯卡,通过编程软件将该通讯卡设置为Modbus Master方式。注意,采用第一种方式时,通讯口为非隔离的,当传输距离大于10米时应采用总线隔离器(如:TSXPACC01)。此外,Modbus通讯参数必须与变频器一致。在PLC的软件编程中,通过库函数中的通讯指令即可简单地实现对ATV58变频器的内部通讯变量的访问:READ_VAR(ADR#m.v.i,%MW,450,10,%MW100:10,%MW150:4)%MW150:X

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论