owen.png
Что еще я забыл сделать ?
Проверил, TON1.PT нельзя сравнивать, а входную переменную можно, вот скрин 1 Присвоение в ФБ.jpg Помню, что уже делал подобное
И так ещёКод: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
Последний раз редактировалось kondor3000; 29.09.2023 в 10:42.
вот так не работает
вот так :Код: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
получим owen.pngКод: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 не работает