我正在尝试更新一个古老的VB6项目,以便与远程OPC服务器进行通信。我已经安装了Siemens工具包,但我找不到有关如何在VB6中使用它的任何有用文档。 (与C#一起使用)
应用程序非常简单。我只需要连接到远程服务器并写入/读取单个地址。
我发现我假设的DatCon OCX控件处理通信,但是我试图手动输入的所有ServerName值都不起作用。
有人可以帮忙吗?
答案 0 :(得分:2)
向您的VB6项目添加对DLL或OCX(seimens工具包)的引用,然后使用对象浏览器浏览公开的对象。你经常可以弄清楚你需要做什么。
C#docs还应提供丰富的信息。如果库是一个COM库,你将使用它与VB6基本相同。
答案 1 :(得分:0)
自发布以来,我确实取得了一些进展。以下示例帮助我开始。
这是我目前的代码。它并不多 - 只是与服务器联系并尝试写入一个值。我没有得到任何进一步的信息。我开始收到COM错误并认为安装很糟糕(我安装时遇到了问题)所以我决定重新安装。它没用。安装是不可能的。正在等待西门子的升级。
'
' OPC Communication
'
' Paul Ramsden 24.11.2011
'
'
Option Explicit
Option Base 1
Public MyOpcServer As OPCServer
Public ServerHandle As Variant
Private ServerName As String
Private ServerNode As String
Private TestGroup As OPCGroup
Private MyOpcItem As OPCItem
Private IsInitialised As Boolean
Public Sub InitialiseOPC()
On Error GoTo ProcError
IsInitialised = False
Set MyOpcServer = New OPCServer
ServerNode = "xyz.abc.10.101"
ServerName = "OPC.SimaticNET.1"
Dim LocalServers
LocalServers = MyOpcServer.GetOPCServers(ServerNode)
Dim tmp
ServerHandle = ""
For Each tmp In LocalServers
If CStr(tmp) = ServerName Then
Call MyOpcServer.Connect(tmp)
MsgBox MyOpcServer.ServerNode & vbCr & MyOpcServer.ServerName & vbCr & MyOpcServer.ServerState
ServerHandle = tmp
Set TestGroup = MyOpcServer.OPCGroups.Add("TestGroup")
Exit For
End If
Next
If ServerHandle = "" Then
MsgBox "Could not find server " & ServerName & " on " & ServerNode
Else
IsInitialised = True
End If
ProcExit:
Exit Sub
ProcError:
MsgBox Err.Description
Resume ProcExit
End Sub
Private Sub ClearGroup()
Dim handles() As Long
Dim errors() As Long
Call TestGroup.OPCItems.Remove(TestGroup.OPCItems.Count, handles, errors)
End Sub
Public Sub WriteOPC(address As String, value As String)
On Error GoTo ProcError
Call ClearGroup
Set MyOpcItem = TestGroup.OPCItems.AddItem(address, 2011)
MyOpcItem.Write (value)
Exit Sub
ProcError:
MsgBox "Write error! " & Err.Description
End Sub
Public Function ReadOPC(address As String) As String
On Error GoTo ProcError
Call ClearGroup
Set MyOpcItem = TestGroup.OPCItems.AddItem(address, 2011)
Dim value As String
ReadOPC = MyOpcItem.Read
ProcError:
MsgBox "Read error! " & Err.Description
End Function
Public Sub TestOPC()
InitialiseOPC
WriteOPC "SIMATIC 300(1).CPU 315-2 DP.Q0_0TestAusgang1", "1"
End Sub