日常生活中经常可以看见某些特殊用途的车辆,这些车辆通过交叉路口时,往往是通过交警临时操作交通信号控制机改变信号灯的颜色或是通过相关人员直接上路指挥等方式以获得在交叉路口的优先通行权。这样的做法实时性和安全性都不是很好。射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,在无须人工干预的前提下工作,并可识别高速运动物体且操作快捷方便,同时可工作于各种恶劣环境。本系统可以针对特种车辆发出的申请,对其进行有效地识别,通过位于路口的交通信号控制机或远程监控中心的控制,决定其是否获得路口的优先通行权。监控中心也可以根据车辆反馈的信息获得特定路口及其周边一定范围内的道路交通通行状况,从而为道路交通的区域协调控制和决策提供有力依据。
1. 系统设计要求及总体设计
图1 系统示意图
本系统的硬件平台主体主要包括射频识别(RFID)电子标签模块和射频识别读卡器模块两部分。电子标签模块安装于车辆上,一般位于方便驾驶员操作的适当位置。考虑到性价比和开发周期的因素,电子标签部分的微控制器采用美国ATMEL公司的基于51核的单片机AT89C51[1]。RFID标签按供电方式可以分为有源和无源两种,有源是指标签内有电池提供电源,其作用距离较远,但寿命有限、体积较大、成本高,且不适合在恶劣环境下工作;无源标签内无电池,利用波束供电技术将接收到的射频能量转化为直流电源为卡内电路供电,其作用距离相对有源卡短,但寿命长且对工作环境要求不高[2]。考虑到标签的工作环境为车内,且为了提高信号质量和作用距离,本系统的电子标签模块采用有源标签。电子标签模块由车载电源供电。读卡器模块位于路口,采用韩国SAMSUNG公司的基于ARM7TDMI-S核的32位微处理器S3C44B0X,将识别的信息通过RS-485总线传给位于路口的交通信号控制机,或是通过网口将信息直接传给监控中心的上位计算机,再由交通信号控制机或监控中心决定是否改变信号灯的状态。每一个十字路口安装四台读卡器,均位于道路右侧,为了防止出现读卡器误读,将四台读卡器放置于彼此距离较远的安全位置上。
2. 硬件设计
图2 电子标签结构框图
电子标签采用nrf2401+AT89C51架构。nrf2401是NORDIC semiconductor的RFID芯片,采用全球开放的2.4GHz频段,有125个频道,可满足多频及跳频需要,具有较高的数据吞吐量,速率可达1Mbps,外围元件较少,只需一个晶振和一个电阻即可设计射频电路,发射功率和工作频率等所有工作参数可全部通过软件设置,电源电压范围为1.9V~3.6V,功耗很低,电流消耗很小,-5dBm输出功率时典型峰值电流为10.5mA,芯片内部设置有专门的稳压电路,因此,使用任何电源(包括DC/DC开关电源)均有良好的通信效果,每个芯片均可以通过软件设置最多40bit地址,而且只有收到本机地址时才会输出数据,内置CRC纠检错硬件电路和协议。AT89C51是一种低功耗高性能的8位单片机,片内带有一个4K字节的Flash可编擦除只读存储器,它采用了CMOS工蚁和高密度非易失性存储器技术,其中央处理器由ALU,专用寄存器组,定时控制部件等组成,具有较强的调用、跳转、判断、丰富的数据传输功能,以及提供存放中间结果、常用参数寄存器等功能。电子标签安装于车辆上,操作面板由5个按键组成,分别是开关,复位,左转请求,右转请求和直行请求。其中请求键采用中断方式,用于在车辆接近路口需要优先通过时向读卡器发送优先通行请求。标签中还存储有关于该车辆的信息数据,如车种,车牌,型号和用途等。
图3 读卡器系统框图
读卡器系统仍然采用nrf2401作为接收节点。读卡器部分主要实现信息识别和通信功能。采用SAMSUNG公司的基于ARM7TDMI-S核的高性能32位微处理器S3C44B0X[3]。它的工作电压仅为2.5V,大大降低了芯片的功耗,可以外扩SDRAM,FLASH,内置的LCD控制器最大可以支持256色STN的LCD[4],71个通用I/O,包括8个外部中断源。本系统中扩展了10Mbps以太网接口芯片Realtek公司的RTL8019,该芯片具有16位数据线接口和20位的地址线接口,可以在发送的物理帧上自动添加帧头,帧起始定界符和校验和。读卡器将接收到的信息通过RS-485总线传输到现场的交通信号控制机上,直接改变交通灯状态,如果路口中有相同或更高的申请级别,则将请求信息通过网口送到监控中心仲裁,然后由监控中心直接向信号机发送指令[5]。
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开发。
该系统应用于某市政务区的繁华大道与锦绣大道的交口。由于事先设定由监控中心控制,所以当标签发送通行请求时,读卡器将向监控中心发送请求,监控中心的上位机弹出图5所示的对话框,该对话框显示了车辆所在的路口,车号,车型,车种,请求通行的类型以及请求时间等相关信息,由监控中心决定是否处理其请求,监控中心操作人员可以点击“忽略”以不响应该车辆本次的申请。
图6 上位机软件控制界面
在图5对话框中点击“同意受控”后,将会出现图6所示的设置窗口,左上角的为科学城区域内的主要道路列表,左下角显示了与道路相应的各交口信号机的当前状态,未联机的信号机不显示。右上角为当前发送申请的车辆所在的繁华大道与锦绣大道交口的示意图,通过右下角的列表设定当前路口信号机的执行方案。当前的执行方案如列表中所示,该路口信号机当前执行四个相位的方案,每个相位的灯组号如图示。当前执行的为1号时段方案,对应到本信号机,1号方案表明将一天分为7:00~21:00,22:00~6:00两个时段,每个时段的相位配时不同。后面的时间即为当前时段每个相位的时间长度。通过改变时间长度可以设定放行的时间。
5. 总结
本系统应用于实际的路口,使得特种车辆的通行更加迅速便捷,同时极大降低了人力消耗。作为智能交通系统的一部分,本系统对实现区域协调控制也具有一定的现实意义。
参考文献:
[1] 宋廷强,沈剑良,曲英杰. 一种RFID电子标签的数字部分设计[J].青岛科技大学学报,2008,29(1):72-76.
[2] FINKENZELLER K. 射频识别技术[M].吴晓峰,陈大才,译.北京:电子工业出版社,2006.36-125.
[3] 李岩,荣盘祥. 基于S3C44B0X嵌入式uClinux系统原理及应用[M].北京:清华大学出版社,2005:69-254.
[4] 陈鼐,于盛林. 基于ARM 的LCD 模块接口设计及MiniGUI 实现[J].仪器仪表学报,2007,28(Z4):277-281.
[5] 马连博,苏卫星,胡琨元,等. 基于嵌入式Linux和RFID技术的电子看板设计[J].计算机应用,2007,27(12):283-285.
[6] 那加. 嵌入式实时操作系统uC/OS-Ⅱ在Sharp LH79520处理器上的移植[J].测控技术,2007,26(10):53-56.
[7] 冯玮,喻晓峰.基于ARM系统下映像文件的执行与中断运行机制的实现[J].计算机应用,2006,26(Z1):255—257.
[8] 张蓬鹤,王群,张东辉. RTL8019型控制器与高速数字信号处理器的接口设计及编程技巧[J].国外电子元器件,2006 ,10(8). 47-49.