导言
跟着城市轿车保有量的越来越多,城市的交通拥堵问题正逐渐引起人们的留意。交通灯是交管部分办理城市交通的重要东西。现在绝大部分交通灯其时刻都是设定好的,不管是车流顶峰仍是低谷,红绿灯的时刻都固定不变;还有一些交通灯能依据简略区分的时刻段来调整时刻,但操控起来都不是很灵敏,这使得城市车流的调理不能到达最优。本文所述规划正是针对这一坏处进行了改进,依据实时车流量对各路口的绿灯时刻进行动态调理,大大加强了其灵敏性和实时性;软件编程选用了实时操作体系RTX51,在保证实时性要求的一起,简化了杂乱的软件规划作业。
1 计划证明
图1是一个典型的十字路口示意图。别离用1、2、3、4标明四个流向的主车道,用a、b、c、p别离标明各主车道的左行车道、直行车道、右行车道以及人行横道。
经过剖析很简略得知,除了四个右行车道外,在同一时刻,最多只能有两个车道通行,如1a、1b通行时,其它车道都会被阻断。所以在规划红绿灯时,能够两两组合,共有四组(如la-1b、2a-2b、3a-3b、4a-4b);而各车道的红灯时刻和人行横道通停时刻都由这四个组合的绿灯窗口时刻决议。本文将以广泛选用的图2所示的通行次序来叙述智能交通灯的规划。
2 体系软硬件规划
本体系硬件上选用上位机和下位机规划,其间下位机四个,均选用AT89C52单片机,别离操控图2所示的四个组合。AT89C52单片机具有 MCS-51内核,片内有8KB Flash、256字节RAM、6个中止源、1个串行口、最高作业频率可达24MHz,完全能够满意本体系的需求。
上位机和下位机之间的串行通讯选用RS-485规范接口。在通讯频率为9600bps的情况下,有用通讯间隔可达2.1km。
软件规划中,选用RTX51小型实时操作体系。它是一个专用于8051系列处理器的多使命实时操作体系,能运用四个使命优先权完结一起存在时刻片轮转调度和抢先的使命切换,并能够简化那些杂乱并且时刻要求严厉的工程软件规划作业。
2.1 下位机规划
以操控1a-1b-3c-4c-2p组合的下位机为例阐明。
下位机外接动态车辆检测电路、LED和数码相机。各下位机经过对车辆检测电路守时扫描,读取各车道当时信息,判别是否有车经过;LED显现各车道方向箭头及剩余时刻;数码相机则对违章车辆进行抓拍。
动态车辆检测电路结构如图3所示。
埋设在各车道安全线前方路面下的环形线圈传感器与振荡器匹配,构成必定频率的周期信号。该信号经施密特整形电路转化为脉宽信号后可作为计数脉冲。当有车辆经过该环形线圈时,线圈磁场发生改变,然后导致计数脉冲数量的改变。将100ms时刻内没有车经过期的频率计数作为基准计数Base,实践计数为Num。当NumBase》0时,就可断定有车辆经过。
下面是下位机中多使命的剖析与完结。
(1)初始化使命
初始化串行接口,并开端悉数其它使命。最终删去本身,因为初始化只需求一次。
(2)数据收集使命
每隔100ms依次读取四个车道(1a、1b、3c、4c)动态车辆检测电路的信息,判别Num-Base是否大于0。若为真,则置相应 Flag为1,不然置0(Flash标明某一车道有无车辆经过的标识)。令FLAG1、flag1别离标志1a车道上一次和本次的检测成果。若 FLAG1-flag1=1,则标明有车经过(相同,能够令FLAG2、flag2标识1b车道,FLAG3、flag3标识3c车道、FLAG4、 flag4标识4c车道前后两次的检测成果)。若任一车道有车经过,则向流量核算及违章监测使命发送信号。程序如下:
void job2()_task_job2{
while(1){
读取车辆检测电路信息,经过判别给flag1、flag2、flag3、flag4赋值;
if(FLAG1-flag1==1||FLAG2-flag2==1||FLAG3-flag3==1||FLAG4-flag4=1) //若某一车道有车经过
{
记载有车经过的车道;
os_send_signal(job3);//向流量核算与违章监测使命宣布信号
}
FLAG1=flag1;FLAG2=flag2;FLAG3=flag3;FLAG4=flag4; //当时标识位成为前一标识位
各计数器康复初值;
os_wait(100ms);
}
}
(3)流量核算与违章监测使命
在接纳到使命2发来的信号后,依据其供给的车道记载及该车道的当时显现情况,完结流量核算或违章监测的功用。
void job3()_task_job3{
while(1){
os_wait(K_SIG,0,0);
if(1a||1b车道有车经过){
if(当时为红灯)发动数码相机抓拍,并读取实时时钟当时时刻;
else N1++; //在绿灯继续时刻内对经过车辆计数
}
else若当时为红灯,发动数码相机抓拍,并读取时刻。3c、4c违章监测
}
}
(4)显现使命
在外接的LED上别离显现四个车道方向箭头和人行横道的红绿灯,以及1a-1b车道剩余时刻。开端的窗口时刻由上位机给定。该显现值每秒钟改写一次。
Void job4()_task_job4{
t1=T1; //T1为上位机给定绿灯窗口时刻
while(1){
各路口方向箭头、人行横道红绿灯显现及1a、1b车道剩余时刻(t1)显现;
os_wait(1000ms); //1s改写
t1–;
if(t1==0)
{os_create_task(job6); //若时刻到,创立通讯使命
os_delete_task(job4);} //删去显现使命
}
}
(5)看门狗复位使命
守时对看门狗进行复位,标明程序正常运转。
(6)通讯使命
当时刻届时,依据当时情况进行红绿灯显现切换若1a、1b当时为绿灯,则时刻到后告诉上位机,并将核算的车流量经串行口传送给上位机,由上位机触发下一组绿灯显现;右1a、1b当时为红灯,则时刻到后等候上位机触发信号。这样由上位机一致调度,能够防止各下位机各自为营所形成的时刻差。因为通讯使命对时刻特性的要求很高,所以应将通讯使命设为高优先级。
Void job6()_task_job6_prority_1{
if(绿灯时刻间到){
V1=N1*60/(2*T1); //N1标明1a、2b车道在T1时刻内经过的车辆总和,V1为该绿灯周期内两个车道均匀每分钟车流量
将V1值传送上位机;
N1清0;
1a、1b、3c、2p转赤色显现;
}
if(红灯时刻到){
os_wait(K_SIG,0,0); //等候上位机信号
依据上位机核算数据更新T1;
1a、1b、4c、2p转绿色显现;
}
os_create_task(job4); //创立显现使命
os_delete_task(job6); //删去本身
}
2.2 上位机规划
上位机首要完结人机交互的功用。它外接一个字符型LCD显现器和键盘。LCD显现器在睡觉情况下显现各路口的当时绿灯窗口时刻。当有键盘响应时,作相应的辅佐显现。
本体系的键盘选用9按键输入。当主车道上有紧迫车辆(如警车、消防车或急救车等)要求通行时,能够按下此键。
本体系设定了6种功用选项:4个主车道的绿灯窗口时刻调理选项、手动/主动操作形式切换选项以及违章记载查询选项。这6项功用,能够经过按功用键进行切换。
下面是上位机中多使命的剖析与完结。
(1)初始化使命
初始化串行接口及各车道组合的绿灯窗口时刻(20s),并开端其它使命,最终删去本身。
(2)键盘扫描使命
使用次序查询的办法,守时对键盘进行扫描,判别是否有按键被按下。若有,则判别是哪个键被按下,并向使命3宣布信号。
void job2_task_job2{
while(1){
扫描键盘;
if(有键被按下){
判别是哪个键;
os_send_signal(job3);
}
os_wait(10ms);
}
}
(3)键盘处理使命
若在初始情况下按下功用键,则进入6个功用项。再次按下功用键,则在这6个功用项之间进行切换;若按下的是确认键,则创立相应功用项所界说的使命。在任何情况下按下紧迫通行键,将创立紧迫通行使命。
(4)显现使命
当键盘扫描使命在必定的时刻内没有检测到输入信号时,将LCD转入睡觉情况,面板显现各车道组合的当时绿灯窗口时刻。若该窗口时刻因为使命5被更新,当有按键被按下时,则依据按键情况作相应的辅佐显现。
(5)时刻主动调理使命
在主动操作形式下,每隔10min,对各下位机上传的各车道组合的车流量进行剖析,依据含糊算法确认各车道组合的最优时刻分配。
别离用V1、V2、V3、V4标明1a-1b、2a-2b、3a-3b、4a-4b四个车道组合当时每分钟平衡车流量,t1、t2、t3、t4 标明各自绿灯窗口时刻,则绿灯时刻分配如表1所列。
表1 绿灯时刻分配表
本文引证地址: http://www.21ic.com/app/mcu/201901/783637.htm
Vi(i=1~4)Vi≤55《5i≤101020TI/S1520253035
不难理解,每一组合的红灯窗口时刻等于其它三个组合的绿灯窗口时刻之和。为了防止某一组车道等候的时刻过长,当有两个以上的车道组合的每分钟平衡车流量都大于15时,将它们的绿灯时刻都定为30s。这样,最长的等候时刻不超越90s。
(6)时刻手动调理使命
每按一下“+键”,将当时车道组合的绿灯窗口时刻加1,按“-键”则减1。当按确认键后,则当时设守时刻被保存到变量TI中。
(7)手动/主动切换使命
当切换到主动操作形式时,创立使命5,并宣布信号使使命3中“主车道绿灯窗口时刻调理”功用项不可选。当切换到手动操作形式时,删去使命5,并免除时刻调理功用项的约束。
(8)违章查询使命
读取各个位机的违章记载,包含违章车道和违章时刻,并在LCD上显现出来。违章车辆的图画信息可由数码相机获取。
(9)紧迫通行使命
当紧迫布告键被按下时,该使命被创立。使命首要保存当时各车道组合的绿灯窗口时刻,然后强制有紧迫情况的车道组合绿灯显现、其它车道组合红灯显现,以保证紧一辆次序通行。延时10s后,康复曾经的次序显现。因为该使命时刻特性要求很高,所以应将其优先级设为2,高于通讯使命。最终删去本身。
(10)看门狗复位使命
守时对看门狗进行复位,标明程序正常运转。
(11)通讯使命
当某一下位机因绿灯时刻到而触发串行口中止后,该取该下位机的当时车流量Vi,并触发操控下一车道组合的下位机进行绿灯显现;一起,将更新的绿灯窗口时刻TI(i=1~4)赋给各下位机,然后完结对车流量的动态调理。因为该使命时刻特性要求较高,将其优先级设为1。
结语
本体系结构简略,操作便利;既可现场操控,又可长途操控;具有手动和主动两种操控形式,具有必定的智能性;能依据现场情况,合理地调理车流,对优化城市交通具有必定的含义。
别的,使用RTX51实时操作体系供给的体系特征,能够简化多使命程序规划,满意多个使命的时刻特性要求,可完结前后台编程办法难以完结的编程使命。一起根据实时多使命操作体系,能够将各使命进行细分包装,使各使命坚持相对独立;能有用改进程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的进步。