Hallo zusammen,
nach längerem Suchen im Internet bin ich auf dieses Forum gestoßen und habe mich angemeldet, mit der Hoffnung, dass mir hier vielleicht geholfen werden kann.
Ich habe einen OPC-Client auf Basis des "OPC DA Automation Wrapper" programmiert (der im Grunde auch gut funktioniert). Jedoch habe ich folgendes Problem:
Einige OPC-Items werden mithilfe einer DataChange Methode überwacht und wenn sich ein bestimmtes Item ändert, soll ein Wert in ein anderes geschrieben werden.
Der Code dafür sieht folgendermaßen aus:
Dabei Sind beide Items teil der gleichen OPCGroup. In diesem Fall wird das Item noch geschrieben, danach wird die DataChange Methode aber nicht mehr aufgerufen (obwohl sich die Daten noch ändern)
Sind die Items (die geschrieben werden) nicht Teil der Gleichen Gruppe (welche von der DataChange Methode behandelt wird) funktioniert das ganze reibungslos.
Also bei folgendem Code:
Gibt es eine Möglichkeit den Umweg über 2 Gruppen zu umgehen?
Für Hinweise und Hilfe wäre ich sehr dankbar. Ich tüftele jetzt schon seid mehreren Wochen an diesem Problem.
Gruß TheDoor
nach längerem Suchen im Internet bin ich auf dieses Forum gestoßen und habe mich angemeldet, mit der Hoffnung, dass mir hier vielleicht geholfen werden kann.
Ich habe einen OPC-Client auf Basis des "OPC DA Automation Wrapper" programmiert (der im Grunde auch gut funktioniert). Jedoch habe ich folgendes Problem:
Einige OPC-Items werden mithilfe einer DataChange Methode überwacht und wenn sich ein bestimmtes Item ändert, soll ein Wert in ein anderes geschrieben werden.
Der Code dafür sieht folgendermaßen aus:
Private Sub OnDataChange1(ByVal TransactionID As Integer, ByVal NumItems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues As System.Array, ByRef Qualities As System.Array, ByRef TimeStamps As System.Array) Handles MyOPCGroup1.DataChange
For i As Integer = 1 To 1
If Qualities(i) = OPCAutomation.OPCQuality.OPCQualityGood Then
MyOPCQualitaetStatus = 1
Select Case ClientHandles(i)
Case 0
CallWatchdog(CBool(ItemValues(i)))
End Select
ElseIf Qualities(i) = OPCAutomation.OPCQuality.OPCQualityBad Then
MyOPCQualitaetStatus = 0
Else
MyOPCQualitaetStatus = 2
End If
Next
End Sub
Private Sub CallWatchdog(ByVal bValue As Boolean)
Try
If bValue Then
MyOPCItems1(1).Write(True)
ElseIf Not bValue Then
MyOPCItems1(1).Write(False)
End If
Catch ex As Exception
End Try
End Sub
Dabei Sind beide Items teil der gleichen OPCGroup. In diesem Fall wird das Item noch geschrieben, danach wird die DataChange Methode aber nicht mehr aufgerufen (obwohl sich die Daten noch ändern)
Sind die Items (die geschrieben werden) nicht Teil der Gleichen Gruppe (welche von der DataChange Methode behandelt wird) funktioniert das ganze reibungslos.
Also bei folgendem Code:
Private Sub CallWatchdog(ByVal bValue As Boolean)
Try
If bValue Then
MyOPCItems2(1).Write(True)
ElseIf Not bValue Then
MyOPCItems2(1).Write(False)
End If
Catch ex As Exception
End Try
End Sub
Gibt es eine Möglichkeit den Umweg über 2 Gruppen zu umgehen?
Für Hinweise und Hilfe wäre ich sehr dankbar. Ich tüftele jetzt schon seid mehreren Wochen an diesem Problem.
Gruß TheDoor