当使用 VBS 写完变量然后直接读取时为什么数值显示不正确?

描述:
以下的VBS 脚本并不是每次都能正确工作。n

HMIRuntime.Tags(“NewTag_2”).Write HMIRuntime.Tags(“NewTag_1”).Read
HMIRuntime.Tags(“NewTag_3”).Write HMIRuntime.Tags(“NewTag_2”).Read
HMIRuntime.Tags(“NewTag_4”).Write HMIRuntime.Tags(“NewTag_3”).Read
HMIRuntime.Tags(“NewTag_5”).Write HMIRuntime.Tags(“NewTag_4”).Readn

这种情况下是通过变量的镜像实现数据的读写访问。为了确保读操作优先于写操作,可以使用同步读写任务。因此,修改读任务 “Read” 为 “Read(1),1”-如下所示。n

HMIRuntime.Tags(“NewTag_2”).Write HMIRuntime.Tags(“NewTag_1”).Read(1) ,1
HMIRuntime.Tags(“NewTag_3”).Write HMIRuntime.Tags(“NewTag_2”).Read(1) ,1
HMIRuntime.Tags(“NewTag_4”).Write HMIRuntime.Tags(“NewTag_3”).Read(1) ,1
HMIRuntime.Tags(“NewTag_5”).Write HMIRuntime.Tags(“NewTag_4”).Read(1) ,1n

备注:
同步读写操作等同于ANSI C 语言中的 GetTagxxxWait 和 SetTagxxxWait。因为依赖于AS 的应答,所以这种功能的缺点在于花费的时间更长。只有获得 AS 的响应后脚本的后续过程才能继续执行。从而,它们会导致系统损失一些性能,因此只在例外情况下应用。异步读写任务因为是通过镜像进行处理所以效率更高。这里变量的读取和刷新过程是分别运行的。
同步任务仅仅被用于脚本的进一步处理必须确保变量读写次序的情况。n

注意:
关于 GetTag 和 GetTagWait 的描述请参考 WinCC 信息系统中的描述:n

  • WinCC V6.0 “Working with WinCC > ANSI-C for Creating Functions and Actions > Function Descriptions > Internal Functions >tag > get > GetTagBit > How the GetTag functions work”n
  • WinCC >= V6.2 “Working with WinCC > ANSI-C for Creating Functions and Actions > Internal Functions >tag > How the GetTag functions work”

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论