Adresse in SQL auslesen

d-harry

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

Ist es Möglich die Lokale Adresse einer Variablen aus dem Instanzdatenbaustein zugegriffen wird auszulesen?

Ich habe einen Baustein an dem ich seine Startadresse Ausgeben möchte.
 
Hi,

in SQL oder meinst Du SCL?
Beim letzteren würde es über einen ANY Pointer gehen.

Gruß Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, natürlich SCL ;-)

Das mit dem Any Pointer ist mir so nicht klar.

VAR

Toast :Bool;

END_VAR;

wie komme ich jetzt an den Pointer von Toast dran?
 
Zuletzt bearbeitet:
Du deklarierst in den temp variablen einen ANY z.b. tToast.

tToast := Toast;

als Zuweisung im Programm.

Jetzt kann man auf den ANY noch eine zweite sicht legen mittels AT.

Und damit den ANY zerlegen.

Gruß Daniel
 
VAR_TEMP
tToast : ANY;
_Toast At tToast : Struct
Kennung : Byte;
Typ : Byte;
Laenge : Word;
DbNr : Word;
Adresse : DWord;
End_Struct;
End_Var

So ungefähr. Hab grade kein S7 da.

Gruß Daniel
 
Zuletzt bearbeitet:
Hat super geklappt:

FUNCTION_BLOCK FB35
TITLE = 'Test'
VERSION : '1.0'
AUTHOR : Ich
NAME : Startadr
FAMILY : Basic


VAR_INPUT
IO_address : INT;
END_VAR

VAR_OUTPUT
BYTEnummer : INT;
DBnummer : INT;
END_VAR


VAR_TEMP
// temporäre Variablen
tToast : ANY;
_Toast AT tToast : STRUCT
Kennung : BYTE;
Typ : BYTE;
Laenge : WORD;
DbNr : WORD;
Adresse : DWORD;
END_STRUCT;
END_VAR

VAR
// Variablen

END_VAR
(**********************************************************************************************************
Das Programm soll die Startadresse des Aufrufes ausgeben
Basiert auf den Tipp von dalbi
**********************************************************************************************************)

tToast := IO_address;

BYTEnummer := DINT_TO_INT(DWORD_TO_DINT( SHR(IN := SHL(IN := _Toast.Adresse, N:= 13), N:= 16))); // Ausschälen des Startbyte in Integer
DBnummer := WORD_TO_INT(_Toast.DbNr); // DB in Integer


END_FUNCTION_BLOCK
 
Zurück
Oben