BLKMOV in FB mit variabler Ansteuerung

Knut333

Level-1
Beiträge
71
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
bei meiner Suche bin ich leider auf keine passende Lösung gestossen.
Ich möchte einen Datenbereich (als UDT im DB enthalten) aus DBx auf einen Bereich im gleichen DB speichern, der mit dem gleichen UDT angelegt ist. Die Startadresse der ersten Struktur übergebe ich als ANY an den FB. Jetzt möchte ich diese Struktur mit einem BLKMOV auf einen vorher angewählten Platz in dem DB speichern.
Der DB ist folgendermassen angelegt:
DB.Header. .............. diverse Daten, die Formatunabhängig sind
DB.FormatAktuell ...... aktuell gewählter Datensatz
DB.Format1 ............. Speicherplatz 1
.
.
.
DB:Formatn Speicherplatz n

Die Länge der Struktur kann von Maschine zu Maschine unterschiedlich sein, daher möchte ich keine festen Adressen verwenden, sondern das Ganze über Zeiger verwalten.
Ich weiss, daß ich beim ANY die einzelnen Bereiche selbst beschreiben kann, aber wie muß ich das dann an den BLKMOV schreiben? Im FB kann ich leider keine Pointer an den BLKMOV schreiben. Oder habe ich dafür die falsche Funktion ausgesucht?
Hat jemand ein paar gute Tips, die mir weiterhelfen können?

Knut
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich wollte nicht wirklich wissen, wie ich einen Zeiger an einen BLKMOV schreibe, sondern wie ich den Aufruf aus einem FB mache mit veränderlichen Zieladressen, bei möglichen unterschiedlichen Strukturlängen. Vielleicht habe ich das nicht deutlich genug geschrieben. Aber ich bin jetzt bei der alten Tante Siemens auf etwas gestossen, wie man einen ANY im Deklarationsteil erzeugt, der nicht auf die IN-Schnittstelle beschränkt ist. Trotzdem Vielen Dank und noch weiterhin viel Spaß bei euren lustigen Antworten.
 
Ich wollte nicht wirklich wissen, wie ich einen Zeiger an einen BLKMOV schreibe, sondern wie ich den Aufruf aus einem FB mache mit veränderlichen Zieladressen, bei möglichen unterschiedlichen Strukturlängen. Vielleicht habe ich das nicht deutlich genug geschrieben. Aber ich bin jetzt bei der alten Tante Siemens auf etwas gestossen, wie man einen ANY im Deklarationsteil erzeugt, der nicht auf die IN-Schnittstelle beschränkt ist. Trotzdem Vielen Dank und noch weiterhin viel Spaß bei euren lustigen Antworten.

:confused: du kannst doch den ANY entsprechend deiner vorgaben - und die können gerne auch variabel sein - zusammen basteln ... versteh das gezicke nich
 
Ich habe verzweifelt im Deklarationsteil nach einer Möglichkeit gesucht, im STAT-Bereich einen ANY zu erzeugen. Das man das im TEMP-Bereich machen muß, auf die Idee wäre ich gar nicht gekommen. Und zu dem Gezicke: Meine Fragestellung in der Threaderöffnung zielte nicht auf einen Anfängerkurs im einfachen Beschalten eines BLKMOV mit einem Zeiger hin, deshalb war ich ob der Antworten ein wenig ungehalten. Falls sich jetzt hier jemand auf den Schlips getreten fühlt, so solle er versichert sein, daß dies nicht meinen Intentionen entsprach. :rolleyes:
 
@Knut:
Was soll es denn jetzt nun werden ...?
Ich verstehe im Zusammenhang mit den schon gekommenen Antworten nun die Eingangsfrage nicht mehr ...

Gruß
LL

Sorry für den ganzen Spam, aber mein Problem hat sich dadurch erledigt, daß ich mir im FB einen ANY im TEMP-Bereich deklariert habe und den auf den BLKMOV schreibe. Also ist das Thema als erledigt anzusehen.
Oder um es mit den Worten von VL zu sagen: ... man muß nur lesen können!
 
eine anmerkung vielleicht noch ...

wenn du den ANY-Zeiger über mehrere Zyklen speichern willst, also in deinem IDB ablegen willst, so leg dir ein Struct mit 5 worten, oder noch detailierter, im STAT an und kopier das vor der benutzung einfach auf deinen TEMP ANY-Zeiger ... (UDT wäre auch schön, denn der ANY hat ja immer den selben aufbau)

hat den vorteil, dass du die elemente deines ANY qualifiziert benennen kannst
 
Zuviel Werbung?
-> Hier kostenlos registrieren
eine anmerkung vielleicht noch ...

wenn du den ANY-Zeiger über mehrere Zyklen speichern willst, also in deinem IDB ablegen willst, so leg dir ein Struct mit 5 worten, oder noch detailierter, im STAT an und kopier das vor der benutzung einfach auf deinen TEMP ANY-Zeiger ... (UDT wäre auch schön, denn der ANY hat ja immer den selben aufbau)

hat den vorteil, dass du die elemente deines ANY qualifiziert benennen kannst

Habe ich schon gemacht, aber weil ich den ANY mit unterschiedlichen Daten füttere und das immer nur zum Zeitpunkt der Ausführung des BLKMOV benötige, habe ich das wieder rausgeschmissen (weil ich es gerne kompakt und übersichtlich habe).

Knut
 
naja, manchmal will man halt nachher noch wissen, wo man überhaupt hinkopiert hat ... aber ne schlanke funktion ist auch ok ... noch schlanker wäre, auf BLKMOV zu verzichten und in ner schleife doppelwortweise zu kopieren - also wenn der zu kopierende bereich nicht zu groß ist
 
Zurück
Oben