Hallo allerseits, hallo Thomas!
ist zwar schon länger her, aber . . . . . .
ich würde der fehlerspeicher der einfachheit auf 96 bit erweitern und den code etwas anders gestalten
du kannst das array auch auf [0..5] of word deklarieren und die schleife 5x durchlaufen dann bleiben deine 80bit.
FUNCTION_BLOCK ERROR_LOG
VAR_INPUT
ERR_ACT : ARRAY[0..96] OF BOOL;
END_VAR
VAR_OUTPUT
ERR_OCCUR : BOOL;
END_VAR
VAR
ERR_OLD : ARRAY[0..2] OF DWORD;
ERR_PTR : POINTER TO ARRAY[0..2] OF DWORD;
END_VAR
VAR_TEMP
i : USINT;
END_VAR
----------------------------------------------------------
ERR_PTR := ADR(ERR_ACT);
ERR_OCCUR := FALSE;
FOR i := 0 TO 2 DO
ERR_OCCUR := ERR_OCCUR OR (ERR_OLD[i] <> ERR_PTR^[i]);
ERR_OLD[i] := ERR_PTR^[i];
END_FOR
END_FUNCTION_BLOCK