Schritt für Schritt Abfrage

SORB

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich suche rat zu einem Schritt für Schritt Ablauf.
Programmiert wird mit Codesys

Die Idee ist, ein "dummer" Ablauf, am liebsten in AS.


Die Funktionsblöcke setzen mittels einer ST Merker, welche in einer KOP programmierung verwendet werden, um Ausgänge anzusteuern.

(* X1*)
IF LIFT.SFCCurrentStep='Step1' THEN
X1:=TRUE;
ELSE
X1:=FALSE;
END_IF;

Das alles soll der Übersichtlichkeit dienen.

Meine Frage ist nun, ob jemand zb eine Eingangs-/Ausgangsfunktion, welche den Sprung zum nächsten Step erlaubt?
Oder eine noch simplere Lösung?

Danke und Grüsse
 
Hallo,
da gibt es mehrere Möglichkeiten (wie immer).

Auf Basis von IF..THEN z.B. :
Code:
IF Schritt_1 and eine_Weiterschaltbedingung then
   Schritt_1 := false ;
   Schritt_2 := true ;
   etwas_machen := 1213 ;
ELSIF Schritt_2 and andere_Weiterschaltbedingung then
   Schritt_2:= false ;
   Schritt_3 := true ;
   etwas_machen := 4711 ;
ELSIF Schritt_3 and weitere_Weiterschaltbedingung then
   Schritt_3:= false ;
   Schritt_1 := true ;
   etwas_machen := 0815 ;
END_IF ;
sehr schön geht das aber auch mit einer Zählvariablen für die Schrittkette und in der Umsetzung dann mit einem CASE-Kontrukt ... aber du wolltest ja etwas auf Merker-Basis ...;)

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder mit CASE-Anweisung
Code:
CASE iSchritt OF
1: IF bWeiterschaltbedingung1 THEN
        ...
        iSchritt := 2;
    END_IF
2: IF bWeiterschaltbedingung2 THEN
        ....
        iSchritt := ....;
    END_IF
...
END_CASE
 
Hallo

Danke für die schnelle Antwort..
Nur leider bringt mich das nicht weiter.
Denn der Schritt soll gewechselt werden, wenn dieser beendet ist, OHNE eine weitere variabel.
habe etwas in dierser art bis vor kurzem hald nie gebraucht, dachte mir aber immer das dies einfach sein muss.. wohl geirrt:)

grüsse
 
ich weiß nicht ob ich dein problem so ganz verstanden habe. die problembeschreibung ist irgendwie etwas "zerhackt" ;)

Code:
IF LIFT.SFCCurrentStep='1' THEN
X1:=TRUE;
Step:=1
 IF "das was passieren sollte" THEN
      Step:=2;
   END_IF;
ELSE
X1:=FALSE;
Step:=3
 IF "das was passieren sollte" THEN
      Step:=4;
   END_IF;
END_IF;

so hast du in deinem Step immer stehen wo du dich gerade befindest und kannst diesen als weiterschaltbedingung nehmen.

beschreibe doch bitte mal genauer was du meinst
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... aber du wolltest ja etwas auf Merker-Basis ...

Ich denke er will die Schrittkette in AS Programmieren und weder zu einer Merkerschrittkette noch zu einer Case greifen.

Aber wo das Problem denn nun ich habe ich echt nicht verstanden. Also lieber Fragesteller bitte erklär nochmal was Du machen willst.

---
Ich bin mir gerade echt nicht sicher ob das zu der Frage Passt aber ich hab ja auch nicht den Eindruck Dich verstanden zu haben.

1) Du könntest Ja einfach IEC Schritte verwenden und anstatt Deiner ST Anweisung einfach eine Boolvariable Nichtspeichernd beschalten.

2) Anstelle von:
IF LIFT.SFCCurrentStep='Step1' THEN
X1:=TRUE;
ELSE
X1:=FALSE;
END_IF;
würde ja auch
Code:
X1:=  LIFT.SFCCurrentStep = 'Step1';
funktionieren.
 
halliii hallooo liebe mitschwitzer..

naja,hab das problem jetzt gelöst..leidernicht so wie ich es vorhatte..
auf jedenfall gibts jetzt ne schrittkette und die bedingung für das weiterlaufen, ist in einer KOP drin, also ein NEXTSTEP_?? BOOL wird gebraucht..
und definiert ist immernoch in AS wie schon gehabt..

Grüsse
 
... ich bin aus deinen Angaben jetzt auch nicht viel schlauer geworden - ich reihe mich da also bei Zotos mit ein.
Auf jeden Fall braucht eine Schrittkette IMMER eine Weiterschalt-Bedingung - sonst ist es nämlich eher eine Durchlauf-Kette. Die Weiterschaltbedingung wäre dann erfüllt, wenn dein Schritt (wie auch immer) abgearbeitet ist - also z.B. ein Endschalter angefahren wurde.

Gruß
LL
 
Zurück
Oben