Alarm-OB

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Wird ein Temp-Variable in einem FC der vom OB1 aufgerufen wird während der Unterbrechung durch eine Alarm-OB geändert?

Beispiel:
Die Temp-Variable wird in einem FC mit dem Wert 5 beschrieben.
Der FC durchlauf wird durch den Alarm-OB unterbrochen.
Nach der Abarbeitung des Alarm-OB (Zeit OB35) wird der FC weiter
bearbeitet.
Ist dann die Temp-Variable immer noch mit 5 beschrieben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ja, die Temp.Variable hat immer noch den Wert 5

Bei den 300er CPUs gibt es ingesammt 6 verschiedene Ablaufebenen, welche gleichzeitig bearbeitet werden können.
Jeder Ebene ist ein L-Stack (Speicher für temp.Variablen) von 256 bzw. bei den neueren CPUs 512 Byte zugeordnet.
Bei den 400er CPUs kann in den Eigenschaften der CPU in der Hardwareeinstellungen für jede Prioritätsklasse die Grösse des L-Stack eingestellt werden.

Wenn nun in der Ablaufebene des OB1 eine Temp.Variable benutzt wird, kann ein Programm in der Ablaufebene des OB35 ohne Probleme wieder Temp.Variablen benutzten, da diese Ebene separaten L-Stack Speicher belegt.


Wichtig
- Die Temp.Variablen werden am Anfang eines Bausteins nicht gelöscht oder initialisiert.
- Eine Temp.Variable muss immer zuerst beschrieben werden, bevor diese wieder abgefragt werden kann. (und das in jedem Zyklus)
- Vorsicht mit S und R Befehlen (Setzen und Rücksetzen), es muss in jedem Zyklus einer der beiden Befehle ausgeführt werden.
 
Nächste Frage:
Wie kann verhindern, das der FC durch einen Alarm-OB unterbrochen wird?
 
Es gibt einen Befehl um die Alarmbearbeitung auszuschalten und einen weiteren, um sie wieder zuzulassen. Bei der S5 war das AS und AF. Für S7 habe ich es nicht im Kopf.
Bei ausgestzter Alarmbearbeitung sollten nur kurze Befehlsfolgen abgearbeitet werden.
Alarm-programme selbst werden nur durch Alarm-programme höherer Priorität unterbrochen.
 
Zurück
Oben