-> Hier kostenlos registrieren
Nabend,
derzeit spiele ich mit dem Gedanken, mit einigen Funktionen in den in den Hintergrund-OB zu wechseln.
Derzeit setzen wir den OB90 nicht ein und haben auch meistenes keine Mindestzykluszeit gesetzt.
1. Abarbeitungsreiehenfolge
Soweit ich weiß läuft der normale Zyklus schon seit etlichen Jahren wie folgt:
. . . und nicht wie früher (irgendwann vor 2000):
Wenn ich jetzt davon Ausgehe, dass die Beschreibungen zum OB90 (Siemens Systemhandbuch zur S7-400 und Bücher von Hans Berger) richtig sind heißt das, dass das Prozessabbild der Ausgänge erst am Ende der Mindestzykluszeit, bzw. nach der Bearbeitung des OB90 stattfinden würde. Das würde ich eher unschön finden...
Dem entgegen steht folgende Grafik:

Welche ich in diesem FAQ fand.
Was ist jetzt wohl richtig? Kennt sich jemand mit der Materie aus?
2. Abbruch des OB90 verhindern/hinauszögern
Einige der Funktionen die ich verlagern will, sollten bis zu einem bestimmten Punkt bearbeitet werden bevor der OB1 wieder anläuft.
Beispiel Datenbankoptimierung:
zur Optimierung unserer internen Datenbanken werden Einträge in dieser verschoben bzw. umkopiert.
Wenn ich alles richtig verstanden habe wird zumindest ein gerade laufender SCF20 nicht unterbrochen, das ist schon mal viel wert...
Allerdings sehe ich derzeit keine Möglichkeit zu verhindern, das genau zwischen dem Kopieren und "Löschen" des alten Eintrags der OB1 wieder startet. Was im Zweifel dazu führen würde, das Einträge doppelt vorhanden sind.
Die einzige Möglichkeit die mir einfällt um diesen Sonderfall nicht weiter beachten zu müssen wäre vor dem Kopieren eine Art "DB-Daten-inkonsistent" zu setzen und dieses nach dem Löschen wieder zurückzusetzen. Heißt allerdings ich kann einen OB1 Zyklus lang nicht an die DB und im Worstcaste im nächsten schon wieder nicht... usw. usf.
Hat jemand ne Lösung für diese Problematik oder wenigstens eine Idee?
Danke schon mal!
MfG Semo
PS: Werde wohl erst wieder Morgen Abend im Forum sein, also nicht wundern ^^ (Unterwegs)
derzeit spiele ich mit dem Gedanken, mit einigen Funktionen in den in den Hintergrund-OB zu wechseln.
Derzeit setzen wir den OB90 nicht ein und haben auch meistenes keine Mindestzykluszeit gesetzt.
1. Abarbeitungsreiehenfolge
Soweit ich weiß läuft der normale Zyklus schon seit etlichen Jahren wie folgt:
- Aktualisierung PAA - Aktualisierung PAE - Bearbeitung OB1
. . . und nicht wie früher (irgendwann vor 2000):
- Aktualisierung PAE - Bearbeitung OB1 - Aktualisierung PAA
Wenn ich jetzt davon Ausgehe, dass die Beschreibungen zum OB90 (Siemens Systemhandbuch zur S7-400 und Bücher von Hans Berger) richtig sind heißt das, dass das Prozessabbild der Ausgänge erst am Ende der Mindestzykluszeit, bzw. nach der Bearbeitung des OB90 stattfinden würde. Das würde ich eher unschön finden...
Dem entgegen steht folgende Grafik:

Welche ich in diesem FAQ fand.
Was ist jetzt wohl richtig? Kennt sich jemand mit der Materie aus?
2. Abbruch des OB90 verhindern/hinauszögern
Einige der Funktionen die ich verlagern will, sollten bis zu einem bestimmten Punkt bearbeitet werden bevor der OB1 wieder anläuft.
Beispiel Datenbankoptimierung:
zur Optimierung unserer internen Datenbanken werden Einträge in dieser verschoben bzw. umkopiert.
Wenn ich alles richtig verstanden habe wird zumindest ein gerade laufender SCF20 nicht unterbrochen, das ist schon mal viel wert...
Allerdings sehe ich derzeit keine Möglichkeit zu verhindern, das genau zwischen dem Kopieren und "Löschen" des alten Eintrags der OB1 wieder startet. Was im Zweifel dazu führen würde, das Einträge doppelt vorhanden sind.

Code:
OB90
...
[I]<<OB1 unterbrechung möglich aber egal>>
[/I]...
FCxyz
...
[I]<<OB1 unterbrechung möglich aber egal>>
[/I]
// Eintrag kopieren
Call sfc20
srcblk=#temp_anyQuelle
ret_val=#temp_iReturnValue
dstblk=#temp_anyZiel
[I]<<OB1 unterbrechung möglich und unerwünscht>>
[/I]
// Index Quelle löschen
L L#0
[I]<<OB1 unterbrechung möglich und unerwünscht>>
[/I] T dbd[ar1, p#0.0]
[I]<<OB1 unterbrechung möglich aber egal>>
[/I]...
Die einzige Möglichkeit die mir einfällt um diesen Sonderfall nicht weiter beachten zu müssen wäre vor dem Kopieren eine Art "DB-Daten-inkonsistent" zu setzen und dieses nach dem Löschen wieder zurückzusetzen. Heißt allerdings ich kann einen OB1 Zyklus lang nicht an die DB und im Worstcaste im nächsten schon wieder nicht... usw. usf.
Hat jemand ne Lösung für diese Problematik oder wenigstens eine Idee?
Danke schon mal!

MfG Semo
PS: Werde wohl erst wieder Morgen Abend im Forum sein, also nicht wundern ^^ (Unterwegs)