0 引言 Modbus协议是由美国MODICON(莫迪康)公司于20世纪80年代末开发,有Modbus-RTU、Modbus-ASCII和Modbus-TCP 3种通信方式,其中Modbus-RTU、Modbus-ASCII使用RS-232、RS-422和RS-485串行接口进行传输。 Modbus协议具有良好兼容性和开放性,为各产商生产的工业控制器(如工控机、PLC、变频器和各种智能仪器仪表等)所采用,用于控制器相互之间、控制器(经网络)与其它设备之间的通信。常用的变频器品牌如ABB、三菱、海利普、东芝、LS、台达和安邦信等都兼容Modbus-RTU通信协议,这为变频器使用功能的扩展提供了空间,也为以电动机为重要执行元件的工业自动化控制系统的进一步发展提供了有力支持。 1 Modbus-RTU协议信息帧 1.1 Modbus-RTU协议信息帧格式 Modbus-RTU协议常用功能信息帧格式如下: Modbus协议通
信采用主从通信技术,允许主机与一台或多台从机通信。每次通信均由主机通过信息帧发出请求信息,从机收到正确无误的请求信息后,通过响应信息帧返回相应的数据或状态信息以响应主机请求。信息帧是主机与从机之间进行Modbus-RTU协议通信的基础,由地址信息、功能信息、数据信息和错误校验信息4个部分按一定顺序组成,各信息数据分别存放在8位十六进制字节中。 从机地址是从机唯一的通信地址,可设定值为1~247,0为主机对全部从机进行广播,从机不响应。功能代码是主机对从机的要求,从机根据要求执行相关动作。Modbus-RTU协议支持技术规范中规定从零开始寻址空间,所以在设定从机Modbus-RTU协议分配的保持寄存器开始地址时,实际的地址是设定开始地址的数值加上1。 1.2 出错校验CRC码 Modbus-RTU协议为保证主机和从机之间的通信信息完整正确,在信息帧中加入出错校验CRC码。出错校验CRC码使用16位循环冗余的方法,占用2个字节,包含了一个16位的二进制值。CRC值由主机计算出来附加到信息帧上,从机在接收信息时重新计算CRC值,然后与接收到的CRC值进行比较,如果这两个值不相等,说明信息帧有错误。在自动控制系统中,各种通信信息在传输中经常受到电噪声、电磁干扰以及其它干扰,数据和控制指令可能会发生一些改变,使控制系统产生异常。Modbus-RTU通信协议在信息帧中加入出错校验CRC码,能够保证从机不去响应或执行在传输过程中发生改变的数据和指令信息,大大提高了系统的安全性和效率。生成16位循环冗余出错校验CRC码的步骤如下: (1)设置一个值为H0FFFF(即全部位均为1)的16位寄存器,称之为CRC寄存器。 (2)把第一个8位字节与CRC寄存器低位进行异或运算。将运算结果储存在CRC寄存器中。 (3)把CRC寄存器中的位向右(低位方向)移一位,最高位用0填补,检查最低位的值。 (4)如果最低位的值是0,则重复第(3)步;如果最低位的值是1,则将CRC寄存器与多项式HA001(1010000000000001)进行异或运算。 (5)重复上述第(3)步和第(4)步,直至CRC寄存器共向右移8位,这时一个8位字节的数据处理完成。 (6)重复上述第(2)步到第(5)步,进行下一个8位字节的处理。 (7)重复上述第(2)步到第(6)步,直到将信息帧所有字节均与这个CRC寄存器进行过异或运算。 (8)最后这个16位CRC寄存器中的值即为2个字节CRC校验码。 三菱FX1N系列PLC生成CRC码的程序如图1所示。
图1 生成出错校验CRC码的PLC程序 2 Modbus协议通信系统组成 Modbus-RTU协议通信系统组成如图2所示,由ABB ACS510系列变频器、三菱FX1N系列PLC和三菱FX1N-485-BD通信板组成。PLC通过RS-485通信板用屏蔽双绞线连接到变频器内置RS-485接口上,构成Modbus-RTU协议通信的传输通道。根据控制系统的作用和目的,在变频器上设定好Modbus-RTU协议通信参数和其它相关参数,并向PLC中输入已编写好的包含Modbus-RTU协议通信程序在内的控制程序后,PLC和变频器之间就可以进行Modbus-RTU协议通信。 Modbus-RTU协议通信使用专用的信息帧,在主机PLC与从机变频器之间进行串行通信。PLC发出查询信息帧,变频器接收到正确的查询信息后向PLC返回发送响应信息帧,并执行查询信息帧所要求的功能。当变频器接收到异常的查询信息时,就返回错误响应信息帧或者不返回响应信息帧,同时不执行查询信息要求的功能。信息帧具有读取数据和写入数据的功能,使PLC不仅能够写入或读取变频器的参数,还可以对变频器发出控制指令并确认其运行状态,这样PLC就可以全方位监控变频器的运行。
图2 变频器与PLC间Modbus协议通信组成 3 ABB变频器通信参数设置 为确保ABB变频器与PLC之间的Modbus-RTU协议通信正常畅通,需要对变频器的相关参数进行设定,如表1所示。ABB ACS510系列变频器需要设置与Modbus-RTU协议通信相关参数组:Group98可选件,激活Modbus-RTU协议RS-485串行传输通信;Group53内置通信协议,定义内置现场总线(EFB)通信协议的配置;Group16系统控制,定义系列系统控制参数(如锁定、复位和使能控制等);Group14继电器输出,设定每个输出继电器动作条件;Group13模拟输入,设定模拟输入的限幅值和滤波时间;Group11给定选择,选择、设定外部给定1、2的来源和性质;Group10输入指令,定义控制起动、停止和方向的外部控制源,电机方向锁定或允许电机正反转。其它变频器参数根据电机的工作环境、使用用途等因素进行设定。 表1 变频器Modbus-RTU协议通信参数设定值
4 PLC程序设计 三菱FX系列PLC通过RS-485串行通信传输方式与变频器进行Modbus-RTU协议通信,RS串行数据传送功能指令是FX系列PLC进行发送和接收串行数据的功能指令。在RS功能指令驱动前,要对RS功能指令通信数据传送格式的特殊数据寄存器D8120进行设定。设定值是与ABB ACS510系列变频器的通信参数设定相对应的H0C99,即RS-485接口,无起始符和终止符,传送速度19200bps,2位停止位,无奇偶性,数据长度为8位。Modbus-RTU协议通信信息帧中的信息和数据是以8位字节形式传送的,要使PLC中的8位处理模式特殊辅助继电器M8161保持常通。 每次用RS功能指令发送数据的同时,要用脉冲指令置位串行通信发送标志特殊辅助继电器M8122,发送结束后M8122将自动复位。在串行通信接收完成标志特殊辅助继电器M8123触点动作前,先要将RS功能指令接收的数据传送到其它的PLC数据寄存器中,再对接收完成标志M8122进行复位。PLC通过RS功能指令接收到从变频器返回来的数据,分别存放在高、低位数据寄存器中,因此要对接收到的数据进行合成处理,并将其传送到另外的数据寄存器中存放。ABB ACS系列变频器还支持H17(或者23)读/写多个保持寄存器功能码指令,即由H3(或者3)读保持寄存器功能码指令和H10(或者16)写多个保持寄存器功能码指令合成的一个复合功能码指令。在编写与ABB变频器的Modbus-RTU协议通信程序时,采用H17(或者23)读/写多个保持寄存器功能码指令,可以大大简化通信程序,提高编程效率。 5结语 变频器与PLC之间的Modbus-RTU协议通信,改变了以往变频器单纯接受PLC发出的开关指令和模拟信号的模式,使变频器几乎所有输入控制信息和数据均可来自现场总线。同时,变频器根据PLC的要求,将当前运行数据和状态传回给PLC,并通过PLC上传到自动控制系统中的显示终端、上位机,或者由PLC通过网络上传到中央控制系统。这为工业控制从单机控制走向集中监控、集散控制,以及工业控制器联网进行网络化监控管理提供了进一步的支持。 参考文献 [1] ABB公司. ACS510用户手册.2007 [2] 三菱公司.FX1N系列微型可编程控制器使用手册.1999 [3] 廖常初.PLC编程及应用[M].北京: 机械工业出版社, 2002
评论排行