十字路口红绿灯设计




摘 要


随着汽车进入家庭步伐的加快和城市汽车数量的增多,城市道路交通问题显得越来越重要。解决好十字路口交通信号灯控制问题是保障交通有序、安全、快速运行的重要环节。但现有的十字路口交通信号灯控制系统大都采用继电器或单片机实现,且都是单一的固有时序控制,不能够根据实际路面车流量情况进行调节控制,存在着功能少、可靠性差、维护量大等缺点。为了弥补原交通信号灯系统存在的种种缺点,本文设计了基于PLC控制的交通信号灯控制系统。该系统选用的可编程逻辑控制器是德国西门子公司的S7-200,具有一定的智能性,即可以根据路面车流量大小对十字路口的交通信号灯按高峰期、正常期和晚间几个时段进行分时控制。
关键词:十字路口 交通信号灯控制系统 可编程逻辑控制器(PLC) 分时控制









目 录


1 设计背景……………………………………………………………1
1.1 背景概述………………………………………………………1
1.2 可编程逻辑控制器简介………………………………………1
2 十字路口交通信号灯PLC控制系统简介…………………………2
2.1 控制对象及要求 …………………………………………… 2
2.1.1 控制对象………………………………………………2
2.1.2 控制要求………………………………………………2
2.2 系统简介………………………………………………………4
2.3 硬件选型………………………………………………………5
3 系统I/O分配………………………………………………………6
4 PLC端子接线图…………………………………………………… 7
5 软件设计……………………………………………………………8
6 总结 ………………………………………………………………15
附录 源程序-STL语句 …………………………………………… 16
参考文献 …………………………………………………………… 23





1 设计背景
1.1 背景概述
随着汽车进入家庭步伐的加快和城市汽车数量的增多,城市道路交通问题显得越来越重要。马路上经常会看到这种现象:一旦整个路口的交通信号灯出现故障,若没有交警的及时疏导,该路口就会塞得一塌糊涂,甚至造成严重的交通事故。原交通信号控制大都采用继电器或单片机实现,存在着功能少、可靠性差、维护量大等缺点,越来越不能适应城市道路交通高速发展的要求。另外,根据人车流量的多少,可能随时增加路口的交通信号,比如增加转弯或人行道交通信号,原有系统的制约性就更加明显了。为了弥补原交通信号灯

系统存在的以上缺点,我们引入了基于PLC控制的交通信号灯控制系统。
本文对十字路口交通信号灯控制系统,运用可编程逻辑器件PLC做了软件与硬件的设计,能基本达到控制要求。系统仅实现了小型PLC系统的一个雏形,在完善各项功能方面都还需要进一步的分析、研究和调试工作。如果进一步结合工业控制的要求,形成一个较为成型的产品,则需要作更多、更深入的研究。

1.2 可编程逻辑控制器简介
可编程逻辑控制器(Programmable Logic Controller,简称 PLC) 根据国际电工委员会(IEC)在1987年的可编程控制器国际标准第三稿中,对其作了如下定义:“可编程控制器是一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用可编程序的存储器,用来在其内部存储执行逻辑运算,顺序控制,定时,计数与算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程。可编程控制器及其有关外部设备,都应按易于使工业控制系统形成一个整体,易于扩充其功能的原则设计。”可编程控制器作为目前工业自动化的重要基础设备,被称为“工业自动化三大支柱性产业之一”,在各工业生产领域发挥着愈来愈大的作用。



2 十字路口交通信号灯PLC控制系统简介
2.1 控制对象及要求
2.1.1 控制对象
本系统的控制对象有八个,分别是:
东西方向红灯(R—EW)两个;
南北方向红灯 (R—SN) 两个;
东西方向黄灯(Y—EW)两个;
南北方向黄灯 (Y—SN) 两个;
东西方向绿灯(G—EW)两个;
南北方向绿灯 (G—SN) 两个;
东西方向左转弯绿灯(L—EW)两个;
南北方向左转弯绿灯(L—SN)两个。
2.1.2 控制要求
1、系统工作受开关控制,起动开关 ON 则系统工作;起动开关 OFF 则系统停止工作;
2、交通信号灯按高峰时段、 正常时段及晚上时段进行控制,这三个时段的的时序分配如图1所示;
3、在高峰时段,交通信号灯按图2所示时序控制;
4、在正常时段,交通信号灯按图3 所示时序控制;
5、晚上时段按提示警告方式运行,规律为: 东、南、西、北四个黄灯全部闪亮,其余灯全部熄灭,黄灯闪亮按亮 0.4 秒,暗 0.6 秒的规律反复循环。





























































