我正在尝试更新一个古老的 VB6 项目以启用与远程 OPC 服务器的通信。我已经安装了 Siemens 工具包,但我找不到任何关于如何将它与 VB6 一起使用的有用文档。(适用于 C#)
该应用程序非常简单。我只需要连接到远程服务器并写入/读取单个地址。
我发现我假设处理通信的 DatCon OCX 控件,但我尝试手动输入的所有 ServerName 值都不起作用。
任何人都可以帮忙吗?
将 DLL 或 OCX(seimens 工具包)的引用添加到您的 VB6 项目中,然后使用对象浏览器浏览公开的对象。你经常可以弄清楚你需要做什么。
C# 文档还应该提供丰富的信息。如果该库是一个 COM 库,那么您将使用与 VB6 基本相同的方式来使用它。
自发帖以来,我确实取得了一些进展。下面的例子帮助我开始。
这是我当前的代码。这并不多 - 只是与服务器联系并尝试写入一个值。我没有更进一步。我开始收到 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