Blkmov

sps_mitte

Level-2
Beiträge
172
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi leute,
ich habe eine frage zur blkmov funktion

ich habe folgendes problem:
ich möchte eine DB länge ermitteln und den gesamten inhalt in einen anderen baustein kopieren können. Wer kann mir auf die Sprünge helfen?

Code:
AUF DB1       // öffne mein zu ermittelndes DB
L DBLG       // gib mir die länge in byte
T temp

      CALL  "BLKMOV"
       SRCBLK :=P#DB1.DBX0.0 [COLOR=Red]BYTE 2000[/COLOR] // hier möchte ich die ermittelte länge haben, statt die eigene [COLOR=Red]BYTE 2000[/COLOR] angabe
       RET_VAL:=#xy
       DSTBLK :=P#DB2.DBX0.0 [COLOR=Red]BYTE 2000[/COLOR]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
BLKMOV die zweite

Und das zweite Problem:

Bei der Verwendung von BLKMOV habe ich folgendes Problem:
Quell- und Zielbereiche müssen vor dem Kopieren vorhanden sein!

Also müssten bei einer Kopie von 2 Bausteinen, die beiden in der selben BYTE Größe vorhanden sein.

Gibts keine Standart FC die ein vorhandenen Datenbaustein kopiert, indem sie einen gewünschten DB_XYZ dupliziert (kreiert)? Den ich dann im nachhinein noch mit einem Zeitstempel erweitern kann?

Also automatische DB Kopie, dann eine erweiterung des DB´s um Date_and_Time, und da ohne das ich einen DB manuell erstellen oder erweitern muss??
 
mit SFC22 wird das nicht funktionieren, denn ich möchte von einem vorhandenen DB ein dublikat erstellen können und diesen erstellten DB dann noch um ein Date_and_Time erweitern können
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In diesem Fall:
- mit der SFC24 "Test_DB" die länge auslesen
- 8 Byte für Date_and_Time dazu addieren
- jetzt mit der SFC22 eine neuen DB erzeugen.
- Vor dem erzeugen nochmals mit der SFC24 testen ob es den DB schon gibt.
 
DBs die mit SFC22 erstellt wurden haben doch die eigenschaft NICHT Remanent. Also ist auch das für die Katz.
Ausserdem ist zum Ende der Typ des Date_and_Time auch nicht kompatibel mit den anderen Typen des DBs, was man dann per Hand umstellen müsste.

Also werde dann wieder auf dem teppich bleiben und den Ziel DB per Hand erstellen mit der gleichen länge des Quell DBs, dann meine Date_and_Time am ende manuell einfügen und es mit BLKMOV rüberkopieren lassen, unschön aber wahr.
 
DBs die mit SFC22 erstellt wurden haben doch die eigenschaft NICHT Remanent. Also ist auch das für die Katz.
Ausserdem ist zum Ende der Typ des Date_and_Time auch nicht kompatibel mit den anderen Typen des DBs, was man dann per Hand umstellen müsste.

Also werde dann wieder auf dem teppich bleiben und den Ziel DB per Hand erstellen mit der gleichen länge des Quell DBs, dann meine Date_and_Time am ende manuell einfügen und es mit BLKMOV rüberkopieren lassen, unschön aber wahr.

aber das passiert dir in jeder anderen umgebung ganz genauso. von bestand ist nur, was du von hand anlegst!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie lange dauert eigentlich das verschicen der Daten mit BLKMOV? Geht das über einen bausteinaufruf hinaus?

Kann ich innerhalb eines sps-Zyklus mehrere mal mit blkmov die gleichen Daten verschieben?
Ich wollte parameter aus verschiedenen Bausteinen in einem array-dB im Element (0) zusammenfassen, dann (0) nach (x) kopieren mit BLKMOV, dann (x) bearbeiten und dann (x) wieder nach (0) kopieren
 
BLKMOV dauert nicht länger als der eine Aufruf. Die Anweisung nach BLKMOV wird erst bearbeitet wenn BLKMOV fertig ist. So wie eine MOVE-Anweisung, halt nur für einen größeren Speicherbereich.

BLKMOV kann man so oft aufrufen wie man will, auch für die selben Quell- oder Ziel-Speicherbereiche. Das ganze wird nur begrenzt durch die Zykluszeitüberwachung (und Ausführungsfehler, z.B. Ziel-/Quell-Speicheradressen gibt es nicht).

Harald
 
Zurück
Oben