2.2 系统简介
本系统是一个十字路口交通灯的PLC控制系统,利用西门子公司的S7-200可编程逻辑控制器对十字路口的交通灯进行控制。本系统具有一定的智能性,即它可以对交通灯按高峰期、正常期及晚间几个时段进行分段控制。高峰期的控制方案为:
(1) 南北方向左转弯灯和南北南北方向

红灯同时亮10秒,同时东西方向红灯亮;
(2) 南北方向绿灯亮35秒,东西方向红灯继续亮;
(3) 南北方向黄灯闪烁5秒;东西方向红灯继续亮;
(4) 东西方向左转弯绿灯和南北方向红灯同时亮10秒,东西方向红灯继续亮;
(5) 东西方向绿灯亮25秒,南北方向红灯继续亮;
(6) 东西方向黄灯闪烁5秒,南北方向红灯继续亮,然后跳至第(1)步依次循环。
正常期的控制方案为:
(1) 南北方向左转弯灯和南北南北方向红灯同时亮10秒,同时东西方向红灯亮;
(2) 南北方向绿灯亮30秒,东西方向红灯继续亮;
(3) 南北方向黄灯闪烁5秒;东西方向红灯继续亮;
(4) 东西方向左转弯绿灯和南北方向红灯同时亮10秒,东西方向红灯继续亮;
(5) 东西方向绿灯亮30秒,南北方向红灯继续亮;
(6) 东西方向黄灯闪烁5秒,南北方向红灯继续亮,然后跳至第(1)步依次循环。
晚间的控制方案为:
东、南、西、北四个黄灯全部闪亮,其余灯全部熄灭,黄灯闪亮按亮 0.4 秒,暗 0.6 秒的规律反复循环。


2.3 硬件选型
城市道路交通信号控制是典型的开关量顺序控制,采用PLC能充分利用它的优点。在这里我们采用德国西门子公司的S7-200可编程控制器,它是积木式结构,安装比较方便,中央处理单元和信号模板有多种类型,另外还具有如位控单元、PD调节等特殊功能模块。根据本系统输入点数及控制要求,中央处理单元可选用CPU224,该CPU板上本身具有10个数字量输入点,6个非隔离数字量输出点,最多能够带8个数字量信号模板。
电源模块将交流电源转换成供CPU,存储器等所有扩展模块使用的直流电源,是整个PLC系统的能源供给中心,它的好坏直接影响到PLC的稳定性和可靠。S7-200属于小型PLC,电源模块与CPU模块封装在一起,通过连接总线为本机和扩展模块提供+5V(DC)电源。同时,还可通过端子向外输出一个+24V(DC)电源,供本机输入点和扩展模块继电器线圈使用。需注意的是,从资料中我们了解到,外部电源不可与S7-200的传感器电源并联使用。否则,交会导致两个电源的竟争而影响它们各自的输出,缩短其使用寿命,使得一个或两个电源同时失效,使PLC系统产生不正确的操作。正确的使用方法是S7-200的传感器电源和外部电源应该在不同的点上提供电源,而两者之间只能有一个会共连接点。
由于根据控制要求所确定的输入输出点分别人二个和九个,由于我们是以一个路口信号单独控制为例,考虑到够用为准。所以我们选择了CPU224这一具有较强控制功能的控制器。
另外,在硬件选型时,不要忘记完成现场测试及软件编程时所需的一些

设备。
综上,得到系统硬件配置如表1所示:

表1 硬件配置表
名 称 数 量
DC24V电源 1
CPU224 1
PC/PPI编程电缆 1
STEP7编程软件 1
PC机 1
3 系统I/O分配
分析PLC的输入和输出信号,在满足控制要求的前提下,要尽量减少占用PLC的I/O点。由系统控制要求可见,由控制开关输入的启、停信号是输入信号。由PLC的输出信号控制各指示灯的亮、灭。在交通灯布置图中,南北方向的三色灯共六盏,同颜色的灯在同一时间亮、灭;所以,可将同色灯两两并联,用一个输出信号控制。同理,东西方向的三色灯也依次设计。再加上东西方向左转的三色灯共九盏,所以其占9个输出点。由此可得系统I/O分配如表2所示:

表2 系统I/O分配表
输入/输出 设备/器件名称 I/O地址 符号名 数据类型
输入 校正当前时钟 I0.0 SB0 BOOL
程序启停按钮 I0.1 SB1 BOOL





