众所周知WINCC的脚本系统是单线程的,如一个脚本有问题无法返回,其它的脚本将不能执行。任何脚本的执行都将消耗资源影响系统性能,特别是频繁执行的全局动作脚本。所以在组态WINCC时尽量少用脚本特别是周期执行的脚本。考虑到这些,WINCC在脚本触发方式中加入了“变量-有变化”、“画面周期”和“窗口周期”。
例子:在画面中显示两个文本变量str1、str2的拼接文本 一般的方法:新建一个文本变量str,建立一个全局动作脚本:拼接str1、str2的文本赋值给变量str,触发方式设置为str1和str2变量有变化时执行,然后在画面中添加I/O域关联文本变量str。 按此方法,只要str1和str2变量有变化,全局动作脚本就会执行。
一种优化的方法:在画面中直接使用I/O域建立脚本,并使用“变量-有变化”来触发脚本的执行。
vbs脚本功能名OutputValue_Trigger返回值及为I/O域的输出,把str1、str2拼接结果直接赋值给OutputValue_Trigger,省去了建立str变量。对于c脚本,脚本通过return返回值。
当打开I/O域所在的画面,I/O域中的动态属性脚本才按设置的触发方式执行。这也符合设计要求(及如果此拼接文本没有其它用途,在不打开这个画面时,更新此结果是没有意义的)。
|