为什么在WinCC中,有时无法执行读写任务?

描述
例如,当在 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

更多详细信息可以参考WinCC在线帮助”Working with WinCC > VBS for creating procedures and actions > Examples for VBScript”。

以下是在线帮助中提供的信息

同步写

通常,要写入的数值传送到继续执行的动作的标签管理和处理中。 但是在某些情况下,必须要确保在处理动作可以继续执行之前已经实际写入了数值。n

这种类型的写入是通过为附加的可选参数指定数值 1 来实现的:n

‘VBS131
Dim objTag
Set objTag = HMIRuntime.Tags(“Tag1”)
objTag.Write 8,1

或者

‘VBS132
Dim objTag
Set objTag = HMIRuntime.Tags(“Tag1”)
objTag.Value = 8
objTag.Write ,1

注意
请注意,与标准调用相比,该调用使用的时间更长。 除了其他一些因素外,持续时间也取决于通道和 AS。
这种类型的写处理相当于 C 脚本中的 SetTagXXXWait() 调用。n

直接读取
通常,标签值是从标签映像中读出的。 但是在某些情况下,可能需要直接从 AS 中读出数值,例如要同步快速过程。
如果将读过程的可选参数设置为 1,则不会循环登入标签,而是从 AS 中一次性请求数据。

‘VBS137
Dim objTag
Set objTag = HMIRuntime.Tags(“Tag1”)
HMIRuntime.Trace “Value: ” & objTag.Read(1) & vbCrLf

注意
请注意,与标准调用相比,该调用所用时间较长。 除了其他一些因素外,持续时间也取决于通道和 AS。这种类型的写处理相当于C脚本中的 GetTagXXXWait() 调用。

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

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

相关推荐

发表回复

登录后才能评论