输出 东西方向绿灯 Q0.0 Q1 DINT
东西方向黄灯 Q0.1 Q2 DINT
东西方向红灯 Q0.2 Q3 DINT
南北方向绿灯 Q0.3 Q4 INT
南北方向黄灯 Q0.4 Q5 INT
南北方向红灯 Q0.5 Q6 INT
东西方向左转弯灯 Q0.6 Q7 INT
南北方向左转弯灯 Q0.7 Q8 INT







4 PLC端子接线图
根据I/O表及PLC的配置图很容易就可以得到PLC端子接线图4如下所示:



5 软件设计
本控制系统的控制原理是:用一路数字量的不同输入状态来判定是否对时钟进行初始化,用一路数字量的不同输入状态分别用作程序的启动和停止控制,每一方向有红、黄、绿及转弯四种信号灯,分别对应四位数字量输出,两个方向共有8位数定量输出;在某一方向用两个延时脉冲定时器分别控制该方向黄灯闪烁的亮、灭时间,根据道路人车流量多少,分别设置各信号灯亮灭时间的长短,通过6个定时器依次交替工作,就可实现各方向交通信号灯的顺序工作。本文所设计的软件由一个主程序和四个子程序(时钟初始化子程序,晚间时段交通灯控制子程序,正常时段交通灯控制子程序和高峰时段交通灯控制子程序)组成。主程序主要任务包括:读取两个开关状态,根据开关的不同状态做出相应的处理,当开关SB0闭合时则对时钟进行初始化,反之则不对时钟进行初始化;当开关SB1闭合时,则读取时钟值,并做处理,根据处理后的时钟值的大小判定当前时间是属于哪个时间段,并调用相应的交通灯控制子程序,反之,则停止程序的运行主程序流程图如图5所示。晚间时段的控制规律为:两个方向的四个黄灯均按亮0.4秒灭0.6秒的规律闪烁,其余的交通灯全灭程序中将用到两个定时器T37和T38,各定时器的功能如表3所示。正常时段的控制方案结构图如图6所示,程序中将用到

8个定时T37-T44,各定时器的功能如表4所示。高峰时段的控制方案结构图如图7所示,程序中将用到8个定时T37-T44,各定时器的功能如表5所示。
该程序实现了信号由东西左转、东西直行、南北直行依次循环变化。其优势思路简单,容易理解,对时钟的校正以及各时段的起始时间和终止时间的修改方便。如路口要求在晚上10:00以后实行各方向黄色信号灯闪烁功能,只需要将实时采集PLC的时钟信号作为一个子程序的跳转条件,再增加一段闪光程序即可。如果需要将几个路口集中到一台PLC控制,根据实际需要的I/O点数,硬件上再增加相应的数字量输出模板即可。需要指出的是,用PLC实现城市道路关通信号控制,最好几个路口共用一套PLC,这样可以大大降低工程成本。



表3 晚间时段各定时器一个循环中的功能明细表
定时器 t0 t1 T2
T37
定时0.4秒 开始定时,黄灯亮 定时到,输出ON且保持;黄灯灭 开始下一次循环的定时
T38
定时1秒 开始定时 继续定时 定时到,输出ON,随即复位开始下一次循环的定时,黄灯亮。









表4 正常时段各定时器一个循环中的功能明细表
定时器 t0 t1 t2 t3 t4 t5 t6
T37
定时10秒 开始定时,南北转弯灯、南北红灯、东西红灯亮。 定时到,输出ON且保持;南北转弯灯灭,南北绿灯亮,东西红灯继续亮。 ON ON ON ON 开始下一个循环定时
T38
定时40秒 开始定时 继续定时 定时到,输出ON且保持;南北绿灯灭,南北黄灯闪烁,东西红灯继续亮。 ON ON ON 开始下一个循环定时
T39
定时45秒 开始定时 继续定时 继续定时 定时到,输出ON且保持;南北黄灯灭,东西转弯灯、南北红灯亮,东西红灯继续亮。 ON ON 开始下一个循环定时
T40
定时55秒 开始定时 继续定时 继续定时 继续定时 定时到,输出ON且保持;东西转弯、东西红灯灭,东西绿灯亮,南北红灯继续亮。 ON 开始下一个循环定时
T41
定时85秒 开始定时 继续定时 继续定时 继续定时 继续定时 定时到,输出ON且保持;东西绿灯灭,东西黄灯闪烁,南北红灯继续亮。 开始下一个循环定时
T42
定时90秒 开始定时 继续定时 继续定时 继续定时 继续定时 继续定时 定时到,输出ON,随即复位开始下一次循环定时;东西黄灯、南北红灯灭,南北转弯灯、南北红灯、东西红灯亮。





