2011-11-24 69 views
0

我正在尝试更新一个古老的VB6项目以启用与远程OPC服务器的通信。我已经安装了西门子工具包,但我无法找到有关如何在VB6中使用它的任何有用文档。 (适用于C#)西门子OPC客户端的VB6代码示例?

该应用程序非常简单。我只需要连接到远程服务器并写入/读取单个地址。

我发现我认为DatCon OCX控件处理通信,但我尝试手动输入的所有ServerName值都不起作用。

任何人都可以帮忙吗?

+0

你能展示一些你已经尝试过的示例代码和一个使用C#库的引用/代码吗? – Deanna

回答

0

自发布以来,我确实取得了一些进展。下面的例子帮助我开始。

http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objId=25229521&load=treecontent&lang=en&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=WW

这里是我当前的代码。它并不多 - 只是与服务器联系并尝试写入一个值。我没有更进一步。我开始收到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 
+0

请教我,我已经看到了这个链接,但是当我在我的磁盘上提取zip文件并尝试运行应用程序时,出现错误。错误是:缺失:西门子OPC DAAutomation 2.0。我认为这个问题是因为我没有安装一些库。 – bircastri

2

在VB6项目中添加对DLL或OCX(seimens工具包)的引用,然后使用对象浏览器浏览暴露的对象。你经常可以弄清楚你需要做什么。

C#文档还应提供丰富的信息。如果库是一个COM库,那么您将基本上以与VB6相同的方式使用它。