本文探讨一下用C脚本来实现对象的事件任务。
如图1所示,为本例程的运行画面。本例程实现以下功能:
画面主要由两个对象构成,输入/输出域关联一个内部变量(temp1),并实时显示其值。按钮("点击+1")则响应鼠标点击事件,每点击一下按钮,temp1自增1。按钮的实现响应通过C脚本来实现。
图1 事件任务实例
图2 输入/输出域
输入/输出域的配置不做过多介绍,如图2所示。将其输出值与内部变量temp1关联,并配置成"有变化时"更新即可。
如图3所示,在按钮的"事件"选项卡中,为"鼠标动作"事件配置事件响应,选择"C动作",即为C脚本。点击即可进入C动作脚本编辑窗口,如图4所示。
这即是C脚本的入口之一:事件任务入口。
图3 按钮动作
图4 动作脚本
在图4所示的脚本编辑窗口中,编写合适的C代码。本例程实现的功能比较简单,当按钮被点击后,即触发了按钮的事件响应动作,完成以下任务:
1、?通过函数GetTagDouble读取内部变量"temp1"的当前值,并赋值给变量i(由于"temp1"定义为32为浮点数,因此,这里局部变量i声明为double型);
2、?i自增1;
3、?当i>10时,令i=0。该代码的目的是限制"temp1"的值,不让其无限制的增大;
4、?通过函数SetTagDouble将当前i值赋值给内部变量"temp1",即实现每点击一次按钮,"temp1"自增1的功能。
代码比较简单,不做详细介绍。其中GetTagDouble和SetTagDouble时WinCC的内部函数,其具体用法,留待以后集中讨论。
通过C脚本实现的事件响应动作,编译无误后,其符号为带字母C的绿色闪电,如图5所示。
图5 按钮的C动作
我们知道,一个动作要被执行,必须有相应的触发器。本例中的按钮事件动作的触发器即为鼠标的点击动作,鼠标点击按钮一次,动作被触发一次,动作内的代码就会执行一次;再次点击,则再次执行。