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

Ergebnis 1 bis 6 von 6

Thema: Step7 S7-300 Lauflicht per Schiebefunktion mit SLW und SRL erstellen.

  1. #1
    Registriert seit
    21.04.2016
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS Forumsteilnehmer,
    heute hier mein erster Beitrag , genauer gesagt meine erste Frage. Ich sitz hier grad im Aufbaukurs und versuche ein Lauflicht zu erstellen. Die Version des Linksschiebens funktioniert einwandfrei. Nun wollte ich das Lauflicht rückwärts laufen lassen, welches aber nicht so recht funktioniert. Im Anhang die "gute links Version" und die "nicht funktionierende rechts Version". Hat vielleicht jemand einen Denkanstoß für meinen Fehler?
    Danke und Gruss
    Ulli
    Angehängte Dateien Angehängte Dateien
    Geändert von UlliB (21.04.2016 um 14:55 Uhr)
    Zitieren Zitieren Gelöst: Step7 S7-300 Lauflicht per Schiebefunktion mit SLW und SRW erstellen.  

  2. "Siehste, war ja nur eine Kleinigkeit zu ändern.
    Nun noch das Knight Rider Lauflicht mit Richtungswechsel (also hin-und-her laufen) - habt Ihr das auch schon hingekriegt?
    (Weiters ist bei Knight Rider noch eine Nachleuchtschleppe, d.h. auf der SPS sollten 2 LED wandern, noch besser 1-2-1-2-1... LEDs)

    Das Ganze möglichst mit nur einer einzigen Ausgangszuweisung. Mehrfache Zuweisungen an Ausgänge an verschiedenen Programmstellen sind unschön (weil verwirrend und sehr schlecht beobachtbar).


    Etwas universeller kann man so ein Lauflicht gestalten, wenn man in jedem Takt wahlfrei ein LED-Muster an die Ausgänge zuweist, statt es aus dem vorherigen Muster zu berechnen (wie bei SLW/SRW). Z.B. ein Richtungswechsel ist mit SLW/SRW relativ umständlich zu programmieren, mit Zuweisung von vorberechneten Mustern ist es kinderleicht, auch Kreuzungseffekte kann man leicht erzeugen:
    Code:
    //Takt
          U     M 100.3                     // Taktmerker
          FP    M 1.0
          =     M 1.1
    
    //repetierender Zähler 0..14..0..14..
          U     M 1.1
          ZV    Z 1
          U(
          L     Z 1
          L     14
          >I
          )
          R     Z 1
    
    //Umcodierung Zählerstand --> LED-Muster
          L     Z 1                         // 0..14
          SPL   m00                         // >14
          SPA   m00                         // 0
          SPA   m01                         // 1
          SPA   m02                         // 2
          SPA   m03                         // 3
          SPA   m04                         // 4
          SPA   m05                         // 5
          SPA   m06                         // 6
          SPA   m07                         // 7
          SPA   m07                         // 8
          SPA   m06                         // 9
          SPA   m05                         // 10
          SPA   m04                         // 11
          SPA   m03                         // 12
          SPA   m02                         // 13
          SPA   m01                         // 14
    
    m00:  L     W#16#180                    // 0
          SPA   mOut
    m01:  L     W#16#240                    // 1 14
          SPA   mOut
    m02:  L     W#16#420                    // 2 13
          SPA   mOut
    m03:  L     W#16#810                    // 3 12
          SPA   mOut
    m04:  L     W#16#1008                   // 4 11
          SPA   mOut
    m05:  L     W#16#2004                   // 5 10
          SPA   mOut
    m06:  L     W#16#4002                   // 6 9
          SPA   mOut
    m07:  L     W#16#8001                   // 7 8
    //      SPA   mOut
    
    //Ausgabe
    mOut: T     AW 0
    Ein schönes Muster ergibt auch diese Wertefolge: W#16#.. FFFF FE7F FC3F F81F F00F E007 C003 8001

    Noch mehr Möglichkeiten ergeben sich, wenn man nicht so einen Abkürzungs-Trick macht wie ich und die Muster 8..14 einfach als rückwärts-Wiederholung der Muster 1..7 ausgibt.

    Ändere doch mal meinen Programmcode so, daß Du diese Wertefolge ausgeben kannst (Tip: m08: ... m14: hinzufügen):
    W#16#.. 0180 03C0 07E0 0FF0 1FF8 3FFC 7FFE FFFF FE7F FC3F F81F F00F E007 C003 8001


    Zum Ändern der Musterfolge mußte jetzt immer das Programm umprogrammiert werden. Noch eine Stufe universeller wird so eine Mustererzeugung, wenn man die Wertefolgen in einer Tabelle in einem Datenbaustein ablegt und indirekt adressiert über den Taktzähler-Wert ausliest. Dann kann man Musterfolgen in den Datenbaustein "nachladen" ohne das Programm zu ändern (dann kann man sogar die Anzahl Schritte der Musterfolgen leicht variabel machen) Wie das indirekte Adressieren geht, lernt Ihr vermutlich noch. Und wenn man schon die Muster in einer Tabelle hinterlegt, dann kann man auch gleich die Taktzeiten dazu hinterlegen und kann solche Werke erzeugen:
    Siemens PLC - Sunchyme by Dario G
    Siemens PLC - La Cucaracha Two!
    Siemens PLC - La Cucaracha

    Schönes Wochenende.

    Harald"


  3. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Lauflicht_schieben_links.txt
    Code:
          U     M    100.3  \\Takt
          FP    "M0.0"      \\ Flankenmerker
          =     "M0.1"
          U     "M0.1"
          SPBN  ende
    
          L     0
          L     "AB0"       \\Ausgabebyte 0
          ==I               \\vergleichen
          SPBN  _001
    
          L     1
          T     "AB0"
          SPA   ende
    
    _001: L     "AB0"
          SLW   1           \\schieben nach Links
          T     "AB0"
          
          L     "AB0"
          L     0
          ==I               \\vergleichen
          SPBN  ende
    Lauflicht_schieben_rechts.txt
    Code:
          U     M    100.3  \\takt
          FP    "M0.0"
          =     "M0.1"      \\Flankenmerker
          U     "M0.1"
          SPBN  ende
    
          L     128         \\A0.7   <--- 128 ist falsch, hier mußt Du ebenfalls auf 0 prüfen
          L     "AB0"       \\Ausgangsbyte0
          ==I   
          SPBN  _001
    
          L     128
          T     "AB0"
          SPA   ende
    
    _001: L     "AB0"
          SRW   1            \\schieben rechts (aufwärts)
          T     "AB1"
    
          L     "AB0"
          L     128
          ==I   
          SPBN  ende
    
          L     1
          T     "AB0"
    Der blau markierte Code am Ende ist jeweils überflüssig oder sollte anders gelöst werden, z.B.: Soll/darf zwischendurch auch einen Takt lang alle Ausgänge = AUS sein?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #3
    UlliB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.04.2016
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,
    momentan handelt es sich um eine Fleissaufgabe. Gefordert war nur das Lauflicht per SLW Befehl. Dieses läuft wie im Lauflicht_schieben_links.txt wunderbar wiederholend, durchgehend von A0.0 nach A0.7 . Nun war die fixe Idee einen zweiten FC anzulegen der die gleiche Funktion beinhaltet aber wiederholend, durchgehend von A0.7 nach A0.0 entgegengesetzt läuft. Am Ende war dann die Idee diese Beiden im OB zu vereinen und als ein hin und her laufendes Lauflicht zu erstellen. So wie es am Auto vom Knight Rider vorn zu sehen ist.
    Aber Harald, halt mal die Füße still wir fummeln grad noch an einer anderen Idee. Ansonsten schon mal Danke für den Ansatz.
    Gruss Ulli
    Geändert von UlliB (22.04.2016 um 11:45 Uhr)

  5. #4
    UlliB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.04.2016
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nachdem ich noch einige Zeit gekämpft hab, hier nun auch noch die funktionierende Version des Lauflichtes per SRW.
    Gruß
    Ulli
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Lauflicht per Schiebefunktion SRW  

  6. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Siehste, war ja nur eine Kleinigkeit zu ändern.
    Nun noch das Knight Rider Lauflicht mit Richtungswechsel (also hin-und-her laufen) - habt Ihr das auch schon hingekriegt?
    (Weiters ist bei Knight Rider noch eine Nachleuchtschleppe, d.h. auf der SPS sollten 2 LED wandern, noch besser 1-2-1-2-1... LEDs)

    Das Ganze möglichst mit nur einer einzigen Ausgangszuweisung. Mehrfache Zuweisungen an Ausgänge an verschiedenen Programmstellen sind unschön (weil verwirrend und sehr schlecht beobachtbar).


    Etwas universeller kann man so ein Lauflicht gestalten, wenn man in jedem Takt wahlfrei ein LED-Muster an die Ausgänge zuweist, statt es aus dem vorherigen Muster zu berechnen (wie bei SLW/SRW). Z.B. ein Richtungswechsel ist mit SLW/SRW relativ umständlich zu programmieren, mit Zuweisung von vorberechneten Mustern ist es kinderleicht, auch Kreuzungseffekte kann man leicht erzeugen:
    Code:
    //Takt
          U     M 100.3                     // Taktmerker
          FP    M 1.0
          =     M 1.1
    
    //repetierender Zähler 0..14..0..14..
          U     M 1.1
          ZV    Z 1
          U(
          L     Z 1
          L     14
          >I
          )
          R     Z 1
    
    //Umcodierung Zählerstand --> LED-Muster
          L     Z 1                         // 0..14
          SPL   m00                         // >14
          SPA   m00                         // 0
          SPA   m01                         // 1
          SPA   m02                         // 2
          SPA   m03                         // 3
          SPA   m04                         // 4
          SPA   m05                         // 5
          SPA   m06                         // 6
          SPA   m07                         // 7
          SPA   m07                         // 8
          SPA   m06                         // 9
          SPA   m05                         // 10
          SPA   m04                         // 11
          SPA   m03                         // 12
          SPA   m02                         // 13
          SPA   m01                         // 14
    
    m00:  L     W#16#180                    // 0
          SPA   mOut
    m01:  L     W#16#240                    // 1 14
          SPA   mOut
    m02:  L     W#16#420                    // 2 13
          SPA   mOut
    m03:  L     W#16#810                    // 3 12
          SPA   mOut
    m04:  L     W#16#1008                   // 4 11
          SPA   mOut
    m05:  L     W#16#2004                   // 5 10
          SPA   mOut
    m06:  L     W#16#4002                   // 6 9
          SPA   mOut
    m07:  L     W#16#8001                   // 7 8
    //      SPA   mOut
    
    //Ausgabe
    mOut: T     AW 0
    Ein schönes Muster ergibt auch diese Wertefolge: W#16#.. FFFF FE7F FC3F F81F F00F E007 C003 8001

    Noch mehr Möglichkeiten ergeben sich, wenn man nicht so einen Abkürzungs-Trick macht wie ich und die Muster 8..14 einfach als rückwärts-Wiederholung der Muster 1..7 ausgibt.

    Ändere doch mal meinen Programmcode so, daß Du diese Wertefolge ausgeben kannst (Tip: m08: ... m14: hinzufügen):
    W#16#.. 0180 03C0 07E0 0FF0 1FF8 3FFC 7FFE FFFF FE7F FC3F F81F F00F E007 C003 8001


    Zum Ändern der Musterfolge mußte jetzt immer das Programm umprogrammiert werden. Noch eine Stufe universeller wird so eine Mustererzeugung, wenn man die Wertefolgen in einer Tabelle in einem Datenbaustein ablegt und indirekt adressiert über den Taktzähler-Wert ausliest. Dann kann man Musterfolgen in den Datenbaustein "nachladen" ohne das Programm zu ändern (dann kann man sogar die Anzahl Schritte der Musterfolgen leicht variabel machen) Wie das indirekte Adressieren geht, lernt Ihr vermutlich noch. Und wenn man schon die Muster in einer Tabelle hinterlegt, dann kann man auch gleich die Taktzeiten dazu hinterlegen und kann solche Werke erzeugen:
    Siemens PLC - Sunchyme by Dario G
    Siemens PLC - La Cucaracha Two!
    Siemens PLC - La Cucaracha

    Schönes Wochenende.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #6
    UlliB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.04.2016
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Harald,
    mein Lauflicht lief mehr schlecht als recht ... Ich hab's über den OB1 gesteuert und meine beiden FCs sozusagen nacheinander ablaufen lassen gestützt durch einen parallel laufenden Zähler. Nicht schön aber schon mal die richtige Richtung.
    Hab mal Deine beiden Vorschläge übernommen und ausprobiert (Dank Deiner Steilvorlage) ... schön schön.
    Lauflicht.txt
    Datenbausteine und deren Anwendung kommt erst noch. Dann werd ich dass Lauflicht wieder aufgreifen.
    Danke.
    Gruss Ulli

Ähnliche Themen

  1. Ablaufkette und Schiebefunktion
    Von evolem im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 24.02.2014, 08:08
  2. Lauflicht für 32 LED´s erstellen - brauche Hilfe
    Von LeTobi im Forum CODESYS und IEC61131
    Antworten: 15
    Letzter Beitrag: 02.12.2013, 17:26
  3. Antworten: 8
    Letzter Beitrag: 19.09.2013, 17:51
  4. Step 7 TAW, Schiebefunktion und Bit-Wertigkeiten
    Von winRARE im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 04.07.2013, 14:52
  5. Problem mit SLW Step5
    Von Jupp06 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.11.2009, 07:45

Lesezeichen

Berechtigungen

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