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

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

Thema: Step5 LIR 0 Befehl

  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 übersetzen eines Lir 0 befehles da ich gehört habe das dies nicht ohne weiteres geht wenn er auf einen bereich wie E 400 zugreift der code ist wie folgt.


    Code:
     L     #DB_S
          SLW   1                           // 1 DW = 2 BYTES
          L     W#16#E400                   // START ADDRESS DB's
          +I    
    //      LIR 0;                    // START ADDRESS SOURCE-DB
    // *** Fehler in Zeile    4421  (FB   6):  Befehl nicht definiert. ***
          T     MW    33
    //;
          L     #DW_S
          SLW   1
          L     114                         // 114 BYTE
          +I    
          L     MW    33
          +I    
          T     MW    33
    von mir wurde er wie folgt geändert:

    Code:
     L     #DB_S
          T     #AUF_DB_S
    
          L     #DB_S
          SLW   1                           // 1 DW = 2 BYTES
          L     W#16#E400                   // START ADDRESS DB's
          +I    
          AUF   DB [#AUF_DB_S]
          T     MW    33
    //;
          L     #DW_S
          SLW   1
          L     114                         // 114 BYTE
          +I    
          L     MW    33
          +I    
          T     MW    33
    ausserdem habe ich E 400 noch in folgendem aufruf in der S5 quelle gfunden

    Code:
    L   =  K/DB        DB/NR. = 0 ?
            L   KB    255    
            UW        
            SPZ =  M003        DB  - NR. NICHT EINGETRAGEN
            SLW    1        
            ADD KF    -7168    = ADR.: E400 H
            LIR    0        
            L   KB    0    
            T   MB 249        
            OW        
            SPZ =  ERR4        JA, FEHLER 04
            LW  =  ANF        
            SLW    1        
            +F        
            R   M  254.0        
        M008    T   MW 246        
            LIR    0        
            T   MW 244        
        M007    UN  M  254.0        
            =   M  254.0

    Ist meine übersetzung inordnung oder gibt es noch etwas zu beachten?
    Zitieren Zitieren Step5 LIR 0 Befehl  

  2. #2
    Registriert seit
    01.11.2007
    Beiträge
    1.237
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Also, E400 bei einer S5 klingt für mich verdächtig nach Bausteinadressliste, wenn ich damit richtig liege wird dein übersetzter Baustein niemals das machen, was er soll...

    Grüße von HaDi

  3. #3
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Bresner,

    als erstes brauche ich von Dir den CPU-Typ. Ich vermute mal es ist eine CPU 103 (wg. Anfangsadresse DB: E400 h).

    Nun zu Deinem Code:

    Code:
    L #DB_S          Hier wird die Nummer des zu öffnenden DB's geladen
    SLW 1            Um die richtige Adresse der Speicherzelle des DB's zu finden Nummer *2
    L W#16#E400      Dies ist die Basisadresse der Speicherzellen in denen die DB-Adressen liegen
    +I               Hier wird die Adresse der Speichezelle des DB's in #DB_S gebildet
    LIR 0            Die Speicherzelle wird ausgelesen und die Adresse des DB's im RAM der CPU kommt in den AKKU1
    T MW 33          Adresse merken
    L #DW_S          Ich vermute hier wird das zu bearbeitende Datenwort übergeben
    SLW 1            Adresse des DW * 2, Hat irgendwas mit der Art der Adressierung in der CPU 103 zu tun (Ich vermute die arbeitet byteweise)
    L 114
    +I               Irgendein Offset im DB
    L MW 33          Anfangsadresse des DB's laden
    +I               Adresse DW dazuaddieren
    T MW 33          Absolute Adresse des Datenwortes im RAM der CPU


    Irgendwo muss in Deinem Code noch der Befehl:
    B MW 33
    L DW 0 auftauchen.
    Damit wird das in MW 33 adressierte Datenwort ausgelesen.


    Ich würde den Code so übersetzen:

    Code:
    L #DB_S
    T #Auf_DB_Nr      // Temp. Variable
    
    AUF DB [#Auf_DB_Nr]
    
    L #DW_S
    SLW 1             // S5-Wort-Format -> S7-Byte-Format
    SLD  3            // Pointer bilden
    LAR1              // Pointer an Adressregister übergeben
    
    L DBW [AR1,P#0.0] // Datenwort laden
    Ich hoffe das hilft Dir weiter!

    Grüße
    Gebs

  4. #4
    Registriert seit
    01.11.2007
    Beiträge
    1.237
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Irgendwo muss in Deinem Code noch der Befehl:
    B MW 33
    L DW 0 auftauchen.
    Damit wird das in MW 33 adressierte Datenwort ausgelesen.
    Hallo Gebs,
    das, denke ich, wird so nicht gehen, denn im MW33 steht ja nicht die Nummer des Datenworts sondern seine Speicheradresse, von daher würde ich eher einen indirekten Zugriff erwarten (LIR/TIR).
    Mit deiner Übersetzung bin ich aber grundsätzlich einverstanden.
    Ich frage mich aber schon, ob es wirklich sinnvoll ist, solche S5-Bausteine 1:1 übersetzen zu wollen. Wenn man die Funktion begriffen hat und was Neues programmiert, wird´s unter Umständen doch eleganter.

    Grüße von HaDi

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

    Standard

    Hallo bresner1,

    beherzige doch mal das was ich dir geschrieben habe..

    Aber bevor du das umsetzt finde doch erstmal heraus wofür es benötigt wird. Evtl kann man das mit S7 anders lösen bzw ist es überflüssig.
    Alle SYNC - Aufrufe für Baugruppen, alle Sachen für Kommunikation über Ethernet/H1-Bus, alle Bausteine die auf Sonderbaugruppen zugreifen solltest du bei der Umsetzung aussen vor lassen. Viel wichtiger ist es die Struktur und Wirkungsweise zu erkennen und dann in S7 (falls noch nötig) nachzuprogrammieren.

    Wenns ein schönes S7-Programm werden soll und nicht nur ein konvertiertes S5-Programm musst du dich von einigen Programmteilen trennen und die Schmiermerker bestatten. Funktionen von S5-PB´s mit Funktionsgruppen-DB kannst du komfortabler mit S7-FB lösen.

    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren S5  

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Mein Vorschlag an dieser Stelle :
    poste doch mal den Original Step5-Code. Ich denke, dass man damit weiterkommt und es in Step7 sinnvoll anders lösen kann ...

    Gruß
    LL

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

    Standard

    Ich schreib es nicht noch einmal, siehe hier:

    http://www.sps-forum.de/showpost.php...84&postcount=7
    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
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    @ HaDi
    Du hast recht! Ich hab' nicht richtig nachgedacht. Bresner müsste dann in seinem Code noch ein paar LIR/TIR-Befehle finden oder aber ein MAB und LRW/TRW.

    @Bresner
    Ich denke genauso, wie die Anderen. Mit S7 hat man die Möglichkeit viele Programme intelligenter bzw. einfacher zu programmieren. Wie LL gesagt hat, poste mal den S5-Code!

    Grüße
    Gebs

  9. #9
    bresner1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.06.2008
    Beiträge
    19
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen

    Hier der ganze code

    Code:
    LW  =  ANZ        lade Anzahl zu sendende Bytes
            L   KF    +0    
            !=F        
            BEB        
            R   M  254.7        MERKER   FALSCHE ADRESSE
            L   =  K/DB        
            SRW    8        Kanal Nr. ausmaskieren
            L   KB    3    
            >F        
            SPB =  ERR1        KANAL-NR. > 3
            UW        KANAL-NR. * 2
            SLW    1        
            L   =  ADR        + ADR. VIPA-KARTE
            +F        
            T   MW 250        Adresse zwischenspeichern
            ADD BF    +1    VIPA-ADR.+1 = STATUSWORT SS
            L   KH    EEFF    Statuswort -SS lesen -> MB 255
            TNB    1        
            U   M  254.7        ADR.FEHLER ?
            SPB =  M002        JA,SPRUNG
            UN  M  255.7        SENDEPUFFER LEER  ? --> BEB
            BEB        
            BLD    130        
            L   =  K/DB        DB/NR. = 0 ?
            L   KB    255    
            UW        
            SPZ =  M003        DB  - NR. NICHT EINGETRAGEN
            SLW    1        
            ADD KF    -7168    = ADR.: E400 H
            LIR    0        
            L   KB    0    
            T   MB 249        
            OW        
            SPZ =  ERR4        JA, FEHLER 04
            LW  =  ANF        
            SLW    1        
            +F        
            R   M  254.0        
        M008    T   MW 246        
            LIR    0        
            T   MW 244        
        M007    UN  M  254.0        
            =   M  254.0        
            L   KH    EEF4    
            SPB =  M005        
            ADD BF    +1    
        M005    L   MW 250        
            TNB    1        
            LW  =  ANZ        
            L   MB 249        
            ADD BF    +1    
            T   MB 249        
            <=F        
            SPB =  M006        
            U   M  254.0        
            SPB =  M007        
            L   MW 246        
            ADD BF    +2    
            SPA =  M008        
        M006    L   KB    0    
            SPA =  M009        
        M002    L   KB    1    
            SPA =  M009        
        ERR1    L   KB    2    falsche Kanalnummer
            SPA =  M009        
        M003    L   KB    3    
            SPA =  M009        
        ERR4    L   KB    4    
        M009    T   =  FEHL
    ich würde die fehlerhaften bausteine gerne neu schreiben jedoch brauche ich länger bis ich diese verstanden habe. habe davor noch nichts mit S5 zu tun gehabt
    Zitieren Zitieren S5  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo bresner,

    aber so wie dus jetzt machst wird es so werden.


    • du passt alle diese Bausteine die mit Sonderkarten zu tun haben an dass sie theoretisch in der S7 lauffähig sind
    • du nimmst die Anlage in Betrieb
    • du merkst dass die neuen Sonderbaugruppen nicht damit angesprochen werden können
    • du stehst wieder vor dem Problem dass du erstmal verstehen musst was die alten Bausteine machen
    • du machst es neu

    André
    Geändert von sps-concept (17.07.2008 um 08:34 Uhr)
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren S5  

Ähnliche Themen

  1. S7 Befehl ABS
    Von Panzerknacker im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.08.2009, 10:49
  2. FB Befehl in S5
    Von Mazemukel im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 09.10.2007, 09:13
  3. Befehl TAK und BLD
    Von TedescoA im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.01.2007, 12:35
  4. reset-befehl
    Von Anonymous im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 02.02.2006, 07:22
  5. S5-Befehl: 'KZW'
    Von churchill im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.10.2003, 22:09

Stichworte

Lesezeichen

Berechtigungen

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