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

Ergebnis 1 bis 7 von 7

Thema: Schieberegister

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.
    befasse mich seit kurzer zeit mit dem progrmmieren von S7/300.
    und habe nun folgendes Problem
    Ich habe eine Anlage mit 9 verschiedenen Stationen .
    nun wird ein Teil an station 1 eingelegt also ist
    Station 1 =1
    Station 2 =0 usw.
    nun lege ich wieder ein Teil an staion 1 ein und das Teil wo vorher bei Station 1 war ist nun bei Station 2
    Station 1 =1
    Station 2 =1
    Station 3 =0 usw.
    nun lege ich kein Teil an Station 1 ein aber die anderen Teile werden weiter geschoben
    Station 1 =0
    Station 2 =1
    Station 3 =1
    Station 4 =0 usw.
    nun wird wieder einTeil an Station 1 eingelegt
    Station 1 =1
    Station 2 =0
    Station 3 =1
    Station 4 =1
    Station 5 =0 usw.
    wie kann ich dieses Problem am besten realisieren ???
    wenn es überhaupt ein Problem ist aber ich stehe momentan auf dem Schlauch.
    Zitieren Zitieren Gelöst: Schieberegister  

  2. "Hallo,
    schau mal hier
    http://www.sps-forum.de/phpBB2/viewt...chieberegister

    ich denke damit kommst du weiter.

    HDD"


  3. #2
    Registriert seit
    11.10.2005
    Ort
    Pirmasens
    Beiträge
    401
    Danke
    158
    Erhielt 74 Danke für 54 Beiträge

    Standard

    Hallo,
    schau mal hier
    http://www.sps-forum.de/phpBB2/viewt...chieberegister

    ich denke damit kommst du weiter.

    HDD

  4. #3
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.336
    Danke
    27
    Erhielt 130 Danke für 117 Beiträge

    Standard

    Also ich setze da immer ein Schieberegister in folgender Art ein, da ein Bit nicht mir reicht:

    Code:
    u schieben
    fp mx.x
    spbn ende
    
    AUF DBxx
    
    L DBW 9     Station 9
    T DBW10    Entladung
    L DBW 8     Station 8 --> Station 9
    T DBW 9
    L DBW 7     Station 7 --> Station 8
    T DBW 8
    L DBW 6     Station 6 --> Station 7
    T DBW 7
    L DBW 5
    T DBW 6
    L DBW 4
    T DBW 5
    L DBW 3
    T DBW 4
    L DBW 2
    T DBW 3
    L DBW 1
    T DBW 2
    
    ende: nop 0
    
    Das DW1 wird abhängig des Zustands an der Beladesation beschrieben! 
    
    In meinen Anlagen ist der Datenbereich pro Station um einiges größer (20 Worte pro Station), da dort in einem Byte die Anzahl der Werstücke, der Status (IO/NIO) der Werkstück-Typ, der Bearbeitungsstatus der jeweiligen Station uvm. abgebildet ist. 
    
    In deinem Fall könntest Du neben Wersktück vorhanden/nicht vorhanden auch IO/NIO und bearbeitet oder nicht bearbeitet schieben!
    
    DBX1.0       WST 1 vorhanden
    DBX1.1       WST 1 io/NIO
    ...
    DBB2          WST Typ
    
    Aber 1000 Wege füren nach Rom  :wink:

  5. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    also bei bits ist es am einfachsten, wenn du srw1 bzw sld1 benutzt.

    willst du bytes/word/dword verschieben, schau dir mal den fifo auf meiner hp an.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #5
    Anonymous Gast

    Standard

    Hallo Kollege,

    für das verschieben einer Anzahl von X-Wert empfiehlt sich eine kleine Schleife, die in der Ausführung länger dauert als reine Lade-/Transferbefehle, aber sehr flexible ist. Hier mein Vorschlag:

    Code:
    // Schleifen Voreinstellung
    
          AUF   DB     1                    // DB mit Stationswerten laden
    
    // Der DB enthält nur die einzelnen Stationswerte. Durch die Größe vom DB
    // wird die Anzahl der Stationen bestimmt, wie z.B. 9 Stationen.
    // Dieses Beispiel wurde auf DINT/DWORD Werte ausgelegt.
    
          L     L#0                         // Schleifen anfangswert laden
          T     #DIT_Schleifenwert          // Schleifenanfangswert laden
    
          L     DBLG                        // Anzahl der DB-Bytes laden
          L     L#1                         // Wert zum anpassen laden
          -D                                // Schleifenwert anpassen
          T     #DIT_Schleifenende          // Schleifenende speichern
    
          L     MD     0                    // Neuerwert zum speichern laden
          T     #DIT_zsp_1                  // Wert zwischenspeichern
    
    // Schleifenausführung
    
    RS50: L     DBD [#DIT_Schleifenwert]    // DB-Bytewert zurücksetzen
          T     #DIT_zsp_2                  // Alten Wert zwischenspeichern
    
          L     #DIT_zsp_1                  // Wert laden
          T     DBD [#DIT_Schleifenwert]    // Neuen Wert in DB eintragen
    
          L     #DIT_zsp_2                  // Wert zum verschieben laden
          T     #DIT_zsp_1                  // Wert zwischenspeichern
    
    
    
    // Kontrolle auf Schleifenende
    
          SET                               // VKE-1 laden
          L     #DIT_Schleifenwert          // Schleifenanfangswert laden
          L     L#32                        // Wert für Adressanpassung laden (bei INT/WORD Bearbeitung Wert 16 eintragen)
          +D                                // Adresse anpassen
          T     #DIT_Schleifenwert          // Schleifenanfangswert speichern
          SRD   3                           // Adresse für Schleifenende Kontrolle anpassen
          L     #DIT_Schleifenende          // Schleifenende laden
          <D                                // Wenn noch nicht alle Werte bearbeitet, dann
          SPB   RS50                        // Sprung für erneuten Schleifendurchlauf
    Das ganze kann in einen parametrierbaren FC eingesetzt werden, um den DB sowie die Werteübergabe flexibel zu halten. Der FC kann dann immer wieder aufgerufen werden, wenn die Werte verschoben werden sollen.

    Wenn du noch Fragen hast, melde dich einfach.

    Auf gutes gelingen,

    Matthias
    Zitieren Zitieren Schleife für Daten verschieben  

  7. #6
    Registriert seit
    05.01.2006
    Beiträge
    46
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Kollege,

    für das verschieben einer Anzahl von X-Wert empfiehlt sich eine kleine Schleife, die in der Ausführung länger dauert als reine Lade-/Transferbefehle, aber sehr flexible ist. Hier mein Vorschlag:

    Code:
    // Schleifen Voreinstellung
    
          AUF   DB     1                    // DB mit Stationswerten laden
    
    // Der DB enthält nur die einzelnen Stationswerte. Durch die Größe vom DB
    // wird die Anzahl der Stationen bestimmt, wie z.B. 9 Stationen.
    // Dieses Beispiel wurde auf DINT/DWORD Werte ausgelegt.
    
          L     L#0                         // Schleifen anfangswert laden
          T     #DIT_Schleifenwert          // Schleifenanfangswert laden
    
          L     DBLG                        // Anzahl der DB-Bytes laden
          L     L#1                         // Wert zum anpassen laden
          -D                                // Schleifenwert anpassen
          T     #DIT_Schleifenende          // Schleifenende speichern
    
          L     MD     0                    // Neuerwert zum speichern laden
          T     #DIT_zsp_1                  // Wert zwischenspeichern
    
    // Schleifenausführung
    
    RS50&#58; L     DBD &#91;#DIT_Schleifenwert&#93;    // DB-Bytewert zurücksetzen
          T     #DIT_zsp_2                  // Alten Wert zwischenspeichern
    
          L     #DIT_zsp_1                  // Wert laden
          T     DBD &#91;#DIT_Schleifenwert&#93;    // Neuen Wert in DB eintragen
    
          L     #DIT_zsp_2                  // Wert zum verschieben laden
          T     #DIT_zsp_1                  // Wert zwischenspeichern
    
    
    
    // Kontrolle auf Schleifenende
    
          SET                               // VKE-1 laden
          L     #DIT_Schleifenwert          // Schleifenanfangswert laden
          L     L#32                        // Wert für Adressanpassung laden &#40;bei INT/WORD Bearbeitung Wert 16 eintragen&#41;
          +D                                // Adresse anpassen
          T     #DIT_Schleifenwert          // Schleifenanfangswert speichern
          SRD   3                           // Adresse für Schleifenende Kontrolle anpassen
          L     #DIT_Schleifenende          // Schleifenende laden
          <D                                // Wenn noch nicht alle Werte bearbeitet, dann
          SPB   RS50                        // Sprung für erneuten Schleifendurchlauf
    Das ganze kann in einen parametrierbaren FC eingesetzt werden, um den DB sowie die Werteübergabe flexibel zu halten. Der FC kann dann immer wieder aufgerufen werden, wenn die Werte verschoben werden sollen.

    Wenn du noch Fragen hast, melde dich einfach.

    Auf gutes gelingen,

    Matthias
    Viele Grüße
    Matthias
    SPS .bz
    -----------------
    Rechtschreibfehler wurden absichtlich zur allgemeinen Belustigung hinzugefügt, wer einen findet, darf ihn natürlich behalten ...
    Zitieren Zitieren Re: Schleife für Daten verschieben  

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

    SIGGI (04.04.2009)

  9. #7
    Registriert seit
    18.12.2005
    Beiträge
    71
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich würde den von Volker gemachten Vorschlag anwenden, da hier nur die geringstmögliche Datenmenge geschoben wird. Bei größeren Datenmengen ist das "tatsächliche" Verschieben von Daten ggf. eher etwas unsinnig, sei es auch, wenn man Schleifen einsetzt. Volker und ich hatten unlängst zum gleichen Thema eine Diskussion. Mal die Suchfunktion des Forums dazu anwenden.

    Gruß Barnee

Ähnliche Themen

  1. Schieberegister mit S7-300
    Von Spag im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 06.08.2008, 13:06
  2. Schieberegister
    Von Schenker im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 08.10.2007, 11:09
  3. Schieberegister
    Von Mütze im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 22.10.2006, 06:01
  4. Schieberegister
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 30.01.2006, 08:47
  5. Schieberegister mit S7-200
    Von Anonymous im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.10.2003, 15:00

Lesezeichen

Berechtigungen

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