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

Page 1 of 3 123 LastLast
Results 1 to 10 of 23

Thread: CPU-STOP nach LAR2

  1. #1
    Join Date
    30.10.2008
    Posts
    77
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute!

    Es ist Freitag und ich stehe im Moment ein wenig auf dem Schlauch.
    Ich möchte in der 315 CPU Daten von einem DB in einen 2. übertragen.
    Es sind 10 Speicherstellen und ich habe mir gedacht ich mache das mit inderekter Programmierung.
    Also ein Zähler zählt von 9 bis 0 und bei jedem Schritt wird ein Block übertragen. Das Problem ist da die Speicherbereiche nicht im selben Abstand in den DBs liegen brauche ich 2 Adressregister.

    So sieht das dann aus:

    L #Zaehler_Fe
    L 128 // 8 x 16 Byte für Offset
    *I
    LAR1

    L #Zaehler_Fe
    L 32 // 8 x 4 Byte für Offset
    *I
    LAR2

    // Fehlernummer aus DB252 in DB421
    AUF "DB-Anzeige"
    L DBW [AR1,P#0.0]

    AUF "DB Daten SWE"
    T DBW [AR2,P#38.0]
    // Stunden und Minuten aus DB252 in DB421
    AUF "DB-Anzeige"
    L DBW [AR1,P#11.0]

    AUF "DB Daten SWE"
    T DBW [AR2,P#40.0]

    L #Zaehler_Fe
    L 0
    <=I
    SPBN NW11
    L 10
    T #Zaehler_Fe
    NW11: NOP 0
    L #Zaehler_Fe

    L 1
    -I
    T #Zaehler_Fe



    Nur sobald ich den Befehl "LAR2" benutze geht die CPU mit Bereichslängenfehler in STOP. Wenn ich Testweise 2mal den Befehl "LAR1" ausführe läuft Sie durch, nur ich komme nicht zu meinem Ergebnis. Vielleicht hat ja jemand eine Idee.
    Reply With Quote Reply With Quote CPU-STOP nach LAR2  

  2. #2
    Join Date
    09.10.2006
    Posts
    272
    Danke
    32
    Erhielt 26 Danke für 24 Beiträge

    Default

    war falsch...lesen muss man können

  3. #3
    Join Date
    08.04.2008
    Location
    Köln
    Posts
    846
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Default

    Hallo Fenix,

    Du musst zum einen die Adresse vor dem LAR noch ins Pointerformat bringen
    => SLD 3

    Wenn Du einen FB benutzt, muss Du vor der Schleife Deine Adressregister retten
    und danach wieder herstellen, sonst funktioniert die Adressierung im IDB nicht mehr.

    Grüße
    Gebs

  4. #4
    Join Date
    30.10.2008
    Posts
    77
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Default

    @ Golden Egg
    LAR2 lädt das Adreßregister AR2 mit dem Inhalt von AKKU 1 (32 Bit-Pointer).
    AKKU 1 und AKKU 2 werden nicht verändert. Die Operation wird ausgeführt, ohne die Statusbits zu berücksichtigen oder zu beeinflussen.

    Hallo Gebs,
    also ich schiebe mein Rechenergebnis (Offset für die Speicherstelle) 3 Stellen nach links?
    Aber dann hab ich doch ein anderes Ergebnis.
    Ich hab ja schon mit 8 multipliziert (ich rechne bereits in Bit). Dann fällt das SLD ja eigentlich flach?

    Ich benutzte einen FB, aber da ich jeden Durchlauf den Offset (Wert für das Adressregister) neu berechne muss ich ja nichts retten.
    Nur der Zähler ist eine statische Variable.
    Last edited by Fenix; 09.01.2009 at 12:07.

  5. #5
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    13,806
    Danke
    746
    Erhielt 3,127 Danke für 2,231 Beiträge

    Default

    Quote Originally Posted by Fenix View Post
    LAR2 lädt das Adreßregister AR2 mit dem Inhalt von AKKU 1 (32 Bit-Pointer).
    AKKU 1 und AKKU 2 werden nicht verändert. Die Operation wird ausgeführt, ohne die Statusbits zu berücksichtigen oder zu beeinflussen.
    ??? Was soll uns das sagen?

    Gebs hat es geschrieben.
    Wenn du z.Bsp. auf Byte 20 eines DB zugreifen willst, dann

    Code:
    Auf DB xy
    
    L 20     //LAde 20 in Akku 1
    SLD 3   //überführen ins Pointerformat, indem Akku 1 3 mal nach links geschoben wird
    LAR1    //Akku 1 in Adressregister laden
    
    L DBB[AR1, P#0.0]
    Achtung mit AR2, das kann in FB Probleme geben.
    Zumindest solltest du vorher die AR retten und diese am Ende wieder restaurieren.
    Siehe dazu LAR1, TAR1, LAR2, TAR2

    PS: Schau mal in die Diagnose der SPS, da steht dann auch was zur Stopursache, aber es ist wohl sich er etwas in der Art Bereichsüberschreitung ect.
    Last edited by Ralle; 09.01.2009 at 12:11.
    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

  6. #6
    Join Date
    05.06.2006
    Location
    PLZ 97xxx
    Posts
    297
    Danke
    37
    Erhielt 46 Danke für 38 Beiträge

    Default

    Ist das Ganze ein FB und #Zaehler_Fe eine STAT, IN oder INOUT Variable ?

    Falls ja hast du ein Problem mit dem AR2 weil falls der FB als
    Multiinstanz-fähig deklariert ist, das AR2 als OFFSET für die Instanzdaten
    benutzt wird.

    d.h. beim Befehl

    L #Zaehler_Fe ==>> hier
    L 0
    <=I

    hat die CPU Bereichslängenfehler, da das L sich auf
    AR2 + Offset von #Zaehler_Fe im Inst.-DB bezieht und diese
    Adresse nicht existiert.

    Kannst du das ganze nicht mit nem SFC20-Aufruf lösen??

  7. #7
    Join Date
    30.10.2008
    Posts
    77
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Default

    Quote Originally Posted by Sarek View Post
    Ist das Ganze ein FB und #Zaehler_Fe eine STAT, IN oder INOUT Variable ?

    Falls ja hast du ein Problem mit dem AR2 weil falls der FB als
    Multiinstanz-fähig deklariert ist, das AR2 als OFFSET für die Instanzdaten
    benutzt wird.

    d.h. beim Befehl

    L #Zaehler_Fe ==>> hier
    L 0
    <=I

    hat die CPU Bereichslängenfehler, da das L sich auf
    AR2 + Offset von #Zaehler_Fe im Inst.-DB bezieht und diese
    Adresse nicht existiert.

    Kannst du das ganze nicht mit nem SFC20-Aufruf lösen??
    Ja, mein FB ist multiinstanzfähig, warum auch immer.
    Also mit dem SFC20 lösen??? Den kenne ich noch garnicht.
    Aber Da scheint der Hase begraben sein. Bekomme ich den FB irgendwie so hin dass er nicht mehr multiinstanzfähig ist? Weil ich muss den nur einmal pro Zyklus aufrufen?

  8. #8
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    13,806
    Danke
    746
    Erhielt 3,127 Danke für 2,231 Beiträge

    Default

    Siehe Sarek.

    Ohne AR2 geht es auch, indem du immer das AR1 vor dem Benutzen umlädst. Etwas mehr Rechenzeit, aber das AR2 bleibt dann unberührt.
    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

  9. #9
    Join Date
    30.10.2008
    Posts
    77
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Default

    Quote Originally Posted by Ralle View Post
    Siehe Sarek.

    Ohne AR2 geht es auch, indem du immer das AR1 vor dem Benutzen umlädst. Etwas mehr Rechenzeit, aber das AR2 bleibt dann unberührt.
    Das hab ich mir auch schon überlegt, aber dann muss ich die Werte ja nochmal zwischenspeichern. Obwohl, das könnte ich ja in einer temp Variablen machen.

  10. #10
    Join Date
    08.04.2008
    Location
    Köln
    Posts
    846
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by Ralle View Post
    Ohne AR2 geht es auch, indem du immer das AR1 vor dem Benutzen umlädst. Etwas mehr Rechenzeit, aber das AR2 bleibt dann unberührt.
    Oder, er stellt das AR2 vor dem 3. L #Zaehler_Fe wieder her.
    Ist aber eher 2. Wahl. Ich würde auch eher den SFC20 nehmen.

    Grüße
    Gebs

Similar Threads

  1. Omron CPU geht nach Netzausfall in Stop
    By edi in forum Sonstige Steuerungen
    Replies: 1
    Last Post: 14.11.2011, 12:21
  2. CPU auf Stop nach Profibusvernetzung
    By Paul86 in forum Simatic
    Replies: 5
    Last Post: 05.11.2011, 08:57
  3. CPU in Stop nach Netzausfall
    By Kento in forum Simatic
    Replies: 3
    Last Post: 22.09.2011, 13:47
  4. CPU Stop nach Stromausfall. Zeitfehler
    By vollmi in forum Simatic
    Replies: 5
    Last Post: 19.01.2011, 17:51
  5. Replies: 7
    Last Post: 13.10.2005, 22:49

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •