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(添加请备注验证信息:竹字头虫字底)不然有可能不通过

本人也是初学者,重在学习交流,有错误请谅解

  • 35
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个PLC十字交通红绿灯控制系统逻辑框图: ![PLC十字交通红绿灯控制系统逻辑框图示例](https://img-blog.csdnimg.cn/20220222104403487.png) 说明: 1. 输入X1表示车辆检测器1是否有车辆通过,输入X2表示车辆检测器2是否有车辆通过,输入X3表示行人过街按钮是否按下。 2. 输出Y1表示十字路口东西向绿灯开启,输出Y2表示十字路口南北向绿灯开启,输出Y3表示行人过街信号灯开启。 3. M1-M16是中间变量,用于控制程序流程。 4. 在程序开始时,先将所有输出信号关闭。 5. 如果车辆检测器1和车辆检测器2都没有检测到车辆,并且人行道按钮也没有按下,程序会进入状态1,此时东西向绿灯开启,南北向红灯开启。 6. 如果车辆检测器1或者车辆检测器2检测到车辆,程序会进入状态2或状态3,此时东西向绿灯继续开启,南北向红灯继续开启,直到没有车辆通过。 7. 如果人行道按钮按下,程序会进入状态4,此时行人过街信号灯开启,东西向红灯开启,南北向红灯开启,直到行人过街信号灯关闭。 8. 在状态5-8中,分别对每种情况进行了处理,包括人行道按钮按下、车辆检测器1和车辆检测器2同时检测到车辆、车辆检测器1检测到车辆、车辆检测器2检测到车辆、东西向绿灯和南北向绿灯同时开启等。 9. 如果程序在状态5-8中检测到车辆通过,则会返回状态2或状态3,继续开启东西向绿灯和南北向红灯。 10. 如果程序在状态5-8中检测到行人过街按钮按下,则会进入状态4,开启行人过街信号灯。 11. 在状态9-12中,分别对每种情况进行了处理,包括人行道按钮按下、车辆检测器1和车辆检测器2同时检测到车辆、车辆检测器1检测到车辆、车辆检测器2检测到车辆、东西向绿灯和南北向绿灯同时开启等。 12. 如果程序在状态9-12中检测到车辆通过,则会返回状态2或状态3,继续开启东西向绿灯和南北向红灯。 13. 如果程序在状态9-12中检测到行人过街按钮按下,则会仍然停留在状态4,继续开启行人过街信号灯。 14. 在状态13-16中,分别对每种情况进行了处理,包括人行道按钮按下、车辆检测器1和车辆检测器2同时检测到车辆、车辆检测器1检测到车辆、车辆检测器2检测到车辆、东西向绿灯和南北向绿灯同时开启等。 15. 如果程序在状态13-16中检测到车辆通过,则会返回状态2或状态3,继续开启东西向绿灯和南北向红灯。 16. 如果程序在状态13-16中检测到行人过街按钮按下,则会仍然停留在状态4,继续开启行人过街信号灯。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值