OPC UA SimaticAlarmConditionType zusätzliche Attribute auslesen (OPC Framework)

IAmDonaldDuck

Level-2
Beiträge
27
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin gestern kläglich gescheitert und brauche eure Hilfe.
ich versuche mit dem offiziellen OPC-Framework Alarme von einer S7-1500 zu empfangen. Diese Alarme erhalte ich auch, nur fehlen hier die Zusatzattribute welche im SimaticAlarmConditionType definiert sind, wie zum Beispiel "Infotext" oder "AdditionalText_01".
Soweit ich das herausgefunden habe muss ich der Steuerung über das Subscription und das zugehörige Filterelement sagen, dass der Client an diesen Attributen interessiert ist. Jedoch verstehe ich nicht genau wo ich das machen muss.
In der FilterDefintion gibt es zwar Methode ConstructSelectClauses wenn ich diese um das Attribut ("ns=3;s=1805") erweitere schickt die Steuerung jedoch nicht die gewünschten Attribute. Hätte da in meiner Verzweiflung auch bereits die dubiosesten Dinge rein geschrieben jedoch ohne Veränderung.
Irgendwo fehlt da noch was und ich komme nicht dahinter.

Ich habe mir auch angesehen den AlarmConditionType abzuleiten und einen eigenen SimaticAlarmConditionType, aber dann müsste ich ich ja letztlich im gesamten Framework bekanntmachen. Hier bin ich auch an den Inizialisierungsstrings gescheitert. (BTW: weiß jemand wie man diese erstellt?)

Danke für deine Hilfe vorab!
 

Anhänge

  • Forum.png
    Forum.png
    8 KB · Aufrufe: 22
Achso, ok. Ich hatte mich erst gefragt, wo diese ConstructSelectClauses-Methode herkommt, aber die hast du aus den Samples habe ich jetzt gesehen.
Von dem kurzen Ausschnitt kann ich nicht erkennen, was da evtl. nicht stimmt, aber vielleicht generell als Tipp:
Als ich A&C mal brauchte, bin ich folgendem Beispiel gefolgt:
https://github.com/OPCFoundation/UA-.NETStandard/issues/294#issuecomment-352619898

Kommst du damit besser voran?
 
Hey Danke nochmal für den Tipp war genau das was ich gesucht habe.
Einfach den Namespace anhängen und die Steuerung spuckt das Attribut brav aus.
 
Sehr schön! Freut mich zu hören!

Wo genau hast du den namespace angehängt? Das konnte ich jetzt nicht ganz nachvollziehen 😁
Kannst du zeigen, was du konkret geändert hast?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Malloc,

ja gerne. Die Klasse QualifiedName hat mehrere Konstruktoren, wodurch man das Objekt auch mit ("Name", "Namespace") erzeugen kann.

new SimpleAttributeOperand { TypeDefinitionId = ObjectTypeIds.BaseEventType, BrowsePath = new[] { new QualifiedName("AdditionalText_01",3) }, AttributeId = Attributes.Value }

Ich habe erstmals den Namespace direkt mit 3 angegeben. Nicht ganz sauber aber tut mal soweit.
(y)
 
Ah, hab' ich auch nicht gesehen! So ist das mit den Details. Kaum macht man alles richtig, funktioniert's.

Danke für die Rückmeldung.
 
Hallo,
ich würde gerne das gleiche machen aber mit Java, bekomme es jedoch nicht am laufen.
Hätte jemand einen Tipp für mich als Java Anfänger?

Vielen Dank im Voraus :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein paar mehr Infos müssen schon sein.
Welches SDK?
Welchen Effekt möchtest du erreichen und wie sieht es tatsächlich aus?
Was hast du schon versucht und wo hakt es gerade?
 
Zurück
Oben