2 图形元件类设计与功能实现
2.1 图形元件类设计
根据《Logix5550控制器指令集参考手册》,元件基类应定义元件预扫描函数、梯级输入函数、梯级输出函数、元件逻辑功能函数、元件输出函数等一些公有属性的函数。
梯形图元件基类的关键代码如下:
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 图形元件功能测试
遵循软件测试原则,采用黑盒测试方法。根据《Logix5550控制器指令集参考手册》中规定的元件功能来设计测试用例,对部分图形元件功能进行测试。其中,XIC指令检查数据位是否是置位状态,当数据位置位时,则使能下一条指令并且梯级输出条件为真。CTU指令为向上计数指令,当指令被使能时加计数使能位(.CU)是清零状态,则CTU指令使计数器加I。RES指令复位TIMER、COUNTER和CONTROL结构。当RES指令被使能时。指令清零TIMER和COUNTER型的累加值和控制状态位,清零CONTROL型的位置值和控制位。如图4,其中变量2、4为元件数据初始值;to图5元件功能测试用例,其主要测试XIC、CTU、RES指令的逻辑功能是否实现。
当XIC数据位为1时,梯级输出为真;CTU指令使能,累加值加1;当遍历到第二个梯级时,检测ctu_test的DN位,其值为1则使能RES指令,并清零ctu_test的累加值(.ACC)。运行结果如图6。
4 结束语
图形元件是梯形图的重要组成部分,而在编辑图形元件时,实现图形元件类的高效、简洁、高可重用性至关重要。把各种元件定义为相应的类以后,在计算机屏幕上显示元件时,程序生成一个该元件类的对象,并且这个对象的属性和函数就描述了相应的元件。程序就是通过判断或运算这些对象的属性来实现元件的各种功能的。实现了系统的高效性,减少系统代码冗余,大大提高的系统运行效率。