Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: Eine Frage zur Schrittkette in SCL

  1. #21
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von bike Beitrag anzeigen
    Innerhalb einer Schrittkette würde ich nie einen Aktor zuweisen.
    Das gehört nach außerhalb.
    Diesen Satz würde ich voll unterstützen.
    Wenn man aber in einer Schrittkette keinen Aktor zuweist, dann auch keinen Merker. Das macht es dann auch nicht besser.
    Wenn der Ausgang A10.0 von Schritt 1 oder Schritt 5 oder Schritt 7 geschaltet werden soll dann würde ich es in der Zuweisung des Ausgangs auch so umsetzen. Alles andere wäre dann inkonsequent ...

    Gruß
    Larry

  2. #22
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von schnecke Beitrag anzeigen
    Ein Problem wäre es nur, wenn man nach einer Störung im vorhergehenden Schritt weitermachen würde - aber das kann doch eigentlich nicht passieren, denn im Speicher der SPS ist doch noch Schritt 5 gespeichert, so dass nach einer Störung eigentlich wieder dorthin gesprungen wird... oder irre ich mich?
    Dass liegt Auge des Betrachters.
    Wenn z.B. ein Teil aufgepresst werden soll und dieses ist verklemmt.
    Dann Störung quittieren und Teil entnehmen.
    Dann Fehler quit und wenn erkannt wird, dass Teil nicht aufgepresst wird, geht meine Schrittekette autoamtisch zurück zu dem Schritt in dem das Teil vorbereitet wird.
    Und der Prozess wird fortgesetzt.

    So kann es geschehen, doch es ist halt die Aufgabenstellung, die die Art der Programmierung bestimmt.


    bike

  3. #23
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Diesen Satz würde ich voll unterstützen.
    Wenn man aber in einer Schrittkette keinen Aktor zuweist, dann auch keinen Merker. Das macht es dann auch nicht besser.
    Wenn der Ausgang A10.0 von Schritt 1 oder Schritt 5 oder Schritt 7 geschaltet werden soll dann würde ich es in der Zuweisung des Ausgangs auch so umsetzen. Alles andere wäre dann inkonsequent ...

    Gruß
    Larry
    Schrittketten sind eine Philosophie
    Wenn zuerst Ausgangsmerker auf null gesetzt werden, dann der Schritt angesprungen wird ist nur der aktuelle Merker 1.
    Bei einer Störung nach dem Nullsetzen wegspringen und kein Aktor ist aktiv.

    Aber jeder so wie er denkt oder will.


    bike

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    OK ... aber dann kannst du auch genausogut die Ausgänge innerhalb der CASE-Struktur schalten. Die lassen sich dann ja auch bei einem Reset gezielt rücksetzen (oder setzen).
    Der Charme, es nicht in der Struktur zu machen ist ja, das man sich um den Kram nicht kümmern muss weil es ja am Ende passiert. Vom Programmcode wir das dann natürlich "etwas" umfangreicher. Aber wie du schon schreibst :
    jeder so wie er denkt oder will.
    Gruß
    Larry

  5. #25
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Wenn man aber in einer Schrittkette keinen Aktor zuweist, dann auch keinen Merker.
    Wenn der Ausgang A10.0 von Schritt 1 oder Schritt 5 oder Schritt 7 geschaltet werden soll dann würde ich es in der Zuweisung des Ausgangs auch so umsetzen.
    Gruß
    Larry
    Ähm, sorry Larry - aber ich muss doch irgendetwas in der Schrittkette aktiv setzen, damit ich dann am Ende den Ausgang A10.0 zuweisen kann. Das verstehe ich jetzt nicht; wenn es auch keine Merker sein sollen, was denn dann?
    L.G. schnecke

  6. #26
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard

    Zitat Zitat von schnecke Beitrag anzeigen
    Aber die Variablen, bzw. Merker sind doch auch im Schritt 0 nur dann Null, wenn diese im Verlauf der nachfolgenden Schritte nach und nach rückgesetzt werden, oder nicht? Oder wird das an einer best. Stelle explizit gemacht? Was ich meine, wenn die Schrittkette z.B. 15 Schritte hat, dann sollte ja im Schritt 15 wieder alles auf Null sein, so dass dann beim Sprung in Schritt 0 die Variablen automatisch den Status Null haben - stimmt das so?
    Ja von selbst wird da nichts zurückgesetzt. Der Start-Schritt ist nur 0, damit nichts passieren kann, wenn man einer Urlöschen durchführt.
    Ob die Variablen alle wieder 0 sein müssen kann man nicht Pauschal sagen. Aktoren wird man idr. immer dann abschalten wenn es gerade notwenig ist. Variablen will ich eventuell auch über mehere Schrittkettenabläufe behalten. z.B. wenn ich 6 Teile entnehmen muss, lasse ich die Kette 6 mal durchlaufen und inkrementiere die Teileanzahl.
    Dardurch, dass du innerhalb der Ketten mit Speichern und Rücksetzen arbeitest musst du halt auf deine Variablen aufpassen. Springe ich aus der Kette muss ich natürlich derbe aufpassen das ich auch wirklich alle wichtigen Variablen zurücksetze.

    Alternativ dazu das System von Larry, wo der Aktor eine bedingte Zuweisung abhängig vom Wert der "Schritt" Variable hat.
    Also
    Code:
    IF Schritt = 1 OR Schritt = 2 THEN
    Antrieb := true;
    ELSE
    Antrieb := false;
    END_IF;
    
    (Soetwas sollte man auch in AWL/FUP/KOP machen)
    Hier musst du nicht aufpassen ob alles "zurückgesetzt" worden ist. Jedoch ist man mit diesem System eingeschränkt und hat viel Ärger wenn man "mal einen Schritt einfügen" muss.

  7. #27
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Deltal Beitrag anzeigen
    Hier musst du nicht aufpassen ob alles "zurückgesetzt" worden ist. Jedoch ist man mit diesem System eingeschränkt und hat viel Ärger wenn man "mal einen Schritt einfügen" muss.
    Das ist aber ein Mangel beim Siemens SCL. In anderen besser ausgestatteten Programmiersprachen nimmt man für die Schrittzustände eine Enumeration. Wenn ich dann meine Schrittkette erweitern will füge ich dort einfach einen Schritt ein. Außerdem kann ich diese Enumeration in der Schrittkette und in der Zuweisung je nach Schritt verwenden. Bei Codesys bekomme ich im Online-Zustand beim Beobachten sogar den Namen des Enumerationswertes angezeigt, und nicht nur eine nichtssagende Nummer.

    Beispiel Codesys ST:
    Code:
    TYPE eSCHRITTKETTE1 :
    (
    	INIT := 0,
    	AUSFAHREN,
    	EINFAHREN,
    	ENDE
    );
    END_TYPE
    
    
    VAR
    	STEP : eSCHRITTKETTE1;
    END_VAR
    
    CASE STEP OF
    	INIT:
    		IF (BEDINGUNG1) THEN
    			STEP := AUSFAHREN;
    		END_IF
    	AUSFAHREN:
    		IF (BEDINGUNG2) THEN
    			STEP := EINFAHREN;
    		END_IF
    	EINFAHREN:
    		IF (BEDINGUNG3) THEN
    			STEP := ENDE;
    		END_IF
    	ENDE:
    		IF (BEDINGUNG4) THEN
    			STEP := INIT;
    		END_IF
    END_CASE
    Bei SCL könnte man das Problem eigentlich halbwegs über Konstanten umschiffen. Leider kennt SCL keine global gültigen Konstanten oder Dateien die man einbinden könnte. Somit muss man bei Erweiterung der Schrittkette die Konstanten per Copy/Paste in alle anderen Programmteile einkopieren.
    SCL hat so viele Beschränkungen dass es kein richtigen Spaß macht. Wobei es wirklich nur Kleinigkeiten sind die fehlen, die einen aber schon enorm weiterbringen würden.

  8. Folgende 2 Benutzer sagen Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Deltal (03.03.2012),neon (02.04.2015)

  9. #28
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Dank' euch für die super Unterstützung!


    Eine Frage ist bei der Umsetzung noch aufgetaucht:

    Worin besteht eigentlich der Unterschied, ob ich nun Variante a) oder Variante b) programmiere? In beiden Fällen müssen ja E0.0 UND M10.0 TRUE sein!

    a)
    Code:
                  IF E0.0 THEN
                    IF M10.0 THEN
                      A0.0 := 1;
                    END_IF;
                  END_IF;
    b)
    Code:
                  IF E0.0 AND M10.0 THEN
                    A0.0 := 1;
                  END_IF;
    L.G. schnecke

  10. #29
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard

    Beide Varianten haben die selbe Funktion. Variante b erzeugt jedoch 4Byte weniger Programmcode.

  11. #30
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Lieben Dank Deltal,

    wobei evtl. die Absicht hinter der Programmierung anders sein könnte, oder?

    In Variante a) wird die "Merkerzeile" ja nur dann ausgeführt, wenn der Eingang 0.0 TRUE ist. Bei FALSE wird die Zeile mit dem Merker ja gar nicht beachtet...

    Ich suche einfach nur den Grund, warum ein ehem. Kollege in seinem Programm ausschließlich die Variante a) und nicht b) verwendet haben könnte?
    L.G. schnecke

Ähnliche Themen

  1. Frage: benötige für eine LOGO eine Steuerung
    Von movie im Forum Sonstige Steuerungen
    Antworten: 14
    Letzter Beitrag: 15.08.2011, 14:16
  2. Noch einmal eine Frage zur Querverweisliste
    Von bullimen im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 12.11.2010, 22:47
  3. Eine Frage zu Variablen in SCL
    Von petzi im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 24.09.2010, 10:19
  4. Eine Frage zur Hard- u. Software
    Von pinolino im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 28.11.2007, 00:57
  5. Wieder eine Frage zur Siwarex-U.
    Von Tigerkroete im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 02.08.2006, 12:22

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •