西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

【摘要】近日有小伙伴和驼子探讨如何用PLC实现对十字路口交通信号灯的控制。驼子利用闲余时间粗略设计了一套控制程序,所谓“独乐乐,不如众乐乐”,因此,特分享出来,有兴趣的小伙伴可以一起研究一下,并请批评指正。


一、控制要求

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图1 交通信号灯及其控制逻辑

如图1所示,为十字路口交通信号灯的控制逻辑。驼子大概分析了一下,感觉按时间来捋清控制逻辑,相对会简单明了些。

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图2 时间流程图及状态

图2为驼子根据控制逻辑,绘制的时间流程图。四个方向的信号灯可分为横、纵两组。两组信号灯相互之间有所关联,比如红灯1亮的期间(60s),第二组的信号灯先后会经历:绿灯2亮(50s)->绿灯2闪(6s)->黄灯2亮(4s)。其他的信号灯也有类似的关联逻辑。

二、程序设计

1、输入、输出定义

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图3 输入、输出定义

如图3所示,十字路口四个方向共12个信号灯,共分为两组:由Q0.0-Q0.5共六个数字输出量来控制信号灯的亮灭。同时,增加两个数字输入信号:I1.6,交通信号灯控制系统工作;I1.7,交通信号灯控制系统停止工作。

二、信号灯状态定义

根据图2分析,信号灯工作过程中,共可有六个状态,每个状态由一个定时器来界定。如图4、图5分别为工作状态2和工作状态3。

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图4 工作状态2

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图5 工作状态3

信号灯控制系统投入运行后,其工作状态为:

status1->status2->status3->status4->status5->status6->status1……

每个状态对应一个定时器。

基于这一特点,可用上一个状态信号的下降沿作为触发信号,触发本状态的定时器;而本状态的状态信号下降沿则作为下一个状态定时器的触发信号(其中,status6的下一个状态为status1),如此,则可以形成一个状态环,信号灯的任意一个工作瞬间都可以用6个状态中的一个表示。


图4、图5中,定时器T2、T3的计时触发端分别由各自上一个状态信号的下降沿来触发,复位端连接I1.7,以便维护人员随时可以终止信号灯。

(图4、图5只列举了状态2和状态3的程序段,有兴趣的小伙伴可自行思考其他四个状态的程序,需要注意的是状态1的程序会相对复杂些)

三、驱动信号灯亮灭

根据图2很容易分析出,不同工作状态下,各信号灯的亮灭情况。驼子总结如图6所示。

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图6 工作状态与信号灯亮灭的关系1

1、红、黄灯的亮灭控制

红、黄灯只有亮、灭两种状态,控制相对简单,以红灯1为例,其在status1、status2、status3状态下亮,其他状态下灭,因此,其程序如图7所示。

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图7 红灯1的亮、灭控制

2、绿灯的亮灭及闪烁控制

绿灯由两种工作模式,亮灭及闪烁。以绿灯1为例,其在status4时为常亮,其实现起来没什么难度。但在status5时,其工作在闪烁模式下,闪烁模式需要通过方波控制器来实现。如图8所示,FC1002为驼子编写的方波发送器,当其Inp1端为高电平时,输出端out1会输出周期性的方波,(具体方波发生器如何实现,这里暂时按下不表)。

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图8 绿灯1闪烁控制

四、仿真运行

如图9为仿真运行的一个瞬间的结果,如图其处在status3,根据图6可知,status3时,red1、yellow2亮,与图9运行结果吻合。实际仿真,在其他几个状态时,运行结果也无误。

西门子S7系列PLC应用实例——用PLC实现对交通信号灯的控制

图9 仿真运行

五、后记

最后,驼子留下几个疑问,供有兴趣的小伙伴思考:

1、同样的控制功能,用3个定时器能否实现?

2、status1的程序与其他5个状态的程序略有不同,会相对复杂些,复杂在哪里?

3、方波发生器如何编写?


分享到:


相關文章: