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



## IAmDonaldDuck (1 Juni 2022)

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!


----------



## malloc (1 Juni 2022)

Was genau meinst du mit "offiziellen OPC-Framework"?


----------



## IAmDonaldDuck (1 Juni 2022)

Hallo Malloc,
hiermit meine ich dass ich keine gekaufte Library wie von UnifiedAutomation habe sondern die von der OPC-Foundation genommen habe.


----------



## malloc (1 Juni 2022)

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?


----------



## IAmDonaldDuck (2 Juni 2022)

Ok, hey danke für den hint!
Das ist ein guter Ansatz werde ihn so schnell wir möglich probieren!


----------



## malloc (2 Juni 2022)

Dann lass mal bald ein Update hören, wie es geklappt hat 😀


----------



## IAmDonaldDuck (2 Juni 2022)

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.


----------



## malloc (3 Juni 2022)

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?


----------



## IAmDonaldDuck (4 Juni 2022)

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.


----------



## malloc (4 Juni 2022)

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.


----------



## Deadmau5 (8 September 2022)

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


----------



## malloc (8 September 2022)

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?


----------

