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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Schieberegister in SCL

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, habe folgende Frage:

    Habe mir in SCL ein Schieberegister gebastelt und in der Symboltabelle Folgendes angelegt:

    Schieberegister / MB30

    Merker_1 / M30.0

    Merker_2 / M30.5

    Wenn Merker_1 TRUE dann wird das Bit 0 im Register gesetzt.

    Über eine LS wird das Bit nach links geschoben, bis Merker_2 aktiv ist und einen Ausgang auf TRUE schaltet.

    Soweit funktioniert alles prima!

    ABER: Ich bekomme es nicht hin, dass ich das Schieberegister und die beiden Merker in SCL als Variablen deklariere. Dann funktioniert das alles nicht mehr.


    Frage: Als welchen Typ Variable müsste ich denn das Register und die beiden Merker im FB deklarieren?
    LG
    spirit
    Zitieren Zitieren Schieberegister in SCL  

  2. #2
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    So, habe das jetzt mal in FUP versucht:

    Unbenannt.JPG

    Hier der Aufruf im OB1:

    Code:
          CALL  FB     3 , DB3
           MW_0   :=MW60
           N         :=W#16#1
           Eingang :=E0.0
           MW_1   :=MW80

    Wenn ich nun das Bit0 in MW60 auf TRUE setze, dann hätte ich erwartet, dass im MW80 mit jeder Flanke ein Bit nach links geschoben wird und entsprechend der Ausgang auf TRUE schaltet.

    Das Bit wird aber in MW80 nur einmalig nach links geschoben und dann nicht mehr ...


    Was mache ich denn hier falsch???
    LG
    spirit

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

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    ABER: Ich bekomme es nicht hin, dass ich das Schieberegister und die beiden Merker in SCL als Variablen deklariere.
    Globale Variablen werden in SCL nicht nochmal deklariert, die sind ja schon in der Symboltabelle drin.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Wenn ich nun das Bit0 in MW60 auf TRUE setze, dann hätte ich erwartet, dass im MW80 mit jeder Flanke ein Bit nach links geschoben wird und entsprechend der Ausgang auf TRUE schaltet.
    Du schiebst das MW60 und speicherst in MW80, das MW60 bleibt unverändert. Vielleicht solltest Du auf MW60 zurückspeichern?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Globale Variablen werden in SCL nicht nochmal deklariert, die sind ja schon in der Symboltabelle drin.

    Harald
    Nun gut Harald, habe davor natürlich die Symboltabelle gelöscht und wollte im FB selbst die Variablen deklarieren ... klappte aber nicht.
    LG
    spirit

  6. #6
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Du schiebst das MW60 und speicherst in MW80, das MW60 bleibt unverändert. Vielleicht solltest Du auf MW60 zurückspeichern?

    Harald
    Habe an den Ausgang auch mal (versuchsweise) das MW_0 (also MW60) angelegt. Hat aber auch nicht geklappt. Dann müsste man dieses MW_0 ja als IN_OUT deklarieren, richtig?
    LG
    spirit

  7. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Hallo, habe folgende Frage:

    Habe mir in SCL ein Schieberegister gebastelt und in der Symboltabelle Folgendes angelegt:
    Warum erstellst Du Dir denn eigentlich kein Array of Bool im STAT oder einem DB für das Schieberegister?
    SCL ist doch in Verbindung mit einem Array geradezu prädestiniert für ein Schieberegister:

    Code:
        // Boolsches Schieberegister
        IF #Schieben THEN
            
            // Register weiterschieben
            FOR Index := Schritte TO 1 BY -1 DO
                Schieberegister [Index] := Schieberegister [Index - 1];  
            END_FOR;
            
            // Eingang Schieberegister
            Schieberegister [0] := Eingang;
            
            // Ausgang Schieberegister
            IF Schieberegister [Schritte] THEN
                ...;
            END_IF;
    
        END_IF;

  8. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    spirit (24.01.2015)

  9. #8
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Warum erstellst Du Dir denn eigentlich kein Array of Bool im STAT oder einem DB für das Schieberegister?
    SCL ist doch in Verbindung mit einem Array geradezu prädestiniert für ein Schieberegister:

    Code:
        // Boolsches Schieberegister
        IF #Schieben THEN
            
            // Register weiterschieben
            FOR Index := Schritte TO 1 BY -1 DO
                Schieberegister [Index] := Schieberegister [Index - 1];  
            END_FOR;
            
            // Eingang Schieberegister
            Schieberegister [0] := Eingang;
            
            // Ausgang Schieberegister
            IF Schieberegister [Schritte] THEN
                ...;
            END_IF;
    
        END_IF;
    Lieben Dank hucki für das Beispiel!

    Nur - ist es hier nicht so, dass wenn #Schieben = TRUE das gesamte Schieberegister einmal "durchgeschoben" wird?

    Gewünscht ist ja, dass mit jedem #Schieben das Bit0 jeweils um eine Stelle nach links geschoben wird ...
    LG
    spirit

  10. #9
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Ja, aber das Ergebnis ist doch das Gleiche. X Takte später kommt das Bit vom Eingang zum Ausgang.

    Du kannst ja notfalls den Eingang sperren, solange das Bit unterwegs ist, damit nur dieses eine wandern kann und nicht mehrere gleichzeitig.

  11. #10
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hucki Beitrag anzeigen
    Ja, aber das Ergebnis ist doch das Gleiche. X Takte später kommt das Bit vom Eingang zum Ausgang.
    Im Array steht doch die Anzahl der Schritte. Hm, dann habe ich es noch nicht ganz kapiert. War der Meinung, dass wenn #Schieben = TRUE ist, das Bit0 immer 1x komplett durchgeschoben wird und der jeweilige Ausgang (z.B. A4.4) mit jedem #Schieben immer 1x TRUE wird. So ist es dann aber nicht, oder?


    Muss es morgen mal in der Praxis versuchen ...
    LG
    spirit

Ähnliche Themen

  1. Step 7 Schieberegister in SCL?
    Von spirit im Forum Simatic
    Antworten: 39
    Letzter Beitrag: 14.08.2013, 10:31
  2. Schieberegister per SCL?
    Von SEAL im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.04.2013, 11:41
  3. Schieberegister????
    Von cobeq im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 09.05.2011, 07:43
  4. Schieberegister
    Von Schenker im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 08.10.2007, 11:09
  5. Schieberegister
    Von Wasserkraft im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 23.09.2007, 15:03

Lesezeichen

Berechtigungen

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