Что сделал - молодец. Касаемо ТР, так КДС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
... //установка выходов