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

Ergebnis 1 bis 9 von 9

Thema: indriekte Adressierung von sfc20 (blkmov)

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ich möchte dem systemfunktionbaustein als zieladresse eine dynamische adresse zu ordnen hab aber nocht nicht rausgefunden wies geht.
    Genauer: ich habe einen db (db30) erstellt. die ersten 4 byte belegt dort eine zählervariable. nun möchte ich mit blkmov einen string von 10 bytens in db30 schieben lassen an die adresse von inhalt erstes datenwort in db30 * 24. wie muss ich meine zieladresse deklarieren oder erstellen?
    Zitieren Zitieren Gelöst: indriekte Adressierung von sfc20 (blkmov)  

  2. "'Ziel' mußt du als Any-Pointer in Temp deklarieren (Ziel : ANY), dann sollte es gehen, aber Achtung, du hast geschrieben die ersten 4 Byte beinhalten den Zähler, das wäre DBD0 und *D, aber mit den ersten 2 Byte kommst du eigentlich weit genug !

    Gruß Ralle !

    PS: Wenn du den FC so nimmst wie er ist, kannst du als Ziel-DW das von die errechnete Ziel MW10 angeben, die Quelle kannst du ja fest angeben, wenn sie immer gleich ist."


  3. #2
    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

    Das hier benutze ich, als Anregung ist es allemal gut

    AWL-Quelle:


    FUNCTION FC 112 : INT
    TITLE =BLK_Move
    AUTHOR : Ralle
    NAME : BLK_MOVE
    VERSION : 1.0


    VAR_INPUT
    AnzahlDBB : INT ;
    QuellDB : INT ;
    QuellDW : INT ;
    ZielDB : INT ;
    ZielDW : INT ;
    END_VAR
    VAR_TEMP
    Quelle : ANY ;
    Ziel : ANY ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =Blocktransfer zwischen Datenbausteinen

    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;
    SLW 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 0.0; //Anfangs-DW im Ziel-DB
    L #ZielDW;
    SLW 3;
    +D ;
    T LD [AR1,P#6.0];

    CALL SFC 20 (
    SRCBLK := #Quelle,
    RET_VAL := #RET_VAL,
    DSTBLK := #Ziel);
    END_FUNCTION

    Gruß Ralle !

  4. Folgende 5 Benutzer sagen Danke zu Ralle für den nützlichen Beitrag:

    dani (04.03.2008),Ka3_ax (10.05.2015),SIGGI (03.02.2009),Sputnik555 (19.10.2009),Waelder (25.07.2007)

  5. #3
    Anonymous Gast

    Standard

    L DB30.DBW0
    L 24
    *I
    T MW10 // Soll Zieldatenwort im DB sein!


    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 10 //Transferlaenge
    T LW [AR1,P#2.0];
    L 30
    T LW [AR1,P#4.0];
    L P#DBX 0.0; //Anfangs-DW im Ziel-DB
    L MW10;
    SLW 3;
    +D ;
    T LD [AR1,P#6.0];

    Jetzt habe ich die Zeiladresse in #Ziel ??
    Zitieren Zitieren sehe ich das richt, das folgendes funktionieren müsste...  

  6. #4
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    LAR1 P##Ziel; //Anfangsadresse des ANY-Pointers in AR1
    Ich würde sagen, das muss so aussehen:
    Code:
    L P##Ziel
    LAR1
    Auf jeden Fall mekert sonst mein Editior.

    Gruß pt

  7. #5
    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

    'Ziel' mußt du als Any-Pointer in Temp deklarieren (Ziel : ANY), dann sollte es gehen, aber Achtung, du hast geschrieben die ersten 4 Byte beinhalten den Zähler, das wäre DBD0 und *D, aber mit den ersten 2 Byte kommst du eigentlich weit genug !

    Gruß Ralle !

    PS: Wenn du den FC so nimmst wie er ist, kannst du als Ziel-DW das von die errechnete Ziel MW10 angeben, die Quelle kannst du ja fest angeben, wenn sie immer gleich ist.

  8. #6
    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

    Is Origal so in meinem FC und geht

    LAR1 P##Quelle //Anfangsadresse des ANY-Pointers in AR1 laden

  9. #7
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Stimmt.
    Eigentlich müsste es gehen.

    LAR1 lädt den Inhalt des Akkus
    LAR1 p##xy lädt xy ins AR1

    aber komischerweise geht das bei mir nicht.

    Na ja, zurück zum TP

  10. #8
    Registriert seit
    06.10.2003
    Beiträge
    3.403
    Danke
    447
    Erhielt 502 Danke für 406 Beiträge

    Standard

    Hallo plc_tippser,

    bei multiinstanzfähigen FBs geht's nur mit:

    Code:
    L   Zeiger
    LAR1
    bei sonstigen Bausteinen:

    Code:
    LAR1   Zeiger

    Gruß, Onkel

  11. #9
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Onkel,

    das ist schon mal gut zu wissen. Gestern hatte ich es in einem FC getestet. Aber nicht so ausgiebig.

    Ansonsten wende ich dieses aber nur in Multiinstanzfähigen FBs an.

    Gruß pt

Ähnliche Themen

  1. DBs mit SFC20 BLKMOV kopieren
    Von Lenni im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.02.2012, 22:33
  2. Sfc 20 blkmov
    Von Franz im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.12.2008, 14:24
  3. Probleme mit SFC20 "BLKMOV"
    Von matchef im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 18.12.2008, 16:19
  4. Kopierfehler SFC20 (BLKMOV) ??
    Von Wastel im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 08.07.2008, 07:06
  5. Frage zu SFC20 BLKMOV
    Von chivas im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.02.2005, 14:47

Lesezeichen

Berechtigungen

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