智能交通信号灯控制系统设计摘要:本文对交通灯控制系统进行了研究,通过分析交通规则和交通灯的工作原理,给出了交通灯控制系统的设计方案。本系统是以89C51单片机为核心器件,采用双机容错技术,硬件实现了红绿灯显示功能、时间倒计时显示功能、左、右转提示和紧急情况发生时手动控制等功能。关键词:交通灯;单片机;双机容错0引言近年来随着机动车辆发展迅速,给城市交通带来巨大压力,城镇道路建设由于历史等各种原因相对滞后,特别是街道各十字路口,更是成为交通网中通行能力的“隘口”和交通事故的“多发源”。为保证交通安全,防止交通阻塞,使城市交通井然有序,交通信号灯在大多数城市得到了广泛应用。而且随着计算机技术、自动控制技术和人工智能技术的不断发展,城市交通的智能控制也有了良好的技术基础,使各种交通方案实现的可能性大大提高。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,是现代城市交通监控指挥系统中最重要的组成部分。本文设计的交通灯管理系统在实现了现代交通灯系统的基本功能的基础上,增加了容错处理技术(双机容错)、左右转提示和紧急情况(重要车队通过、急救车通过等)发生时手动控制等功能,增强了系统的安全性和可控性。1系统硬件电路的设计该智能交通灯控制系统采用模块化设计兼用双机容错技术,以单片机89C51为控制核心,采用双机容错机制,结合通行灯输出控制显示模块、时间显示模块、手动模块以及电源、复位等功能模块。现就主要的硬件模块电路进行说明。1.1主控制系统在介绍主控制系统之前,先对交通规则进行分析。设计中暂不考虑人行道和主干道差别,对一个双向六车道的十字路口进行分析,共确定了9种交通灯状态,其中状态0为系统上电初始化后的所有交通灯初试状态,为全部亮红灯,进入正常工作阶段后有8个状态,大致分为南北直行,南北左右转,东西直行,与东西左右转四个主要状态,及黄灯过渡的辅助状态。主控制器采用89C51单片机。单片机的P0口和P2口分别用于控制南北和东西的通行灯。本文的创新之处在于采用了双机容错技术,很大程度上增强了系统的可靠性。容错技术以冗余为实质,针对错误频次较高的功能模块进行备份或者决策机制处理。但当无法查知运行系统最易出错的功能,或者系统对整体运行的可靠性要求很高时,双机容错技术则是不二选择。双机容错从本质上讲,可以认为备置了两台结构与功能相同的控制机,一台正常工作,一台备用待命。传统的双机容错的示意图如图1所示,中U1和U2单元的软硬件结构完全相同。如有必要,在设计各单元时,通过采用自诊断技术、软件陷阱或Watchdog等系统自行恢复措施可使单元可靠性达到最大限度的提高。其关键部位为检测转换(切换)电路。图1传统双机容硬件错示意图本次选用的双机容错方案,针对传统方案的不足,采用了改进措施,完全去掉专用的检测转换电路,利用主备机双方的串行口连接和软件相结合的方法,实现检测转换电路的功能和主备机之间的数据通信功能,如图2:图2双机容硬件改进方案两个单元(这里是两个89C51)的主备工作状态由上电顺序决定,先上电的一方自动进入主机工作状态,后上电者则进入备机状态。主机在其工作过程中除实现应用功能外,定期向备机发送反映其工作正常的状态数据。当需要备份的数据发生变化时,主机及时向备机发送已更新的数据。此外,主机也定期接收来自备机的状态数据,当发生接收超时时,主机认为备机已经发生故障,并通过本单元的显示装置向用户给出通知信号,以便及时对备机进行脱线维护。备机在其工作过程中不完成应用功能,但定期接收来自主机的状态数据,当发生接收超时,备机认为主机已经发生故障,自动切换进入主机工作状态,并通过本单元显示装置通知用户,以便对原主机单元进行脱线维护。此外,备机还自动接收来自主机的备份数据并进行存储备份。该方案摆脱了纯粹依赖检测转换电路带来的瓶颈,且主备机之间能够实时通讯备份,此外原来有检测转换电路所附加不可靠因素也降到了最低。1.2通行灯输出控制模块根据系统运行过程中会出现的4种不同的车道通行状况,需要八种不同性质的灯作为显示元件,因此在设计中,利用P0的8个端口进行南北向控制,P2的8个端口进行东西向控制。以P0口为例,8个输出控制口对应的信号灯属性分别为:P0.0——南北直行绿灯;P0.1——南北直行黄灯;P0.2——南北直行红灯;P0.3——南北左转行绿灯;P0.4——南北左转红灯;P0.5——南北右转绿灯;P0.6——南北右转红灯;P0.7——南北左/右转黄灯。P2口的输出控制口对应信号灯属性与P0口一致,流程可详见下文2.1交通灯工作状态分析。本系统设计的十字路口交通灯指示采用红绿黄LED灯,LED选择共阴极,故当某端口输出高电平时,对应的信号灯就会亮。其控制主要由软件部分来完成。1.3时间显示模块十字路口通行剩余时间显示采用高亮7段LED发光数码管,考虑到单片机端口有限,为了满足二位数的数码显示要求,这里用到了BCD译码器。在实际情况下,倒计显示时间均低于50秒,且东西南北状态的数显个位变化是同步的(仅仅在十位数上有差别)。因此用于代表十位数显的L1和L3对应的BCD译码器的最高位——D端口均接地,即L1和L3可以表示数值0到7。而在个位显示上,L2和L4则共用了BCD译码器的输出,实现南北与东西向的个位同步显示功能。P0的端口分配如图3所示,其中该方案还调用的P3口的T0和T1,参与的对L2和L4的控制。该模块设计的最大特点在于最大程度地节约了端口占有且充分利用了硬件资源。图3数码管显示硬件电路1.4特殊车辆通行模块当十字路口出现紧急情况时,交警要根据需要对交通灯进行手动控制,进行紧急情况处理。通过相应按钮的选择来实现路口正确的通行。急行车强通信号受急车强通开关控制,不管原来信号灯的状态如何,一律让急车驶来的方向的绿灯亮起,使急车放行,直至急车通过为止。急车一过,将急车强通开关断开,信号灯的状态立刻转为急车来之前的方向,随后按正常时序进行。此模块中,INT0和INT1分别控制南北和东西向的急车强通状态。1.5电源及复位模块整个系统采用的电源电压只需+5V电压,所以采用一片不可调的三端稳压芯片7805C以及两个电容作为电源对系统进行供电。上电按键复位电路由S1、R3、R4、C5构成,其中S1为手动复位按键(另一组电路为S4、R7、R8、C6)。时钟电路采用外接12MHz的晶振与33pF的电容,分别与两单片机的X1和X2引脚相连。另外,系统还设有主机指示灯,即在两单片机的RD口分别接一LED,当连接的单片机用作主机时此灯亮,备机则此灯灭。2软件模块2.1交通灯工作状态分析根据前述分析,交通状态主要有以下9种,具体请见下表。表1交通灯状态表交通灯状态表状态信号灯0初试状态全部红灯,持续5秒1南北直行南北直行绿灯亮,其他灯全为红等,持续27秒2变南北左右转南北直行黄灯亮,持续3秒3南北左转和右转南北左转、右转绿灯亮,持续17秒4变东西直行南北左右转黄灯亮,持续3秒5东西直行东西直行绿灯亮,其他灯全为红色,持续27秒6变东西左右转东西直行黄灯亮,持续3秒7东西左转和右转东西左转、右转绿灯亮,持续17秒8变南北直行东西左右转黄灯亮,持续3秒根据硬件设计与交通灯状态列出控制器交通灯控制端口的真值表,如下所示。其中左/右转黄灯状态实际做相同变化,故采用一个端口进行控制。表2交通灯控制端口的真值表P0(0~7)P2(0~7)南北直行绿灯南北直行黄灯南北直行红灯南北左转绿灯南北左转红灯南北右转绿灯南北右转红灯南北左右转黄灯东西直行绿灯东西直行黄灯东西直行红灯东西左转绿灯东西左转红灯东西右转绿灯东西右转红灯东西左右转黄灯0010101000101010100010100010101001001010001010100011010000101010001000010010101000101010100010100010101001001010001010100011010000101010001000012.2程序设计主程序框图请见下图,系统初始化后,首先进入S0状态,而后进入S1~S8状态,进行循环,实现交通灯的主要功能。紧急情况中断程序流程图如下:开始系统初始化S0S1S2主程序流程图S3S4S5S6S7S82.3双机冗余系统程序涉及到的主要标志位有:常量OK,REQ,ACK和NACK,分别表示主备机工作状态正常、备份数据发送请求、肯定应答和否定应答信息的字符常量;MAIN,STANDBY分别表示工作单元为主机或备机的常量标志。全局变量timeout用于设定以毫秒为单位的超时间隔,而update,cpustatus和failure分别表示备份数据是否更新、主备机状态和主备机是否发生故障的标志位变量。定时器1采用settime(55)函数产生每隔55ms的定时中断。每次中断,主备单元的中断服务程序都向对方单元发送表示自身工作状态正常的OK字节,同时也接收对方单元发送的OK字节。若连续3次都未能成功接收,则本单元认为对方单元出了故障,并将表示对方单元工作状态的全局变量failure置为常量YES,否则,置为NO。若为备机,还将表示主备身份的标志变量capture的值置为main,从而为备机程序切换和给出原主机故障提示设置判断标志。若备机在中断服务程序中接收到字符REQ,则将表示备份数据是否更新的标志变量update置为Yes,并立即退出中断服务程序,以便主程序及时接收备份数据帧。主函数在完成应用系统的公共初始化后,主备单元的定时器1在后台产生定时中断并通过串行通信进行相互检测。由于规定2个单元的上电时间间隔大于500ms后,即根据当前的主备身份自动进入主(备)机的前台监控例程。主机的前台监控例程除完成应用功能外,中断入口保护现场INT1INT0东西红灯,南北绿灯东西绿灯,南北红灯恢复现场Y(触发)Y(触发)NN急车强通中断还应在应用功能改变了需要备份的数据时,能调用sendframe函数关闭定时器1的中断并发送备份数据帧。当备机的前台监控例程判断出需要接收备份数据时,调用recive_frame函数关闭定时器1的中断并接收备份数据帧。当备机的前台监控例程监视到主机故障时,备机的前台监控循环自动切换进入主机的前台监控循环。3总结和展望本设计是基于单片机双机容错技术的多功能交通灯控制系统,它可用于十字路口的车辆及行人的交通管理,显示采用2位7段数码管,可以很直观地显示红绿灯的开放和关闭时间。设计中应用了倒计时显示方式,功能完整。系统设计简便、实用性强、操作简单、程序可靠。应用此系统个还可简便灵活地调整十字路口的控制参数,使紧急车辆及时顺利通过。这对于灵活有效地利用交通灯控制行车安全、减少交通事故的发生有一定的现实意义。另外,在此系统基础上机一部完善和改进,如加入车流量检测控制模块等,可使交通灯控制系统更趋于智能化和人性化。