Schrittkette mit Unterketten realisiern

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Moin,
Folgendes Problem aus der Schrittkettenprogrammierung:
Habe Prozestechnisch mehrere Ereignise die teilweise hintereinander aber auch parallel ablaufen.
Diese Ereignise sind einzelne Schrittketten !

jede dieser einzelnen Ketten läuft ab und steht wieder in der Grundposition.

Mein Problem ist das Zusammenfassen dieser einzelnen Ketten zu einer Gesamtkette.
Der Gedanke ist eine Oberkette zu erzeugen mit Schrittmerkern die Stellvertretend für eine einzelne Kette stehen.

Beim Ablauf würde der erste Merker der Oberkette gesetzt und dadurch die interne Kette ablaufen.
Nachdem die erste interne Kette abgearbeitet worden ist wird der nächste
Merker der Oberkette gesetzt und somit wieder die interne verarbeitet werden u.s.w.
Das Problem ist das Weiterschalten der Oberkette, weil jede interne Kette wieder zum Nullschritt springt.
Wenn ich u.a. Parallelschritte der Oberkette habe, die allle abgelaufen werden und sich wieder zu einem Schritt vereinigen, so muß ich irgendwie alle Parallelschritte abfragen ob sie durchlaufen worden sind um den nächste Schritt zu setzen.
Ein Gedanke war u.a. die Interne Kette nicht wieder zum Nullschritt setzen sondern im letzten Schritt zu warten und so die einzelabfragen zu bündeln

Wer hat schon ähnliche Probleme gehabt und kann Tipps geben.
 
Zuletzt bearbeitet:
Wer hat schon ähnliche Probleme gehabt und kann tipps geben.
Im vorletzten bzw. letzten Schritt der Unterschrittkette einen
Synchronisierungsschritt vorsehen.

Der Vorletzte Schritt setzt die Hauptkette einen Schritt weiter.
Dieser Schritt wiederum ist die Bedingung für das Springen des
Schrittes der Unterkette auf NULL.
Ist dann sozusagen der Zustand der Unterkette <> Letzter Schritt,
dann geht es für die Hauptkette weiter.

Fazit: für jede Schrittsynchronisation zwischen zwei Schrittketten
benötigt man für ein vollständigen Handshake in beiden Ketten
jeweils idealerweise zwei Schritte.

Das ist die sicherste Methode, die ich typischerweise verwende.

Frank
 
Also ich verwende für sowas immer 2 merker.
Einmal "Hauptkette" --> "Unterkette" : Freigabe_starte_Schrittkette.
Der Merker wird von der Hauptkette gesetzt und muss von der Unterkette zurückgesetzt werden, sobald die Kette läuft.
Einmal "Unterkette" --> "Hauptkette": Schrittkette_ist_aktiv.
Der Merker wird von der Unterkette statisch gesetzt sobald die Schrittkette nicht im "Nullschritt" steht.
Diesen Handshake richtig an den gewissen Stellen abgefragt und funktioniert.

mfg,
Flo
 
Zurück
Oben