0

古い VB6 プロジェクトを更新して、リモート OPC サーバーとの通信を有効にしようとしています。Siemens ツールキットをインストールしましたが、VB6 での使用方法に関する有用なドキュメントが見つかりません。(C#で動作)

アプリケーションは非常に簡単です。リモートサーバーに接続して、単一のアドレスを読み書きするだけです。

通信を処理すると思われる DatCon OCX コントロールを見つけましたが、手動で入力しようとしたすべての ServerName 値が機能しませんでした。

誰でも助けることができますか?

4

2 に答える 2

2

DLL または OCX (seimens ツールキット) への参照を VB6 プロジェクトに追加し、オブジェクト ブラウザーを使用して、公開されているオブジェクトを参照します。多くの場合、それを行うだけで何が必要かを理解できます。

C# のドキュメントにも豊富な情報が記載されています。ライブラリが COM ライブラリの場合は、基本的に VB6 と同じように使用します。

于 2011-11-30T21:14:29.833 に答える
1

投稿以来、私はいくつかの進歩を遂げました。次の例は、私が始めるのに役立ちました。

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
于 2011-12-01T06:11:12.020 に答える