在内部函数的"tag"组中有两类函数,函数的参数类型和函数功能几乎一模一样,仅在函数名上有一点差别,如下表所示。

两类函数的区别在于函数名里是否包含"Wait"。带"Wait"的函数为同步读/写函数,不带"Wait"的函数为异步读/写函数。
一、WinCC变量映射区WinCC中维持了一个中间缓存区,可用于暂存与AS(自动化系统)相关的变量。它有两个功能:
当WinCC向AS系统请求过程数据时,WinCC不直接访问AS系统,可首先将相应的数据存放到变量映射区,WinCC则从映射区中访问相应的数值;
当WinCC发送数据给AS系统时,同样的,只将数据写入变量映射区,然后AS系统周期性的从映射区读数据即可。
用户可以选择是否启用映射区,选用映射区即为异步读/写,不经过映射区直接访问AS系统,则为同步读/写。
二、读变量
异步读GetTagXXX的特点如下:
第一次读取变量时,需要向AS系统请求数值,并且将该过程变量添加到WinCC的变量映射区。此后,映象区中的变量周期性地(动作触发周期/2)从AS系统请求数值。再次读取变量时,直接将映象区中的数值返回。
关闭画面时,映象区中的变量会注销。
如果变量是在全局脚本中请求的,在WinCC运行期间,变量始终保留在映象区中的注册状态。

同步读GetTagXXXWait的特点如下:
此方式直接从AS系统读取当前值,而不经过映射区;
同步读比异步读要花费更长的时间,所需要的时间取决于具体的AS系统(PLC的性能)和通讯方式。
为了避免性能问题,尽量避免周期性地使用同步读的方式,当然变量触发的方式则可随便使用。
三、写变量
异步写SetTagXXX的特点如下:
数值写入变量映射区,至于映射区何时将数值写入PLC,调用者不知道也无需关心。
此方式将数值写入映射区后,立即返回
异步写:将数据写入"映象区"。至于映象区何时将数值写入PLC,调用者不关心。

同步写SetTagXXXWait的特点如下:
此方式将数值分配给变量管理的写任务,并等待数值真正写入后才返回调用语句;
与异步写相比,同步写要花费更多时间,所需时间取决于AS系统的性能及通讯方式;
为了避免性能问题,要尽量避免周期性的使用同步写的方式。
上一篇《用脚本查询和修改对象的背景颜色》