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

Ergebnis 1 bis 5 von 5

Thema: LIR 0 S5 nach S7

  1. #1
    Registriert seit
    24.06.2008
    Beiträge
    19
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Ich habe ein Problem mit dem LIR 0 befehl. Ich übersetze ein S5 projekt nach S7 und weiss nicht wie ich den Lir 0 befehl ersetzen kann.
    Habe bereits 2 änderungen vorgenomen und wäre froh wenn man mir auch bei diesen bestätigen könnte das dies so funktioniert

    Danke im voraus


    Code:
           AUF DB 21;                // DB Wartungsdatei
           UN  #RES;                 // Wartungs Trigger (Minutentakt)
           SPB M001;
           L   0;                    // bei Zeittrigger Anfang
           T   DBW 10;               // Neustart
           SPA M002;
           //;
      M001:L   DBW 10;               // aktuelles Event in Arbeit
           L   100;                  // max. 100 Events
           <=I;
           SPB M002;
           L   0;                   // Neustart bei event 1
           T   DBW 10;
      M002:L   DBW 10;               // Indexreg. aktuelles Event
           L   100;                 // max 100 Events
           ==I;
           R   #TRIG;               // Ruecksetzen Zeittrigger
           TAK;
           L   21;                  // Offset Lesezeiger (ab DW 21)
           +I;
           T   DBW 12;              // Indexregister Lesezeiger
           L   100;                 // Offset Vergleichspuffer
           +I;
           T   DBW 14;              // Indexregister Vergleichspuffer
           //;
                                    // laden Eventdaten
           T   conv_akku1;
           L   STW;
           T   conv_stw;
           L   DBB 13;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku1;
           L   DBW [ AR1, P#0.0 ];
           T   MW 33;               // Zwischenspeicher Eventdaten
           L   W#16#0;              // "0" nicht erlaubt
           <>I;                     // aktuelles Event belegt
           SPB M003;                // Daten bearbeiten
           L   DBW 10;              // Indexregister aktuelles Event
           INC 1;
           T   DBW 10;              // Zeiger auf naechstes Event
           L   100;                 // max. 100 Events
           >=I;
           R   #TRIG;               // Ruecksetzen Zeitraster
           BEB;
           SPA M002;
           //;
      M003:L   MB 34;                // Byteinfo aktuelles Event
           T   DBW 2;               // Byte Nr. aktuelles Event
           L   MB 33;
           L   2#0000000000000111;  // Bit Nr. ausmaskieren
           UW;
           T   DBW 4;               // Bit Nr. aktuelles Event
           TAK;
           SRW 3;                   // Code  I  ausmaskieren
           L   W#16#7;              // nur 3 Bits gueltig
           UW;
           T   DBW 6;               // Code  I
           L   MB 33;
           SRW 6;                   // Code  II ausmaskieren
           L   W#16#3;              // nur 2 Bits gueltig
           UW;
           T   DBW 8;               // Code  II
           //;
        
        
        
    /////////////////////////////////////////////////////////////////////////////////////////////////////////       
    //       
    //                   Wurde mit SPL ausgetauscht. DBB7 wird verwendet da beim befehl B DBW auf das rechte byte gezeigt wird das linke (Byte6) muss 0 sein 
    // 
    //
    //
    //          B DBW 6;
    //          SPA  M004                   // kein gueltiger Eintrag
    //          *** Warnung in Zeile    5891   Sprungbefehl nach BEARBEITE nicht übersetzbar (SPL verwenden).
    //         
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////          
              
                                    // Code bearbeiten
           L DBB 7
           SPL  M004                   // kein gueltiger Eintrag
           SPA M005;                // Anfrage Eingang
           SPA M006;                // Anfrage Ausgang
           SPA M007;                // Anfrage Merker
           SPA M008;                // Anfarge Zaehler
           SPA M009;                // Anfrage Timer
           BEA;
           //;
      M005:L   W#16#EF00;            // Basisadresse Eingaenge
           SPA M010;
      M006:L   W#16#EF80;            // Basisadresse Ausgaenge
           SPA M010;
      M007:L   W#16#EE00;            // Basisadresse Merker
           SPA M010;
      M008:L   W#16#ED00;            // Basisadresse Zaehler
           SPA M010;
      M009:L   W#16#EC00;            // Basisadresse Timer
           //;
      M010:L   DBW 2;                // aktuelle byte Nr.
           +I;
      //      LIR 0;                   // lade Wert
      // *** Fehler in Zeile    5913  (FB 100):  Befehl nicht definiert. ***
           SRW 8;                   // Byte ausmaskieren
           T   MW 33;               // Wert zwischenspeichern
           //;
                                    // Bit Nr. bearbeiten
    /////////////////////////////////////////////////////////////////////////////////////////////////////////       
    //       
    //                   Wurde mit SPL ausgetauscht. DBB7 wird verwendet da beim befehl B DBW auf das rechte byte gezeigt wird das linke (Byte6) muss 0 sein 
    // 
    //
    //
    //          B DBW 4;
    //          SPA  M011                   // kein gueltiger Eintrag
    //          *** Warnung in Zeile    5891   Sprungbefehl nach BEARBEITE nicht übersetzbar (SPL verwenden).
    //         
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////                                  
                                    
                                    
           L DBB 5
           SPL  M011
           SPA M012;
           SPA M013;
           SPA M014;
           SPA M015;
           SPA M016;
           SPA M017;
           SPA M018;
           //;
      M011:UN  M 34.0;               // Bit 0 nicht gesetzt
           SPA M019;
      M012:UN  M 34.1;               // Bit 1 nicht gesetzt
           SPA M019;
      M013:UN  M 34.2;               // Bit 2 nicht gesetzt
           SPA M019;
      M014:UN  M 34.3;               // Bit 3 nicht gesetzt
           SPA M019;
      M015:UN  M 34.4;               // Bit 4 nicht gesetzt
           SPA M019;
      M016:UN  M 34.5;               // Bit 5 nicht gesetzt
           SPA M019;
      M017:UN  M 34.6;               // Bit 6 nicht gesetzt
           SPA M019;
      M018:UN  M 34.7;               // Bit 7 nicht gesetzt
           //;
      M019:SPB M020;                 // kein Bit gesetzt
           L   DBW 8;              // Anfrage nicht zeitgetriggert
           L   0;
           <>I;
           SPB M021;
           //;
           UN  #TRIG;              // Zeittrigger nicht aktiv
           SPB M004;
           SPA M022;               // Vergleichspuffer nicht aktiv
           //;
      M021:NOP 0;
          
           T   conv_akku1;
           L   STW;
           T   conv_stw;
           L   DBB 15;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku1;
           L   DBW [ AR1, P#0.0 ];
           L   1;
           ==I;
           SPB M023;
      M022:L   DBW 12;               // Indexregister Lesezeiger
           L   20;
           -I;
           SLW 8;                  // aktuelle Event Nr. links
           T   MW 33;
           L   DBW 12;
           L   21;                 // Offset Lesezeiger
           -I;
           SLW 1;                  // Offset 2 Worte
           L   11;
           +I;
           AUF DB 20;
           T   DBW 2;              // Indexregister Schreibzeiger
           INC 1;
           T   DBW 4;              // Indexregister HIGH BYTE
          
           T   conv_akku1;
           L   STW;
           T   conv_stw;
           L   DBB 3;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku1;
           L   DBW [ AR1, P#0.0 ];   // lade Eventdaten
           INC 1;
           L   MW 33;              // akt. Event Nr. in linkes Byte
           OW;
          
           T   conv_akku1;
           TAK;
           T   conv_akku2;
           L   STW;
           T   conv_stw;
           L   DBB 3;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku2;
           L   conv_akku1;
           T  DBW [ AR1, P#0.0 ];
           L   W#16#FF;
           UW;
           L   60;                 // bei Wert > 60 Uebetrag
           <=I;
           SPB M023;
                                   // Indexregister HIGH BYTE
           T   conv_akku1;
           L   STW;
           T   conv_stw;
           L   DBB 5;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku1;
           L   DBW [ AR1, P#0.0 ];
           INC 1;                  // increment HIGH BYTE
          
           T   conv_akku1;
           TAK;
           T   conv_akku2;
           L   STW;
           T   conv_stw;
           L   DBB 5;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku2;
           L   conv_akku1;
           T  DBW [ AR1, P#0.0 ];
          
           T   conv_akku1;
           L   STW;
           T   conv_stw;
           L   DBB 3;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku1;
           L   DBW [ AR1, P#0.0 ];   // lade Low Word Wartungsereigniss
           L   W#16#FF00;          // loesche LOW BYTE
           UW;
          
           T   conv_akku1;
           TAK;
           T   conv_akku2;
           L   STW;
           T   conv_stw;
           L   DBB 3;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku2;
           L   conv_akku1;
           T  DBW [ AR1, P#0.0 ];    // speichern Wert
      M023:AUF DB 21;
      M004:L   1;
                                   // Indexreg. Vergleichsbuffer
           T   conv_akku1;
           TAK;
           T   conv_akku2;
           L   STW;
           T   conv_stw;
           L   DBB 15;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku2;
           L   conv_akku1;
           T  DBW [ AR1, P#0.0 ];    // setzen Vergleichsbuffer
           SPA M024;
      M020:L   0;
                                   // Vergleichspuffer loeschen
           T   conv_akku1;
           TAK;
           T   conv_akku2;
           L   STW;
           T   conv_stw;
           L   DBB 15;
           SLW 4;
           LAR1;
           L   conv_stw;
           T   STW;
           L   conv_akku2;
           L   conv_akku1;
           T  DBW [ AR1, P#0.0 ];
      M024:L   DBW 10;               // Indexregister aktuelles Event
           INC 1;
           T   DBW 10;             // Zeiger auf naechstes Event
           L   100;
           >=I;
           R   #TRIG;              // Ruecksetzen Zeittrigger
      
      
    END_FUNCTION
    Zitieren Zitieren LIR 0 S5 nach S7  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    LIR 0 ist bei dir ein dauerbrenner, wa?

    http://www.sps-forum.de/showthread.php?t=21032
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    hier einfach nur den Befehl ersetzen bringt m.E. gar nichts.
    Der abgebildete Baustein adressiert (für welchen Zweck ?) Speicherbereiche der SPS. Diese Speicherbereiche hast du in dieser Form in der S7 sowieso nicht mehr - das heißt, dass wenn du die Funktion dieses Bausteins erhalten willst, du genau wissen mußt, was er tut.
    Code:
         L DBB 7
           SPL  M004                   // kein gueltiger Eintrag
           SPA M005;                // Anfrage Eingang
           SPA M006;                // Anfrage Ausgang
           SPA M007;                // Anfrage Merker
           SPA M008;                // Anfarge Zaehler
           SPA M009;                // Anfrage Timer
           BEA;
           //;
      M005:L   W#16#EF00;            // Basisadresse Eingaenge
           SPA M010;
      M006:L   W#16#EF80;            // Basisadresse Ausgaenge
           SPA M010;
      M007:L   W#16#EE00;            // Basisadresse Merker
           SPA M010;
      M008:L   W#16#ED00;            // Basisadresse Zaehler
           SPA M010;
      M009:L   W#16#EC00;            // Basisadresse Timer
           //;
      M010:L   DBW 2;                // aktuelle byte Nr.
           +I;
      //      LIR 0;                   // lade Wert
    
    an dem Beispiel :
    in Abhängigkeit von DBB7 wird der gewünschte Speicherbereich in der SPS adressiert. Im DBW2 steht dann der Index der Variablen drin und deren Wert wird dann geladen.
    Der ganze Block würde in der S7 (wie schon erwähnt) ganz anders aussehen :
    Code:
    L DBW 2
    SLW 3
    LAR1
     
    L MW [AR1,#P0.0]
     
    usw.
    Gruß
    LL

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Resume (auch aufgrund des Beitrages von 4L) :
    Einfach nur Code von Step5 nach Step7 übersetzen ist nicht unbedingt immer die Lösung ...
    Da kann dann auch ganz schöner Mist dabei herauskommen ...

  5. #5
    Registriert seit
    30.08.2003
    Beiträge
    2.197
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo bresner,

    ich würde (wenn du das so weiternutzen willst) die Pointer auf die gewünschten Bereiche setzen und damit weiterarbeiten wie gehabt, dh Offset addieren und ab ins AR1 wie von LL beschrieben. Aber ob das bei Timern und Zählern geht bzw Sinn macht sei dahingestellt.

    Code:
           L DBB 7
           SPL  M004                   // kein gueltiger Eintrag
           SPA M005;                // Anfrage Eingang
           SPA M006;                // Anfrage Ausgang
           SPA M007;                // Anfrage Merker
           SPA M008;                // Anfarge Zaehler
           SPA M009;                // Anfrage Timer
           BEA;
           //;
      M005:L   P#E0.0;               // Basisadresse Eingaenge
           SPA M010;
      M006:L   P#A.0;                // Basisadresse Ausgaenge
           SPA M010;
      M007:L   P#M0.0;               // Basisadresse Merker
           SPA M010;
      M008:L   P#Z0;                 // Basisadresse Zaehler
           SPA M010;
      M009:L   P#T0;                 // Basisadresse Timer
    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren Lir  

Ähnliche Themen

  1. OP5 nach WIN CC
    Von HannesIVA im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 15.12.2009, 10:54
  2. Von °C nach °F
    Von Kitefriend im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 03.03.2009, 12:19
  3. Beispiele einer automatischen Querübersetzung von ST nach IL bzw. nach FBS
    Von sps freak im Forum Werbung und Produktneuheiten
    Antworten: 1
    Letzter Beitrag: 04.07.2008, 22:52
  4. S7 SCL FB nach S5
    Von Florian_Niedermaier im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.02.2008, 18:19
  5. AWL nach KOP (die x'te)
    Von dkeipp im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 17.11.2006, 20:24

Stichworte

Lesezeichen

Berechtigungen

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