用VB做个程序访问WinCC原本是简单的事情,可是:
我打算用VB.NET2005做一个小程序,读写WinCC里的变量和运行状态、显示状态。我原计划用CreateObject("CCHMIRuntime.HMIRuntime")的方式连接WinCC,并取得WinCC对象。但我现在遇到一个大问题:
1)VB2005 和 VBS文件都实现不了CreateObject("CCHMIRuntime.HMIRuntime")。系统提示“无法创建ActiveX控件”
在我的VB2005程序里作了:Set HMIRuntime = CreateObject("CCHMIRuntime.HMIRuntime"),这语句总是出错,报“无法建立对象CCHMIRuntime.HMIRuntime”。我又按照SIMENS官方的文档《如何用VB读写WINCC变量》,做了一个简单的windows下的VBS文件,运行后依然在CreateObject这一步报错“无法建立对象CCHMIRuntime.HMIRuntime”。VBS的错误码800A01AD。VBS程序见最后。
2)如果把
Set HMIRuntime = CreateObject("CCHMIRuntime.HMIRuntime")
改成
Set HMIRuntime = CreateObject("WinCC-Runtime-Project")
那么VB2005 和 VBS文件都可以准确取得WinCC对象,并读写变量了。但这种方式只能读“属性”变量,能提供“方法”给我用吗(如HMIRuntime .STOP之类)。如果不能,还是想办法解决第一个问题把。
3)我用REGSVR32对HMIRuntime重新注册,之后没有好转,CreateObject("CCHMIRuntime.HMIRuntime")还是一样出错,“无法创建ActiveX控件”。
4)我在VBA和VB6.0中试了一下,居然可以用CreateObject("CCHMIRuntime.HMIRuntime"),一点问题都没有!怪事!这不合理阿,按手册上的VBS参考的说法,("CCHMIRuntime.HMIRuntime")是给VBS用的阿,VBA应该用("WinCC-Runtime-Project")
才对啊,怎么现在反过来了呢???
以上是我2天以来的现状。我现在需要在VB.NET2005或windows下的VBS文件中实现CreateObject("CCHMIRuntime.HMIRuntime"),求帮忙。VBS程序如下
********************************************
Dim HMIRuntime
Set HMIRuntime = CreateObject("CCHMIRuntime.HMIRuntime")
'这一步就出错了,程序中止运行了
MsgBox (HMIRuntime.Tags("@ServerName").READ)
******************************************