TIA Array of Program_Alarm in Laufzeit verwenden

Münchnerjunge

Level-1
Beiträge
314
Reaktionspunkte
38
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Community,

ich möchte gerne zwecks Programmieraufwand einen Funktion erstellen, die folgendes beinhaltet:

-ein Global-DB welcher einen FB mit Daten versorgt
-einen FB welcher eine Multiinstanz aufruft, die Program_Alarm verwendet
-das ganze in einer Schleife aufrufen, dh SIG und SD_1 schreibe ich je nach Index zur Laufzeit an die Instanz. Hierbei soll mir das ganze dann eben die Störmeldungen erzeugen.

Geht das überhaupt? Ich lege ja nur einemal ein Program_Alarm an. Den Meldetext diesen Program_Alarms hole ich mir aus SD_1, soweit kein Problem. Allerdings habe ich unter Programmeldungen eben nur einen einzigen Program_Alarm, der mir angezeigt wird und leider grade auch keine Hardware das ganze zu testen.

Hier ein Bid zur Veranschaulichung:

Unbenannt.jpg
 
Wir haben den Programmalarm in einem FB gekapselt. Da wird in den Programmmeldungen auch nur eine Meldung angezeigt.
Die mit dem FB erzeugten Meldungen werden korrekt am Panel angezeigt.
Ich denke mal, das sollte so gehen, wie du es wünscht. Die Frage wäre noch, ob ein einmaliger Aufruf des Programm_Alarm ausreicht. Wenn er asynchron arbeitet, also mehrere Zyklen benötigt, dann wird es so eher nicht gehen.
Da hilft wohl nur ein Test weiter.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Frage ist, ist diese verwendungvon Program_Alarm sinnvoll?

Ich benutze Program_Alarm in mehrfach verwendeten Multiinstanzen (Standardbausteine für Ventile, Motoren, usw), damit ich nicht jede Meldung einzeln tippen muss. In diesem Fall muss jedoch jede Meldung nach wie vor einzeln geschrieben werden, und der Program_Alarm nagt in größerer Menge schon merklich ander Zyluszeit der CPU.
 
Den Program_Alarm kannst Du auch in der Simulation testen. Die Art und Weise wie dieser aber verwendet wird halte ich für wenig sinnvoll.
 
Hallo Kollegen!
Hier auch mal ein Input und eine Frage von mir:

Zuerst die Frage:
Ich verwende den Program_Alarm auch in einem Instanz- FB und habe dort ein Array of [0..49] Program_Alarm;
Das geht auch ganz gut. Nun rufe ich jeden Index des Typs in einem Netzwerk auf, um die Alarme zu triggern.
Im Netzwerk wird der Typ dann nur auf eine Laufvariable gesetzt, um nicht den ganzen Code für jeden Alarm hartcodiert auszuprogrammieren.
Und auch unter PLC- Überwachungen und Meldungen werden mir alle 50 Typen schön angezeigt.
Auch gut.

Aaaber: Hier kann ich nur noch beim ersten (Index [0]) meinen Meldetext und Infotext bearbeiten. Bei den anderen 49 Typen geht nix mehr. Warum??
Hat jemand eine Ahnung?


Zur Info:
Ich verwende den EN des PA dazu, dass er nur aufgerufen wird, wenn die entsprechende Meldung auch tatsächlich ansteht. Dies spart dann Zykluszeit.
Man muss nur darauf achten, das der SIG (Trigger zum Meldung schmeißen am PA) zumindest SICHER einen Zyklus vorm Disablen des PA eine negative Flanke bekommt, da sonnst die Meldung hängen bleibt (da der PA ja nicht mehr aufgerufen wird). Hab das jetzt so gemacht, dass zwischen negativer Flanke am SIG und disablen des PA zumindest drei Zyklen vergehen.
Das funzt bei mir recht gut- auch bei >250 Meldungen zur gleichen Zeit.
Ohne den Trick sind dann immer ein paar (Anzahl undefiniert) Meldungen hängen geblieben, obwohl ich den EN über ein quasi- Selbsthaltung einen Zyklus länger am Leben gehalten habe als den SIG.

THX & LG
der Kärntner
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wird der Program_Alarm den auch 50 mal aufgerufen? In der Schnittstelle des FB müssen 50 Aufrufe vorhanden sein bzw. ein Aufrauf als Multiinstanz Array des Programalarm.
Texte können nur für jeweils eine Instanz bearbeitet werden.
 
Woher soll TIA wissen was du in der Laufvariable hast?
Geh oben in die Bausteinschnittstelle da kannst du auch alles konfigurieren, genauso als wenn du die jeweilige Instanz selber auswählst.

Gruß

Jens
 
Hallo miasma!

Ja- wird er (50 Netzwerke).
TIA erkennt das auch und man sieht deshalb auch alle Typen und Instanzen bei den PLC- Überwachungen & Meldungen (50 Meldungen).
 
Hallo DOD666- erst jetzt deine Antwort gesehen.

In der Schnittstelle zeigt sich dasselbe Verhalten wie in den Programmmeldungs- Editor.
Lässt auch keine Variablen/Textlisten zu...

