Programmablauf Prozessalarm

SCLNewbie

Level-1
Beiträge
42
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute,

gemäß SCL-Handbuch wird der Programmablauf des OB1 bei einem kommnenden Ereignis des Prozessalarm OB (OB 40) unterbrochen und nur noch der OB 40 abgearbeitet. Heißt das automatisch, dass FB's welche über den OB1 aufgerufen werden, dann automatisch nicht mehr abgearbeitet werden, auch wenn der Prozessalarm über mehrere Sekunden andauert? Vielen Dank für eure Hilfe!
 
Der Prozessalarm ruft einen bestimmten OB (z.B. OB81, OB86 usw.) auf.
D.h. er springt aus dem aktuell laufenden Baustein raus in den OB und arbeitet diesen ab.

Danach geht die Bearbeitung des normalen Programms weiter!

Das eintreten des Ereignises kannst Du als Flanke sehen!
D.h. wenn z.B. ein Profibuss-Teilnehmer sich am Bus abmeldet (z.B. Spannungsfall) so wird einmalig der OB 86 (galube gerade) durchlaufen.
Dieser OB wird nicht stetig angesprungen sondern halt einmalig ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, der OB welcher durch diesen Alarm aufgerufen wird (sei das nun Weckob, Fehlerob etc.), wird abgearbeitet, danach wird der untergeordnete OB hier OB1 an der Stelle fortgesetzt wo er unterbrochen wurde sobald der höherpriorisierte OB abgearbeitet wurde.

mfG René
 
Als wäre es Blödsinn wenn man im Anwenderprogramm, in welchen ein FB über den OB1 aufgerufen wird, eine Schleife programmiert, die nur dann ausgeführt wird, wenn ein Prozessalarm erkannt wird, da der FB sowieso unterbrochen wird, richtig?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Als wäre es Blödsinn wenn man im Anwenderprogramm, in welchen ein FB über den OB1 aufgerufen wird, eine Schleife programmiert, die nur dann ausgeführt wird, wenn ein Prozessalarm erkannt wird, da der FB sowieso unterbrochen wird, richtig?

Etwas konfus geschrieben. Ich versteh nur Bahnhof.
 
Ich habe nen Errorcounter in einem FB, aufgerufen über den OB1, programmiert. Dieser liest digitale Zustände eines Moduls in jedem Zyklus ein und vergleicht sie mit den vorherigen Zuständen. Wenn sich ein Zustnd ändert, wird eine Fehlerzählervariable inkrementiert. Die Zustände sind normalerweise low gesetzt, wenn sie auf high gehen,zählt der Fehlerzähler. Da Änderungen der Zustände infolge des zyklisch abgelaufenen Programms somit nicht immer erfasst werden, hat man die Möglichkeit einen Prozessalarm zu projektieren, der dann ausgelöst wird wenn ein digitaler Zustand high gesetzt wird. Somit habe ich einen OB 40 mit einer Schleife angelegt, sodass bei einem kommenden Ereignis die Fehlerzählvariable entsprechend inkrementiert wird. Mir geht es jetzt darum zu gewährleisten, dass beide Fehlerzähler (in dem FB und OB40) nicht parallel aufgerufen werden und der Fehlerzähler nicht verpfälscht wird...ist das von der vorgehensweise so richtig?
 
In keinem OB wird eine Schleife programmiert! OB1 wird zyklisch aufgerufen. OB40 wird genau einmal aufgerufen, wenn das projektierte Prozessereignis "kommt" - egal wie lange der Prozesszustand ansteht.
Deinen Fehlerzähler würde ich NUR im OB40 programmieren, wenn das Fehlersignal sehr kurz ist. Wenn das Fehlersignal > 100ms anliegt, dann einfach NUR im OB1 oder in darin aufgerufenen Bausteinen programmieren.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wozu denn eine Schleife?
Wenn der OB40 Aufgerufen wird, wertest du den Zustand deines Prozesses aus und inkrementierst bzw. dekrementierst deinen Fehlerzähler (je nachdem ob der Fehler gekommen oder wenn ebenfalls ausgewertet gegangen ist)
Im Zyklischen OB musst du eigentlich überhaupt nix am Fehlerzähler machen.
 
Zuletzt bearbeitet:
Zurück
Oben