0. 引言
日常生活中经常可以看见某些特殊用途的车辆,这些车辆通过交叉路口时,往往是通过交警临时 *** 作交通信号控制机改变信号灯的颜色或是通过相关人员直接上路指挥等方式以获得在交叉路口的优先通行权。这样的做法实时性和安全性都不是很好。射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,在无须人工干预的前提下工作,并可识别高速运动物体且 *** 作快捷方便,同时可工作于各种恶劣环境。本系统可以针对特种车辆发出的申请,对其进行有效地识别,通过位于路口的交通信号控制机或远程监控中心的控制,决定其是否获得路口的优先通行权。监控中心也可以根据车辆反馈的信息获得特定路口及其周边一定范围内的道路交通通行状况,从而为道路交通的区域协调控制和决策提供有力依据。
1. 系统设计要求及总体设计
图1 系统示意图
本系统的硬件平台主体主要包括射频识别(RFID)电子标签模块和射频识别读卡器模块两部分。电子标签模块安装于车辆上,一般位于方便驾驶员 *** 作的适当位置。考虑到性价比和开发周期的因素,电子标签部分的微控制器采用美国ATMEL公司的基于51核的单片机AT89C51[1]。RFID标签按供电方式可以分为有源和无源两种,有源是指标签内有电池提供电源,其作用距离较远,但寿命有限、体积较大、成本高,且不适合在恶劣环境下工作;无源标签内无电池,利用波束供电技术将接收到的射频能量转化为直流电源为卡内电路供电,其作用距离相对有源卡短,但寿命长且对工作环境要求不高[2]。考虑到标签的工作环境为车内,且为了提高信号质量和作用距离,本系统的电子标签模块采用有源标签。电子标签模块由车载电源供电。读卡器模块位于路口,采用韩国SAMSUNG公司的基于ARM7TDMI-S核的32位微处理器S3C44B0X,将识别的信息通过RS-485总线传给位于路口的交通信号控制机,或是通过网口将信息直接传给监控中心的上位计算机,再由交通信号控制机或监控中心决定是否改变信号灯的状态。每一个十字路口安装四台读卡器,均位于道路右侧,为了防止出现读卡器误读,将四台读卡器放置于彼此距离较远的安全位置上。
2. 硬件设计
图2 电子标签结构框图
图3 读卡器系统框图
3. 软件设计
为了实现TCP/IP通信,同时使系统尽可能地轻量和简洁,本系统通过在uC/OS-II *** 作系统上移植LwIP协议栈加以实现。lwIP是瑞士计算机科学院的一个开源的TCP/IP协议栈实现,它是一套专门为嵌入式系统设计的源码开放的轻型协议栈。LwIP在保持TCP/IP协议基本要求的前提下,通过层与层之间共享内存,避免了许多繁琐的复制处理,这样做大幅度地节省了代码和数据存储空间,因此非常适合嵌入式应用。与其他轻型协议栈不同的是,LwIP不仅支持一般的网络协议,比如UDP协议、DHCP协议、PPP协议等,而且还支持多网络接口、IPv6和标准API。
3.1 LwIP在uC/OS-II上的移植
针对uC/OS-II[6]和ARM的ADS编译器,LwIP的移植只需要编写arch文件夹下的3个文件——cc.h、sys_arch.h和sys_arch.c。其中cc.h中有与CPU和编译器有关的定义,包括数据结构和大小端存储方式等。为了增强移植性,LwIP专门把和 *** 作系统有关的数据结构和函数放在一起组成 *** 作系统封装层,为诸如定时、进程同步和消息传递等 *** 作系统服务提供统一的接口,移植时需针对不同的 *** 作系统来实现特定的 *** 作系统封装层,这些是由sys_arch.h和sys_arch.c实现的。其中sys_arch.h主要定义与 *** 作系统相关的数据结构——信号量、邮箱和进程号,这些在uC/OS-II中都有对应的实体,LwIP中的邮箱对应于uC/OS-II中的消息队列。sys_arch.c中要实现和 *** 作系统有关函数的定义,包括系统的初始化以及信号和邮箱的 *** 作——创建、删除、投递和等待,这些功能需要用uC/OS-II中相应的函数进行重新封装。另外,TCP/IP协议栈中需要许多定时器的功能,在LwIP中是用sys_TImeout结构体队列和相应的函数实现的。每个sys_TImeout结构体包括本线程的TImeout时间长度,以及超时后的回调处理函数sys_arch.c中sys_arch_TImeouts()函数的功能就是返回当前进程所对应的sys_timeout结构体队列的头指针。本系统用的方法是在系统初始化的时候根据最大的LwIP进程数创建一个sys_timeout结构体指针的数组,以后每创建一个LwIP进程其优先级都从一个连续的已知区间进行分配,sys_arch_timeouts()函数通过调用OSTaskQuery()函数获得进程的优先级进而获得对应的sys_timeout结构体队列的头指针。
3.2 RTL8019驱动程序的编写
RTL8019驱动程序做的工作主要是8019的初始化、发送和接收以太网数据包。初始化函数rtl8019_iNIt()是在添加以太网络接口时由netif_add()函数调用,调用过程中首先初始化此接口对应的全局网络接口结构体,然后设置8019的各功能寄存器。初始化完8019之后调用arp_init()函数启动ARP功能,然后用sys_timeout()函数启动ARP缓冲列表生命周期的定时器。数据包的发送首先从ARP缓冲队列中查找目的MAC地址,然后构造以太网数据帧的头部,最后调用底层的发送函数low_level_output()将数据帧发送出去。如果找不到对应的IP/MAC项,发送ARP请求数据帧。数据包的接收由中断[7]处理函数rtl8019_ISR()调用,它的执行过程是先调用最底层的接收函数low_level_input()从8019中接收数据帧,如果接收的是IP数据包,则更新ARP缓冲队列并把数据包传给网络接口结构指定的函数进行处理。如果接收的是ARP数据包,则调用etharp_arp_input()函数处理。最底层的接收发送函数采用的都是8019的远程DMA工作方式以提高性能[8]。
3.3 软件框图
图4 读卡器系统软件框图
信号机的响应级由监控中心的上位机设定,信号机可以在事先获得授权的情况下自主改变灯色,如果事先未获授权,或是同时收到多个不同标签的请求,则信息必须送到监控中心处理,由监控中心的上位机判定优先级后发指令控制信号机的动作。监控中心还可以随时获得特定车辆的位置以及所在区域的路况等信息,通过合理改变区域内信号机的绿信比,达到区域协调控制的目的。
4. 实验结果
监控中心的上位机软件由Mircosoft Visual C++++.NET 2003开发。
该系统应用于某市政务区的繁华大道与锦绣大道的交口。由于事先设定由监控中心控制,所以当标签发送通行请求时,读卡器将向监控中心发送请求,监控中心的上位机d出图5所示的对话框,该对话框显示了车辆所在的路口,车号,车型,车种,请求通行的类型以及请求时间等相关信息,由监控中心决定是否处理其请求,监控中心 *** 作人员可以点击“忽略”以不响应该车辆本次的申请。
图6 上位机软件控制界面
在图5对话框中点击“同意受控”后,将会出现图6所示的设置窗口,左上角的为科学城区域内的主要道路列表,左下角显示了与道路相应的各交口信号机的当前状态,未联机的信号机不显示。右上角为当前发送申请的车辆所在的繁华大道与锦绣大道交口的示意图,通过右下角的列表设定当前路口信号机的执行方案。当前的执行方案如列表中所示,该路口信号机当前执行四个相位的方案,每个相位的灯组号如图示。当前执行的为1号时段方案,对应到本信号机,1号方案表明将一天分为7:00~21:00,22:00~6:00两个时段,每个时段的相位配时不同。后面的时间即为当前时段每个相位的时间长度。通过改变时间长度可以设定放行的时间。
责任编辑:ct
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)