#用一个基本的逻辑条件,探索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;
如上所示,实际上,我们在步序中,对按钮进行了处理,因为是连续信号,我们要保持按钮的接通,以便计数。同时,当按钮断开后,再次按下时,进入变亮或变暗的步序,这样就实现了一个按钮控制灯模拟式亮暗。
#写在最后#
通过一个简单的按钮和灯这样的案例,我们也能发掘出不一样的学习点,当然,如果你有更好的方式,可以在评论区多多发表,我们一起交流学习,谢谢!
下载链接:
1901

被折叠的 条评论
为什么被折叠?



