关于WINCC的一段VB脚本

脚本内容如下:Option Explicit
Function action
Dim flag
Dim step1
Dim flag1
flag1=HMIRuntime.Tags("gz_flag").Read
If flag1=1 Then
HMIRuntime.Tags("Instruction7").Write 7
flag=HMIRuntime.Tags("Instruction7").Read
If flag=7 Then


Do
 flag=HMIRuntime.Tags("Instruction7").Read

Loop While flag=0
End If
step1=HMIRuntime.Tags("A1_11_GZ").Read
If step1<>0 Then
HMIRuntime.Tags("A1_15_GZ").Write 1
End If
End If

End Function
哪位高手能逐行的给注释一下,我是新接触VBS,需要赶紧看懂这段脚本,谢谢了

最佳答案

Option Explicit
Function action
Dim flag
Dim step1
Dim flag1//dim 定义变量
flag1=HMIRuntime.Tags("gz_flag").Read//把gz_flag的值赋值给flag1
If flag1=1 Then
HMIRuntime.Tags("Instruction7").Write 7//如果flag1=1则Instruction7=7
flag=HMIRuntime.Tags("Instruction7").Read//把Instruction7赋值给flag
If flag=7 Then如果flag=7执行下面的do while loop循环语句


Do//当flag=0时一直执行do while loop循环
 flag=HMIRuntime.Tags("Instruction7").Read

Loop While flag=0
End If
step1=HMIRuntime.Tags("A1_11_GZ").Read//step1=A1_11_GZ
If step1<>0 Then//如果step1不等于0则A1_15_GZ=1
HMIRuntime.Tags("A1_15_GZ").Write 1
End If
End If

End Function

你的
flag1=HMIRuntime.Tags("gz_flag").Read
If flag1=1 Then
HMIRuntime.Tags("Instruction7").Write 7
flag=HMIRuntime.Tags("Instruction7").Read
If flag=7 Then


Do
 flag=HMIRuntime.Tags("Instruction7").Read

Loop While flag=0
End If

这段程序有问题,1、如果gz_flag=1那么Instruction7被你赋值为7则Instruction7肯定等于7,flag也等于7,下面的判断是否等于7就没有用了
2、如果flag=7那么do while loop只执行一次,而且还是读取Instruction7,flag还是=7,所以这个do while loop是没有用的,如果flag=0,那么if的条件不满足,do while loop也就不会执行。

提问者对于答案的评价:
非常感谢,我也觉得逻辑有些不合理,但是组态中就是这样做的。在研究一下吧

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