TIA Interrupt Befehlsgrenze wo genau unterbricht ein Interrupt ?

Softi79

Level-2
Beiträge
220
Reaktionspunkte
12
Zuviel Werbung?
-> Hier kostenlos registrieren
Nabend Leute,

ich beschäftigt eine Frage bzgl. Interrupt, im speziellen den Cyclic Interrupt vermutlich betrifft es aber alle Interrupts.
Wird z.B. die IF-Anweisung_1 durch den Interrupt unterbrochen und anschließend wird erst die IF-Anweisung_2 bearbeitet ?


IF Anweisung_1
THEN
Merker_1 := TRUE;

IF Anweisung_2
THEN
Merker_2 := TRUE;
END_IF;
END_IF;

Früher in alten Handbüchern wurde geschrieben, dass der Interrupt den Hauptablauf an der "Befehlsgrenze" unterbricht sprich z.B. eine Zuweisung, gibt es zu dem Thema eine Beschreibung von Siemens ?

Und jetzt noch schnell zur Tanke und Nervennahrung holen :) dann geht es weiter mit der IB
 
Vielleicht beschreibst du dein Problem, den an sich ist die Unterbrechungsstelle ja egal solange das Programm noch richtig bearbeitet wird.
 

Anhänge

  • cycle_d.gif
    cycle_d.gif
    5,2 KB · Aufrufe: 35
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Suche Dir in Deinem Programm eine Stelle aus, wo eine Unterbrechung besonders unangenehm wäre - und der Interrupt wird Dein Programm auch mal genau an dieser Stelle unterbrechen. ;) :ROFLMAO:
(SPS sind perfekte Murphy-Maschinen - die probieren einfach alle statistisch möglichen Ereignisse unheimlich schnell nacheinander aus, bis auch die unwahrscheinlichsten Ereignisse auftreten :cool: )

Wenn z.B. ein Interrupt (z.B. HMI-Kommunikation!) das Programm unterbricht und den Wert der Variable a auf 0 setzt, dann kann es in folgendem Programmcode trotz Prüfung zu Division durch 0 kommen. Die Unterbrechung kann fieserweise beim AND passieren oder direkt nach dem THEN:
Code:
IF a > 0 AND a < 10 THEN
  c := b / a;
END_IF;

Harald
 
In diesem wirklich fiesen Beispiel würde ich aber ohnehin Bereichsgrenzenprüfungen für z.B. manuelle Eingaben oder HMI-Berechnungen zusätzlich im HMI erledigen lassen.
Eingabefelder bieten von sich aus die Möglichkeit und wer scriptet muss es in den Scripts halt mit berücksichtigen.
Eigene Interruptprogramme (Alarm-OB) sollten in sich nur gültige Variablen ans Hauptprogramm zurückgeben eben wegen dieser Problematik.

"Perfekte Murphy-Maschinen" *ROFL*
 
Zurück
Oben