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

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

Thema: BLKMOV (SFC20) - falsche Reihenfolge beim Schieben

  1. #1
    Registriert seit
    09.09.2010
    Beiträge
    76
    Danke
    10
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag liebe SPSler,

    Ich hätte da gerne mal wieder ein Problem...

    Folgender Code:

    Code:
    MOVE: L     #AnfangDB      L     8
          +I    
          T     #QuellDW
          T     #ZielDW
    
    
          LAR1  P##Quelle                   //Anfangsadresse des ANY-Pointers in AR1 laden
    
    
          L     B#(16, 2)                   //Syntax-ID und Typ: Byte laden
          T     LW [AR1,P#0.0]
          L     #AnzahlDBB                  //Transferlaenge
          T     LW [AR1,P#2.0]
          L     #QuellDB                    //Quelle-DB
          T     LW [AR1,P#4.0]
          L     P#DBX 0.0                   //Anfangs-DW im Quell-DB
          L     #QuellDW
          SLD   3
          +D    
          T     LD [AR1,P#6.0]
    
    
          LAR1  P##Ziel                     //Anfangsadresse des ANY-Pointers in AR1
    
    
          L     B#(16, 2)                   //Syntax-ID und Typ: Byte laden
          T     LW [AR1,P#0.0]
          L     #AnzahlDBB                  //Transferlaenge
          T     LW [AR1,P#2.0]
          L     #ZielDB                     //Ziel-DB
          T     LW [AR1,P#4.0]
          L     P#DBX 4.0                   //Anfangs-DW im Ziel-DB
          L     #ZielDW
          SLD   3
          +D    
          T     LD [AR1,P#6.0]
          L     B#16#84
          T     LB [AR1,P#6.0]
    
    
          CALL  "BLKMOV"
           SRCBLK :=#Quelle
           RET_VAL:=#retval.blkmov
           DSTBLK :=#Ziel
    macht 2 unterschiedliche Sachen auf PLCSIM und echter 315-2 PN/DP.

    Es sollte eigentlich als FILO funktionieren, was es auf der PLCSIM ja auch tut.
    Auf der echten CPU schreibt das gute Ding aber leider nur den ersten Wert auf alle nachfolgenden...

    Gibt es auf den CPUs verschiedene SFC Versionen oder bin ich falsch gewickelt, wenn ich
    annehme, dass der SFC20 rekursiv, also von hinten nach vorne schiebt?

    Vielleicht sollte ich noch vorab bemerken, dass hier QuellDB und ZielDB identisch sind.
    Die Daten werden quasi nur 4 byte nach hinten geschoben.
    Geändert von EliteGurke (03.12.2012 um 14:07 Uhr)
    Zitieren Zitieren BLKMOV (SFC20) - falsche Reihenfolge beim Schieben  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.569
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Aus der Hilfe des SFC20:

    Bedingungen für Quell- und Zielfeld

    Quell- und Zielfeld dürfen sich nicht überlappen.
    Ich denke das dürfte bei Dir der Fall sein.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #3
    Registriert seit
    09.09.2010
    Beiträge
    76
    Danke
    10
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Hmm ok, auch gerade gelesen.

    Dann ist das wohl mal wieder so ein Ding das nur in der PLCSIM hinhaut...

  4. #4
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Nein das funktioniert nicht nur in PLCSIM. Es funktioniert auch bei einigen realen CPUs
    Hängt wohl vom verbautem Prozessortyp ab.
    Bin neulich auch drübergestolpert als ich nen Baustein von einer 400er auf einer 312C verwenden wollte.

    Gruß
    Dieter

  5. #5
    Registriert seit
    11.07.2004
    Beiträge
    1.597
    Danke
    10
    Erhielt 213 Danke für 183 Beiträge

    Standard

    Bedingungen für Quell- und Zielfeld

    Quell- und Zielfeld dürfen sich nicht überlappen.
    würde ich nicht generell sagen, soweit ich weiß geht's solange das Ziel eine niedrigere Adresse hat als die Quelle, CPU-intern läuft das wohl in einer Schleife ab bei der mit der niedrigsten Adresse begonnen wird und dann Byte für Byte (oder Wort für Wort?) nach oben weiter gemacht wird.

  6. #6
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Bei solchen Funktionen verwende ich Ar1 und AR2 für Quelle und Ziel.
    Da habe ich weder in 300er noch 400er CPU ein Problem bisher gehabt.

    Das mit den überlappenden Bereichen habe ich auch gelesen, doch habe ich auch schon überlappen lassen, wenn mehr als 4 Byte Abstand sind, funktioniert es.



    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  7. #7
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Bei solchen Funktionen verwende ich Ar1 und AR2 für Quelle und Ziel.
    Da habe ich weder in 300er noch 400er CPU ein Problem bisher gehabt.

    Das mit den überlappenden Bereichen habe ich auch gelesen, doch habe ich auch schon überlappen lassen, wenn mehr als 4 Byte Abstand sind, funktioniert es.
    Meiner Erfahrung nach, macht AR1/AR2 oder statische Pointer keinen Unterschied.
    Auch das mit den größer 4 Byte kann ich nicht bestätigen.
    Es liegt wohl wirklich an der CPU.
    Eine 317-2 verhält sich anders als eine 315 und eine 312 wieder anders.
    Nur die 400er schlucken das problemlos.

    Das nervige ist, dass PLCSIM den CPU-Typ nicht berücksichtigt.

    Gruß
    Dieter

  8. #8
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Blockmove Beitrag anzeigen
    Meiner Erfahrung nach, macht AR1/AR2 oder statische Pointer keinen Unterschied.
    Auch das mit den größer 4 Byte kann ich nicht bestätigen.
    Es liegt wohl wirklich an der CPU.
    Eine 317-2 verhält sich anders als eine 315 und eine 312 wieder anders.
    Nur die 400er schlucken das problemlos.

    Das nervige ist, dass PLCSIM den CPU-Typ nicht berücksichtigt.

    Gruß
    Dieter
    Das kann sein, dass es bei den kleineren CPU nicht funktioniert.
    Wir haben keine CPU kleiner als 315 2DP.
    Und ab dieser CPU bis 416 funktioniert die von mir geschriebene Funktion.
    Denn ich habe bisher keine Reklamation bekommen.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  9. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Ich würde mich darauf das es Funktioniert nicht verlassen, das kann dann mit dem nächsten Firmwareupdate schon wieder nicht mehr der Fall sein. Lieber das ganze selbst in einer Schleife abhandeln... dann geht der Code auch später mal noch in einer 1500er ...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  10. #10
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Ich würde mich darauf das es Funktioniert nicht verlassen, das kann dann mit dem nächsten Firmwareupdate schon wieder nicht mehr der Fall sein. Lieber das ganze selbst in einer Schleife abhandeln... dann geht der Code auch später mal noch in einer 1500er ...
    Mit der Firmware bzw. dem Ausgabe-Stand hast du recht. Ich mein sogar, dass es bei der 315-2DP sogar so ist.

    Schleife nehme ich nicht. Ich kopiere Quelle mit Blockmove in einen temporären Speicherbereich (wenn möglich Lokaldaten) und dann mit einem 2. Blockmove in den Zielbereich. Ist meist schneller als eine Schleife.

    Gruß
    Dieter

    Gruß
    Dieter

Ähnliche Themen

  1. DBs mit SFC20 BLKMOV kopieren
    Von Lenni im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.02.2012, 22:33
  2. Probleme mit SFC20 "BLKMOV"
    Von matchef im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 18.12.2008, 16:19
  3. Kopierfehler SFC20 (BLKMOV) ??
    Von Wastel im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 08.07.2008, 07:06
  4. Frage zu SFC20 BLKMOV
    Von chivas im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.02.2005, 14:47
  5. indriekte Adressierung von sfc20 (blkmov)
    Von Anonymous im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 04.06.2004, 08:26

Lesezeichen

Berechtigungen

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