У меня для 5 агрегатов в Owen Logic так получилось
В OwenLogic нет возможности передать время, поэтому в ФБ передаётся целое число с последующим преобразованием в тип time, из-за выбора единиц измерения входной переменной в секундах, домножаю на 1000.
bEnable - это для назначения всех выходов в выключенное состояние - например, при аварийном останове или на период инициализации после подачи питания.
Код:
FUNCTION_BLOCK NotAllAtOnce5_

    VAR_INPUT
        bEnable: BOOL;
        bRequest1: BOOL;
        bRequest2: BOOL;
        bRequest3: BOOL;
        bRequest4: BOOL;
        bRequest5: BOOL;
        nDelay_s: UDINT;
    END_VAR

    VAR_OUTPUT
        bStart1: BOOL;
        bStart2: BOOL;
        bStart3: BOOL;
        bStart4: BOOL;
        bStart5: BOOL;
    END_VAR

    VAR
        tDelay: TIME;

        bStartPrevious1: BOOL;
        bStartPrevious2: BOOL;
        bStartPrevious3: BOOL;
        bStartPrevious4: BOOL;
        bStartPrevious5: BOOL;

        tpPause: SYS.TP;

        bSwitchEn: BOOL; // разрешение изменить состояние

    END_VAR

    // преобразование типа и пересчёт значения в [с]
    tDelay := UDINT_TO_TIME(nDelay_s * 1000);
    // ограничение минимального значения
    IF tDelay < T#1s THEN
        tDelay := T#1s;
    END_IF
    // присвоение таймеру для уменьшения параметров в следующих вызовах
    tpPause(T := tDelay);

    IF bEnable THEN
        // обработка для агрегата 1
        bSwitchEn := NOT(tpPause.Q) AND (bRequest1 <> bStart1);
        IF bSwitchEn THEN
            bStart1 := bRequest1;
        END_IF
        tpPause(I := bSwitchEn); // обновление значения выхода таймера для следующего обработчика

        // обработка для агрегата 2
        bSwitchEn := NOT(tpPause.Q) AND (bRequest2 <> bStart2);
        IF bSwitchEn THEN
            bStart2 := bRequest2;
        END_IF
        tpPause(I := bSwitchEn); // обновление значения выхода таймера для следующего обработчика

        // обработка для агрегата 3
        bSwitchEn := NOT(tpPause.Q) AND (bRequest3 <> bStart3);
        IF bSwitchEn THEN
            bStart3 := bRequest3;
        END_IF
        tpPause(I := bSwitchEn); // обновление значения выхода таймера для следующего обработчика

        // обработка для агрегата 4
        bSwitchEn := NOT(tpPause.Q) AND (bRequest4 <> bStart4);
        IF bSwitchEn THEN
            bStart4 := bRequest4;
        END_IF
        tpPause(I := bSwitchEn); // обновление значения выхода таймера для следующего обработчика

        // обработка для агрегата 5
        bSwitchEn := NOT(tpPause.Q) AND (bRequest5 <> bStart5);
        IF bSwitchEn THEN
            bStart5 := bRequest5;
        END_IF
        tpPause(I := bSwitchEn); // обновление значения выхода таймера для следующего обработчика
    ELSE
        // отсчёт от момента выключения, для паузы при быстром переключении bEnable
        tpPause(I := bStart1 OR bStart2 OR bStart3 OR bStart4 OR bStart5);
        // выключить все агрегаты
        bStart1 := FALSE;
        bStart2 := FALSE;
        bStart3 := FALSE;
        bStart4 := FALSE;
        bStart5 := FALSE;
    END_IF
    bStartPrevious1 := bStart1;
    bStartPrevious2 := bStart2;
    bStartPrevious3 := bStart3;
    bStartPrevious4 := bStart4;
    bStartPrevious5 := bStart5;
END_FUNCTION_BLOCK