0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用RTX51操作系统根据车流量动态调节实现智能交通灯的设计

电子设计 来源:网络整理 作者:佚名 2019-11-05 08:01 次阅读

随着城市汽车保有量的越来越多,城市的交通拥挤问题正逐渐引起人们的注意。交通灯是交管部分管理城市交通的重要工具。目前绝大部分交通灯其时间都是设定好的,不管是车流高峰还是低谷,红绿灯的时间都固定不变;还有一些交通灯能根据简单划分的时间段来调整时间,但控制起来都不是很灵活,这使得城市车流的调节不能达到最优。本文所述设计正是针对这一弊端进行了改进,根据实时车流量对各路口的绿灯时间进行动态调节,大大加强了其灵活性和实时性;软件编程采用了实时操作系统RTX51,在确保实时性要求的同时,简化了复杂的软件设计工作。

1、方案论证

图1是一个典型的十字路口示意图。分别用1、2、3、4表明四个流向的主车道,用a、b、c、p分别表示各主车道的左行车道、直行车道、右行车道以及人行横道。 通过分析很容易得知,除了四个右行车道外,在同一时间,最多只能有两个车道通行,如1a、1b通行时,其它车道都会被阻断。所以在设计红绿灯时,可以两两组合,共有四组(如la-1b、2a-2b、3a-3b、4a-4b);而各车道的红灯时间和人行横道通停时间都由这四个组合的绿灯窗口时间决定。本文将以广泛采用的图2所示的通行顺序来讲述智能交通灯的设计。

采用RTX51操作系统根据车流量动态调节实现智能交通灯的设计

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按键输入。

采用RTX51操作系统根据车流量动态调节实现智能交通灯的设计

当主车道上有紧急车辆(如警车、消防车或急救车等)要求通行时,可以按下此键。 本系统设定了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 绿灯时间分配表 Vi(i=1~4) Vi≤5 5<5i≤10 1020 ti/S 15 20 25 30 35 不难理解,每一组合的红灯窗口时间等于其它三个组合的绿灯窗口时间之和。为了避免某一组车道等待的时间过长,当有两个以上的车道组合的每分钟平衡车流量都大于15时,将它们的绿灯时间都定为30s。这样,最长的等待时间不超过90s。

(6)时间手动调节任务 每按一下“+键”,将当前车道组合的绿灯窗口时间加1,按“-键”则减1。当按确定键后,则当前设定时间被保存到变量Ti中。

(7)手动/自动切换任务 当切换到自动操作模式时,创建任务5,并发出信号使任务3中“主车道绿灯窗口时间调节”功能项不可选。当切换到手动操作模式时,删除任务5,并解除时间调节功能项的限制。

(8)违章查询任务 读取各个位机的违章记录,包括违章车道和违章时间,并在LCD上显示出来。违章车辆的图像信息可由数码相机获取。

(9)紧急通行任务 当紧急通告键被按下时,该任务被创建。任务首先保存当前各车道组合的绿灯窗口时间,然后强制有紧急情况的车道组合绿灯显示、其它车道组合红灯显示,以保障紧一辆顺序通行。延时10s后,恢复以前的顺序显示。由于该任务时间特性要求很高,所以应将其优先级设为2,高于通信任务。最后删除自身。

(10)看门狗复位任务 定期对看门狗进行复位,表明程序正常运行。

(11)通信任务 当某一下位机因绿灯时间到而触发串行口中断后,该取该下位机的当前车流量Vi,并触发控制下一车道组合的下位机进行绿灯显示;同时,将更新的绿灯窗口时间ti(i=1~4)赋给各下位机,从而实现对车流量的动态调节。由于该任务时间特性要求较高,将其优先级设为1。

3、结语

本系统结构简单,操作方便;既可现场控制,又可远程控制;拥有手动和自动两种控制模式,具有一定的智能性;能根据现场状况,合理地调节车流,对优化城市交通具有一定的意义。 另外,利用RTX51实时操作系统提供的系统特征,可以简化多任务程序设计,满足多个任务的时间特性要求,可完成前后台编程方法难以完成的编程任务。同时基于实时多任务操作系统,可以将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22416

    浏览量

    645758
  • 单片机
    +关注

    关注

    5997

    文章

    43947

    浏览量

    620480
  • 操作系统
    +关注

    关注

    37

    文章

    6259

    浏览量

    121836
