Schrittketten in SCL

Jitter

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

wie sieht eigentlich eine Schrittkette in SCL aus? Was sind pro / con´s?
Ich kenne Schrittketten mit Sprungleiste in AWL oder die variante die ich ich gerade in meiner Firma verwende mit SR (was mir gar nicht gefällt!)

Welche Möglichkeiten gibt es noch eine anschaulich und strukturierte Art Schrittketten zu programmieren??

THX
 
Hallo,
du könntest z.B. mit IF - ELS_IF arbeiten.
Oder mein Favourit SELECT.
Vielleicht schaust du dir zu beiden mal die SCL-Hilfe an und versuchst mal etwas damit umzusetzen ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schrittkette = S7-Graph
Übersichtlicher geht es kaum mehr

Wenn es denn SCL sein soll, dann ist - wie auch Larry schreibt - Select eine brauchbare Wahl.
Diese Variante ist auch vergleichbar zu AWL Sprungleiste.

Gruß
Dieter
 
Eigentlich hat eine Schrittkette in SCL, ST oder AWL im Betrieb mehr Nach- wie Vorteile meiner Meinung nach! Für mich ist SCL immer noch eine der liebsten Arten des Programm-Erstellens. Aber allein die Übersicht betreffend Fehlersuche oder fehlender Bedingung im Ablauf ist...naja :D




Optisch:

If X & Y & not Merker2 then
Merker := True;
End_If;

If A & B & not Merker3 then
Merker2 := True;
End_If;
...

z.B.

Wenn ich mir jetzt vorstelle, dass du mehrere Bedingungen (7...8...oder mehr) pro Schritt hast und einige Schritte...:shock::shock::shock:
Dann lieber Graph (zur Not KOP oder FUP mit SR-Gliedern)!

MfG Micha
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also meine Schrittketten in ST/SCL mach ich immer mit der CASE-Anweisung:
Code:
CASE mi_Step OF   
    0:    (* Init *)
        ob_Busy := FALSE;
        mi_Step := 10;


    10:    (* wait for execution command *)
        IF ib_Start THEN
        ob_Busy := TRUE;
        mi_Step := 1000;
...


END_CASE;
 
Jupp, CASE ist auch bei mir das Mittel der Wahl wenn ich Schrittketten in ST erstelle. Bei Steuerungen die Enumeratoren erlauben kann man so auch gleich die Schritte benennen.
 
Hier eine sehr übersichtliche Methode:

Code:
#Timer1(IN:=#SM[1],PT:=T#10s);

IF #SM[1] THEN
  IF #Start THEN
  #SM[1]:=0;
  #SM[2]:=1;
  ELSIF #Fehler THEN
  #SM[1]:=0;
  #SM[20]:=1;
  END_IF;
END_IF;

#Timer2(IN:=#SM[2],PT:=T#10s);

IF #SM[2] THEN
  IF #Timer2.Q THEN
    #SM[2]:=0;
    #SM[3]:=1;
  ELSIF #Fehler THEN
    #SM[2]:=0;
    #SM[20]:=1;
  END_IF;
END_IF;

#Timer3(IN:=#SM[3],PT:=T#3s);

IF #SM[3] THEN
  IF #Behaelterdruck <= 2.0 and #Timer3.Q THEN
    #SM[3]:=0;
    #SM[4]:=1;
  ELSIF NOT #Start OR #Fehler THEN
    #SM[3]:=0;
    #SM[20]:=1;
  END_IF;
END_IF;

Timer1, Timer2 und Timer3 sind vom Typ TON_TIME oder TON bei alten 300er CPU's
schrittmerker sm[x] ist ein array von typ BOOL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schrittmerker sind in FUP noch gut und schön, weil es da anders nur schlecht geht. Aber wenn man schon SCL verwendet sollte man die dort gebotenen Steuerstrukturen verwenden. Und Schrittzähler haben nun mal den Vorteil, das sie immer nur einen einzigen Wert haben können.
 
Hier eine sehr übersichtliche Methode.
Die Übersichtlichkeit lasse ich jetzt mal dahingestellt. Aber wenn man nicht aufpasst ist es durchaus möglich, dass man in zwei Schritten gleichzeitig steckt (z.B. wenn man vergisst irgendwo einen Schritt zurückzusetzen, oder wenn man die Schrittkette zurücksetzt). Das kann bei einem INT als "Schrittmerker" nicht passieren.

Der Vorteil an deiner Lösung ist, dass man den direkt in KOP/FUP adaptieren kann.

Edit: Mist, da war wohl jemand schneller :D
 
Zuletzt bearbeitet:
Natürlich darf man nichts vergessen (Schritte zurücksetzen)!! Manchmal ist es sogar erforderlich, dass zwei oder mehrere Schritte aktiv sind (z. B. bei Parallelverzweigung).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Manchmal ist es sogar erforderlich, dass zwei oder mehrere Schritte aktiv sind (z. B. bei Parallelverzweigung).

Okay, da kommen wir jetzt zu Programmierphlisophieen. Ich persönlich finde das richtig ekelhaft, weil man sich dadurch beim Debuggen unter Umständen einen Wolf suchen kann. Da könnte ich dem Programmierer ins Gesicht springen.
Prarallelverzweigungen halte ich nur für sinnvoll, wenn man in einer Ablaufsprache (AS/Graph) arbeitet. Da sieht man es dann auch auf den ersten Blick.

Bitte nicht persönlich nehmen: Das ist nur meine eigene Meinung!
 
Zurück
Oben