根据表中功能设计出相应的程序;其中m0~m2表示按钮,Y0~Y7表示灯,有四种模式;
方式一:
IF M8002 = 1 THEN
D0 :=1 ;
END_IF;
INCP(M0,D0);
DECP(M1,D0);
IF D0=0 OR M2 =1 THEN
Y0 := 0;
Y1 := 0;
Y2 := 0;
Y3 := 0;
Y4 := 0;
Y5 := 0;
Y6 := 0;
Y7 := 0;
END_IF;
IF D0=1 THEN
Y0 := 1;
Y1 := 1;
Y2 := 1;
Y3 := 1;
Y4 := 0;
Y5 := 0;
Y6 := 0;
Y7 := 0;
END_IF;
IF D0=2 THEN
Y0 := 0;
Y1 := 0;
Y2 := 0;
Y3 := 0;
Y4 := 1;
Y5 := 1;
Y6 := 1;
Y7 := 1;
END_IF;
IF D0=3 THEN
Y0 := 1;
Y1 := 0;
Y2 := 1;
Y3 := 0;
Y4 := 1;
Y5 := 0;
Y6 := 1;
Y7 := 0;
END_IF;
IF D0=4 THEN
Y0 := 1;
Y1 := 1;
Y2 := 1;
Y3 := 1;
Y4 := 1;
Y5 := 1;
Y6 := 1;
Y7 := 1;
M3 := 1;
END_IF;
OUT_T(M3,TC0,20);
IF TS0 = 1 THEN
M3 := 0;
D0 :=0;
M4 := 1;
END_IF;
OUT_T(M4,TC1,20);
IF TS1 = 1 THEN
M3 := 1;
D0 :=4;
M4 := 0;
END_IF;
D2 := TN0;
D3 := TN1;
方式二:
IF LDP( 1, M0 ) THEN
D0 := D0+1;
END_IF;
IF LDP( 1, M1 ) THEN
D0 := D0-1;
END_IF;
IF D0 = 5 THEN
D0 :=0;
END_IF;
IF D0=-1 THEN
D0 := 4;
END_IF;
IF M2 =1 THEN
D0 := 0;
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? );
CASE ?ANY_INT? OF
?值1? :
?执行语句? ;
?值2? :
?执行语句? ;
?值3? :
?执行语句? ;
ELSE
?执行语句? ;
END_CASE;
M8011、M8012、M8013、M8014都是时钟脉冲特殊辅助继电器,周期分别为10ms、100ms、1s、1min,例如M8011为5ms=1、5ms=0;
注意:
M8002、M8012、M8013是在FX系列中使用的,而在Q系列中M8013、M8012等是不起作用的。
程序尝试用组合位元件k2y0 := 0代替y0 :=0 ...y7:=0奈何仿真不给力;只能作罢;如有好的方式请私信;
现象:
模式一:
模式二:
模式三:
模式四:
这个闪烁一定要记住,找工作面试官经常问灯闪烁,用M8011等时钟脉冲特殊辅助继电器是最快的解决方法;
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;