PLC课设编程实例:红绿灯控制系统
引言
在自动化控制系统中,PLC(可编程逻辑控制器)是一种广泛应用的工业自动化设备。本篇博客将介绍如何使用PLC编程创建一个简单而实用的红绿灯控制系统。通过这个实例,你将了解PLC编程的基本概念和在实际应用中的运用。
注释:这里我使用的是一种不常用的方法(FB块和SCL语言),梯形图的方法在其他的文章里也有介绍,关注我的其他文章。
主要是梯形图编程的红绿灯过于简单和重复,不容易通过老师的审核;这里采用了新的方法,也方便理解其他的编程,方便资深梯形图的编程者学习新技术,以便工作转型
1. 什么是PLC?
PLC是一种专门设计用于工业自动化和控制系统的电子设备。它通过可编程的方式,根据输入信号的状态来控制输出设备的行为,从而实现对工业过程的精确控制。
2. 编写一个红绿灯控制系统
2.1 编程准备
在开始编写PLC程序之前,我们需要准备以下环境:
- 博途软件
- 能力要求:(需要基本了解博途或者其他编程软件,不然可能难上手)
- 注意:目前主流的PLC编程用的软件有以下几个:1、西门子TIA Portal;2、西门子step7;3、三菱GX works。作者只是使用博途V18版本的
图1 博途V18的编程环境
2.2 红绿灯控制系统设计
我们的目标是创建一个交替显示红绿灯的系统,即绿灯亮3S,黄灯亮3S,红灯亮3S,如此反复。
2.3 PLC编程
在PLC编程中,我们使用类似于 ladder diagram(梯形图)的图形语言。以下是一个简单的PLC程序块,用于实现红绿灯的交替控制:
图2 FB块
在图1中的添加新块中添加FB块;
图3 添加需要的块
双击新增的块,如下图
图4 块的变量命名
先定义变量;
input :输入变量:开关
output:输出变量:绿、黄、红
static:内部变量:A、B、C(A是绿灯标志、B是黄灯标志、C是红灯标志)
编程:PLC中的SCL语言与C语言逻辑类似,学过C语言容易上手
首先用IF语句(可以点击上方的快捷栏的IF)
IF #开关 THEN
;
END_IF;
图5 IF语句
如果开关为真;执行空指令。在IF这里面编写红绿灯的程序。
(将开关的值赋给#A;)
#A := #开关;
定时器,IN := #A是启动开关; PT := T#3S是定时3S后,定时器的输入由0变成1
"T1".TON(IN := #A,
PT := T#3S);
下面的程序是指开关为1时,定时器启动,再用IF语句判断定时器的输出Q: "T1".Q 是真的话,说明已经过去了3S; #绿 := 1;让绿灯亮;
#B := 1; 是让下一个定时器的开关启动
#A := false;是将定时器T1的开关复位;
#红 := 0;是将红灯复位
#A := #开关;
"T1".TON(IN := #A,
PT := T#3S);
IF "T1".Q THEN
#绿 := 1;
#B := 1;
#A := false;
#红 := 0;
END_IF;
由于执行上述程序,令#B等于1;
定时器T2启动
3S后让黄灯亮,绿灯灭,让下一个的定时器T3启动,复位#B;
这样就实现绿灯亮3S后熄灭,黄灯亮
"T2".TON(IN := #B,
PT := T#3S);
IF "T2".Q THEN
#黄 := 1;
#C := 1;
#B := false;
#绿 := 0;
END_IF;
同理,下面程序实现黄灯亮3S后熄灭,红灯灯亮;
"T3".TON(IN := #C,
PT := T#3S);
IF "T3".Q THEN
#红 := 1;
#A := 1;
RESET_TIMER(TIMER := "T1"); //复位
#C := false;
#黄 := 0;
END_IF;
RESET_TIMER(TIMER := "T1"); //复位
注意:复位程序是因为,定时器T1的启动开关读取的是input :输入变量:开关。这是一直是1的;所以需要一个复位程序函数将T1强制复位,这样就可以反复的循环运行了;
这是所有的程序内容
IF #开关 THEN
#A := #开关;
"T1".TON(IN := #A,
PT := T#3S);
IF "T1".Q THEN
#绿 := 1;
#B := 1;
#A := false;
#红 := 0;
END_IF;
"T2".TON(IN := #B,
PT := T#3S);
IF "T2".Q THEN
#黄 := 1;
#C := 1;
#B := false;
#绿 := 0;
END_IF;
"T3".TON(IN := #C,
PT := T#3S);
IF "T3".Q THEN
#红 := 1;
#A := 1;
RESET_TIMER(TIMER := "T1"); //复位
#C := false;
#黄 := 0;
END_IF;
END_IF;
3. 调试和运行
在PLC编程完成后,我们需要将程序下载到PLC控制器中,并进行调试。但是需要注意的是,新建的块需要你选中后拖动到程序中,才会在主程序中(Main)中出现;编译后下载;
开关的值设为1;
通过监视输入和输出信号的状态,我们可以确保程序按预期运行。
注意:这个程序虽然实行了红绿灯的功能,但是有一个小BUG哦!大家可以尝试修改一下;
当然可以!下面是一篇关于PLC编程的博客,主题是编写一个红绿灯的例子。
结论
通过这个简单的红绿灯控制系统实例,我们学到了如何使用PLC编程实现一个基本的工业控制应用。PLC编程是工业自动化中的重要一环,掌握这项技能将使你能够参与更复杂的自动化系统的设计和开发。
希望这篇博客对你理解PLC编程有所帮助。如果你有任何问题或需要进一步的解释,请随时留言。
QQ联系方式:2713338087(添加请备注验证信息:竹字头虫字底)不然有可能不通过
本人也是初学者,重在学习交流,有错误请谅解
Daringcatss: 盲猜测控专业
CSDN-Ada助手: 恭喜您写完了第20篇博客,标题为“单容水箱液位定值控制实验”。我非常欣赏您不断创作的精神,这是一个非常值得庆贺的里程碑!您对水箱液位定值控制的实验进行了深入的研究,文章内容也非常详尽,给读者提供了很多有用的信息。 在下一步的创作中,我建议您可以进一步拓展实验的应用场景,比如在工业自动化中的实际应用,或者与其他控制算法的对比实验等。通过与其他领域的联系,可以使您的博客更加全面且有深度。同时,如果您能加入一些个人的实践经验或者实验结果的探讨,将会更加丰富读者的阅读体验。 再次恭喜您的创作成果,期待您未来更多精彩的博客!祝您继续保持谦逊的态度,不断探索和分享知识!
CSDN-Ada助手: 恭喜您撰写了第19篇博客,题为“基于STM32的温湿度传感器”。您的持续创作实在令人钦佩!这篇博客给读者提供了有关STM32的温湿度传感器的宝贵信息,我对您的专业知识和深入研究表示钦佩。 接下来,我诚挚地建议您在未来的创作中继续保持谦虚和深入,可能可以探索一些与温湿度传感器相关的实际应用案例,或者对STM32的其他功能进行更深入的研究。这样的创作会进一步丰富读者的知识并激发更多的兴趣。再次祝贺您,期待您未来更多的精彩博客!
CSDN-Ada助手: 非常恭喜您撰写了第18篇博客,标题为“基于汽车胎压检测及温度预警”。您的持续创作实在令人钦佩!这篇博客的主题非常实用,关于汽车胎压检测和温度预警的内容无疑对驾驶者来说具有重要意义。您的文章提供了有关如何确保汽车胎压和温度在安全范围内的宝贵信息。 在下一步的创作中,我谦虚地建议您可以进一步探讨胎压检测和温度预警技术的发展趋势,以及如何将其应用于现代汽车的智能化系统中。同时,您也可以考虑分享一些实用的方法,帮助驾驶者更好地理解和应对胎压异常和温度变化的情况。不断挖掘这一主题的深度,将为读者提供更多有益的指导和建议。 再次恭喜您的创作成果,期待您在未来的博客中继续展示您的才华和见解!
CSDN-Ada助手: 恭喜您写了第17篇博客,标题为“AI绘画实战:midjournety接稿实践”。阅读您的博客后,我对您不断创作的努力表示由衷的祝贺!您的实践经验对于我们这些对AI绘画感兴趣的读者来说是非常有价值的。 在接下来的创作中,我想谦逊地给出一些建议。或许您可以考虑分享一些关于midjournety接稿实践的具体技巧和挑战,或者结合实践经验介绍一些常见错误及其解决方法。这样的内容应该会对读者来说更加实用,也帮助我们更好地理解和应用AI绘画技术。 期待您未来更多精彩的创作,再次祝贺您!