-> Hier kostenlos registrieren
ich komme nicht dahinter warum bei so einfachen umwandlungen das ok bit kippt. hat da jemand eine idee?
Code:
VAR_TEMP
RET_V: INT;
i: INT;
dw: DWORD;
ANY1: ANY;
sAny1 AT ANY1: STRUCT
S7BYTE :BYTE; // Byte 0 Reserviert für S7 (10h)
DatTyp :BYTE; // Byte 1 Datentyp *1
Anzahl :INT; // Byte 2+3 Länge der Variablen
DBNR :INT; // Byte 4+5 DB-Nummer
Zeiger :DWORD; // Byte 6+7+8+9 Bereichszeiger_DW OR Adressword_DW (ShiftLinks 3)
END_STRUCT;
END_VAR
BEGIN
//Init
//----------------------------------------------------------------------------------------
OK := TRUE; RET_V := 0; //Fehlerausgabe
//----------------------------------------------------------------------------------------
//Programm
//----------------------------------------------------------------------------------------
//i := DWORD_TO_INT(SHR(IN:= sAny1.Zeiger, N:= 3)); //OK-FEHLER
OK:=OK;
dw := sAny1.Zeiger;
OK:=OK;
dw := SHR(IN:= dw, N:= 3);
OK:=OK;
//i := DWORD_TO_INT(dw); //OK-FEHLER
i := WORD_TO_INT(DWORD_TO_WORD(dw)); //auch OK-FEHLER
OK:=OK;
//END ------------------------------------------------------------------------------------
IF RET_V <> 0 OR NOT OK THEN
UDF_RWo_Template := TRUE;
ELSE
UDF_RWo_Template := FALSE;
END_IF;
OK:=TRUE;
END_FUNCTION