TIA Program_alarm overflow? Was jetzt wieder los?

vollmi

Level-3
Beiträge
5.747
Reaktionspunkte
1.690
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe hier eine S7_1512sp mit nur nem Comfortpanel dran. Darum dachte ich mir mach ichs mal wie von Siemens gedacht und nutze den Program_alarm baustein
Ich habe also einen FB 10 mal instanziert, darin wird unter anderem auch 30 instanzen vom Program_alarm aufgerufen. Ausserdem noch 10 mal 2 instanzen und noch 10 weitere Instanzen. Also maximal 400 Meldungen die Erzeugt werden.
Funktionierte einwandfrei. nun habe ich gestern in der Instanz in der 30 Alarme generiert werden, noch einen zusätzlichen hinzugefügt. Funktionierte auch, bis heute Nacht da kam ein Anruf, es kommen keine Meldungen mehr. Garnix mehr.

Ich also auf die Baustelle. CPU läuft. Variablen am Panel laufen auch etc.

im Diagnosebuffer dann die Meldung
1 von 475; Ereignis-ID: 16# 02:4880PLC-Mitteilung: Warnung wegen Überlastung der Alarm-Ressource für Prozessalarme.
Alarme/Meldungen werden eventuell nicht mehr von der PLC gesendet.
R1013

Was heisst hier eventuell. Es kommt einfach garnichts mehr.
Und zwar seit Stunden. Anstehende Meldungen gehen nicht mehr weg.
Ein neustart der CPU bringt ebenfalls nichts.
Also lade ich eine ältere version des geänderten Bausteins mit nur 30 program_alarmen. Und jap funktioniert wieder.

Was ist da los? Ich meienn einen Bufferüberlauf kann ich ja noch verzeihen, einen verschluckten Alarm von mir aus. Aber dass dann garnix mehr geht und sich auch nicht anfängt zu erholen, das geht ja garnicht. vom Program_alarm hats ja keine Statusmeldung, in der man sieht das man alarme verzögern müsste oder sowas. Hatte das Problem wohl auch schon einer?

Natürlich ist morgen Abnahme und ich reise Montag wieder ab und überlege mir grad alles wieder auf konventionelle Alarmtrigger umzubauen (was doch einiges an Arbeit macht)

mfG René
 
Meldeschauer? Wobei 300 gleichzeitige Alarme welche die Steuerung verarbeiten kann schon recht viel sind, aber bei Spannungsausfall lässt sich das nicht verhindern, wenn man es per Programm nicht passend verarbeitet.

Ich hatte schon immer meine Bedenken bei den ProgramAlarms, das ist bei der 300/400 schon nicht zu 100% sauber.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nunja ich habe ja auch rückmeldungen drin.
Das könnts natürlich sein. Das garnicht die alarmmeldungen das problem verursachen.
Muss ich wohl wirklich wieder umbauen. War halt praktisch wenn sich die meldungngen eigentlich nur schon durch den instanznamen ergeben.
 
Schvon immer. Wenn ich jetzt noch 600 flanken für kommend und gehend bilden müsste inkl If then pro alarm. Dann wirds ja absurd.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Meldeschauer ist ab einer bestimmten Anzahl von Meldungen ein Riesenproblem bei Programmalarm.
Wir setzen jetzt Prodiag an ein.
Prodiag verwendet intern auch den Programmalarm, hat aber ein eigenes Resourcenhandling.

Gruß
Blockmove
 
Der Meldeschauer ist ab einer bestimmten Anzahl von Meldungen ein Riesenproblem bei Programmalarm.
Wir setzen jetzt Prodiag an ein.
Prodiag verwendet intern auch den Programmalarm, hat aber ein eigenes Resourcenhandling.

Da muss ich mich mal einlesen. Für mich war das jetzt mehr so. Hey klasse ich kann jetzt Bausteine bauen die ihre Meldungen ans Panel gleich durch die Instanz betexten, ohne das ich eine Meldetextliste per excel nachführen muss und für jede zusätzliche Meldung auch noch die Panel nachführen muss.

Klar könnte ich jetztz das alles per flanke und case und co lösen. Der sinn war aber eigentlich das alles einfacher und sicherer wird.
 
