大家好,我在FOR循环中使用了CASE函数,但是不知道为什么执行仿真的时候竟然出现奇异的现象,走到step为2后不执行了,这是怎么回事?在step为1的时候是能正常执行的。
FOR #index := 1 TO 6 BY 1 DO
IF #in_option[#index] THEN
#step := 1;
CASE #step OF
0: ;
1: #time_delay_1[#index].TON(IN := true,
PT := #delay_set[#index]);
IF #time_delay_1[#index].Q THEN
#step := #step + 1;
END_IF;
2:
#time_delay_1[#index].TON(IN := FALSE,
PT := #delay_set[#index]);
#time_running_1[#index].TON(IN := TRUE,
PT := #running_set[#index]);
#out_result[#index] := 1;
IF #time_running_1[#index].Q THEN
#out_result[#index] := 0;
#step := #step + 1;
END_IF;
3: #step := 0;
#time_running_1[#index].TON(IN := false,
PT := #running_set[#index]);
END_CASE;
ELSE
#time_running_1[#index].TON(IN := false,
PT := #running_set[#index]);
#time_delay_1[#index].TON(IN := FALSE,
PT := #delay_set[#index]);
#out_result[#index] := 0;
END_IF;
END_FOR;