收藏 人收藏

    评论

    相关推荐

    多任务操作系统源代码(Keil Rtx51)

    多任务操作系统源代码(Keil Rtx51
    发表于 07-07 09:34

    基于单片机的交通灯设计

    。本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,
    发表于 11-26 16:47

    智能交通灯 proteus仿真文本

    ①设计一个十字路口的交通灯控制电路, 要求南北方向和东西方向两个交叉路口的车辆交替运行, 两个方向能根据车流量大小自动调节通行时间, 车流量
    发表于 05-07 19:47

    RTX51操作系统

    RTX51操作系统,我个人认为是学习更深入系统的最好学习资料,在这里我把我收集的拿出来和大家分享一下!
    发表于 08-05 14:51

    智能交通灯控制系统

    智能交通灯控制系统要求能根据车流量调整红绿灯时间,这里需要用到传感器吗?如果经过简单的处理,好像可以不用传感器,但是要用到比较复杂的算术运算
    发表于 03-26 12:20

    rtx51 full实时操作系统

    有谁有哪个rtx51 full实时操作系统呢,有的话发给我吧,谢谢!
    发表于 05-09 22:52

    有关于模拟交通信号灯的资料吗、用C语言实现

    亮红灯,蜂鸣器响,如果另外一个按键按下则恢复正常。 扩展:在传统交通灯控制系统的基础上,智能交通灯控制系统
    发表于 06-18 19:38

    【OK210申请】智慧交通灯

    申请理由:研究生自费参加竞赛,经费缺乏,需要开发板做linux嵌入式开发,做智慧交通灯项目。项目描述:智慧交通灯是能够根据车流量的多少,自动调节
    发表于 06-25 18:04

    六路环形交通灯

    可不可以帮我做一个六路环形交通灯 只要红绿灯 不需要显示然后三个路口带流量监控 车流量大绿灯时间就长六个路口三个路口同时通行,绕圆盘绕一圈然后开出,比十字路口简单,车流量用红外模拟,要
    发表于 04-06 17:54

    谁有车流量检测的51单片机交通灯仿真,很多没搞懂,希望有大神指导下

    有没有大神指导下车流量检测的交通灯仿真怎么做....我已经想爆头了.....来个人帮帮忙,有仿真文件参考下最好,感激不尽
    发表于 04-24 09:13

    求做一个单片机交通灯带左转带测车流量,花钱求

    做一个单片机交通灯带左转带测车流量要求c语言家扣扣1316324986
    发表于 04-05 21:20

    如何去实现基于51单片机智能车流量检测车量统计系统设计

    可以通过一线传回来的数据进行分析、实施交通管制。显示模块采用LCD1602来实时显示当前路段运行的状态,系统还设有输入键盘,可以实现手动控制发送数据。
    发表于 11-10 07:53

    KEIL RTX51实时操作系统中文版

    KEIL RTX51实时操作系统中文版:RTX51是一个适用于8051 家族的实时多任务操作系统RTX51使复杂的
    发表于 09-23 17:10 0次下载

    如何使用rtx51小型实时操作系统

    本手册解释如何使用rtx51小型实时操作系统并给出rtx51完全版功能的概述。这个手册并不是一本详细的实时应用的入门教程并且假定你已经熟悉了Keil C51、A
    发表于 06-30 22:44 297次下载

    车流量为核心的智能交通灯自动控制系统

    本文主要介绍了一种以车流量为核心的智能交通灯自动控制系统车流量检测装置采用基于电磁感应原理的地
    发表于 01-09 09:50 2.1w次阅读
    以<b class='flag-5'>车流量</b>为核心的<b class='flag-5'>智能</b><b class='flag-5'>交通灯</b>自动控制<b class='flag-5'>系统</b>