关于我在42楼中WinCC运行数据刷新滞后的问题发帖,大家可能还有很多疑惑,我现说明如下:
一、关于AS与OS间数据通讯,分周期(cycle)和非周期(acylic)两种情况,因此在OS中就看到运行数据刷新滞后的特异点。
1、通常我们在WinCC中建立的Tag变量都是采用cycle方式,以便数据能周期性的实时得到刷新。
2、cycle方式需要在WinCC的映像区中注册服务,当首次注册完成后,AS的cycle服务就会主动发送数据至WinCC。
3、GetTagXXX/SetTagXXX脚本是异步执行函数,如果使用cycle服务调用这些函数,则cycle服务数量还没用完,则要读取的Tag变量就会在WinCC的映像区中注册。所以如果Tag变量数量多、刷新周期太短,则cycle服务的周期也变短,其通讯负担就加重了(见图示)。

4、如果GetTagXXX/SetTagXXX脚本不能使用周期性服务,WinCC将使用acylic方式读取。但仍需注册并从WinCC的映像区中读取。只不过不是AS主动发送,而是WinCC向请求AS请求数据,并且请求周期的排列也由WinCC来执行。
5、当一幅Picture关闭或者被切换成非激活Picture时,使用Tag变量的注册cycle服务也就停止了。但Global s cript中使用的Tag变量注册的cycle服务进程会保留,直到WinCC停止运行。
二、上面简述了GetTagXXX/SetTagXXX脚本与AS和OS间数据采样周期刷新的原理机制,那么使用GetTagXXXWait/SetTagXXXWait脚本,又是如何的原理机制呢?