从DataChange事件中的ClientHandles获取OPCItem - OPCAutomation.dll

时间:2018-05-25 20:45:43

标签: vb.net plc opc

是否可以使用ClientHandle值从组中获取OPCItem?

伪示例:

Dim Server As OPCServer
Dim Groups As OPCGroups
Dim WithEvents Group1 as OPCGroup
Dim ItemGroup as OPCItems
Dim Item as OPCItem

Private Sub Form1_Load(sender as Object, e as EventArgs) Handles MyBase.Load
    Server.Connect("MyServer")
    Group1 = New OPCGroup()
    Group1.Name = "Group1"
    Group1.IsSubscribed = True
    Group1.OPCItems.Add("Item1", 1)
    Server.OPCGroups.Add(Group1)
End Sub

Private Sub Group1_DataChange(TransactionID As Integer, NumItems As Integer, ByRef ClientHandles As Array, ByRef ItemValues As Array, ByRef Qualities As Array, ByRef TimeStamps As Array) Handles Group1.DataChange

Dim Browser as OPCBrowser = Server.CreateBrowser()
Browser.ShowBranches()
Browser.DataType = vbInteger
Browser.ShowLeafs()

Dim qualityValue as Integer
For q As Integer = 1 To Qualities.Length
    qualityValue = Qualities.GetValue(n)
    If qualityValue = 192 Then
        'HERE is where I want to get the OPCItem by using the ClientHandles
        'I can use the ClientHandle to get the Value, but I'd also like to get the ItemID to do validation against.

        Dim itemClientHandle as Integer = Convert.ToInt32(ClientHandles.GetValue(n))
        Dim itemValueByClientHandle as String = ItemValues.GetValue(n).ToString()

    End If
Next

'It is possible to use the OPCBrowser to get the Item Names but how do I correlate the two?
    Dim itemNames as New List(Of String)
    For n As Integer = 1 To OPCBrowser.Count
        itemNames.Add(OPCBrowser.Item(i))
    Next
' Do More Stuff
End Sub

当从客户端向OPC服务器发送值并等待位标记切换为指示进程已完成时,有一项请求要求将现有客户端应用程序暂停。这部分是建立的;但是,组中有多个项目(标签),需要有一种方法来识别正确的项目位值已更改。

0 个答案:

没有答案