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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: Schleife AWL

  1. #11
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Wegen Verwendung des AR2: Ist das ein FC oder ein "multiinstanzfähiger" FB?

    Harald
    1. Yep, auch meine nächste Frage.
    2.

    Die SPS hat zur zeit nur 2 FB enthalten, nun ist die Frage was passiert unter real Bedingungen!
    Rufst du den FB 2x auf oder sind das verschiedene FB?
    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

  2. #12
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Steht das 0D0A immer in einem gerade Word? (Ist ja offensichtlich ein String der da kommt und wenn ich das richtig sehe, erkennst du 0D0A nur, wenn das auf einer geraden Adresse steht, es kann aber auch noch ein Byte verschoben sein, wenn ein Buchstabe mehr im Text steht.

    Oder hab ich da einen Denkfehler?
    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

  3. #13
    MC_DARKSTONE ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.01.2015
    Beiträge
    25
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Es sind 2 unterschiedliche FC aber der eine wird erst aufgerufen wenn der jeweils andere beendet ist.

    Das 0D0A steht immer an einer geraden Stelle / sollte immer!
    Es handelt sich um ein ASCII Telegramm daher verschiebt sich das 0D0A immer um 4 Stellen ( 1 ASCII Register entspricht 4 Byte ),
    ich kann dies aber nochmals überprüfen ob ab einer zu hohen anzahl von ASCII Register das 0D0A immer noch um 4 stellen verschoben wird.

    Gruß Erick

  4. #14
    MC_DARKSTONE ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.01.2015
    Beiträge
    25
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi,
    ich habe es nochmal getestet die schleife kann 219 durchläufe machen danach ist es nicht möglich sie vorzeitig zu beenden.
    Das 0D0A beginnt immer auf einem geraden Word

    Ich habe eine weitere Schleife eingefügt die nur jeden Wert in DBB[AR1] Addieren soll bis 0D0A erreicht ist, selbst hier wird die Schleife nicht vorzeitig beendet.

    Gruß
    Erick
    Geändert von MC_DARKSTONE (10.06.2015 um 11:44 Uhr)

  5. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Welche Werte haben AR1 und AR2 nach 219 Durchläufen?
    Wären/sind die Adressen in AR1/AR2 nach 220 Durchläufen immer noch in dem DB?
    Ist da auch der richtige DB geöffnet? Wo wird der geöffnet? Ist der auch groß genug?

    Gibt es Einträge im Diagnosepuffer der CPU?

    Ist Dein Programm in Beitrag #3 identisch mit dem Programm in der CPU ist oder hast Du zum Posten gekürzt?
    Hilft es, wenn Du testweise eine garantierte VKE-Abgrenzung vor den Vergleich einbaust?
    Code:
    //-----------------------------------
    //Auf endzeichen ueberpruefen 
    //-----------------------------------
    CLR                    // <-- VKE-Abgrenzung (SET geht auch)
    L     W#16#0D0A        // Prüfen ob WertX nächste Runde auftritt     
    L     DBW [AR1,P#2.0]  // Ist hier der richtige DB geöffnet? Welche Adresse ist in AR1?
    ==I         
    SPB   opei
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #16
    MC_DARKSTONE ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.01.2015
    Beiträge
    25
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Wenn ich den loopzahler erhoher überschreibt des AR mir dies Werte die nachträglich benötige,
    Also ja,
    -AR1/2 zeigen weiterhin auf das DB,
    -Der Richtige DB wird im Programm anfang des FC geöffnet (siehe Code unten),
    -DB ist groß genug "1324 Byte" (ansosten würde ich auch ein fehler erhalten)

    Im Puffer wird nichts eingetragen

    Das Programm ist identisch bis auf "L WertX" was durch "L W#16#0D0A" ersetzt wird, zudem habe ich davor und danach einige sachen stehen
    zB.
    Code:
    TAR1 inhaltAR1 // sichern von AR1
    TAR2 inhaltAR2 // sichern von AR2
    AUF DB 250
    
          L     P#1050.0 Pointer auf DB250.DBB1050.0
          LAR1  
          L     P#536.0 //Pointer auf DB250.DBB536.0
          LAR2  
    
    //--------------------------
    /// Werte mit "0 füllen
    //--------------------------
    
          L     256
    Sch4: T     #loopzahler
          L     0
          T     DBB [AR1,P#0.0]
          T     DBW [AR2,P#0.0]
          L     P#1.0
          +AR2  
          +AR2  
          +AR1  
          L     #loopzahler
          LOOP  Sch4
    
    L P#0.0 // 
    L AR1
    L P#22.0 // Pointer auf DB250.DBB0.0
    LAR2
    
    L #Slave
    T DBB[AR1, P#0.0]
    L 
    .....

    Was ist eine VKE Abgrenzung und was soll dies bewirken?
    Geändert von MC_DARKSTONE (10.06.2015 um 12:38 Uhr)

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    VKE-Abgrenzung: Statusbit /ER auf 0 setzen, so daß garantiert eine neue VKE-Verknüpfungskette begonnen wird und nicht ein vom vorherigen Programmablauf versehentlich "eingeschlepptes" VKE mitverknüpft wird.

    Bei ==I ist der vorherige Zustand des VKE und des /ER aber eigentlich egal, es überschreibt immer das vor der Operation vorhandene VKE


    Hat Dein Programm das Problem auch in PLCSIM?

    Ist das Deine CPU: CPU 412-5H PN/DP 6ES7412-5HK06-0AB0 ?
    Siemens empfiehlt "möglichst zeitnah" ein Firmwareupdate auf V6.0.5 durchzuführen.
    Frage doch mal den Siemens Support, ob denen das Verhalten Deiner CPU bekannt ist.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    MC_DARKSTONE ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.01.2015
    Beiträge
    25
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Bei PLC Sim lief das Programm ohne fehler aber an der CPU waren einige sachen nicht so wie erwartet. darunter auch die Schleife.
    Ja das ist meine CPU
    Du denkst aber das es auf dem ersten Blick nicht mit dem Programm zu tun hat?
    Könnte so ein fehler an einem Update liegen?
    Ich teste das mit dem VKE und schreibe mal den Support an und sobald ich antowort erhalte melde ich mich wieder.

    Danke
    Gruß Erick

  9. #19
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Also im Programm kann ich eigentlich auch nichts entdecken, nachdem wir alle Randbedingungen (FC,FB,...) abgeklärt haben.
    Wenn es im PLCSIM läuft und in der CPU nicht, dann ist das schon ein komisches Zeichen.
    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. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also an dem gezeigten Programm kann ich auch nichts falsches entdecken. Ist schon merkwürdig.

    Ich würde wohl noch testweise den Vergleichscode umformulieren:
    Code:
    CLR
    L     W#16#0D0A        // Prüfen ob WertX nächste Runde auftritt
    L     DBW [AR1,P#2.0]
    <>I         
    SPBN  opei
    oder auch mal so:
    Code:
    NOP   0
    CLR
    AUF   DB250
    L     DBW [AR1,P#2.0]
    L     W#16#0D0A        // Prüfen ob WertX nächste Runde auftritt
    ==I         
    SPBN  nxt
    SPA   opei
    nxt: L P#1.0
    oder
    Code:
    SET
    L     W#16#0D0A        // Prüfen ob WertX nächste Runde auftritt
    L     DBW [AR1,P#2.0]
    -I
    SPZ   opei
    Sind das eigentlich 2 CPUs? Und haben die beide die selbe Firmware-Version?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Step 7 Bitmusterüberprüfung mittels Schleife in AWL
    Von Rune17 im Forum Simatic
    Antworten: 37
    Letzter Beitrag: 29.04.2015, 15:32
  2. Step 7 AWL - Schleife mit Array
    Von bo1986 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.06.2013, 12:57
  3. awl schleife und pointer
    Von Iserlohner im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 18.02.2011, 09:12
  4. IF oder FOR Schleife in AWL?
    Von motamas im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.07.2010, 14:19
  5. AWL Schleife
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 31.07.2003, 07:05

Stichworte

Lesezeichen

Berechtigungen

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