Ich gehe tatsächlich davon aus, dass TIA die Meldungen nur bearbeiten lässt, wenn es die Instanz Hartcodiert im Programm findet. Das wäre schon ein derber Rückschlag beim totalen integrieren der Automation ;)


Leider.
 
Schreib mal einen festen Wert anstatt der Laufvariable.
Dann Textliste anbinden dann wieder zurück ändern.
Jetzt sollte die Textliste weiterhin funktionieren.

So hat es bei uns jedenfalls funktioniert.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi.

Ja, das geht schon.

Das soll aber nicht der Zweck der Übung sein.

Laufvariablen sind ja eben genau deswegen da, um nicht magic-numbers zu verwenden ;)

Siemens weis jedenfalls bescheid. Da warte ich jetzt mal ab.

Danke trotzdem & LG & schönes WE
 
Ist ja auch nur eine Lösung für das Problem. Nur weil Siemens bescheid weiß bedeutet das ja nicht daß es umgehend behoben wird.

Wir haben halt festgestellt das wenn man es ändert und dann kann man die Textliste anbinden. Dann ändert man zurück und die Textliste funktioniert weiterhin und man hat seine laufvariable.

Gruß

Jens

Gesendet von meinem Moto G (4) mit Tapatalk
 
Noch ne Info zu Programmalarmen: Wir hatten jetzt um die 9300 auf unserer Cpu, 10000 sind zwar zulässig, jedoch war bei uns nur noch ein laden in stop möglich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@DOD666- Ja, sehe ich auch so. Jedenfalls ist Siemens da dran im SL2. Wenn niemand was sagt, wird auch nix verbessert. Und die Siemens- Strategie ist ja, dass die Kunden das Quality- Gate, also die Beta- Tester, des Produktes sind. Somit müssen sich auch die Inputs der Tester akzeptieren ;)
Schau ma mal, was rauskommt.

@Jochen- ich hab den PA jetzt so verschaltet, dass dieser nur aufgerufen wird, wenn eine Meldung kommt oder geht (am EN). Dazwischen und vorher/nachher nicht. Ist zwar etwas mit der Kirche ums Kreuz. Da der PA aber leider nix anderes zulässt, muss es wohl so sein.

Soweit ich das testen konnte, geht es auch zuverlässig. Alle Meldungen kommen im HMI und gehen auch wieder.
Einzig das TIA- Meldesystem ist schnell mal überlastet bei >500 gleichzeitigen Events. Auch das wurde an Siemens reportet. Ist ja schon ein bekanntes Problem, wie ichs in den Foren mitbekommen habe...

LG & einen guten Start in die Woche
 
ich hab den PA jetzt so verschaltet, dass dieser nur aufgerufen wird, wenn eine Meldung kommt oder geht (am EN). Dazwischen und vorher/nachher nicht. Ist zwar etwas mit der Kirche ums Kreuz. Da der PA aber leider nix anderes zulässt, muss es wohl so sein.

Funktioniert dann das quittieren im Panel auch?

Soweit ich das testen konnte, geht es auch zuverlässig. Alle Meldungen kommen im HMI und gehen auch wieder.
Einzig das TIA- Meldesystem ist schnell mal überlastet bei >500 gleichzeitigen Events. Auch das wurde an Siemens reportet. Ist ja schon ein bekanntes Problem, wie ichs in den Foren mitbekommen habe...

Je nach CPU können unterschiedlich viele PA projektiert werden, aber nur ein Bruchteil gleichzeitig aktiv sein. Für uns ist das derzeit völlig unbrauchbar, da wir noch keine Lösung gefunden haben, wie wir diese Überlastung umgehen können. Wir möchten die PA in unseren Bausteinen (Motor, Ventil,...) kapseln und nicht ein extra Meldebehandlungs-FB erstellen in dem dann alle Meldungen global behalt werden müssen.

Gesendet von meinem Nexus 5X mit Tapatalk
 
Funktioniert dann das quittieren im Panel auch?

Ja natürlich. Beim Quittieren wird der PA ja nicht benötigt. Der PA soll die Meldung ja nur Schmeißen und löschen.


Je nach CPU können unterschiedlich viele PA projektiert werden, aber nur ein Bruchteil gleichzeitig aktiv sein. Für uns ist das derzeit völlig unbrauchbar, da wir noch keine Lösung gefunden haben, wie wir diese Überlastung umgehen können. Wir möchten die PA in unseren Bausteinen (Motor, Ventil,...) kapseln und nicht ein extra Meldebehandlungs-FB erstellen in dem dann alle Meldungen global behalt werden müssen.

Ich verwende den PA jetzt mal versuchshalber in einem eigenen FB. Also pro Störung diesen FB einmal aufrufen (wo ist egal), Störungssignal+Störungsnummer mitgeben und fertig.

Bezüglich der Auslastung des Meldesystems muss man sich noch was überlegen. Es gibt ja auch den Status des PA, wo es u.a. auch einen Fehler dafür gibt, den man auswerten kann.
 
Zurück
Oben