У меня как-то так получилось и даже, вроде, работает
Код: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


Ответить с цитированием
