-> Hier kostenlos registrieren
Mein Problem ist folgendes:
Ein sehr speicheraufwendiger FB, der aus einer Reihe von folgenden Anweisungen besteht:
CALL "R_STRNG" IN :="data_in".real1
RET_VAL:="zw".realwert
CALL "BLKMOV"
SRCBLK :=P#DB120.DBX45.0 BYTE 21
RET_VAL:=MW3
DSTBLK :="data".wert_array1
CALL "R_STRNG"
IN :="data_in".real2
RET_VAL:="zw".realwert
CALL "BLKMOV"
SRCBLK :=P#DB120.DBX45.0 BYTE 21
RET_VAL:=MW3
DSTBLK :="data".wert_array2
usw. muss aus Speichergründen geändert werden.
Die Anweisungen werden ca. 30 mal ausgeführt.
Dabei werden die Werte als Real eingelesen, in einen String konvertiert, der Stringkopf entfernt und in ein Array of Char gespeichert.
Wenn ich nun das ganze auf Pointern basierend mache, müsste ich eine Menge Speicher sparen, oder?
Nur wie kann ich den SFC BLKMOV mit einem Pointer als Ausgabegröße versorgen, um das ganze nicht Byte für Byte verschieben zu müssen?
Ein sehr speicheraufwendiger FB, der aus einer Reihe von folgenden Anweisungen besteht:
CALL "R_STRNG" IN :="data_in".real1
RET_VAL:="zw".realwert
CALL "BLKMOV"
SRCBLK :=P#DB120.DBX45.0 BYTE 21
RET_VAL:=MW3
DSTBLK :="data".wert_array1
CALL "R_STRNG"
IN :="data_in".real2
RET_VAL:="zw".realwert
CALL "BLKMOV"
SRCBLK :=P#DB120.DBX45.0 BYTE 21
RET_VAL:=MW3
DSTBLK :="data".wert_array2
usw. muss aus Speichergründen geändert werden.
Die Anweisungen werden ca. 30 mal ausgeführt.
Dabei werden die Werte als Real eingelesen, in einen String konvertiert, der Stringkopf entfernt und in ein Array of Char gespeichert.
Wenn ich nun das ganze auf Pointern basierend mache, müsste ich eine Menge Speicher sparen, oder?
Nur wie kann ich den SFC BLKMOV mit einem Pointer als Ausgabegröße versorgen, um das ganze nicht Byte für Byte verschieben zu müssen?