入门,从一个按钮和灯开始学PLC吧!(三)

#用一个基本的逻辑条件,探索PLC的编程技巧#

前言:

续上,有些灯的控制逻辑上是连续的,即通过旋钮来调节灯的亮暗程度,在硬件电路中,可以通过改变灯的电压来实现,比如滑动变阻器,或者模拟量电压模块等等,实际上都是数模信号的转换,以下我们用CODESYS的编程软件仿真模拟下吧。

按钮和灯3

案例3(连续亮灭灯):

1.设计需求

用PLC写一个程序,一个自复位按钮,按下保持时,灯逐步变亮,直至全亮,再次按下时,灯逐步变灭,循环往复;

2.问题思考:

接上,在阶段式亮灭灯的条件下,我们只需要改变亮灯的赋值计数方式,即可实现颜色的模拟连续信号。除此之外,对比之前的程序,你能看到有哪些不同吗?让我们来看下代码吧。

3.程序代码

modeSeclectStr:='一个自复位按钮,按下保持时,灯逐步变亮,直至全亮,再次按下时,灯逐步变灭,循环往复';
     CASE modeNo[modeSeclect] OF
	      0://步序
		  modeNoStr:='使用方法-步序';	  
		  GVL.lightColor.B[0]:=16#00;//红色
		  GVL.lightColor.B[1]:=16#FF;//绿色
		  GVL.lightColor.B[2]:=16#00;//黄色
		  GVL.lightColor.B[3]:=TO_BYTE(ColorTP);//透明	       
		  color:=GVL.lightColor.D;//转整数          	  
		  IF buttonR.Q THEN
			 //初始化
             IF step=0 THEN
		        step:=10;
			 END_IF;
		  END_IF;
		  CASE step OF
			  10://变亮
			   IF GVL.button THEN
				   colorTP:=colorTP+10;//颜色累加
			   ELSE
				   step:=20;
			   END_IF;
			   IF colorTP>=255 THEN
				  colorTP:=255;				  				  
			   END_IF;
               20:
               IF buttonR.Q THEN
				  step:=30;
			   END_IF
	   
			   30://变暗
			   IF GVL.button THEN
				   colorTP:=colorTP-10;//颜色递减
			   ELSE
				   step:=0;
			   END_IF;
			   IF colorTP<=0  THEN
				  colorTP:=0;
			   END_IF;			   
		  END_CASE;	

如上所示,实际上,我们在步序中,对按钮进行了处理,因为是连续信号,我们要保持按钮的接通,以便计数。同时,当按钮断开后,再次按下时,进入变亮或变暗的步序,这样就实现了一个按钮控制灯模拟式亮暗。

#写在最后#

通过一个简单的按钮和灯这样的案例,我们也能发掘出不一样的学习点,当然,如果你有更好的方式,可以在评论区多多发表,我们一起交流学习,谢谢!

下载链接:

https://download.youkuaiyun.com/download/weixin_44166380/89886866icon-default.png?t=O83Ahttps://download.youkuaiyun.com/download/weixin_44166380/89886866

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值