DB bereich kopieren / Syntaxproblem

Kodan

Level-1
Beiträge
43
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe das Forum schon mehrmals durchsucht habe aber für mein Problem keine Lösung bzw. nicht den richtigen Ansatz gefunden.

Mein Problem.

Ich greife von einem OP7 auf einen Datenbaustein zu.
Dieser Datenbaustein enthät Infos und Bedienhinweise für das Personal.
Bis zur Adresse 174.0 ist die Datenstruktur immer gleich .
Ab 174.0 stehen die Positionierdaten (unterschiedliche Länge)für eine FM353.
D.h. ich bräuchte nur die Adressen bis 170.0

Mein Problem ich möchte Daten von Adresse 0.0 bis 174.0 (aus ca. 80 versch. DB´s)in den DB60 kopieren.Abhängig von Zählerstand Z1.
Beispiel DB als Anhang


Die DB´s öffne ich mit u.g. Befehlen

L "Programmnummer" //Z1
T "INHALT_DB_NR" //MW 40
AUF DB ["INHALT_DB_NR"]

Aber den Syntax für BLKMOVE bekomme ich nicht zusammen da ja der Quell-DB immer ein anderer ist (-> ["Inhalt_DB_NR"].
Auch für ein Pointerfomat fehlt mir der Syntax!

CALL "BLKMOV"
SRCBLK :="srcdata".srcdata ???
RET_VAL:=MW100
DSTBLK :="dstdata".dstdata




Gruß Kodan
 

Anhänge

  • DB50.pdf
    6,7 KB · Aufrufe: 12
darf ich fragen, wie lange du gesucht hast? ... also ich habe nach gefühlten 10, geschätzten 20 sekunden, weil mein chef grad was wollte, dass hier gefunden:

indriekte Adressierung von sfc20 (blkmov)

da postete der geschätzte Kollege Ralle folgenden Code:

Code:
*
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
noch weitere Fragen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Vierlagig.

du kommst aber hier im vorum auch überall rum und kennst dich aus...
Dein Posting werd ich mir mal zu gemüte führen...
Unser Internetanschluss in der Firma ist ziemlich lahm..evtl. darum nicht so lange gesucht....oder nicht das richtige gefunden..


Ich hoffe ich komm klar mit dem Code..

Danke nochmals für die Hilfe..


Gruß Kodan...
 
Zurück
Oben