FUNCTION_BLOCK FB_MIN
VAR_INPUT
WERT1, WERT2, WERT3, WERT4, WERT5, WERT6 : REAL;
END_VAR
VAR_OUTPUT
BIN_WERT1, BIN_WERT2, BIN_WERT3, BIN_WERT4, BIN_WERT5, BIN_WERT6 : BOOL;
minVal : REAL;
END_VAR
VAR
i : INT;
ptrMin, ptrAct : POINTER TO REAL;
ptrOutMin, ptrOutAct : POINTER TO BOOL;
END_VAR
VAR CONSTANT
ANZAHL : INT := 6;
END_VAR
(*****************************************)
ptrMin := ADR(WERT1);
ptrAct := ptrMin;
ptrOutMin := ADR(BIN_WERT1);
ptrOutAct := ptrOutMin;
ptrOutMin^ := TRUE;
FOR i := 2 TO ANZAHL DO
ptrAct := ptrAct + SIZEOF(ptrAct^);
ptrOutAct := ptrOutAct + SIZEOF(ptrOutAct^);
IF ptrAct^ < ptrMin^ THEN
ptrMin := ptrAct;
ptrOutMin^ := FALSE;
ptrOutMin := ptrOutAct;
ptrOutMin^ := TRUE;
ELSE
ptrOutAct^ := FALSE;
END_IF
END_FOR
minVal := ptrMin^ ; (* Min-Wert ausgeben *)