表5 高峰时段各定时器一个循环中的功能明细表
定时器 t0 t1 t2 t3 t4 t5 t6
T37
定时10秒 开始定时,南北转弯灯、南北红灯、东西红灯亮。 定时到,输出ON且保持;南北转弯灯灭,南北绿灯亮,东西红灯继续亮。 ON ON ON ON 开始下一个循环定时
T38
定时45秒 开始定时 继续定时 定时到,输出ON且保持;南北

绿灯灭,南北黄灯闪烁,东西红灯继续亮。 ON ON ON 开始下一个循环定时
T39
定时50秒 开始定时 继续定时 继续定时 定时到,输出ON且保持;南北黄灯灭,东西转弯灯、南北红灯亮,东西红灯继续亮。 ON ON 开始下一个循环定时
T40
定时60秒 开始定时 继续定时 继续定时 继续定时 定时到,输出ON且保持;东西转弯、东西红灯灭,东西绿灯亮,南北红灯继续亮。 ON 开始下一个循环定时
T41
定时85秒 开始定时 继续定时 继续定时 继续定时 继续定时 定时到,输出ON且保持;东西绿灯灭,东西黄灯闪烁,南北红灯继续亮。 开始下一个循环定时
T42
定时90秒 开始定时 继续定时 继续定时 继续定时 继续定时 继续定时 定时到,输出ON,随即复位开始下一次循环定时;东西黄灯、南北红灯灭,南北转弯灯、南北红灯、东西红灯亮。





















6 总 结

附录 源程序-STL语句
ORGANIZATION_BLOCK 主:OB1
TITLE=程序注解
VAR
T:BYTE; //时钟值缓冲区
H:INT; //小时数存储单元
M:INT; //分钟数存储单元
SEC:INT; //秒钟数存储单元
Tim:WORD; //小时数乘100加分钟数乘10加秒钟数所得结果存储单元
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注解
LD I0.0
CALL SBR0 //开关SB0闭合,调用SBR0(INIT)对时钟进行初始化
Network 2
LDN I0.1 //起动/停止开关SB1断开,则停止程序
STOP
Network 3
LD I0.1
TODR LB0 //起动/停止开关SB1闭合,则起动程序,读取时钟
Network 4
LD I0.1
INCB LB0
Network 5
LD I0.1
INCB LB0
Network 6
LD I0.1
INCB LB0 //T加3指向小时存储单元
Network 7
LD I0.1
BTI LB0, LW1 //将小时由字节型转换为整型
Network 8
LD I0.1
MOVW LW1, VW16
*I +100, VW16 //将小时的数值乘以100
Network 9
LD I0.1
INCB LB0 //将T指向分钟存储单元
Network 10
LD I0.1
BTI LB0, LW3 //将分钟由字节型转换为整型
Network 11
LD I0.1
MOVW LW3, VW18
*I +10, VW18 //将分钟的数值乘以10
Network 12
LD I0.1
MOVW VW16, VW20
+I VW18, VW20 //将小时数乘100与分钟数乘10相加
Network 13
LD I0.1
INCB LB0 //将T指向秒钟存储单元
Network 14
LD I0.1
BTI LB0, LW5 //将秒钟由字节型转换为整型
Network 15
LD I0.1
MOVW VW14, LW7
+I LW5, LW7 //将小时数乘100与分钟数乘10相加所得的结果与秒钟数相//加得Tim
Network 16
LDW<= LW7, 630序
CALL SBR1 //Tim小于630时,则调用SBR1(SUBE)子程
Network 17
LDW< LW7, 700
CALL SBR2 //Tim大于630小于700时,则调用SBR2(SUBN)子程序
Network 18
LDW<= LW7, 830
CALL SBR3 //Tim大于700小于830时,则调用SBR3(SUBF)子程序
Network 19
LDW< LW7, 16

