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

Ergebnis 1 bis 5 von 5

Thema: Fragen zu Schieberegister

  1. #1
    Registriert seit
    27.07.2007
    Ort
    Westend Österreich
    Beiträge
    47
    Danke
    12
    Erhielt 1 Danke für 1 Beitrag

    Rotes Gesicht


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Erstmal Hallo zusammen!

    Ich habe einige Fragen zum Thema Schieberegister.

    Woher kriegt das Register das Signal zum "um eins" schieben.

    Das Register schreibt in ein WORD bzw. DW. Soweit ich weiß. Wie kann ich aus dem Wort einzelne Stationen auslesen ob sie "1" oder "0" sind?

    Und wie kann ich das Schieberegister länger als ein DW machen. z.B. 49 Stationen sind in meinem Fall aktuell.


    Das ganze läuft auf einer 319-3. Ich will unbedingt verstehen wie das abläuft.

    Danke im voraus für die hoffentlich zahlreichen Antworten.

    Grüsse

    Flo
    Zitieren Zitieren Fragen zu Schieberegister  

  2. #2
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Böse

    nichts für ungut

    Schiebebefehle wirken bei der S7 auf den Akku.

    Wenn man mit F1 bei dem Befehl SLW die Hilfe aufruft, so bekommt man schon einiges an Information, wie das geht.

    Ich persönlich schreibe Schieberegister i.d.R. gerne von Hand:

    Code:
     
    on #Befehl_schieben
    o #f_Befehl_schieben
    spb M001
     
    u #SRG_48
    = #SRG_49
    u #SRG_47
    = #SRG_48
    ... usw
    u #SRG_1
    = #SRG_2
    u #Eingangssignal
    = #SRG_1
     
    M001: u #Befehl_schieben
    = #f_Befehl_schieben
    Zitieren Zitieren ich werd hier noch zum UG ...!  

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von steppenwolf Beitrag anzeigen
    Erstmal Hallo zusammen!

    Ich habe einige Fragen zum Thema Schieberegister.

    Woher kriegt das Register das Signal zum "um eins" schieben.

    Das Register schreibt in ein WORD bzw. DW. Soweit ich weiß. Wie kann ich aus dem Wort einzelne Stationen auslesen ob sie "1" oder "0" sind?

    Und wie kann ich das Schieberegister länger als ein DW machen. z.B. 49 Stationen sind in meinem Fall aktuell.


    Das ganze läuft auf einer 319-3. Ich will unbedingt verstehen wie das abläuft.

    Danke im voraus für die hoffentlich zahlreichen Antworten.

    Grüsse

    Flo
    1. Siehe Perfektionist
    2. nimm SLD, damit kannst du 32 Bit schieben
    Man kann aber mehr schieben:
    Ja nachdem, ob eine 0 oder eine 1 links "rausgeschoben" wurde, kannst du zum Bsp. mit SPP einen Sprung ausführen (Sihe auch Hilfe zu SLD).
    Du kannst also 2 MD oder auch DBD (Datenbaustein) nehmen, zuerst das höherwertige 1 nach Links schieben, dann das niederwertige eins nach links schieben. Mit SPP an eine Marke springen und dort Bit Null vom Höherwertigen MD setzen (war ja das rausgeschobene Bit). Wenn SPP nicht ausgeführt wird, mit SPA das "Bit setzen" umspringen.

    Code:
          U     M      0.0
          FP    M      0.1
          SPBN  NIXM
    
          L     MD    24
          SLD   1
          T     MD    24
    
          L     MD    20
          SLD   1
          T     MD    20
    
          SPP   EINA
          SPA   NIXM
    
    EINA: NOP   0
    
          S     M     27.0
    
    NIXM: NOP   0
    Aber schau dir das mal in der Variablentabelle genauer an.

    Geschoben wird hier so:

    MB23 --> MB22 --> MB21 --> MB20 --> MB27 --> MB26 --> MB25 --> MB24

    Die Bits werden jeweils von 0...7 usw. geschoben.

    Also mal die MB und auch die MD ansehen, zum besseren Verständnis.
    Geändert von Ralle (06.12.2007 um 20:45 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #4
    Registriert seit
    20.10.2007
    Beiträge
    191
    Danke
    159
    Erhielt 75 Danke für 54 Beiträge

    Standard

    Ich glaube ich mach das immer so

    Code:
    FUNCTION "Schieberegister" : VOID
    TITLE =Schieberegister Demo
    VERSION : 0.1
    BEGIN
    NETWORK
    TITLE =Schieberegister takten
          U     E      0.0; //Taktimpuls
          FP    M      0.0; 
          SPBN  ENDE; 
          AUF   DB     2; 
          L     DBD    0; //DBX0.7 = BIT 0
          SRD   1; 
          T     DBD    0; 
          L     DBD    4; 
          RRDA  ; 
          T     DBD    4; 
          L     DBD    8; 
          RRDA  ; 
          T     DBD    8; 
          L     DBD   12; 
          RRDA  ; 
          T     DBD   12; 
          L     DBD   16; 
          RRDA  ; 
          T     DBD   16; 
    ENDE: NOP   0; 
    NETWORK
    TITLE =BIT aus Schieberegister lesen
          L     MD   100; //Position "Lesen aus Schieberigester"
          L     L#8; 
          /D    ; 
          T     MD   104; //Positin in Byte
          L     MD   100; //Position "Lesen aus Schieberigester"
          L     L#8; 
          MOD   ; 
          T     MD   108; //Rest aus Division /8 (Nummer BIT)
          L     L#7; //Berechnung Nummer BIT
          L     MD   108; //Rest aus Division /8 (Nummer BIT)
          -D    ; 
          T     MD   112; //Zwischenspeicher
          L     MD   104; //Positin in Byte
          SLD   3; 
          L     MD   112; //Zwischenspeicher
          OD    ; 
          T     MD   200; //Zeiger aus  BYTE + BIT
     
    END_FUNCTION
    Hab ich zwar jetzt nicht getestet, bin mir aber fast ziemlich sicher

    Zum Schreiben in das Schieberegister benutze ich das Bit DBX0.7
    Das Ganze hat den Vorteil, das ich die Position zum Lesen aus dem Register immer wieder neu berechnen kann.

    Ich hoffe ich konnte dir helfen

    Torsten

    p.s.

    anstelle von Netzwerk 2 hatte Perfektionist eine bessere Möglichkeit gefunden:
    Code:
          AUF   DB     2
          L     MD   100                   //Position "Lesen aus Schieberigester"
          XOD   DW#16#7
          LAR1 
          U     DBX [AR1,P#0.0]
          ...
    von den drei Bit-Adressen berechnet er einfach nur das Einer-Komplement
    und man bekommt die fortlaufende Bitnummer des Schieberegisters
    Geändert von Pizza (18.08.2008 um 18:22 Uhr) Grund: Perfektionist hatte eine bessere Idee
    Zitieren Zitieren ich schiebe immer rechts  

  5. Folgende 5 Benutzer sagen Danke zu Pizza für den nützlichen Beitrag:

    electroniconepack (04.01.2008),Perfektionist (15.08.2008),Roos (22.03.2010),SIGGI (09.02.2009)

  6. #5
    Registriert seit
    27.07.2007
    Ort
    Westend Österreich
    Beiträge
    47
    Danke
    12
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also vielen dank erst mal für all den Input.
    Werde erst einige Versuche starten mit PLCSIM, bevor es ans Eingemachte geht.

    Ich danke, und hoffe dass ich doch noch Fragen kann, wenn es Unklarheiten gibt. Bin halt leider kein Urgestein in der Programmierer Zunft


    Grüsse

    Flo

Ähnliche Themen

  1. schieberegister für INT
    Von ladychaos im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.04.2011, 08:00
  2. TwinCat HMI Fragen über Fragen
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 10.11.2010, 17:36
  3. B&R Schieberegister?
    Von Anaconda55 im Forum CODESYS und IEC61131
    Antworten: 20
    Letzter Beitrag: 07.09.2009, 02:05
  4. Siemens Fu Fragen über Fragen
    Von lorenz2512 im Forum Schaltschrankbau
    Antworten: 0
    Letzter Beitrag: 28.10.2005, 17:58
  5. Schieberegister mit UDT's
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 01.02.2005, 12:30

Lesezeichen

Berechtigungen

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