Der Meldeschauer ist ab einer bestimmten Anzahl von Meldungen ein Riesenproblem bei Programmalarm.
Wir setzen jetzt Prodiag an ein.
Prodiag verwendet intern auch den Programmalarm, hat aber ein eigenes Resourcenhandling.

Das heißt ihr seit auf das Problem gestoßen, aber anstatt bei Siemens einzufordern das vernünftig umzusetzen, habt ihr jetzt eine kostenpflichtige Zusatzoption erworben?
Das kann aber eigentlich nicht die Lösung sein.

Ich finde die Bausteinmeldungen vom Prinzip her auch gut, nur genau wegen den hier gemeldeten Effekten lasse ich bisher die Finger davon.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da muss ich mich mal einlesen. Für mich war das jetzt mehr so. Hey klasse ich kann jetzt Bausteine bauen die ihre Meldungen ans Panel gleich durch die Instanz betexten, ohne das ich eine Meldetextliste per excel nachführen muss und für jede zusätzliche Meldung auch noch die Panel nachführen muss.

Genau das macht ProDiag auch ... Nur noch ne ganze Ecke komfortabler.
Wenn man dann nach ne ProDiag für Panel kauft, dann wird es richtig interessant.
Dort gibt es ein PLC-Codeviewer-Control. Kommt eine Medung von ProDiag, dann kann man die auslösende Stelle im Stauts auf dem Panel anschauen.
Funktioniert mit Kop/Fup und Graph.

Gruß
Blockmove
 
Das heißt ihr seit auf das Problem gestoßen, aber anstatt bei Siemens einzufordern das vernünftig umzusetzen, habt ihr jetzt eine kostenpflichtige Zusatzoption erworben?
Das kann aber eigentlich nicht die Lösung sein.

Kann man in Prizip so sehen :p
Programmalarm als solches funktioniert ... wenn man die Rahmenbedingungen einhält.
Also eben Anzahl beachten und Baustein-Status auswerten.
Kann man natürlich alles selber programmieren oder man kauft es.

Hauptgrund für ProDiag waren bei uns allerdings die Codeviewer auf dem Panel
 
Auszug aus dem Gerätehandbuch der betreffenden CPU.

1512.png

Aktiv bezieht sich auf auf den Status des Program_Alarm den man mit Get_AlarmState auslesen kann.

aktiv.png

Was meinst Du mit Rückmeldungen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also eben Anzahl beachten und Baustein-Status auswerten.
Kann man natürlich alles selber programmieren oder man kauft es.

Nunja Bausteinstatus auswerten ist ja so eine sache. Okay nehmen wir an der baustein liefert ein Zuviele Alarme zurück, was macht man dann? Den baustein überspringen und später wieder aufrufen?
Wann?

Oder soll man den alarmeingang wieder wegnehmen?
Das würde ja aber nochmal eine Meldung generieren?

Eigentlich lernt man ja auch das man FBs nicht bedingt aufruft sondern entweder einen Req nutzt und Stati auswertet oder der baustein das selber händelt. Gibt es irgendeinen anderen FB in der Bibliothek den man nur unter Bedingungen aufruft?

Für mich bedeutete 300 meldungen gleichzeitig eher, wenn mehr wie 300 Meldungen gleichzeitig kommen werden die übrigen verworfen und trudeln halt später ein. Wär ja nicht kritisch für micht, das wäre für Maschinenbauer wichtig die auf genaue Zeitstempel angewiesen wären.

Und deswegen eine 1515 oder gar einen OpenControler einsetzen will ich ja deswegen trotzdem nicht, denn die 1512sp langweilt sich bei dem Programm ja schon.

mfG René
 
Zuletzt bearbeitet:
@vollmi
Wenn du es richtig machen willst, dann kommst du wohl an einem Meldepuffer (FiFo) in der Steuerung nicht vorbei.
Letztlich hat Siemens bei ProgramAlarm ziemlich geschlampt.
 
Das wurde mit Absicht kaputt designt, so doof ist kein Programmierer.
Wie schwer ist es denn auf Siemens-Seite das abzufangen, dass einfach neue Meldungen nicht mehr verarbeitet werden wenn die max. Anzahl (z.B. 300) erreicht werden.
Code:
IF MessageQueue.Full THEN
  Error = true;
  RETURN;
ELSE
  // Meldung verarbeiten
Stattdessen lässt man das ganze Meldesystem bis zur Unbenutzbarkeit kollabieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aus den hier genannten Gründen haben wir das ganze ja wie hier gebaut: #14

