Adresse im Instanzdatenbaustein ermitteln

hubiwahn

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

für eine variable Programmierung wäre es für mich vorteilhaft, wenn ich die Adresse einer UDT Variable in einem Instanzdatenbaustein ermitteln könnte. D.h. z.B. ich bräuchte den zeiger, der gerade geladenen Variabel.

L #Ziel_DW.StrNr
--> Welche Adresse im DI :confused:

Ich möchte damit einen definierten Bereich von DBx.DBWy nach DBx.DBW#Ziel_DW kopieren. Wobei ich bei einer Änderung des DI´s diese Programmierung NICHT ändern muss.

L W#16#1002 // init ANY Pointer
T LW 0
T LW 10
L #Status_Laenge
T LW 2
T LW 12
L #Ltg_DB
T LW 4
L #Prg_DB
T LW 14
L #DW1_Ltg_DB
SLD 3
T LD 6

L #Ziel_DW :confused: // Variable Programmierung
SLD 3
T LD 16

L 2#10000100 // Bereichübergreifender Zeiger im DBX
T LB 6
T LB 16

CALL SFC 20 // copy data
SRCBLK :=#Sorce
RET_VAL:=#Return
DSTBLK :=#Dest



Hubertus
 
Nur mal zum überlegen, hab grad keine Möglichkeit zum probieren.
Schau doch mal im AR1 nach, was dort drinsteht, nachdem
L #Ziel_DW.StrNr
ausgeführt wurde.
Falls es ein Multizinstanz-FB ist, brauchst du auch noch AR2, das enthält den Offset zu den Daten.

Versuch auch mal folgendes:
L P##Ziel_DW, das sollt doch dann der Pointer auf die UDT sein, oder?
Die Strucktur der UDT ist dir ja bekannt, mit dem Pointer kannst du dann weiterrechnen.

Eine andere Möglichkeit wäre, nicht eine UDT zu übergeben, sondern DB-Nummer, Datenwort-Nummer und z.Bsp. Bereichslänge.
 
Schau doch mal im AR1 nach, was dort drinsteht, nachdem
L #Ziel_DW.StrNr
ausgeführt wurde.

Leider nicht´s zugehöriges!

Versuch auch mal folgendes:
L P##Ziel_DW, das sollt doch dann der Pointer auf die UDT sein, oder?

Bringt einen leider auch nicht weiter.

Eine andere Möglichkeit wäre, nicht eine UDT zu übergeben, sondern DB-Nummer, Datenwort-Nummer und z.Bsp. Bereichslänge.

Dann bin ich ja wieder fest an die Struktur gebunden. Ist bis lang allerdings auch meine Not-Lösung

Hubertus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo versuchs doch mal hiermit:

LAR1 P#Dein_Anyzeiger
L w#16#1002
t Lw[ar1,p#0.0]
L #Anzahl_Byte
t Lw[ar1,p#2.0]
L #Quell_DB
t Lw[ar1,p#4.0]
l p#DBB0.0
t LD[AR1,p#6.0]

Bei Multiinstanzfähigen Bausteinen:

Tar2
UD Dw#00ff_ffff
Lar1 P#Dein_Anyzeiger
+AR1
......


Hoffe es hilft dir weiter.
 
Zuletzt bearbeitet:
Zurück
Oben