摘要:在大规模应用的场合下,以监测、变送、通信仪表和上位计算机为主构成的集散控制系统(DCS)无疑是一个较好的控制方案。
引言:厦门宇电公司生产的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台智能表在人机界面上的集中监控。
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容,以保证您的权益!联系电话:010-58612588 或 Email:editor@mmsonline.com.cn。
- 暂无反馈