Schrittketten mit case

Man könnte das auch sehr gut mit CASE machen. Man muss dazu eine Hauptschrittkette haben und dann einen Schritt in dem die Parallelschritten sind. Diese Parallelablaufenden Schritte werden in zwei weitere Schrittketten (mit eigenen Schrittenumerationen) ausgeführt. Sobald man dann wieder zum Hauptzweig kommen soll, springt man in diesem Weiter.

Bsp:

Code:
case iHauptschrittkette of
  Hauptschrittkette_Schritt1: //Irgendwelche aktionen
    iHauptschrittkette := Hauptschrittkette_ParallelSchritt;

  Hauptschrittkette_Schritt2: // Parallele Schrittketten sind hier enthalten
     case iParallelSchrittkette1 of
        ParallelSchrittkette1_Schritt1: 
            //Irgendwelche Aktionen
            iParallelSchrittkette1 := ParallelSchrittkette1_Schritt2;

        ParallelSchrittkette1_Schritt2: 
            //Irgendwelche Aktionen
    End_Case
    
    case iParallelSchrittkette2 of
        ParallelSchrittkette2_Schritt1: 
             //Irgendwelche Aktionen
            iParallelSchrittkette1 := ParallelSchrittkette2_Schritt2;

        ParallelSchrittkette2_Schritt2: 
            //Irgendwelche Aktionen
    End_Case
    
    if iParallelSchrittkette1 = ParallelSchrittkette1_Schritt2
        And iParallelSchrittkette2 = ParallelSchrittkette1_Schritt2 then
        iHauptschrittkette := Hauptschrittkette_Schritt2;
    END_IF
  
  Hauptschrittkette_Schritt3: 
    //Irgendwelche aktionen
    iHauptschrittkette := Hauptschrittkette_ParallelSchritt;

END_CASE

Natürlich könnte man die beiden Parallelschrittketten in Funktionen auslagern der Übersichtlichkeit halber und nur den Funktionsaufruf in dem Schritt "Hauptschrittkette_Schritt2" aufrufen.

Ist schnell heruntergeschrieben ohne gewährleistung der Funktion ;).

Gruß Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich schliesse mich Larry Laffer an. Für jeden Ablauf ein eigenes CASE-Konstrukt. Starten von Ablauf 2 mit einem Schritt aus Ablauf 1, dann in Ablauf 1 auf Ende von Ablauf 2 warten. Am besten mit einem eigenen Warteschritt in Ablauf 1, der nicht zusätzlich auch ein Weiterschaltereignis des eigenen Ablaufs erfasst. Dann kriegt man parallele Abläufe auch mit CASE sauber hin.
 
Hallo,

grundsätzlich kann dir keiner eine Antwort darauf geben ob du AS oder CASE nehmen sollst das entscheidet immer der Programmierer und der entscheidet was er am besten kann oder was im Pflichtenheft steht.

Grundsätzlich wird eine Case Schrittkette immer mit Enumerationen sinnvoller weise gemacht. Frag mal einen Informatiker zum Thema Magic Numbers.

Denn grundsätzlich steht bei größeren Projekten in deiner Shrittkette nicht nur 5 schritte sondern schnell mal ein paar mehr und da wäre es sinnvoll zu wissen wie der Schritt heißt was da passiert damit du auch nach einer Woche, Monat oder Jahr direkt weißt was da passiert bzw. nicht passiert.

Und jetzt komm mir nicht mit die Nummer finde ich schneller oder so nem driss.

Ausserdem Wartest du an bestimmten stellen in der schrittkette eh auf Signalen (Sensoren) aus dem Feld oder auf Rückmeldungen vom Aktor das etwas in Position ist.

Jedoch kanns du das auch machen wie du willst. DU entscheidest in der Regel und es kommt ganz darauf an was du programmieren willst.
 
Zurück
Oben