ST语言——例题1

根据表中功能设计出相应的程序;其中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;

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值