恭喜,你发布的帖子
发布于 2023-09-06 09:38:47
7楼
没关系的吧,本质上注意 IN 就行,尤其是复位;
// 每个 case 各自使用一个
CASE #s_Step OF
10:
#arrTimer[1].IN := FALSE;
#arrTimer[0].TON(IN := TRUE,
PT := T#10S,
Q => #tmpBool1);
IF #tmpBool1 THEN
#s_Step := 20;
END_IF;
20:
#arrTimer[0].IN := FALSE;
#arrTimer[1].TON(IN := TRUE,
PT := T#20S,
Q => #tmpBool1);
IF #tmpBool1 THEN
#s_Step := 10;
END_IF;
END_CASE;
// 使用单个定时器,注意输出后 IN 的复位
CASE #s_Step OF
10:
#arrTimer[0].TON(IN := TRUE,
PT := T#10S,
Q => #tmpBool1);
IF #tmpBool1 THEN
#s_Step := 20;
#arrTimer[0].IN := FALSE;
END_IF;
20:
#arrTimer[0].TON(IN := TRUE,
PT := T#20S,
Q => #tmpBool1);
IF #tmpBool1 THEN
#s_Step := 10;
#arrTimer[0].IN := FALSE;
END_IF;
END_CASE;
可以,我上次测试估计是仿真时修改程序导致仿真报错后,我关了仿真在启动估计是有问题,仿真不了这个输出结果了。今天再去测试前天的程序是可以计时输出。
请填写推广理由:
分享
只看
楼主