根据表中功能设计出相应的程序;其中m0、m2表示按钮,Y0~Y7表示灯,有四种模式,启动后自动切换;
方式一
IF M0=1 THEN
D0 := 1;
END_IF;
IF M2=1 THEN
D0 :=0;
END_IF;
OUT_T(D0=1,TC0,50);
IF TS0=1 THEN
D0:=2;
END_IF;
OUT_T(D0=2,TC1,50);
IF TS1 = 1 THEN
D0:=3;
END_IF;
OUT_T(D0=3,TC2,50);
IF TS2 = 1 THEN
D0:=4;
END_IF;
OUT_T(D0=4,TC3,50);
IF TS3 = 1 THEN
D0:=1;
END_IF;
CASE D0 OF
0:
Y0:=0;Y1:=0;Y2:=0;Y3:=0;Y4:=0;Y5:=0;Y6:=0;Y7:=0;
1:
Y0:=0;Y1:=0;Y2:=0;Y3:=0;Y4:=1;Y5:=1;Y6:=1;Y7:=1;
2:
Y0:=1;Y1:=1;Y2:=1;Y3:=1;Y4:=0;Y5:=0;Y6:=0;Y7:=0;
3:
Y0:=0;Y1:=1;Y2:=0;Y3:=1;Y4:=0;Y5:=1;Y6:=0;Y7:=1;
ELSE
IF M8013 = 1 THEN
Y0:=0;Y1:=0;Y2:=0;Y3:=0;Y4:=0;Y5:=0;Y6:=0;Y7:=0;
ELSE
Y0:=1;Y1:=1;Y2:=1;Y3:=1;Y4:=1;Y5:=1;Y6:=1;Y7:=1;
END_IF;
END_CASE;
IF ?条件式? THEN
?执行语句? ;
ELSE
?执行语句? ;
END_IF;
OUT_T( ?BOOL_EN? , ?BOOL_TCoil? , ?ANY16_TValue? ); //定时器使用
使能位(D0=1) 定时器 (TS0) 定时时间(50)
CASE ?ANY_INT? OF //类似C语言中的switch函数
?值1? :
?执行语句? ;
?值2? :
?执行语句? ;
?值3? :
?执行语句? ;
ELSE
?执行语句? ;
END_CASE;
M8013讲解见 ST语言——例题1
方式二
IF M0=1 THEN
D0 :=1;
END_IF;
IF M2=1 THEN
D0:=0;
END_IF;
OUT_T( D0>0 AND NOT TS0,TC0,50);
IF LDP(1,TS0) THEN
D0 := D0+1;
END_IF;
IF D0=5 THEN
D0:=1;
END_IF;
CASE D0 OF
0:
Y0:=0;Y1:=0;Y2:=0;Y3:=0;Y4:=0;Y5:=0;Y6:=0;Y7:=0;
1:
Y0:=0;Y1:=0;Y2:=0;Y3:=0;Y4:=1;Y5:=1;Y6:=1;Y7:=1;
2:
Y0:=1;Y1:=1;Y2:=1;Y3:=1;Y4:=0;Y5:=0;Y6:=0;Y7:=0;
3:
Y0:=0;Y1:=1;Y2:=0;Y3:=1;Y4:=0;Y5:=1;Y6:=0;Y7:=1;
ELSE
IF M8013 = 1 THEN
Y0:=0;Y1:=0;Y2:=0;Y3:=0;Y4:=0;Y5:=0;Y6:=0;Y7:=0;
ELSE
Y0:=1;Y1:=1;Y2:=1;Y3:=1;Y4:=1;Y5:=1;Y6:=1;Y7:=1;
END_IF;
END_CASE;
LDP( ?BOOL_EN? , ?BOOL_s? ); //上升沿检测
使能位(1) 检测对象(TS0)
现象
模式一现象:
模式二现象:
模式三现象:
模式四现象:
2023.11.5