摘 要:文章详细介绍了PLC控制中一种新颖、高效的通信方式——通信协议宏的原理和实现方法,并将该方法成功地应用于港口门机的电气传动部分的改造,取得了令人满意的效果,最后对通信协议宏实际应用中一些应注意冯问题予以总结。
一、引言
随着微机控制技术、电力电子技术和电气传动技术的飞速发展,交流变频调速技术正以其优异的控制性能日益为工业界所接受,而可编程逻辑控制器(PLC)作为一种高可靠性的控制部件,也正以前所未有的速度在工业自动化领域迅速普及。在我国传统的钢铁冶金、交通运输、机械化工等各产业中,存在着大量的以继电器、接触器和直流调速为主的电气传动系统,这些系统存在硬件线路复杂、可靠性低、能耗大、生产维修量大等许多缺点,因此如何将PLC与交流变频调速技术相结合,对传统产业进行改造,是企业界正着力解决的问题。本文就某港务局与浙江大学合作,对其下属的煤运码头门机电气传动部分的改造进行了介绍。原有的门机传动部分分为3块,即门机抓斗的3个自由度,起升、变幅和旋转,均采用交流绕线式电机进串电阻调速,根据以往运行情况,主要缺点在于:能耗大,运行时机械、电气冲击大,故障频繁,维修任务繁重等,故决定将系统改造为PLC控制的交流变频调速系统。
二、系统构成
根据系统特点和生产工艺要求,选用适合小型应用场合的OMRON-C200HE型PLC,变频器采用英国CT公司的高性能通用变频器,为了显示系统工作情况及故障情况,系统还包括一块OMRON-NT620S型触摸屏。遵循以前的生产操作习惯,仍采用手柄操作,触摸屏仅用来显示相关信息,为系统维修提供支持。整个系统中PLC是控制核心——根据操作指令和内部逻辑向变频器发送指令,从变频器读回各种信息,并将这些信息送给触摸屏显示等。C200HE是OMRON系列PLC中较新的型号,具有很强的通信功能,而CT系列变频器也具有可选的通信模块。为了充分利用PLC和变频器的功能,最大限度地减少硬件连线,系统采用PLC与变频器之间以串行通信方式进行控制,硬件上采用适合工业场合的RS485连接,整个系统结构如图1所示。
由于系统生产工艺并不复杂,所以如何实现PLC与变频器之间的通信是整个工作的重点。C200HE型PLC除了通常用于RS232通信方式的TXD,RXD指令外,还提供了一种新颖、高效的通信方式,PMCR指令——通信协议宏功能。这种通信方式不仅适用于RS232通信方式,也适用于抗干扰能力强,传输距离远的RS485方式,而且其最大优点在于允许用户定义单独的数据传送序列和传送信息,用户可以用OMRON通信协议宏支持软件很容易地修改通信序列,从而大大简化编程,增加编程的灵活性,本文将对此进详细的讨论。
三、PLC控制中通信协议宏的实现
1、OMRON 通信协议宏
通信协议宏功能是把同连接在RS232或RS422/485通用组件等各种通信机器之间的数据送收信息顺序,通过通信协议宏支持软件,让用户自由编制,以PMCR指令就能够实现的用户原始通信协议。
要实现通信协议宏功能,必须有相应的硬件支持,即通信单元,C200HE包括COM01 ~ COM066种可选单元,其中COM04 ~ COM06支持通信协议宏功能。对于本文的工作,需要一个RS485的通信端口去控制变频器,所以选择COM06单元,其A口(RS485)与CT变频器通信。B口(RS232)与触摸屏进行通信,在选定连接好硬件之后,就可以进行通信协议宏的工作了。首先必须对通信单元作设定,根据变频器的设定,使用ASCII协议,数据通信连接 :1位起始位,7位数据位,1位停止位,偶校验,RS485两线制,波特率为9600,故对COM06要将切换开关SW1调整到“2”侧,终端电阻开关SW2设定为ON。另外,PLC的数据区DM6555、DM6556要设置成支持协议宏,并且通信连接的格式要与变频器设定一致,在设置完成之后,可以编写协议。用通信协议支持软件可以建立多达1000个通信序列,即000 ~ 999,每个通信序列最多由16步组成,通信序列每一步的结构及各参数的含义如表1所示。
参数 | 功能 | 参数设置 |
Repeat | 设置重复步的次数 | 常数,IR/SR,LR,HR,AR,DM和EM区域 |
Command | 设置通信命令 | 发送,接收或发送与接收 |
Retry | 设置在执行发送和接收命令发生错误时,重新执行次数 | 0 ~ 9 |
Send Wait | 设置在发送期间等候发送数据的时间 | 单位0.01,0.1s,1s和1min |
Send Message | 设置用于接收命令或发送和接收命令的发送数据 | 识别码,地址,长度,数据,错误检查码和终止符 |
Receive Message | 设置用于接收命令或接收和发送命令的期望接受数据 | 识别码,地址,长度,数据,错误检查码和终止符 |
Array | 设置用于接收命令或接收和发送命令的期望接受数据(最多15种类型),并按数据类型调整处理 | 识别码,地址,长度,数据,错误检查码,终止符和下一步处理 |
Response | 设置是否写接收数据 | 是/否 |
Next | 设置当前步顺利结束时转往的下一步 | END,GOTO,NEXT,ABORT |
Error | 设置当前步出现错误时转往的下一步 | END,GOTO,NEXT,ABORT |
在通行序列各项参数的设置中,Send message和Receive Message是最重要的,因为它们不仅决定发送和接受信息的具体内容,而且其格式的设置要与具体的控制对象的通信协议相结合来确定,下文将对此进行详细讨论。
2、CT变频器的通信协议
根据系统要求,给每台Unidrive变频器配备了CT公司提供的UD-71插入式通信模块,该模块内含1片32位RISC处理芯片,对外提供RS232和RS485两个完全光隔的通信接口,可以方便地将变频器连如RS485网络。Unidrive变频器与上位机之间的通信采用的命令和数据都是字符串,它具有特定的通信协议,该协议由CT公司提供,包括两大类命令,即读数据命令和写数据命令,这两类命令的格式介绍如下。
(1)写命令
当上位机(PLC)想设定网络上某一台变频器的某一个参数时,上位机就发送下列格式的命令:
控制 | 地址 | 控制 | 参数 | 数据 | 控制 | 校验 |
EOT | GA GA UA UA | STX | M1 M 2 P1 P2 | D1……DN | ETX | BCC |
EOT——复位码,STX——命令开始码,ETX——命令结束码,GA——组号,UA——单元号,M1、M2——参数号,P1、P2——参数在组内的序号,D1…DN——参数的值(D1为符号位),BCC——块校验和。
由于写命令可直接改变电机的运行状态,为防止发生意外,写命令的格式要求很严格,变频器地址、参数、数据缺一不可。如果该命令能被变频器识别,则变频器返回ACK(成功),否则NAK(不成功)。
例1 要将第1组的第2个变频器的参数“1.15”写为“1”,则传送的信息如下。
控制 | 地址 | 控制 | 参数 | 数据 | 控制 | 校验 |
EOT | 31 31 32 32 | STX ( 02 ) | 30 32 32 35 | + ( 2B ) 31 | ETX | BCC |
(2)读命令
当上位机(PLC)想读取网络上某一台变频器的某一个参数时,上位机就发送下列格式的命令。
控制 | 地址 | 参数 | 控制 |
EOT | GA GA UA UA | M1 M 2 P1 P2 | ENQ |
如果该命令能被变频器识别,则变频器将返回如下结构的信息。
控制 | 参数 | 数据 | 控制 | 校验 |
STX | M1 M2 P1 P2 | D1……DN | ETX | BCC |
上述格式中的符号ENQ为查询码,其余符号含义与写命令相同。
例2 要读取第1组第2个变频器的有功电值“4.02”参数,则传送的信息如下。
控制 | 地址 | 参数 | 控制 |
EOT ( 04 ) | 31 31 32 32 | 30 34 30 32 | ENQ ( 05 ) |
返回信息为
控制 | 参数 | 数据 | 控制 | 校验 |
STX ( 02 ) | 30 34 30 32 | XXXXX | ETX ( 03 ) | BCC |
这里值得一提的是BCC校验和,为保证由变频器出入的信息在传输的过程中的准确无误,数据响应以块校验和数BCC字符结尾。BCC实际上是该命令中从STX控制码之后开始的所有字符的ASCII码的异或弛,若运算结果小于32,则加上20H,最终以ASCII码对应的字符加到读写指令中,上位机可以用该值来校验前面收到的数据的准确性。因此,例1中的BCC值为3C。
3、通信协议宏在本系统控制中的实现
前文已述及,在通信协议宏的编制中,发送信息和接收信息是最重要的,而发送信息和接收信息的编制是根据PLC通信协议宏的格式要求,以CT变频器的通信协议为基础来进行的。对变频器的控制,不管是写命令,还是读命令,都包括发送和接收两个信息(Send Message/Receive Message)。对于写命令,发送的信息是某个变频器的某个参数,接收的信息仅是1个位,即通信成功与否(ACK/NAK);对于读命令,发送的信息是某个变频器的某个参数,接受的信息是该参数的相关内容。因此,写命令和读命令的通信协议序列中,都包括发送信息和接收信息,即协议中Command参数应设为Send&Receive,确定通信协议序列之后,就可以编制具体的发送信息和接收信息。
Send Message和Receive Message结构如下
*Message Name Header(h) Terminator(t) Check Code(c) Length(l) Address(a) Data(d)其中(h)、(t)、(c)表示信息可开始位、结束位、校验位,它们是由通信控制设备的协议所决定的,当设置(t)时,(l)自动附加,(a)是指信息送往目标的标志符,(d)用于设置信息内容。这里结合PMCR指令,对Address(a)和Data(d)作进一步解释。通信协议宏在程序中是以PMCR指令来实现的,它的格式如下。
PMCR
C
S
D
其中C为控制字,第1位用于指定端口,1:A口,2:B口,后3位表示通信序列,S表示发送数据首字,D表示接收数据首字。
下面以本系统为例来说明通信协议宏的实现过程。
要用PLC将其控制的3台变频器的参数读回来,必须先将地址号和参数号发给相应的变频器,变频器识别后,再将返回的信息写到PLC指定的区域内。
实现过程分两步,第一步编写通信协议,关键的问题在于Send Messang和Receive Message中Address和Data的编写。首先需设置它们的属性——读(R)或写(W),对本例而言,Send Message中发送的地址号和参数号是从PLC的DM区中读出后发送的,所以其属性设为R;而Receive Message中接收到的信息是要写入DM区的,所以其属性设为W。设置了属性,就可以进行第2步:从指定字中读写地址或数据。有几种方法可以指定该字,一种通用的方法是用包括变量N的一阶方程用于地址或数据的引入,每当通信序列步中指定的重复计数器重复一步时,变量N加1,使用带N变量的方程计算地址或数据可实现地址和数据的动态传输。
根据CT变频器通信协议,读变频器参数信息时,每次先发送长度为8个字节的地址号和参数号,返回的信息长度不定,不妨每16个字节存放1条信息,数据长度由(t)确定后自动附加,Data中以通配符*表示。
由此编制Send message和Receive message如下。
*Message Name | Header | Terminator | CheckCode Length | Address | Data |
Send1 | EOT | ENQ | 略 | (R(8N), 4) | (h)+(a)+(R |
Recv1 | STX | EXT | 略 | (W(16N), 4) | (h)+(a)+(W(16N),*)+(t) |
以上面的通信协议(序列号设为1),假设发送信息存在DM300开始的单元,接收信息存入DM800开始的单元内,则用下面的一条PMCR指令就可连续读取3台变频器的指定参数。
PMCR
#1001
DM0300
DM0800
四、总结
通信协议宏,可以用一条指令实现遵循同一个协议的多条信息传送,大大简化了编程,增加了编程的灵活性,这一功能被成功地应用于本系统中,不仅提高了程序的运行效果,而且在实际运行中取得了令人满意的效果。目前该系统已在现场正常工作了两个多月,整个系统的维修量和耗电量都大为降低。实践证明,通信协议宏在系统中的应用是成功、有效的。
在本系统的调试中,笔者体会到在使用通信协议宏时,一些细节的问题必须予以充分的考虑,否则,就不能充分发挥通信协议宏的功能,甚至会造成通信失败,这里列举几个调试中遇到的问题。
1、在程序中,有多条PMCR指令时,尽量使用@PMCR——上升沿有效指令,否则可能引起各条指令之间的冲突,从而造成通信失败。
2、当通信失败时,通信忙位28908(内部继电器)始终保持ON,必须在程序中有相应的复位手段,例如当28908保持ON超过一定时间时,可置通信复位继电器28911为ON,使通信复位。
3、通信复位时,虽然可恢复通信,但此时,往往会失去通信所需的上升沿条件,必须在复位的同时,补发一个上升沿,可采用28911的常开触点予以解决。
总之,通信协议宏作为一种新颖的PLC通信手段,与传统的方法相比,具有简单、高效的优点。但实际应用中必须在理解基本原理的基础上,充分考虑各种情况,才能真正发挥通信协议宏的优势。