李煊丁为
(中石化上海石油化工研究院,上海 201208)
上海石油化工研究院所用的实验装置具有点数少、设备多样化等特点。一套典型的小试装置,控制点一般少于100个。这种规模的装置用分布式控制系统(distributed control system,DCS)显然不够经济(集中评价部门除外)。因此,目前设计的微反、小试、中试装置中,多使用“智能仪表+PLC”模式,其模拟量的测量控制(AI、AO)由智能仪表完成,开关量(DI、DO)的控制由PLC及相关电路完成。近年来,这种模式得到了上海石油化工研究院研究、管理部门的认可。对于这种模式的监控、操作、记录平台的实现,工控机和串口编程技术成为了核心。本文列举了几种日常工作中常用设备的通信协议,并介绍了这些通信协议的应用。
AIBUS是厦门宇电自动化科技有限公司为AI系列显示控制仪表开发的通信协议,其使用异步串行通信接口,接口电平符合RS-232C或RS-485标准中的规定[1]。采用RS-485通信方式时,能通过简单的指令实现仪表的全功能操作,并提供比其他常用协议(如Modbus)更快的速率。在9600 bit/s下,一般上位机访问一台7.0版仪表的平均时间约80 ms,但若采用AIBUS,一次性访问56个通道只需1.2 s,平均访问时间在20 ms左右。
AI仪表采用16进制数据格式来表示各种指令代码及数据,其软件通信指令经过优化设计,只有读、写两条指令,从而使得上位机软件的编写更容易,且能够100%地对仪表进行操作。标准的读写指令如下。
①读:地址代号+52H(82)+要读的参数代号+0+0+校验码。
②写:地址代号+43H(67)+要写的参数代号+写入数低字节+写入数高字节+校验码。
参数代号是指在使用RS-485通信方式时,为在一个通信接口上连接多台AI仪表,需要为每台AI仪表编一个互不相同的通信地址,有效的地址为0~80。校验码采用16位求和校验方式,其中读指令的校验码计算方法为要读参数的代号×256+82+Addr。写指令的校验码计算方法为以下公式作16位二进制加法计算得出的余数(溢出部分不处理):要写的参数代号×256+67+要写的参数值+Addr,余数为2个字节,其低字节在前,高字节在后。公式中Addr为仪表地址参数值,范围为0~80。要写的参数值用16位二进制整数表示。无论是读还是写,仪表都返回以下10个字节数据,即测量值PV+给定值SV+输出值MV及报警状态+所读/写参数值+校验码。其中,PV、SV及所读参数值均各占2个字节、MV占1个字节、状态位占1个字节、校验码占2个字节,共10个字节。
正常情况下,一台仪表的通信时间不会超过100 ms。若在1 s内不能完成通信,则认为本次通信失败,连续5次通信失败则判断为仪表通信故障;若在1 s内完成通信且校验码正确,则认为仪表通信成功。在实际测试中,没有发现校验码错误例子。写表程序类似,不再赘述。设计的读表程序逻辑框图如图1所示。
图1 读表程序逻辑框图Fig.1 Logical diagram of communication programme for computer’s reading
根据AIBUS协议,在我们的监控软件中,读表程序主要部分描述如下。其中,out定义为字节型数组。
在实际工作中,通过使用AIBUS协议所编写的程序,用户可以在上位机上实现目标值(多段控制值)的输入、控制参数的修改和实时值(测量值、给定值、输出值及报警状态)采集。以返回接收缓冲器的字节数等于10作为输入结束的判断,没有发现过异常或者乱码,AIBUS协议被认为是目前所用各类通信协议中较为友好、稳定的协议。
FX2N系列PLC与计算机间的通信类型有N∶N网络、并行链接、计算机链接(用专用协议进行数据传送,RS-485/422)和无协议通信(用RS指令进行数据传输)等[2]。考虑到系统点数少和工控机监控的特点,本文采用计算机链接通信。
计算机链接指令如表1所示,由此可以对PLC进行全方位操作。
表1 计算机链接指令表Tab.1 The table of computer linking instructions
常用的指令包括位软元件成批读指令(BR)和位软元件成批写指令(BW)。
2.2.1 位软元件成批读(BR)指令
BR指令协议格式为ENQ+站号+PC号+BR+等待时间+元件号+元件数+校验码。其中,“ENQ”表示计算机查询,其值为05H;“站号”表示如有N台PLC,站号为00H~(N-1),十六进制;“PC号”表示对于FX系列PLC,该号取值为FFH;“BR”表示批读指令;“等待时间”的值根据需要设置;“元件号”表示一组位软元件及其编号;“元件数”表示本次要同时读的元件个数。
PLC接受指令后的反馈值为 STX+站号 +PC号+指定元件数据+EXT+校验码。其中,“STX”表示文本起点,其值为02H;“EXT”表示文本终点,其值为03H;“指定元件数据”取值为“0”或“1”,“0”代表“关”,“1”代表“开”。
2.2.2 位软元件成批写(BW)指令
BW指令协议格式为ENQ+站号+PC号+BW+等待时间+元件号+元件数+校验码。除了指令字符为BW外,其他定义同2.2.1节。PLC接受指令后的反馈值为STX+站号+PC号。
在研究院的各项试验中,工作程序往往是变化的,特别是某一工段的时间设置。对于这种工作状态,让试验人员不断地修改PLC程序并不现实,自控人员也没有时间和精力经常去做这件事。为此,在PLC编程中,编制了两套程序,分别用于2种工作状态。
①PLC控制状态,适用于按照预先规定好的常规工作程序操作,此时计算机可以启动/关闭现场设备和试验数据记录。
②计算机控制状态,适用于不断变化的工作程序。而这两种状态的切换,由计算机改变PLC中的辅助继电器实现。当计算机处于控制状态时,PLC仅充当DI、DO功能,并保留安全连锁功能。
按照上述思想编制的部分PLC程序梯形图如图2所示。
图2 PLC程序梯形图(部分)Fig.2 Ladder diagram of PLC ladder program(partial)
图2中,M20为状态切换的辅助继电器,缺省值为PLC控制,X0003为连锁保护输入点,在两个状态下都适用,Y0005为控制目标输出端,T0、T4为PLC的时间继电器,分别代表开始、结束时间,M5为计算机控制所使用的辅助继电器,其开关状态由计算机规定,由此实现任意时间的设置。
改变M20,由PLC控制并切换成计算机控制的指令为:
MSComm2.Output=Chr$(5)+"00FFBW0M002001156"
闭合M5,使Y0005动作的指令为:
MSComm2.Output=Chr$(5)+"00FFBW0M000501159"
读取Y0000~0007状态的指令为:
MSComm2.Output=Chr$(5)+"00FFBR0Y00000831"
通过这些指令,可灵活地根据实际需要,使用计算机控制PLC的开关状态,达到计算机控制目的。
按上述思路设计的实验装置和自行开发的程序,自2003年开始使用至今,除了电动机联动限位开关长期使用损坏过外,其他控制部分没有出过任何问题。
PLC接受指令后的反馈值,作为通信成功的判定。其中通信故障判断方法类似1.2节,不再赘述。
发送至天平的指令包含一个或多个ASCII码组,因此,必须注意以下几点[3]。
①只能使用大写字母输入指令;
②指令中的参数必须在指令名中以空格的形式分开;
③文字的输入可以是8位ASCII字符集从字符32到255(十进制)所构成的一组字符串;
④每组指令必须以 CRLF结束(ASCII十进制代码13,10);
例如,指令“SI”+CRLF为要求天平发送当前稳定的净称量值,天平返回值为“S S 100.00 g”。同时,天平可能返回其他信息,如“S I”,表示无法执行指令(天平正执行其他指令,如去皮或因未达到稳定值指令已超时);返回“S+”时,表示天平过载,“S–”时,表示天平欠载。
上海石油化工研究院装置中的电子天平(秤)一般都用于监视原料(产物)的减少(增加),其属于一个动态过程,故平时只使用该天平指令中的“SI”指令(立即发送称量值),即MSComm3.Output=“SI”+vbCr+vbLf)。指令发出后,即可得到相应值,按位数取出重量值及单位即可。
但实际应用中存在的问题是该天平的通信时间不稳定。根据实测记录,从指令发出到返回值接收,所用的时间是随机变化的,从小于200 ms到大于2 s都有可能,这对故障判断非常不利。在实际编程中,若连续10次通信时间超过2 s,则判断该天平通信故障或者没有上电,在发出故障通报后,停止对该天平的监控。
Mark天平/Q系列电子天平可以通过标准RS-232C接口,由计算机运行各种功能[4]。天平操作按键与计算机指令对应表如表2所示。
表2 按键与指令对应表Tab.2 Pushbuttons vs.computer instructions
对于计算机通信设置,该系列天平提供了PC Cout(连续)模式和PC Cmd(指令)模式两种选项。这两种模式的返回格式如表3所示。
表3 返回值格式表Tab.3 Format(s)of the returned value(s)
连续模式不需要指令,天平会连续不断地发送当前的称量值。由于没有上下位机的协调动作,计算机首先取到的往往是乱码。而指令模式仅能在称重物质量稳定的情况下使用,否则会出现通信错误的提示。
经过分析,决定在连续模式下进行“去伪存真”处理:将输入数据缓冲区的长度定在50,约是输入数据长度(15)的3倍;然后在大于一个数据段长度的第11位开始,找到重量单位“g”,再倒退11位,分析每一位是否为0~9的数字,并分析小数点和正负符号位的正确性,若满足,则认为这一段是有效值,否则再从下一个数据段进行查找;若整个数据段都是乱码,则放弃,重新取数。若重新取数5次,还没有拿到正常数据,则发出通信错误通报。
根据实测情况,约每10组数中有一组乱码,而且乱码都出现在前几个字符,这样基本上保证了上述对策的有效性。经过长时间的运行,该对策经受住考验,使得计算机能够按要求获得相关数据。
Lab alliance II型计量泵配置了一个RS-232C通信接口,接口使用的是RJ-11接头,与计算机上的9针串口的对应关系如表4所示[5]。上位机可以对该泵进行流量设置和启停操作。
表4 计量泵与RS-232C引脚的接线对照Tab.4 Connections between metering pump and RS-232C pins
Lab alliance II型计量泵常用的通信指令有3条:①FL,x.xx表示设置流量为 x.xx mL/min 的指令,设置范围由泵头类型决定,如 0.01 到 0.09,0.1 到 39.9等;②RU表示设置泵运行指令;③ST表示设置泵停止指令。
VB 指令 MSComm7.Output== “FL,”+Text7.Text+vbCr+vbLf表示将指定的流量送入计量泵,MSComm7.Output=“RU” +vbCr+vbLf表示发出运行指令,MSComm7.Output=“ST” +vbCr+vbLf表示发出停止指令
泵在接收以上指令后,会反馈一个“OK”字符,表示通信成功。经过多年的使用,该泵的通信较为稳定,没有出现过问题,但存在以下几个缺点。
①接口使用的是RJ-11,需要专用卡钳制作。
②没有流量读取指令,当用户在现场手动改变流量后,计算机不能获得信息,此时若需要记录,只能到计算机界面上修改(不下传)。
整套八通阀由阀体、控制器、手操器、24 V直流电源以及相关连接电缆组成[6]。控制器通过RS-232C(RS-485可选)电缆与电脑连接。当多台阀与计算机相连时,可以使用该公司提供的并联线,将多台阀全部并联后,接入计算机的一个串口。本项目使用了6台(最多10台)。阀之间通信的区分通过给每台阀设置不同的ID号实现。
常用的指令有:VR,为显示部件号和出厂日期;GOnn,为阀按照最短路径走到nn位;CP,为显示当前通道数;IDn,为设置 ID 号,从 0 ~9[7]。
类似上述恒流泵,许多指令如GOnn是没有应答的,这是因为计算机无法得知指令是否被完整执行。
与供货商讨论的结果是在GOnn指令后,再加上一条CP指令,以读取当前的实际通道数,用两条指令满足实际控制的要求。从表面上看,该逻辑是成立的,但在实际调试中,发现GOnn指令的完整执行需要较长时间,例如阀从1号位到4号位接近1 s,在阀还没有转动到位时,CP已经返回目标值,而不是实际到位信息。
这种现象在单个阀控制时不会出现问题,若多阀联动且共用一条通信线时,则会造成通信上的堵塞。从控制器返回的信息可以发现,许多正常的指令,在一定状态下特别是通信繁忙的情况下,会被阀控制器判断为无效指令。因此,在实际应用中,只能在用户可接受的范围内放慢运行速度,以保证每个阀的转动确实到位。
工控机及串口编程技术是中石化上海石油化工研究院装置自控部分设计的核心,上述几种串口通信协议及程序设计方法在装置设计中均得到了较好的应用。在实际的程序设计中,需要仔细分析各串口通信协议的内容,根据各协议的不同特点,灵活地调整设计方案,必要时还需要与生产商进行沟通。
[1]张磊.AIBUS现场通讯总线的PLC工控设计方案[J].MM现代制造,2006(9).
[2]王芹,滕今朝.可编程控制器技术及应用[M].天津:天津大学出版社,2008.
[3]Mettler-Toledo Pac Rim AG.PL-L line of classic light balances[EB/OL].[2007-08-06].http://www.mt.com/classic.
[4]BEL Engineering S R L.Analytical and top loading“Q”series MARK balances[EB/OL].[2009-10-15].http://www.belengineering.com/chi/menu_downloads.asp.
[5]Scientic Systems,Inc.Series II pump user’s guide[EB/OL].[2009-07-09].http://www.laballiance.com/Pdf/active/pumps/Series_II.pdf.
[6]Valco Instruments Co.Inc.Technical note 415:multi-position microelectric valve actuators[EB-OL][2011-07-02].http:∥wenku.baidu.com/view/014a870a763231126edb1183.html.