我们知道,277/277及更高版本的面板支持自定义脚本,因此可以通过在WinCCflexible调度器中定义相应的作业来周期性的执行自定义动作,如下图所示:
该应用有以下两个特点:
1. 作业全局执行,即项目运行期间它会一直在后台运行;
2. 作业中动作执行的时间间隔最小只能设定为1分钟。
那么有没有以小于1分钟的时间间隔执行自定义的动作的方法呢?
可以利用外部变量的“更改数值”事件配合PLC编程实现该功能,大概组态步骤为:
(1) 创建外部变量,并将其采集模式设置为“循环连续”;
(2) 在改变量的“更改数值”时间中调用自定义的动作;
(3) 在PLC程序中以要求的周期(如5S,不宜设置过小,否则系统可能处理不过来,应根据脚本复杂程度测试确定)来更改该变量的值。
除此之外,还可以考虑使用WinCCflexible中提供的系统函数SimulateTag(变量,周期,最大值,最小值,值), 该函数只能在“画面“对象的“已加载“事件中调用,使用该方法可避免PLC编程。其各参数的含义如下:
变量:其数值要改变且数据类型为“INT”的变量,
周期:与基本周期200ms相乘的因子;
最大值:变量的最大值,达到最大值后变量会被赋予最小值;
最小值:变量的最小值,达到最小值后变量会被赋予最大值;
值:每一周期变量值的变化跨度。
下面详细描述一个关于系统函数SimulateTag的使用实例,即使用该系统函数来实现当显示“PictureTest“画面时,以800ms的时间间隔来周期性地执行脚本”s criptTest”。
首先,在TP270-10”项目中创建画面“PictureTest”、整型外部变量“Simula”、整型内部变量“Inter”及脚本“s criptTest”其中脚本“s criptTest”用来执行对变量“Simula”乘以2、再加1并将运算结果送给变量“Inter”的动作,其内容如下:
然后在画面“PictureTest”的“的“加载”事件中调用系统函数SimulateTag,相关设置如下图所示:
在变量“Simula”的“更改数值”事件中调用脚本“s criptTest”,同时将其采集模式设为“循环连续”:
最后,在画面“PictureTest”中加入两个输出域,分别用来显示变量“Simula”及“Inter”的变化情况。
模拟运行项目,观察运行情况: