Что сделал - молодец. Касаемо ТР, так КДС2 - брат ТР5.5
Чисто для справки :
Необходимо чтобы при включении питания сработал таймер включающий функцию отдувки на заданное время.
По окончании данного цикла, включилась левая сторона, по окончании работы левой стороны включился цикл отдувки, затем правая сторона и т.д. (главное чтобы после каждого цикла отдувки включались разные стороныНемного громоздко - но на порядок читаемей и модифицируемей. А после свернуть в трубочку можно что угодно.Код:var_input питание : bool; ... end_var var_output выход_влево, //выходы для примера выход_вправо, выход_отдувалки : bool; end_var var шаг : (нету_питания, отдув_перед_вправо, вправо, отдув_перед_влево, влево); t : ton; end_var ------------ if нет питание then шаг := нету_питания; end_if case шаг of нету_питания: if питание then t(in := false); шаг := отдув_перед_вправо; end_if отдув_перед_вправо: t(in:=true, pt := ...); //время хоть для каждого шага свое if t.q then t(in := false); шаг := вправо; end_if вправо: t(in:=true, pt := ...); if t.q then t(in := false); шаг := отдув_перед_влево; end_if отдув_перед_влево: t(in:=true, pt := ...); if t.q then t(in := false); шаг := влево; end_if вправо: t(in:=true, pt := ...); if t.q then t(in := false); шаг := отдув_перед_вправо; end_if end_case //по автомату - выставляем выходы, например выход_вправо := шаг = вправо; выход_влево := шаг = влево; выход_отдувалки := шаг = отдув_перед_вправо or шаг = отдув_перед_влево;
Например вышеизложенное - с той же автоматной логикой :
Код:t(in := питание, pt := mux(шаг, t#0s, .....)); if нет питание then шаг := нету_питания; end_if if t.q then //вот тут весь кейс t(in := false); шаг := mux(шаг, отдув_перед_вправо, вправо, отдув_перед_влево, влево, отдув_перед_вправо); end_if ... //установка выходов




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