如果要按你的输入顺序来亮灯的话,是不是得有一个中间插入和删除的功能?如果有插入和删除的功能,你必有一个现行点的选择,现行点的延时,所以我认为你是简单的开关某个点而已,代码如下,
CASE step1 OF
0 : (*初始化 & 等待启动*)
step2 := 0;
temptime := 0;
ZRST( TRUE , Y0 , Y7 );
IF start THEN
step1 := step1+1;
END_IF
;
1:(*点亮输出*)
输出[step2] := 条件[step2];
IF 条件[step2] THEN
INC( M8013 , temptime );
IF temptime >= stime[step2] THEN
输出[step2] := FALSE;
step1 := step1+1;
END_IF;
ELSE
输出[step2] := FALSE;
step1 := step1+1;
END_IF;
;
2:(*复位计时器 & 程序指针+1 & 判断指针大小*)
temptime := 0;
step2 := step2+1;
IF NOT (stoping) THEN
IF step2 <= 7 THEN
step1 := 1;
ELSE
step2 := 0;
step1 := 1;
END_IF;
ELSE
start := FALSE;
stoping := FALSE;
step2 := 0;
END_IF
;
END_CASE ;