引言:厦门宇电公司生产的AI系列仪表具有良好的通讯功能,可以构成以AIBUS通讯协议为基础的现场总线。厂方提供的AIDCS应用软件,可运行在中文WINDOWS 98/ME/XP等操作系统下,能实现对1~200台AI系列各种型号仪表的集中监控和管理。在大规模应用的场合下,以监测、变送、通讯仪表和上位计算机为主构成的集散控制系统(DCS)无疑是一个较好的控制方案,本文试图从程序设计方面探讨AI仪表与常见的工业PLC控制系统的结合使用,这种多种通讯协议结合的应用具有相当的广泛性和代表性。
灵活多变的控制方案
工业PLC选用LG公司的MK-120S系列DR-30U,属于中小型PLC,CPU处理速度0.1US/步,用户程序容量7k步。它具备RS232和RS485两个通讯接口。一般场合应用,RS232可连接一台人机界面,用以集中监控智能表,RS485远程连接多台AI-518智能表;复杂场合应用时,RS232可通过兼容EIA/TIA的标准串行接口RS232〈=〉485转换器连接多台AI-518智能表,RS485用来接兼容相同RS485协议的人机界面和多台变频器。这种灵活多变的控制方案具有性价比良好的优点,能够以最少的硬件投资取得最好的控制特性,当然这是与宇电表具备人工智能调节、通讯传输可靠的优点分不开的。
程序设计详解
程序设计以14台AI-518智能表为例,对应第1台智能表,在AIBUS中的地址参数为1,在人机界面和PLC中定义的变量值为:测量值DATA1,给定值DATA2,报警变量PARA1,对应第2台智能表,它在AIBUS中的地址为2,其变量值为:测量值DATA3,给定值DATA4,报警变量PARA2...,以下如此类推,其中DATA1-28和PARA1-14均为PLC的数据寄存器。由于宇电的AIBUS通讯协议使用方便,且以RS485为基础的硬件通讯兼容性好,本文在PLC程序中将与智能表通讯及显示的参数变量都给出定义方法,很容易把它推广应用到其它厂家的PLC上。
1、程序的设计流程叙述如下("//"后为程序段备注):
(1) PLC上电初始化智能表的地址循环变量P为1;//P为PLC的数据寄存器。
(2) 14台智能表的“给定值DATAX”进行写条件轮询;//X为偶数,且0<X<=28。
(3) 对上面的14个写条件相“或”为M-write;//M-write为PLC的辅助继电器。
(4) 调用智能表读/写子程序。
(5) 地址循环变量从1-14变化时,将DATA1-28,PARA1-14分别赋值为DDISP,DSET和DALARM;//这三个参数均为数据寄存器,是14台表的读/写/报警公共地址指针。
(6) 以100MS的时钟为周期发送读/写帧,对接收到的字节按“读/写”字节区分,进行间接地址传送,其格式类似为:MOV DREV #DDISP, MOV DREV+1 #DSET,其中“DREV”为PLC串口通讯指令定义的接收帧的第1个字(共接收到符合AIBUS标准的10个字节)中;“DREV+1”为接收帧的第2个字;接收到的第3个字“DREV+2”包含智能表的报警信息,应对其进行字/位的“与/或”变换后再进行间接地址传送。
(7) 地址循环变量+1;
(8) 地址变量增加到14时重置为1;
(9) 程序结束语句;
(10) 智能表读/写子程序。
2、智能表的“给定值DATAX”写条件编程方法
指定1号表的旧给定值保存在“DOLD1”中,当要在人机界面上进行1号表的写“给定值DATA1”操作时,由于改变的新“给定值DATA1”与旧值“DOLD1”不同, 将此赋值给1号表写入标志M1(M1为PLC的辅助继电器),再将“给定值DATA1”传送到旧给定值“DOLD1”中去,同时将1号表的地址写指针P赋为1,并将“给定值DATA1”传送到14台表的公共写入值“DWRITE”中;对应地址参数不同的智能表应以此类推。
3、智能表报警信息的编程方法
由于接收帧的第3字的高字节为报警信息,所以应将第3字的高低字节倒置,得到报警的8位字节“HEX-ALARM”。按照AIBUS的标准,这8位字节的0-5位置1状态分别代表上限、下限、正偏差、负偏差和超量程报警,将“HEX-ALARM”与“HEX1F”按位相与,其结果赋值给“DD-ALARM”。在智能表的正常状态,“DD-ALARM”的值均为0;在报警状态下,其值必不为零。将“DD-ALARM”是否为零的状态赋值给“DALARM”,以显示对应智能表的报警状态。按照这种思路,稍稍修改程序,就可以在人机界面上集中显示多台智能表是否发生上限、下限、正偏差、负偏差和超量程报警,从而让我们更好地了解控制现场的情况。
4、智能表读/写子程序的设计流程
由于仅仅要读测量值/写给定值,按AIBUS通讯协议的要求,PLC对仪表的参数代号00H(给定值)进行加法操作就可以。因此智能表读/写子程序的设计流程如下:
1、地址循环变量P+80->P1; //P1为PLC的数据寄存器
2、P1*H100->P2;//P2为PLC的数据寄存器
3、P1+P2->PP; //PP为智能表在AIBUS中的协议地址,定义在发送帧中第1字
4、M-write条件成立时:
(1)传送HEX43到发送帧的第2字;//HEX43为写智能表标志
(2)传送“DWRITE”到发送帧的第3字;
(3)“DWRITE”+HEX43+地址循环变量P,其结果传送到发送帧的第4字;//进行写字节校验
5、M-write条件不成立时:
(1)传送HEX52到发送帧的第2字;//HEX52为读智能表标志
(2)传送HEX00到发送帧的第3字;
(3)HEX43+地址循环变量P,其结果传送到发送帧的第4字;//进行读字节校验
经验总结及程序效果
在对程序调试过程中,应利用PLC的串口监测工具对与智能表的通讯情况进行监控,必要时延长读/写帧的发送时钟周期,观察每次读/写帧的字节数、读/写字节、报警及校验字节是否符合AIBUS协议的要求。
当在人机界面上修改某台智能表的给定值时,智能表的刷新速度很快,而在集中显示的人机界面上就有一定时间延迟。分析:“写给定值” 操作在100ms内即可返回10个字节,但其中第2字代表的给定值(16进制格式)实际为上一次的赋值,需要对这台智能表再进行一次读操作时才向PLC返回方才写入的给定值。由于程序是按照“写给定值”优先的原则设计,当对智能表的写设定值操作结束后,智能表按刚才“写给定值”操作的协议地址继续以100ms时间间隔进行“读测量值”操作,其轮询仍按AIBUS协议地址1—〉14的次序,则在人机界面上“写给定值”操作后,刷新显示的延迟时间=(100ms+PLC程序循环时间)×14+(智能表-)PLC-)人机界面的信号传输时间),实测显示延迟时间最大不超过3秒。为改善这种显示延迟情况,可以在本文上述第二段中插入1行程序,将新“给定值DATA1”直接传送到对应智能表的人机界面显示值“DATAX”(X为偶数,且0<X<=28)中,即可实现远程智能表与人机界面的同步显示。
按以上设计原则编好的程序运行效果良好,显示稳定,刷新可靠,实现了对14台智能表在人机界面上的集中监控。