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

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

Thema: Doppelwörter Schieben

  1. #1
    Registriert seit
    18.04.2005
    Ort
    Fast an der Schweiz
    Beiträge
    856
    Danke
    208
    Erhielt 108 Danke für 76 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie kann ich es Bewerkstelligen ein Datensatz mit 4 (oder mehr) Doppelwörtern zu Schieben ?

    Ich habe einen FB, der soll einen Input haben bei dem möchte ich den Bereich der Doppelwörter (ggf. auch byteweise) einlesen, die Daten im Baustein zwischenspeichern und bei Anforderungen wieder bei Output (IN_OUT?) herausgeben. Mit BLOCKMOVE hab ich es nicht geschaft.

    Irgendwie krieg ich das nicht gebacken...

    Danke noch
    Micha
    Code:
     RTFM ! Read The F..ing Manual
    Arbeitet mit : Step7 V5.5 SPx / WinCC Flex 2008 SPx / Intouch / Winmod /TIA V14 (abgestürzt...Zitat der Hotline : "Sie dürfen nicht so viel rumdrücken....." TIA, so isses halt)

    ║▌║█║║▌║█║ Warnung! Falscher oder fehlender Kaffee - Benutzer angehalten --(◔̯◔)--
    1334566890111
    Zitieren Zitieren Doppelwörter Schieben  

  2. #2
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Code:
     
    L #Eingangsdoppelwort
    T #STAT_Zwischenspeicher
     
    U #Verschieben_zum_Ausgang
    SPBN M001
     
    L #STAT_Zwischenspeicher
    T #Ausgangsdoppelwort
     
    M001: NOP 0
    Evt. brauchst du auch keinen Zwischenspeicher, liegt daran, ob am Eingang der Zustand sich ändert.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  3. #3
    Registriert seit
    22.11.2006
    Beiträge
    186
    Danke
    2
    Erhielt 12 Danke für 12 Beiträge

    Standard

    mit der SFC 20 geht es, stellt sich die frage ob du den ANY-Pointer richtig "zusammengestellt" hast
    Ciao

    Antonio
    ________________________________
    nicht in Problemen, sondern in Lösungen denken

  4. #4
    Registriert seit
    28.02.2007
    Beiträge
    86
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    hey, mal eine bescheidene frage,

    das könnte doch auch mit pointer realisiert werden. ist doch auch nicht aufwendig.

    bis denne
    Zitieren Zitieren pointer  

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

    Standard

    Hi,
    Ralle hat mal einen Baustein programmiert mit SFC20 bei dem du INT Variabel anlegen kannst damit könntest Du das leicht lösen.
    http://www.sps-forum.de/showthread.p...6169#post66169
    Schau mal hier habe ich Ihn als Quelle gepostet.

    HDD

  6. #6
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Hallo Micha,

    Zitat Zitat von Waelder Beitrag anzeigen
    ..Mit BLOCKMOVE hab ich es nicht geschaft..
    Mit der SFC20 kannst du nur Bereiche kopieren, solange sich diese nicht überlappen. Wenn du also einen Bereich von 20 DBDs hast, kannst du diese zwar sonst wo hin kopieren, jedoch nicht und um ein DBD verschieben. Suche nach FiFo oder FiLo.

    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Hier mal ein Stück Code zur Orientierung. Dabei wird im Ring geschoben, also die letze Information wieder oben eingesetzt!

    Code:
    NETWORK
    TITLE =RT-Info schieben
    //Dieses Netzwerk schiebt die Teileinformationen für einen Rundtisch mit X
    //Nestern. Dabei werden die Informationen nach rechts im Kreis verschoben, d.h.
    //die Info aus Nest N erscheint in Nest N+1, die Info aus Nest X im Nest 1 !!!
    //Als Informationseinheit dient eine DInt/DWord-Variable.
          U     #Rundtisch_in_POS; 
          U     L     10.3; 
          FP    L     10.0; 
          =     L     10.4; 
          SPBN  ENDI; 
    
          AUF   #Info_DB; 
          L     #Anzahl_Nester; //Intitialisierung der   //soviele DWorte sollen geschoen werden
          T     #Nest_Counter; //Schleifenvariable
    
          L     #Start_Addr;                                //hier gehts im DB los
          L     4; 
          -I    ; //4 weniger, es geht genau bei Start_Addr los
          T     #T_Start_addr; 
    
          L     #Nest_Counter; 
          SLW   2; //Nest_Counter mit 4 Multipl., wegen 2xDoppelwort !!
          L     #T_Start_addr; //letzte Nest-Variable sichern
          +I    ; 
          ITD   ; 
          SLD   3; //Adreßregister 1 mit Adresse laden
          LAR1  ; 
          L     DBD [AR1,P#0.0]; 
          T     #Schmiervariable; //in der Schmiervariable steht Inhalt vom letzten Nest 
    
          L     #Nest_Counter; //Schleife beginnt mit letztem Nest -1
          L     1; 
          -I    ; //das Ergebnis muß im Nest_Counter landen
    
    //hier beginnt die Schleife
    
    NEXT: T     #Nest_Counter; //der dekrementierte Akku muß wieder in Nest_Counter landen
          SLW   2; //Nest_Counter mit 4 Multipl., wegen 2xDoppelwort !!
    
          L     #T_Start_addr; 
          +I    ; 
          ITD   ; 
          SLD   3; //Adreßregister 1 mit Adresse laden
          LAR1  ; 
          L     DBD [AR1,P#0.0]; //es wird immer von Nest in Nest + 1 geschoben
          T     DBD [AR1,P#4.0]; 
    
          L     #Nest_Counter; //wenn Counter = 0, dann Ende der Schleife
          LOOP  NEXT; 
    
    //zum Schluß noch gesicherte letzte Variable in erste Variable schreiben
          L     #Start_Addr; 
          ITD   ; 
          SLD   3; //Adreßregister 1 mit Adresse laden
          LAR1  ; 
          L     #Schmiervariable; 
          T     DBD [AR1,P#0.0]; 
    
    // und Schmiermerker "Rundtisch gestartet" zurücksetzen
    
          SET   ; 
          R     L     10.2; 
          R     L     10.3; 
    
    ENDI: NOP   0;
    Irgendwo kam letztens der Hinweis, daß Blk_Move auch überlappend kopieren kann, das aber nur in "eine Richtung", da auch der SFC20 nicht den kompletten Block auf einmal kopiert, sondern Byte (oder Word???)-weise. Die Info wird sicher hier im Forum zu finden sein, genauer weiß ich es grad (zu spät ) nicht mehr.
    Geändert von Ralle (02.03.2007 um 23:09 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

  8. #8
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Hallo Ralle,

    Zitat Zitat von Ralle Beitrag anzeigen
    ..Irgendwo kam letztens der Hinweis, daß Blk_Move auch überlappend kopieren kann, das aber nur in "eine Richtung"..
    Ich erinnere mich, es ist schon etwas länger her. Ich hab's jedoch nie probiert. Zu FiFo etc. gibt es jedenfalls eine Vielzahl an Fundstellen. Member Volker oder sps-concept habe sicherlich auch was anzubieten.

    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  9. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Hier noch der Link mit dem SFC 20 nachgereicht:

    http://www.sps-forum.de/showpost.php...16&postcount=6
    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

  10. #10
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Waelder Beitrag anzeigen
    Wie kann ich es Bewerkstelligen ein Datensatz mit 4 (oder mehr) Doppelwörtern zu Schieben ?

    Ich habe einen FB, der soll einen Input haben bei dem möchte ich den Bereich der Doppelwörter (ggf. auch byteweise) einlesen, die Daten im Baustein zwischenspeichern und bei Anforderungen wieder bei Output (IN_OUT?) herausgeben. Mit BLOCKMOVE hab ich es nicht geschaft.

    Irgendwie krieg ich das nicht gebacken...

    Danke noch
    Micha
    Wenn ich dich richtig verstnaden hab dann probiers so:

    Leg am aufruf des FB und Intern im FB die selbe UDT an genauso am Out oder In /OUT.

    Gruss Andy

Ähnliche Themen

  1. Schieben und Rotieren in AWL
    Von adi5 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 16.01.2010, 16:52
  2. In einem FB Bit's Schieben
    Von jackjones im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 10.12.2009, 09:44
  3. Schieben und Maskieren mit SCL
    Von nonguru im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.09.2008, 11:59
  4. libnodave mehrere doppelwörter
    Von Praseodym im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 03.09.2007, 12:02
  5. Doppelwörter hochzählen MD1>MD2 usw.
    Von mkd im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.12.2006, 07:13

Lesezeichen

Berechtigungen

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