我正在尝试更新一个古老的VB6项目以启用与远程OPC服务器的通信。我已经安装了西门子工具包,但我无法找到有关如何在VB6中使用它的任何有用文档。 (适用于C#)西门子OPC客户端的VB6代码示例?
该应用程序非常简单。我只需要连接到远程服务器并写入/读取单个地址。
我发现我认为DatCon OCX控件处理通信,但我尝试手动输入的所有ServerName值都不起作用。
任何人都可以帮忙吗?
我正在尝试更新一个古老的VB6项目以启用与远程OPC服务器的通信。我已经安装了西门子工具包,但我无法找到有关如何在VB6中使用它的任何有用文档。 (适用于C#)西门子OPC客户端的VB6代码示例?
该应用程序非常简单。我只需要连接到远程服务器并写入/读取单个地址。
我发现我认为DatCon OCX控件处理通信,但我尝试手动输入的所有ServerName值都不起作用。
任何人都可以帮忙吗?
自发布以来,我确实取得了一些进展。下面的例子帮助我开始。
这里是我当前的代码。它并不多 - 只是与服务器联系并尝试写入一个值。我没有更进一步。我开始收到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
请教我,我已经看到了这个链接,但是当我在我的磁盘上提取zip文件并尝试运行应用程序时,出现错误。错误是:缺失:西门子OPC DAAutomation 2.0。我认为这个问题是因为我没有安装一些库。 – bircastri
在VB6项目中添加对DLL或OCX(seimens工具包)的引用,然后使用对象浏览器浏览暴露的对象。你经常可以弄清楚你需要做什么。
C#文档还应提供丰富的信息。如果库是一个COM库,那么您将基本上以与VB6相同的方式使用它。
你能展示一些你已经尝试过的示例代码和一个使用C#库的引用/代码吗? – Deanna