比如VB中的一段程序,用On Error GoTo err来进行错误处理,当 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True出错时不再接着执行下面的程序,而是跳转到err,wincc中用On Error Resume next虽然也能查错,但是如果不知道错误会发生在哪里,不是还是会执行完所有程序吗
If ACTUATOR_NUM > 0 Then '如果有阀门,就执行联机操作
On Error GoTo err
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
Timer1.Enabled = True
Command1.Enabled = False
Command2.Enabled = True
Command7.Enabled = False '参数设置无效
'Command5.Enabled = False 'QCS连接无效
If QCS_DATA = "QCS采样曲线" Then
Command3.Enabled = False '自动无效
AUTO_FLAG = False
Shape3(0).Visible = False
Shape3(1).Visible = True
Command4.Enabled = True '手动有效
End If
Label11.Caption = "系统初始化……"
CHECK_VALVE_NUM = 1 '阀门查询从1开始
SCAN_FLAG = False '自检标志
Exit Sub
err:
MsgBox "串口不存在或已占用"
End If
问题补充:
vbs中这样写能实现相同的功能吗
If ACTUATOR_NUM > 0 Then
On Error Resume Next
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
If (Err.Number<>0) Then
MsgBox "串口不存在或已占用"
Err.Clear
Else
ScreenItems("按钮137").Enabled=False
ScreenItems("按钮139").Enabled=True
ScreenItems("按钮143").Enabled=False
If QCS_DATA = "QCS采样曲线" Then
ScreenItems("按钮138").Enabled=False
AUTO_FLAG = False
ScreenItems("圆1").Visible=False
ScreenItems("圆2").Visible=True
ScreenItems("按钮140").Enabled=True
End If
objText.Text="系统初始化……"
CHECK_VALVE_NUM = 1
SCAN_FLAG = False
HMIRuntime.Tags("SCAN_FLAG").Write SCAN_FLAG
End If
End If
最佳答案
WINCC的VBS不支持On Error GoTo err
如果如你说的,程序出错以后不再执行接下去,那就不加On Error Resume Next就好了,执行的时候,只要脚本有错误,就不继续往下停了
你可以用WINCC的脚本诊断功能,当脚本出现错误的时候,会自动在脚本诊断里面打印出来错误的内容
参考:
WINCC脚本学习-一-脚本调试
http://www.ad.siemens.com.cn/club/bbs/post_recommend.aspx?b_id=5&a_id=1449765
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc317890.html