我正在嘗試更新一個古老的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