Programmablauf Prozessalarm

SCLNewbie

Active member
Beiträge
42
Punkte Reaktionen
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!
 

Boxy

Well-known member
Beiträge
1.422
Punkte Reaktionen
138
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 ...
 

vollmi

Well-known member
Beiträge
4.942
Punkte Reaktionen
1.101
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é
 
OP
S

SCLNewbie

Active member
Beiträge
42
Punkte Reaktionen
0
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?
 

ducati

Well-known member
Beiträge
6.054
Punkte Reaktionen
1.173
Hast Du verstanden, wie der Programmablauf in einer SPS funktioniert? Vielleicht hilft das hier etwas: http://www.sps-lehrgang.de/codebausteine-in-step7/

Wenn Du Code bei einem Prozessalarm ausführen willst, kannst Du den auch direkt in den OB 40 legen. Oder du lässt den OB40 leer, und führst den Code bedingt bei Alarm im OB 1 aus.

Was genau willst/musst Du denn realisieren?

Gruß.
 

vollmi

Well-known member
Beiträge
4.942
Punkte Reaktionen
1.101
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.
 
OP
S

SCLNewbie

Active member
Beiträge
42
Punkte Reaktionen
0
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?
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.603
Punkte Reaktionen
5.179
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
 

vollmi

Well-known member
Beiträge
4.942
Punkte Reaktionen
1.101
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:
Oben