Schrittkette vs. State Machine

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ihr es besser wisst und bessere Quellen habt, dann verlinkt einfach darauf.
Ich glaube schon, dass ich eine Erklärung gebracht habe ... Manchmal (meißtens ?) hilft es aber auch einfach mal ein bißchen logisch zu überlegen ...
Welche Dinge unterliegen denn keiner Sequenz ? Im Grunde sagt der Begriff "Ablauf" doch schon alles ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaube schon, dass ich eine Erklärung gebracht habe ... Manchmal (meißtens ?) hilft es aber auch einfach mal ein bißchen logisch zu überlegen ...
Welche Dinge unterliegen denn keiner Sequenz ? Im Grunde sagt der Begriff "Ablauf" doch schon alles ...

Was ist an meinem Beispiel so schwer zu verstehen?

Schritt 1: Start
Schritt 2: Sauger Setzen (S)
Schritt 3: irgendwas anderes machen
Schritt 4: Sauger zurücksetzen (R)

Was passiert, wenn man einfach direkt nach Schritt 3 springt. Saugt der Sauger dann oder nicht?
 
Schritt 1: Start
Schritt 2: Sauger Setzen (S)
Schritt 3: irgendwas anderes machen
Schritt 4: Sauger zurücksetzen (R)

Was passiert, wenn man einfach direkt nach Schritt 3 springt. Saugt der Sauger dann oder nicht?
Wenn man von Schritt 1 nach Schritt 3 direkt springt (kann ja durchaus sinnvoll sein) dann würde der Sauger nicht saugen. Falls man aber den Sauger gerne aktiv hätte dann hat man sich da wohl etwas Falsches überlegt.
Ich weiß also nicht was du mir damit jetzt sagen möchtest - beim Erstellen eines Programms, egal welchen Weg man da beschreitet, muss man immer aufpassen, dass es auch wirklich das tut was man will das es tut ...
 
Was ist an meinem Beispiel so schwer zu verstehen?

Schritt 1: Start
Schritt 2: Sauger Setzen (S)
Schritt 3: irgendwas anderes machen
Schritt 4: Sauger zurücksetzen (R)

Was passiert, wenn man einfach direkt nach Schritt 3 springt. Saugt der Sauger dann oder nicht?
Meinst du vielleicht, dass du direkt von Schritt 2 zu Schritt 5 springen willst? Dann würde der Sauger in deinem Beispiel weitersaugen. Wenn der Programmierer die Aktoren direkt im Schrittkettenablauf Ein- und Aus-schaltet, dann muss er halt extra aufpassen, dass er die "Schaltstellen" nicht überspringt. Meist enden solche Schrittketten so, dass in bestimmten Schritten "vorsichtshalber" in einer Orgie alles mögliche nochmal ausgeschaltet wird.
Wenn man den Schrittkettenablauf und das Schalten der Aktoren sauber trennt und mit extra Oder-Verknüpfungen steuert, in welchen Schritten ein Aktor Ein sein soll, dann kann man problemlos zwischen Schritten springen und muss nicht extra auf das Ein-/Aus-schalten der Aktoren achten. Macht aber ein bisschen mehr Arbeit ...
 
Wenn man den Schrittkettenablauf und das Schalten der Aktoren sauber trennt und mit extra Oder-Verknüpfungen steuert, in welchen Schritten ein Aktor Ein sein soll, dann kann man problemlos zwischen Schritten springen und muss nicht extra auf das Ein-/Aus-schalten der Aktoren achten.
Genau so !!! (y)
Macht aber ein bisschen mehr Arbeit ...
eigentlich nicht ... der einzige negatiove Effekt, den das so vielleicht hat ist, das man weniger Probleme hat (falls das dann ein negativer Effekt ist ... )
:rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab auch schon Schrittketten gebaut, wo in den Schritten die Aktoren nicht gesetzt/rückgesetzt wird sondern direkt angesteuert werden. Also dann auch nur in dem jeweils aktiven Schritt laufen. Aber am Ende alles ne Philosophie Frage.
 
Aber am Ende alles ne Philosophie Frage.
Eben, es gibt zig Varianten Schrittketten umzusetzen. Man darf sich da nicht stur auf eine Methode versteifen.
Gerade das Sauger-Beispiel ist da brauchbar.
Hängt ein Teil am Sauger, dann ist eigentlich erstmal egal was die Schrittkette oder Betriebsarten oder NotHalt machen. Wenn ein scharfkantiges Blech man Robotergreifer angesaugt ist, dann willst du nicht, dass es durch die Halle fliegt.
SPS-Programme müssen ziel- und kundenorientiert sein. Ganz einfach.
 
In der Funktion gibt es 2 Typen: Mealy Machines and Moore Machines. Ich glaube, das ist was ihr hier als Unterschied wahrnehmt.

Wobei man diese Unterscheidung vllt. auch in den Kontext zu Enable- vs. Execute-Baustein nach plcOpen setzen könnte.

Meanly Machine => Enable-Baustein
Schrite/Zustände: Diabled=>Enabeling=>Enabled=>Disabeling=>Disabled
Im Enabeling/Disabeling werden Initialisierungen gefahren oder Verbindungen auf-/abgebaut, im Prinzip alles was vor oder nach dem Einable/Eingeschaltet-Zustand passieren muss.
Enabled enthällt an sich den eigentlichen Funktionscode des Bausteins.
Damit ist der Output nicht vollständig abhängig vom Zustandsautomaten.

Moore Machine => Execute-Baustein
"Klassische" Schrittkette.
Der aktuelle Schritt/Zustand definiert was gerade passiert.
Ob die Ausgänge im Schritt selbst angesteuert werden oder an getrennter Stelle mit Vergleicher zur aktuellen Schrittnummer ist dabei zweitrangig.

Gibt in der Siemens LGF-Bibliothek auch ein paar schöne Beispiele zur Umsetzung der plcOpen-Pilosophie in SCL.

... jetzt wäre es noch interessant zu wissen welches Resume @Tmbiz nun aus diesem Thread zieht ...
Das man fünf Leute fragt und sechs Meinungen erhält ;)
1756968598610.png
Erinnert mich an den Witz "Treffen sich zwei linke, bilden sich drei Splittergruppen" (✿◠‿◠)
 
Mein Fazit:
Je akademischer man das betrachtet, umso aufgeblasener wird das SPS-Programm, umso fehleranfälliger und weniger stabil wird der Ablauf :)
Ich hallte mich da eher an dein vorangegangenes Kommentar:
Eben, es gibt zig Varianten Schrittketten umzusetzen. Man darf sich da nicht stur auf eine Methode versteifen.
So pragmatisch wie möglich, so akademisch wie notwendig.
Und letztendlich heiligen Zweck, Wartungsfreundlichkeit und Kundenabnahme die Mittel ¯\_(ツ)_/¯
 
Zurück
Oben