У меня как-то так получилось и даже, вроде, работает
Код:
function_block Impuls 

    var_input //объявление входных переменных
       U : bool; 
       Delay : udint; //Длительность задержки импульса, мс
       Imp : udint; //Длительность выходного импульса, мс
    end_var

    var_output //объявление выходных переменных
       Q : bool; 
    end_var

    var //объявление локальных переменных
       CurTime : udint; 
       RTrig : SYS.RTRIG;
       TOF : SYS.TOF;
       MasDel : array[0..9] of udint;
       MasImp : array[0..9] of bool; 
       nWrite, nRead : udint := 0;
       flag : bool;
    end_var

    TOF.T := udint_to_time(Imp);
    CurTime := time_to_udint(get_time());
    RTrig(I := U);
    if RTrig.Q then
        MasDel[nWrite] := CurTime + Delay;
        MasImp[nWrite] := true;
        nWrite := (nWrite + 1) mod 10;
    end_if
    flag := MasImp[nRead] and CurTime >= MasDel[nRead];
    if flag then
        MasImp[nRead] := false;
        nRead := (nRead + 1) mod 10;
    end_if
    TOF(I := flag, Q => Q);

end_function_block