VAR
StartGeblaese : ARRAY[1..6] OF BOOL; // Startanforderungen
RunGeblaese : ARRAY[1..6] OF BOOL; // Gebläse läuft
Startfreigabe : BOOL := TRUE;
StartTimer : TON;
i : INT;
END_VAR
// Timer läuft, wenn Startfreigabe blockiert ist
StartTimer(IN := NOT Startfreigabe, PT := T#60s);
// Wenn Startfreigabe da ist, suche das erste Gebläse, das gestartet werden will
IF Startfreigabe THEN
FOR i := 1 TO 6 DO
IF StartGeblaese[i] AND NOT RunGeblaese[i] THEN
RunGeblaese[i] := TRUE;
Startfreigabe := FALSE;
EXIT; // Nur ein Gebläse pro 60s erlauben
END_IF
END_FOR
END_IF
// Wenn die 60 Sekunden abgelaufen sind, Startfreigabe zurücksetzen
IF StartTimer.Q THEN
Startfreigabe := TRUE;
END_IF