-> Hier kostenlos registrieren
Hi, ich habe ein Problem.
Ich würde gerne den Inhalt eines Any- Pointers auslesen. Dazu habe ich hier ein Beispielprogramm in SCL gefunden, welches ich ein wenig umgeschrieben habe.
Dieser Baustein gibt mir alle relavanten Werte aus.
Leider brauche ich denselben Baustein in AWL.
Gekommen bin ich bis dahin.
Dazu hab ich mir dieses FAQ durchgelesen.
Mein Problem ist jetzt aber, dass der Baustein in AWL andere Werte ausgibt, wie der in SCL. Siehe dazu die angfügte Grafik. Oben in AWL, unten in SCL.

Könnte es sein, dass ich in dem Stück Code das MSB und LSB vertauschen muss?
Die ID wäre dann aber auch 00 und nicht wie erwartet 10.
Weiterhin steht in Whatever der Hinweis auf den DB Zugriff nicht im erwarteten Format, was mach ich da verkehrt?
Vielen Dank
Ich würde gerne den Inhalt eines Any- Pointers auslesen. Dazu habe ich hier ein Beispielprogramm in SCL gefunden, welches ich ein wenig umgeschrieben habe.
Code:
FUNCTION FC3 : VOID
VAR_INPUT
QANY :ANY;
END_VAR
VAR_OUTPUT
ID :BYTE;
Typ :BYTE;
Laenge :WORD;
DB_NUm :WORD;
WHatever :DWORD;
END_VAR
VAR_TEMP
Pointer_In : STRUCT
Any_id: BYTE;
Datatype :BYTE;
Length :WORD;
DB_Num :WORD;
Byte_Pointer :DWORD;
END_STRUCT;
pAny AT Pointer_In: ANY;
END_VAR
BEGIN
pAny := QANY;
ID := Pointer_In.Any_id;
Typ := Pointer_In.Datatype;
Laenge := Pointer_In.Length;
DB_NUm := Pointer_In.DB_Num;
Whatever := Pointer_In.Byte_Pointer;
END_FUNCTION
Dieser Baustein gibt mir alle relavanten Werte aus.
Leider brauche ich denselben Baustein in AWL.
Gekommen bin ich bis dahin.
Code:
FUNCTION FC2 : VOID
TITLE =
VERSION : 0.0
VAR_INPUT
QANY : ANY ;
END_VAR
VAR_OUTPUT
oID_1 : BYTE ;
oDatentyp_1 : BYTE ;
oBereichslaenge_1 : WORD ;
oDB_Nummer_1 : WORD ;
oWhatever_1 : DWORD ;
END_VAR
VAR_TEMP
ID : BYTE ;
Datentyp : BYTE ;
Bereichslaenge : WORD ;
DB_Nummer : WORD ;
Whatever : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##QANY;
LAR1 ;
L W [AR1,P#0.0];
T #ID;
T #oID_1;
L W [AR1,P#1.0];
T #Datentyp;
T #oDatentyp_1;
L W [AR1,P#2.0];
T #Bereichslaenge;
T #oBereichslaenge_1;
L W [AR1,P#4.0];
T #DB_Nummer;
T #oDB_Nummer_1;
L W [AR1,P#6.0];
T #Whatever;
T #oWhatever_1;
END_FUNCTION
Dazu hab ich mir dieses FAQ durchgelesen.
Mein Problem ist jetzt aber, dass der Baustein in AWL andere Werte ausgibt, wie der in SCL. Siehe dazu die angfügte Grafik. Oben in AWL, unten in SCL.

Könnte es sein, dass ich in dem Stück Code das MSB und LSB vertauschen muss?
Code:
L W [AR1,P#[COLOR=#ff0000]1[/COLOR].0];
T #ID;
T #oID_1;
L W [AR1,P#[COLOR=#ff0000]0[/COLOR].0];
T #Datentyp;
T #oDatentyp_1;
Weiterhin steht in Whatever der Hinweis auf den DB Zugriff nicht im erwarteten Format, was mach ich da verkehrt?
Vielen Dank