软PLC逻辑控制元件图形化分析与实现*
2012-11-24代征宇杨观赐李少波
代征宇,杨观赐,李少波
(贵州大学教育部现代制造技术重点实验室,贵阳 550003)
0 引言
软PLC的市场需求量在不断的增长。典型的软PLC应用产品有:①SOFTPLC公司的softPLC。soft-PLC是基于PC的开放式控制软件,具有开放的控制平台,用户能够根据自己的需求来选择硬件。②SIEMENS公司的 SIMATIC WinAc。SIMATIC WinAc是基于windows平台的控制软件,具有可视化人机界面,它将控制、数据处理、通信等技术集于一体,采用了实时操作系统作为Windows NT的扩展,具有“硬实时”的特性。③CJ International公司的ISaGRAF。ISaGRAF能够在多种操作系统下运行,具有良好的网络通讯能力[1]。在国内,吕涌等开发的面向DCS控制组态软件中包含一些软PLC功能,它只是DCS系统的一部分,不能独立运行[2]。李左章等对软PLC技术进行了大量的研究,其开发的数控内嵌式PLC具有软PLC的特点,但功能单一,不能作为独立系统运行,且无联网通讯能力[3]。
基于上述产品的特点以及不足,本文主要研究基于Qt平台的中央空调控制系统中的软PLC控制软件的开发,其对于降低大型中央空调能耗,缓解我国因不断增长的能源需求所带来的能源压力和环境压力具有重要的意义。
1 图形元件类需求分析与实现策略
1.1 图形元件类需求分析
采用梯形图语言设计顺序控制逻辑,具有方便直观的优点,且梯形图程序由若干图形元件按逻辑规则连接而成,编译顺序是从上到下,从左到右[4]。将控制系统的开关量逻辑与状态表示成梯形图,有利于系统维护与快速故障诊断[5]。通过对梯形图及其设计规则的分析,用梯形图语言编制程序的过程实质上是一个用梯形图图符来表示操作指令、用图符的串并联及位置顺序来表示操作指令之间逻辑关系的过程。由此,一个梯形图可以看作是由梯形图图符和连接符组合而成[6]。为实现软PLC控制软件功能,其编辑模块应包括指令的类设计与实现、梯形图的生成、显示和修改功能的实现,并为用户提供友好的操作界面和良好的编程环境,提高软PLC编辑模块的可靠性和可用性的功能。对于元件的操作,应实现元件复制、粘贴、剪切、添加、删除、元件属性编辑等操作。
在软PLC控制软件编辑模块中,元件类必须符合以下要求:
(1)为减少系统代码冗余,缩短运行时间,元件代码必须要高效、合理、精简。操作过程中,要实现元件的灵活拖放,并保证系统稳定。
(2)元件必须能够准确、完整、快速地保存数据。并且在系统运行时,及时保存并更新数据。
(3)元件必须具备出错处理功能,并能够判别其使用环境,当两个元件不能同时使用时,需要有相应的提示。
1.2 图形元件实现策略
依据《Logix5550控制器指令集参考手册》,指令主要分为8大类,分别是位操作类、计时器/计数器类、比较类、计算类、传送与逻辑类、程序控制类、终止循环类、滤波类。文献[7]中定义了一个EClass建模类,它指定属性和参数以描述元件图形、图像化的数据。此方法可以降低工作量,减小代码冗余。但是在具体实现过程中,各个元件的图形、图像化参数存在差异,所要呈现的视觉效果不同,此方法无法满足系统对指令图形多样化的需求。文献[8]定义了DrawObject基类来描述所有元件图形化的共同属性和行为,把元件的图形化和逻辑功能封装在一起,简化了编程过程。在本系统构架中,定义ClogicElement为元件库模型的基类,它是从梯形图编程系统所支持的所有元件抽象出来的一个类,它定义了其他类的共有操作接口和属性,是其他图形元件类的父类。模块中所有的元件子类都依据继承机制继承了基类的属性,并根据自己支持的图形元件有选择地重载基类相应的操作,以满足子类的需求[9]。如图1,为其逻辑功能模块类结构。
图形元件是实现对象的模型,它不仅是实现对象的图形表示,而且还要包括与现实对象相关的一些主要属性、数据和行为。因此,必须将图形元件智能化[10]。Qt具有很好的平台移植性,采用面向对象语言,易于扩展,并且允许组件编程。另外,使用Qt编写的程序在嵌入式系统上运行时间性能高,占用系统资源少,能保证该系统移植到嵌入式系统以后的顺畅运行。因此,本系统在Qt平台上进行开发。
图1 逻辑功能模块类结构
2 图形元件类设计与功能实现
2.1 图形元件类设计
根据《Logix5550控制器指令集参考手册》,元件基类应定义元件预扫描函数、梯级输入函数、梯级输出函数、元件逻辑功能函数、元件输出函数等一些公有属性的函数。
梯形图元件基类的关键代码如下:
2.2 图形元件功能实现
梯形图是由梯级和图形元件构成,用图形元件的串联或并联以及它们的位置和顺序来表示实际元件之间的逻辑关系,而元件之间的逻辑运算是通过各个元件之间的函数进行关联。在定义元件类时,把元件数据定义为私有,把元件函数定义为公有,以此方式来实现元件的功能。如图2所示。
图2 元件间的逻辑运算方式
以计时器计数器类中TON指令为例,
(1)对象初始化
CLogicElement*myElement=new CLogicCounterTON;
(2)数据初始化
myElement->SetDataInput(myData,output,preScan);
其中myData为当前元件的数据,output为在梯形图运行中的输出值,preScan为当前元件是否预扫描。
(3)程序执行
myElement->Output();
(4)将数据返回到存储与交换数据中间件类
myElement->ModifyData(Instance);
并非每个元件运行后都修改数据,因此对未修改数据的元件类此方法内容为空。
(5)在执行中元件类数据的修改
myElement->UpdateDataValues(Instance);
此方法可以将已经在存储与交换数据中间件类中更新的数据传入元件类中,在执行过程中调用,如图3为元件运算流程图。
图3 元件运算流程图
3 图形元件功能测试
遵循软件测试原则,采用黑盒测试方法。根据《Logix5550控制器指令集参考手册》中规定的元件功能来设计测试用例,对部分图形元件功能进行测试。其中,XIC指令检查数据位是否是置位状态,当数据位置位时,则使能下一条指令并且梯级输出条件为真。CTU指令为向上计数指令,当指令被使能时加计数使能位(.CU)是清零状态,则CTU指令使计数器加1。RES指令复位 TIMER、COUNTER和CONTROL结构。当RES指令被使能时,指令清零TIMER和COUNTER型的累加值和控制状态位,清零CONTROL型的位置值和控制位。如图4,其中变量2、4为元件数据初始值;如图5元件功能测试用例,其主要测试XIC、CTU、RES指令的逻辑功能是否实现。
图4 元件数据初始值
当XIC数据位为1时,梯级输出为真;CTU指令使能,累加值加1;当遍历到第二个梯级时,检测ctu_test的DN位,其值为1则使能RES指令,并清零ctu_test的累加值(.ACC)。运行结果如图6。
图5 元件功能测试用例
图6 元件功能测试用例运行结果
4 结束语
图形元件是梯形图的重要组成部分,而在编辑图形元件时,实现图形元件类的高效、简洁、高可重用性至关重要。把各种元件定义为相应的类以后,在计算机屏幕上显示元件时,程序生成一个该元件类的对象,并且这个对象的属性和函数就描述了相应的元件。程序就是通过判断或运算这些对象的属性来实现元件的各种功能的。实现了系统的高效性,减少系统代码冗余,大大提高的系统运行效率。
[1]赵强,张建瓴,可欣荣,等.软PLC技术研究现状与发展趋势[J].科技信息,2010(4):120.
[2]吕涌,皇甫正贤.组件化结构的组态软件研究与开发[J]. 工业控制计算机,2000,13(5):14-17.
[3]李左章,周云飞.一种基于IPc的内嵌式PLc的实现方法[J]. 机械与电子,2000(5):3-6.
[4]毕辉,程良鸿.关于软PLC梯形图向语句表转换方法的研究[J].微计算机信息,2007(25):63-65.
[5]谭锦洁,程良鸿.嵌入式PLC中梯形图到AOV图的映射[J]. 计算机测量与控制,2004,12(10):993-995.
[6]谭锦洁,程良鸿.嵌入式PLC梯形图的一种数据结构描述方法[J].计算机工程,2004(5):85-87.
[7]项湜武,章锐.可视化集成环境在嵌入式系统中的开发[J]. 上海电机学院学报,2008,11(3):207-210.
[8]邓其军,周洪,鲁觉.面向图形对象的配电网单线图绘制与使用[J]. 电力自动化设备,2009,29(7):97-100.
[9]韩伟,宋明伟,魏志强,等.基于Windows的华中世纪星数控系统 PLC编程系统设计[J].机床与液压,2011(14):98.
[10]郭伟伟.Visio图形化电力系统计算软件的研究与开发[D].郑州:郑州大学,2006.