Der richtige Weg?
Hallo Anna,
also von "Fehlertexten" war nie die Rede, ich hoffe du möchtest mit dem
SFC52 kein Meldesystem aufbauen.
Info 1 und 2 sind nur 1 oder 2 Worte lang - siehe Siemens-Hilfe:
Zusatzinformation
In der Zusatzinformation sind zusätzliche Informationen zum Ereignis abgelegt. Diese Zusatzinformationen können für jedes Ereignis unterschiedlichen Inhalt besitzen. Wenn Sie ein Diagnoseereignis erzeugen, dann können Sie den Inhalt dieser Einträge selbst bestimmen.
Wenn Sie eine anwenderdefinierte Diagnosemeldung versenden, können Sie die Zusatzinformationen als Begleitwerte in den (Ereignis-ID-spezifischen) Meldetext integrieren.
Da diese beiden Parameter aber als ANY-Zeiger übergeben werden müssen,
habe ich den Aufbau eines Arrays of UDT empfohlen. Ansonsten könntest
du alles in einen FB packen und die Werte als Konstanten im Programm übergeben.
Natürlich muss diese UDT nur die Infos enthalten, die projektiert werden
sollen, andere Infos, wie die aktuelle Uhrzeit müssen direkt an die SFC
übergeben werden.
Die Prioritätsklasse erhälst du aus den Lokaldaten des jeweiligen OBs, z.B. OBxx_PRIORITY oder OBxx_OB_NUMBR. Hier musst du natürlich entscheiden,
ob es besser ist, diese Infos einmal zu projektieren oder immer wieder dynamisch aus diesen Lokaldaten zu lesen.
Der Zugriff auf ein Element eines Array Of Udt erfolgt so:
- "DB_Symbol".DB_Variable[1].MeinElement
Das gilt natürlich nur, wenn du den Zeiger fest anparametrierst.
Möchtes du einen Baustein schreiben, der immer wieder individuell aufgerufen werden kann, musst du dir einen variablen Any-Zeiger zusammenbauen. Das ist nicht ganz trivial (siehe Beiträge hier im Forum).
Wenn du da mal ganz tief einsteigen möchtest, kann ich dir nur das S7-Buch
von Hans Berger empfehlen! Nicht ganz billig, aber wenn du das durch hast,
kann dich nichts mehr an S7 schrecken!
Viel Erfolg, Gruß G.