30
CALL SBR2 //Tim大于830小于1630时,则调用SBR2(SUBN)子程序
Network 20
LDW<= LW7, 1900
CALL SBR3 //Tim大于1630小于1900时,则调用SBR3(SUBF)子程序
Network 21
LDW< LW7, 2100
CALL SBR2 //Tim大于1900小于2100时,则调用SBR2(SUBN)子程序
Network 22
LDW<= LW7, 2359
CALL SBR1 //Tim大于2100小于2100时,则调用SBR1(SUBE)子程序
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK INIT:SBR0
TITLE=子例行程序注解
BEGIN
Network 1 //时钟初始化子程序
LD I0.1
INCB VB0
Network 2
LD I0.1
INCB VB0
Network 3
LD I0.1
INCB VB0
Network 4
LD I0.1
MOVB 0, VB0 //设定时钟小时数
Network 5
LD I0.1
INCB VB0
Network 6
LD I0.1
MOVB 0, VB0 //设定时钟分钟数
Network 7
LD I0.1
INCB VB0
Network 8
LD I0.1
MOVB 0, VB0 //设定时钟秒钟数
Network 9 // 网络标题
// 网络注解
LD I0.1
TODW VB0
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SUBE:SBR1 //晚间时段交通灯控制子程序
TITLE=子例行程序注解
BEGIN
Network 1 // 网络标题
// 网络注解
LD I0.1
S S0.1, 1
Network 2
LSCR S0.1 //顺序控制
Network 3
LDN T38
TON T37, 4
TON T38, 10
Network 4
LDN T37
= Q0.1
= Q0.4 //黄灯按亮0.4秒灭0.6的规律闪烁,其余的交通灯全灭
Network 5
LD T38
R T37, 1
R T38, 1
Network 6
SCRE
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SUBN:SBR2 //正常时段交通灯控制子程序
TITLE=子例行程序注解
BEGIN
Network 1 // 网络标题
// 网络注解
LD I0.1
S S0.1, 1
Network 2
LSCR S0.1
Network 3
LDN T42
TON T37, 100 //T37定时10秒
TON T38, 400 //T38定时40秒
TON T39, 450 //T39定时45秒
TON T40, 550 //T40定时550秒
TON T41, 850 //T41定时85秒
TON T42, 900 //T42定时90秒
Network 4
LDN T37
= Q0.2
= Q0.5
= Q0.7
Network 5
LD T37
AN T38
= Q0.2
= Q0.3
Network 6
LD T38
AN T39
S S0.2, 1
Network 7
LSCR S0.2
Network 8
LDN T44
TON T43, 4
TON T44, 10
Network 9
LDN T43
= Q0.2
= Q0.4
Network 10
LD T43
AN T44
= Q0.2
Network 11
LDN T39
S S0.2, 1
Network 12
LD T39
AN T40
= Q0.2
= Q0.5
= Q0.6
Network 13
LD T40
AN T41
= Q0.3
= Q0.5
Network 14
LD T41
AN T42
= Q0.1
= Q0.5
Network 15
LD T42
R T37, 1
R T38, 1
R T39, 1
R T40, 1
R T41, 1
R T42, 1
R T43, 1
R T44, 1
Network 16
SCRE
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SUBF:SBR3 //高峰时段交通灯控制子程序
TITLE=子例行程序注解
BEGIN
Network 1 // 网络标题
// 网络注解
LD I0.1
S S0.1, 1
Network 2
LSCR S0.1
Network 3
LDN T42
TON T37, 100 //T37定时10秒
TON T38, 450 //T38定时45秒
TON T39, 500 //T39

定时50秒
TON T40, 600 //T40定时60秒
TON T41, 850 //T41定时85秒
TON T42, 900 //T42定时90秒
Network 4
LDN T37
= Q0.2
= Q0.5
= Q0.7
Network 5
LD T37
AN T38
= Q0.2
= Q0.3
Network 6
LD T38
AN T39
S S0.2, 1
Network 7
LSCR S0.2
Network 8
LDN T44
TON T43, 4
TON T44, 10
Network 9
LDN T43
= Q0.2
= Q0.4
Network 10
LD T43
AN T44
= Q0.2
Network 11
LDN T39
S S0.2, 1
Network 12
LD T39
AN T40
= Q0.2
= Q0.5
= Q0.6
Network 13
LD T40
AN T41
= Q0.3
= Q0.5
Network 14
LD T41
AN T42
= Q0.1
= Q0.5
Network 15
LD T42
R T37, 1
R T38, 1
R T39, 1
R T40, 1
R T41, 1
R T42, 1
R T43, 1
R T44, 1
Network 16
SCRE
Network 17 // 网络标题
// 网络注解
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断例行程序注解
BEGIN
Network 1 // 网络标题
// 网络注解
END_INTERRUPT_BLOCK


参考文献
[1] 廖常初主编. PLC编程及应用. 北京:机械工业出版社,2003
[2] 周万珍、高鸿斌主编. PLC分析与设计应用. 北京:电子工业出版社,2004年1月
[3] 钟肇新、王灏主编. 可编程序控制器入门教程. 广州:华南理工大学出版社,1999年5月
[4] 温照方主编. SIMATIC S7-200可编程序控制器教程. 北京:北京理工大学出版社,2002年9月
[5] 张进秋、陈永利、张中民主编. 可编程控制器原理及应用实例. 北京:机械工业出版社,2004年1月


相关文档
最新文档