Siemens S7 kommunikation mit EXCEL VBA OPC Client

bobby765

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an das Super Forum, :TOOL:

stehe vor einem großen Problem:
Ich habe einen OPC Client in Excel VBA programmiert, wobei 4 Variablen gelesen werden sollen und eine an die SPS gesendet werden soll.
Klappt ja soweit gar nicht schlecht, nur hab ich das Problem, dass ich nicht zuordnen kann welcher Wert sich geändert hat.

wie bekomme ich das hin, damit ich weiß, dass sich jetzt die 3.Variable geändert hat.

Danke für eure Hilfe
 
Hallo bobby765


normalerweise bekommst du über ein Event jede variable Änderung mitgeteilt.

[FONT=NDLILE+TimesNewRoman,Bold, Times New Roman, serif]4.4.4.5 IsSubscribed [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Description [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif](Read/Write) This property controls asynchronous notifications to the group. A group that is subscribed receives data changes from the server. [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Syntax [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]IsSubscribed As Boolean [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Remarks [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Default value for this property is the value from the OPCGroups corresponding default value at time of the Add(); [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Example [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]VB Syntax Example (getting the property): Dim CurrentValue As Boolean Set MyGroups = AnOPCServer.OPCGroups [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Set OneGroup = MyGroups.ConnectPublicGroup ( “AnOPCGroupName” ) [/FONT]

‘ [FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]some more code here [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Set CurrentValue = OneGroup.IsSubscribed ‘ to get the value [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]VB Syntax Example (setting the property): Set MyGroups = AnOPCServer.OPCGroups [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Set OneGroup = MyGroups.ConnectPublicGroup ( “AnOPCGroupName” ) [/FONT]

‘ [FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]some more code here [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]OneGroup.IsSubscribed = True ‘ to set the value [/FONT]





[FONT=NDLILE+TimesNewRoman,Bold, Times New Roman, serif]4.4.6.1 DataChange [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Description [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]The DataChange event is fired when a value or the quality of a value for an item within the group has changed. Note the event will not fire faster than the update rate of the group. Therefore, item values will be held by the server and buffered until the current time + update rate is greater than the time of the previous update (event fired). This is also affected by active states for both Group and Items. Only items that are active, and whose group is active will be sent to the client in an event. [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]Syntax [/FONT]

[FONT=NDLHMM+TimesNewRoman, Times New Roman, serif]DataChange (TransactionID As Long, NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date) [/FONT]



grüße Andi

 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn dein Excel Client eine Gruppe angelegt und dann mit "AddItems()" die Variablen hinzufügt, wird für jedes OPC Item ein sogenanntes ClientHandle vergeben. Das ist eine Index-Nummer die du (der Client) selber vergeben kannst.

Beispiel: nehmen wir an du hast für deine vier Items 1,2,3,4 als ClientHandle vergeben.

Der Server merkt sich diese ClientHandles und wenn er dich über Datenänderungen informiert, schickt er dir einen OnDataChange Event. Dieser Callback enthält nur die Items, die sich auch geändert haben inklusive der dazugehörigen ClientHandles.

Im Eventhandler diese Callbacks kannst du also, anhand des mitgelieferten ClientHandles, erkennen welche deiner OPCItems sich geändert hat.

Beispiel: nehmen wir an es kommt ein DataChange mit zwei geänderten Werten, einer vom ClientHandle 2 und einer vom ClientHandle 4.
 
Vielleicht auch interessant?
Leider NICHT interesant, da wir hier versuchen grundsätzliches Problem von bobby765 zu lösen, nähmlich die Frage wie man im DataChange erkennt welche Items sich geändert haben. Das ist unabhängig davon welchen OPC Server von welchen Firma man verwendet.

Auf eine Werbung für Matrikon-OPC Server kann also verzichtet werden, es sei denn es gibt dort ein Excel-Beispiel in dem die Auswertung von DataChanges in VBA super erklärt wäre. Dieses Codefragment darfs Du gerne hier posten.
 
Zurück
Oben