描述
如果在带有变量触发C脚本的项目中,通过字符串函数生成变量名时要请求其它变量,或是在C脚本通过GetTag...函数调用其他变量,所有WinCC优化措施,高速缓存等都被抵消了。这些变量中的每一个都被同步,但分开地读取。
注意事项
画面打开后,通过在一个任务(块)中的读取变量可以显著缩短创建画面的时间。这样脚本就可以访问高速缓存中的变量而无需首先单独读取变量(同步)。这样,会大幅降低单项任务之间的通讯和必要任务的改变。访问尚未放入触发器列表中的变量时,为第一次更新选择画面时不会“作为块”来请求变量(因而,就总是为时间触发的脚本来请求变量)。
如果重新组态很复杂,通过画面中使用的所有变量的触发器列表可以在画面中创建一个哑对象(图1)。
trigger_e.gif ( 33 KB )
图1:WinCC中的触发器列表
变量名是否是在脚本中动态生成并不重要。处理脚本时,须同步读取这些变量。因为,脚本开始时,在客户机(以及数据管理器)中这些变量尚不可用。下列简例可清楚说明这点:
例如,触发器列表包含:
Variable_A
在WinCC图形编辑器中,在对象的脚本内实现对Variable_B访问:
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
long color = -1;
color = GetTagWord ("Variable_B");
return color;
} Effect:
- 本例中,选择画面时同步读取“Variable_B”=>性能不佳。
- 脚本中的下面一行可提高性能:
color = GetTagWord (“Variable_A”);
关键字
改善性能,访问时间,访问
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332566.html