Step 7 Verhalten von Akkuregister bei Aufruf Prozessalarm

thomasgull

Level-2
Beiträge
166
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe hier eine Frage zu den Prozessalarmen in zusammenhang mit Akkuregistern:

Wie verhält sich der Akkuinhalt wenn ich in OB 1 eine Akkuoperation durchführe und in diesem Augenblick wird ein Prozessalarm OB 40 aufgerufen. Nach Konfiguration hat OB 40 die Höhere priorität und unterbricht demzufolge den OB 1 aufruf.
nach beenden des Prozessalarmes kehrt das Programm zur nterbrechungsstelle in OB 1 zurück. Was ist im Akku enthalten?
Logishcerweise wäre es wieder die werte die vor der Unterbrechung drin waren oder irre ich mich da?

Adressregister werden bearbeitet und verlieren die gültigkeit nehme ich an da es in OB 40 Multiinstanzen hat.

Grüsse

Thomas
 
Die Akkuregister werden gesichert und nach Ende des unterbrechenden OB wieder hergestellt. Der unterbrochene Baustein merkt normalerweise nichts von der Unterbrechung, es sei denn der unterbrechende Baustein verändert Variablen, welche vom unterbrochenen Baustein mehrfach abgefragt werden.

Adressregister werden bearbeitet und verlieren die gültigkeit nehme ich an da es in OB 40 Multiinstanzen hat.
Das verstehe ich allerdings nicht. Nur FB können Multiinstanzen haben.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke er meint wenn man in einem höherpriorisierten OB auch FBs mit Instanzdbs und darin deklarierten Multiinstanzen aufruft.

Und es wird alles gesichert beim unterbruch durch einen höherpriorisierten OB ausser natürlich die AR welche aber korrekterweise vom Entwickler gesichert werden müssen in AR verändernden FB/FCs

mfg René
 
Die Akkuregister werden gesichert und nach Ende des unterbrechenden OB wieder hergestellt. Der unterbrochene Baustein merkt normalerweise nichts von der Unterbrechung, es sei denn der unterbrechende Baustein verändert Variablen, welche vom unterbrochenen Baustein mehrfach abgefragt werden.


Das verstehe ich allerdings nicht. Nur FB können Multiinstanzen haben.

Harald

Ich meinte auch FBs mit Multiinstanzen
 
Es werden ALLE Register gesichert und wiederhergestellt, auch die Adressregister AR1 und AR2.
Wie werden die Adressregister 1/2 bei Unterbrechung der zyklischen Bearbeitung durch einen Alarm-OB gesichert?
Wird die Programmbearbeitung durch einen OB mit höherer Priorität unterbrochen (z.B. Unterbrechung des zyklischen OB1 durch den Weckalarm OB35), dann speichert das Betriebssystem die aktuellen Inhalte der Akkumulatoren / Adressregister sowie die Nummer / Größe der geöffneten Datenbausteine im Unterbrechungs-Stack.
Ist die Bearbeitung des neuen OB beendet, lädt das Betriebssystem die Informationen aus dem Unterbrechungs-Stack und nimmt die Bearbeitung des unterbrochenen Bausteins an der Stelle erneut auf, an der die Unterbrechung auftrat.


Ich verstehe immer noch nicht die Frage im Zusammenhang mit FB-Multiinstanzen.

Der gerade laufende Baustein kann nichts dafür, daß er durch einen höherprioren Baustein unterbrochen wird, er muß für den Unterbrechungsfall keine besonderen Vorkehrungen treffen bzw. kann es auch garnicht (*). Der unterbrechende Baustein hat dafür zu sorgen, daß die Unterbrechung den unterbrochenen Baustein nicht beeinflußt. Normalerweise bekommt der unterbrochene Baustein garnicht mit, daß er unterbrochen wurde, es sei denn, es wurde extra eine interprozess-Kommunikation programmiert.

(*) Werden Variablen in verschiedenen Prioritätsebenen verarbeitet, dann dürfen die Variablen in der Regel in jeder Ebene nur ein einziges mal gelesen werden. Weil zwischen mehrfachen Lesungen ein höher priorisierter Prozess den Wert der Variablen (unerwartet) verändert haben kann.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe das Problem Gefunden.

Sie Arbeiteteten noch mit Merkerwörtern als Schmiermerker. Dies in OB1 und OB 40 Bausteinintern. So konnte es vorkommen dass wenn die Unterbrechungsstelle in OB1 genau bei der Merkerbearbeitung lag und dann ein Prozessalarm ausgelöst wurde. Die Merkerwörter neu beschrieben wurden, und bei Rückkehr in OB 1 diese falsche Werte für diesen Prozess hatten. Da sie für Pointer verwendet werden ging die Steuerung mit Bereichslängenfehler aus Stopp.

Thomas
 
Denn sie wissen nicht was sie tun... ;) Leider allzu häufig :(
Die meiste Energie wird oft in KnowHow-Protect gesteckt, um die Scheixxe zu verstecken.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Denn sie wissen nicht was sie tun... ;) Leider allzu häufig :(
Die meiste Energie wird oft in KnowHow-Protect gesteckt, um die Scheixxe zu verstecken.

Super. Und ich war immer der Meinung die AR werden nicht mitgesichert weil ich da vor einem Jahrzehnt Probleme hatte. Jetzt hab ich ein Programm auf meine Testsps geladen und hab den Fehler von damals nicht reproduzieren können. Dachte schon ich bin blöd. Hab jetzt das alte Programm ausgegraben und was soll ich sagen. Der OB36 hat in diesem Programm in den SchmierDBs (modern keine Merker mehr sondern DBs) rumgepfuscht die im OB1 Programm für Pointergeschubse verwendet wurden.

Bin ich froh bin ich nicht der Einzige der mit sowas zu kämpfen hat. :)

mfG René
 
Zurück
Oben