VB通过HMIruntime读取WinCC的错误处理问题

我用VB读WinCC的8个变量,程序如下,变量是读过来了,TimerDDE_Timer是6秒的定时器;但是现在有以下3个问题如下:
 1、我发现当VB程序先启动,而WinCC而后启动并激活时,变量一直读不过来;反之没有问题,请问是不是程序哪里有问题,还是要读取WINCC的运行状态?
 2、当WinCC与PLC连接断开时,读过来的变量还是之前没断时的值,一直不会改变,这是怎么回事,还是WinCC断开时调上来的值是不会变的,请问此时的WINCC状态VB能不能读取过来,谢谢!
3、当VB与WINCC通信正常时,如果WINCC突然取消激活,这个状态VB能不能读取,谢谢!
 Private Sub TimerDDE_Timer()
 Dim i As Integer
 Dim WINCC_Object As Object
 Dim WINCC_data(8) As Object
 
 Set WINCC_Object = CreateObject("CCHMIRuntime.HMIRuntime")
 Set WINCC_data(1) = HMIRuntime.Tags("DB34_8")
 WINCC_data(1).Read
 Set WINCC_data(2) = HMIRuntime.Tags("DB34_0")
 WINCC_data(2).Read
 Set WINCC_data(3) = HMIRuntime.Tags("DB34_4")
 WINCC_data(3).Read
 Set WINCC_data(4) = HMIRuntime.Tags("DB34_60")
 WINCC_data(4).Read
 Set WINCC_data(5) = HMIRuntime.Tags("DB31_16")
 WINCC_data(5).Read
 Set WINCC_data(6) = HMIRuntime.Tags("DB31_20")
 WINCC_data(6).Read
 Set WINCC_data(7) = HMIRuntime.Tags("DB36_0")
 WINCC_data(7).Read
 Set WINCC_data(8) = HMIRuntime.Tags("DB36_4")
 WINCC_data(8).Read
 For i = 1 To 8 Step 1
 data_test(i) = WINCC_data(i).Value
 Next i
 Set WINCC_Object = Nothing
 End Sub

问题补充:
wincc中联接到plc的都是变量形式,在激活状态下断开plc这些变量还是保存着最近读上来的值。

那如何在WinCC激活状态下断开与plc连接后把激活前读取的变量值在WinCC值都清零

最佳答案

1、可以把VB程序的执行文件放在WINCC项目属性-》启动里面,这样WINCC启动后自动启动VB程序文件,因为你这个对象是WINCC运行属性,如果没有运行哪个创建对象是空的,所以后面就不会执行,其实还可以判定对象创建是否成功,如果不成功提示或重新执行创建也应该可以可以。
 2、你可以先检查WINCC在与PLC断开时,WINCC变量值是否已经刷新还是保持。可能是WINCC保持了。
3、如果这个方法不行,还可以尝试WINCC带的DMC控件

提问者对于答案的评价:
回答的非常好,按回答的方法已经把问题解决,非常感谢!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月10日 下午8:37
下一篇 2019年6月10日 下午8:37

相关推荐