Also zuviel Alarme im Zyklus, Performance,...

Das große Problem ist ja nur, man kann diese Logik nicht in einem Baustein kapseln, da ja die Meldung zur Instanz des Programalarms gehört!

Ich hätte auch erwartet, da Siemens da einen Baustein anbietet, der ohne großartige Logik funktioniert... Pustekuchen.
 
Ich hätte auch erwartet, da Siemens da einen Baustein anbietet, der ohne großartige Logik funktioniert... Pustekuchen.

Genau das macht ProDiag
Tja Thomas hat wohl Recht damit, dass er Siemens hier eine gewisse Absicht unterstellt :p
Interessant für Siemens-Verhältnisse ist auch die Lizenzüberprüfung für ProDiag auf der 1500er.

Gruß
Blockmove
 
@vollmi
Wenn du es richtig machen willst, dann kommst du wohl an einem Meldepuffer (FiFo) in der Steuerung nicht vorbei.
Letztlich hat Siemens bei ProgramAlarm ziemlich geschlampt.

Du meinst Meldung für Meldung schicken? Okay spinnen wir das weiter.
Ich mache also in ein z.B. meinem Cabinetbaustein so einen Meldebuffer. der jeden Zyklus einen der Programalarm aufruft. Reicht jeden Zyklus zum nächsten wechseln? Oder ist das schon zu schnell?

Jetzt haben wir ja auch noch diese Konfigurationsfenster für den Alarmbaustein. Wenn ich diesen jetzt aber in einen Baustein einpacke der flankendetektion macht, auch die Status auswertung etc. Wie komm ich jetzt an das Configfenster dran? Das ganze ist doch keine Sichere Alarmierung mehr. Zumindest weder sicherer als die Bitmeldungen noch ist es wirklich einfacher oder weniger Aufwändiger.

Ich bin grad etwas angepisst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du meinst Meldung für Meldung schicken? Okay spinnen wir das weiter.
Ich mache also in ein z.B. meinem Cabinetbaustein so einen Meldebuffer. der jeden Zyklus einen der Programalarm aufruft. Reicht jeden Zyklus zum nächsten wechseln? Oder ist das schon zu schnell?

Jetzt haben wir ja auch noch diese Konfigurationsfenster für den Alarmbaustein. Wenn ich diesen jetzt aber in einen Baustein einpacke der flankendetektion macht, auch die Status auswertung etc. Wie komm ich jetzt an das Configfenster dran?

Das Ganze hab ich mir auch überlegt als ich durch den Thread von Jochen Kühner auf die Thematik mit Programalarm aufmerksam geworden bin.
Ich hab dann damals Programmalarm wieder in die Schublade gesteckt und weiterhin die alte Bitmeldung verwendet.
Irgendwann hab ich ne Präsentation zu ProDiag in die Finger bekommen und hab dann nachgefragt wie es mit Meldeschwall und folgerichtichtiges Melden aussieht.
Antwort war, dass es erledigt ist, da ProDiag Programmalarm "richtig" verwendet.
Lizenzpreise halten sich in Grenzen, daher eben ProDiag gekauft.
 
Vielleicht kann ja jemand der eine 1500 zum Testen zur Verfügung hat, einen kleinen Testfall schreiben und ihn an der Steuerung ausprobieren.
Also z.B. ein Testprogramm mit 500 oder 1000 ProgramAlarm-Aufrufen, die aus einem Bool-Array in einem DB gespeist werden. Und dann testen was passiert wenn eine bestimmte Anzahl an Meldungen gleichzeitig auftritt.

Und falls der Fehler reproduzierbar ist, sich dann damit an den Siemens-Support wenden. Dann muss ja irgendeine Aussage kommen, und wenn es Beispielcode ist wie denn der ProgramAlarm richtig zu verwenden ist ohne dass einem das Meldesystem zusammenbricht.

Wenn ich 300 Meldungen aktiv habe und es kommt noch eine hinzu, dann muss ich ja zwangsweise einmal den ProgramAlarm aufrufen um den Zustand festzustellen.
Wenn dann die Aussage kommt ich muss selber dafür Sorge tragen dass dieser Zustand nicht eintritt, dann ist diese Funktion ganz einfach nicht zu gebrauchen.
 
Zurück
Oben