Так можно, а если у вас не работает то, читайте
Вы вообще судя по коду даже таймер не вызвали, и РТ не присвоили.
Вид для печати
Вложение 70585
Что еще я забыл сделать ?
Проверил, TON1.PT нельзя сравнивать, а входную переменную можно, вот скрин Вложение 70586 Помню, что уже делал подобное
И так ещёКод:var //объявление локальных переменных
TON1:TON;
end_var
TON1(In:=OnTim, T_z:=T_z, PT:=CurMinute, Q=>Res, ET=>ET);
if CurMinute<>0 then
TON1.PT:=5;
end_if
Код:if ET < CurMinute then
TON1.PT:=5;
end_if
вот так не работает
вот так :Код:case stepTP of
1:
tStepTP(IN := true, PT := 5, sec := sec);
if tStepTP.Q THEN
tStepTP(IN := false);
stepTP := 2;
end_if
(* 2:
tStepTP(IN := true, PT := 10, sec := sec);
if tStepTP.Q THEN
tStepTP(IN := false);
stepTP := 3;
end_if
3:
tStepTP(IN := true, PT := 15, sec := sec);
if tStepTP.Q THEN
tStepTP(IN := false);
stepTP := 4;
end_if
else
;*)
end_case
получим Вложение 70595Код:case stepTP of
1:
tStepTP(IN := true, PT := 5, sec := sec);
if tStepTP.Q THEN
tStepTP(IN := false);
stepTP := 2;
end_if
2:
tStepTP(IN := true, PT := 10, sec := sec);
if tStepTP.Q THEN
tStepTP(IN := false);
stepTP := 3;
end_if
3:
tStepTP(IN := true, PT := 15, sec := sec);
if tStepTP.Q THEN
tStepTP(IN := false);
stepTP := 4;
end_if
else
end_case
вот так
работает только первая ветвь.Цитата:
check_ON(CLK := START);
if check_ON.q then
stepTP := 1;
in := TRUE;
tStepTP.PT := 5;
end_if
if NOT START AND stepTP <> 0 then stepTP := 0;
end_if
tStepTP(IN:= in, sec := sec);
case stepTP of
1:
if tStepTP.Q THEN
in := fALSE;
tStepTP(IN := in);
in := TRUE;
tStepTP.PT := 10;
stepTP := 2;
end_if
2:
if tStepTP.Q THEN
in := fALSE;
tStepTP(IN := in);
in := TRUE;
tStepTP.PT := 15;
stepTP := 3;
end_if
(* 3:
if tStepTP.Q THEN
in := fALSE;
tStepTP(IN := in);
stepTP := 4;
end_if *)
end_case
если раскомментировать"3" - эмулятор выбивает ошибку как в прошлом примере.
Любой вызов fb в теле case не отрабатывает, ну или он вообще не вызывается.
просто сброс/останов таймера через tStepTP(IN := false) в case не работает