罗 繁 李 曦 张保平
随着现代交通的迅速发展,频繁的交通事故造成的无数人员伤亡和巨大财富损失也越来越引起人们的重视。为了更加有效地监督驾驶人员的驾驶行为,使交通安全管理制度能够真正得到贯彻落实,以达到降低交通事故率的目的。汽车行驶状态记录仪可以记录汽车在行驶过程中的各种状态及数据。它既可以作为事故分析的客观依据,同时也是考核驾驶员违规操作的重要监督手段,由于这种“监督”和“见证”的功能,所以,它能提高驾驶员的安全责任感,从而大幅度降低事故率。
系统简介
本汽车行驶状态记录仪可以记录汽车在行驶过程中的刹车、主光灯、左转向灯、右转向灯、双跳灯、机油压力、制动气压、空滤堵塞和手制动9个开关状态量以及水温、发动机转速和行驶速度3个模拟量。同时可以记录汽车启动和停止的日期和时间(即记录仪的开机及关机的日期和时间),并可以根据行驶速度计算出行驶里程,而且可以通过串口与计算机进行通信,把所记录的数据发送给计算机进行处理、分类后存入到数据库中供用户查看,本记录仪还可以根据计算机发出的命令执行设置实时时钟和实时测试汽车行驶状态等操作。
系统硬件
整个硬件系统主要由数据采集模块、微处理器(MPU)、存储模块、实时时钟模块(RTC)和通信口构成。系统硬件原理框图如图1所示。
数据采集模块 数据采集模块主要由输入通道、I/O口、计数器和A/D转换器构成,其主要功能是采集记录仪要记录的各种状态信号,包括开关状态量和模拟量两种信号。
所有要采集的信号都是从输入通道引入的,每一路输入通道的电路如图2所示,输入信号先通过阻容滤波电路,消除掉抖动及脉冲干扰,然后通过光电隔离电路,这在电气上使得输入信号(S)和输出信号(IN)完全绝缘,抑制了各种干扰信号通过输入通道进入记录仪而影响微处理器的正常工作。
对于不同的状态信号所采用的数据采集通道也有所不同。
开关状态量信号:它通过输入通道后直接送给I/O口供微处理器读取。
水温:通过车载温度传感器获得信号,然后通过输入通道引入到A/D转换器上,经过A/D转换后送微处理器处理。
车速:电磁式速度传感器将速度转化成脉冲信号,该信号的频率与速度成正比。该脉冲信号通过输入通道引入到计数器上进行定时脉冲计数(即测频),即可获得车速数据。
转速:转速的获取和速度基本相同,只不过转速传感器将转速转化成了正弦信号,在输入到计数器之前要把正弦信号通过施密特触发器整形成脉冲信号。
微处理器 选用MCS-98单片机,它具有10位精度的内部A/D转换功能,再加上单片机内部的定时/计数器及串行通讯接口(SCI),这样就可以方便地实现水温、车速和转速这三个模拟量的测量以及与计算机的串口通信。同时片内具有Watchdog功能,当程序由于某种干扰而死机时,系统可以可靠复位,保证系统的正常运行。而且其内部总线为16位,运算能力和计算速度都大为提高,特别适合用于模拟量数据采集系统。
实时时钟模块(RTC)选用DALLAS公司的实时时钟芯片DS1302,该芯片为8引脚小型DIP封装,附加31字节静态RAM,采用串行通信方式,只需三条连接线即可与单片机通信,可提供秒、分、时、日、月和年等信息,一个月小于31天时可自动调整,包括闰年,有效至2100年。可采用12h或24h方式计时,采用双电源(主电源VC2和备用电源VC1)供电,DS1302由VC1和VC2两者中较大者供电,使系统在没有主电源的情况下也能保持时钟的连续运行。其作用是作为记录信息的时间标准,在记录时,微处理器(MPU)从DS1302读出实时时钟,为各种信息打上时间标记。
存储模块 存储模块由缓冲存储器和主存储器两种存储器构成。其中主存储器选用Flash RAM,Flash存储器无需电池即可保存数据长达10年。Flash存储器在写入时有复杂的命令操作,因此可以减少在受到干扰时Flash的数据被改写的可能性,另一方面,采用Flash技术可以使系统记录数据的容量增加,成本下降。
但是由于Flash RAM速度不够快,所以,还需要缓冲存储器,这里选用E2PROM作为缓冲存储器。
通信口记录仪通过MCS-98单片机的片内串行通信接口(SCI)与计算机进行通信。由于通信速度要求并不高,为了降低成本,这里直接采用RS-232标准接口电路。
电源直接利用汽车常规电瓶的24/12V电压供电,通过过压保护和滤波电路稳压到系统的工作电压5V。
系统软件
系统软件由底层软件和顶层软件组成。
底层软件 底层软件为记录仪的控制软件。其主要功能是巡回检测各个开关状态量和模拟量,采用相应的“动态压缩算法”进行采集和记录,并根据计算机通过串口所发出的命令进行日期设置、实时测试和发送所记录数据给计算机等一系列操作。这里的“动态压缩算法”是指在周期性采集的基础上,对于开关状态量将本次状态Si和前次状态Si-1进行逻辑异或运算,当运算结果为“1”,表明状态发生了变化才记录本次状态;而对于模拟量,将本次采集到的数值和前次采集到的数值相减,绝对值大于一定的阈值(|Si-Si-1|>d),表明模拟量的变化超过了所设定的阈值才记录本次数值,其中阈值d可以根据用户的需要进行调节。这样提高了记录密度,减少了冗余数据量。
软件采用MCS-98系列汇编语言按模块化结构进行编写,主要由主程序、1s中断程序、串口中断程序三大模块组成。
主程序模块:主程序框图如图3所示。
它主要进行系统初始化并记录上次关机日期和时间以及本次开机日期和时间(上次关机时间放到本次来读取,这是因为关机瞬间单片机来不及记录关机日期和时间),然后进入“等待中断”,不断等待1s中断和串口中断的到来(直到关机为止),并跳转到相应的中断程序模块。
1s中断程序模块:用实时时钟芯片产生1s中断,该中断主要实现数据采集和记录。该系统要求对状态的记录精确度为秒,因此在1s中断中完成对全部9个开关量和3个模拟量的采集和记录就可以满足要求了。为了防止抖动及脉冲干扰确保开关量状态的采样准确性,在“逐个采集各路数据”模块中,对于开关量的采样安排了8ms的数字滤波。若开关量状态在8ms内保持稳定,则认为这次的采样是正确的。将本次状态和前次状态进行比较(这采用“动态压缩算法”来实现),若状态发生了变化,则将对应的状态号、日期和时间以及数值转换成自定义格式的二进制数据(对于开关状态量:状态号、年、月、日、时、分、秒;对于模拟量:状态号、年、月、日、时、分、秒、数值)存入Flash RAM中。另外还将当前日期和时间存入到Flash RAM中自定的××存储单元中,不断进行覆盖,这样最靠近关机瞬间的日期和时间就记录下来,作为关机时间,供下次开机时读取。1s中断程序框图如图4所示。
串口中断程序模块:主要是根据计算机发出的命令进行相应的操作,即发送所记录的数据给计算机、设置实时时钟和实时测试汽车行驶状态。串口中断的优先级比1s中断的优先级要高。
顶层软件顶层软件为计算机的控制软件,采用VC++编写。这个软件提供了用户友好的界面,它通过串口与记录仪进行通信。用户只需点击用户界面上的相应按钮就可以发送相应命令给记录仪,让它执行相应的操作,例如,设置实时时钟日期和时间、读取记录仪数据和汽车行驶状态实时测试等。
设置实时时钟日期和时间:这是用计算机的系统日期和时间来校准记录仪的实时时钟芯片的日期和时间,确保其日期和时间的准确性。
读取记录仪数据:记录仪所记录的数据是自定义格式的二进制数据(对于开关状态量:状态号、年、月、日、时、分、秒;对于模拟量:状态号、年、月、日、时、分、秒、数值),要把这些原始数据按自定义格式解码,转换成相应的状态名(如刹车等)、状态记录的日期和时间以及状态的数值(对模拟量而言),存入数据库中,供用户查看。
汽车行驶状态实时测试:此时需要使用笔记本电脑随车测试,记录仪一边实时采集和记录汽车行驶过程中的状态,一边把所记录的数据发送给笔记本电脑进行处理后显示。这既方便了用户实时测试汽车的行驶状态也可以作为在开发过程中调试记录仪的一种方法。
结 论
该记录仪可以将汽车行驶过程中的多种状态记录下来,而且这些记录可以发送给计算机进行处理和存储,以供用户查看。它为有关部门管理和监督驾驶员的违规驾驶提供了极大的方便,能有效地降低和防止事故的发生,减少和避免经济损失。也为事故分析提供了客观、科学的见证。