动态汽车称重是汽车以一定的速度经过一定宽度的称重台面,由称重台面测出汽车每个轴的重量,然后累加得出汽车总重。该称重过程是一个强实时过程,需要单片机及时采集汽车每个轴的数据并快速计算其重量。如果单片机速度过慢或者程序设计不合理,就会给仪表带来稳定性和可靠性的问题。当前很多智能仪表的软件采用前/后台系统设计,整个应用程序是一个无限的循环,后台程序循环调用相应的函数完成相应的操作,中断服务程序处理异步事件。这种传统的程序设计思路有着明显的不足。整个应用程序是一个有机的整体,使得实时应用程序的设计和扩展困难,时间要求苛刻的事件难以达到快捷有效的处理,对事件的串行处理使得资源得不到很好的利用。在智能仪表中移植嵌入式操作系统能较好的解决以上问题,并使软件开发工作变得规范、容易测试,实现模块化编程和缩短开发周期。当然RTOS本身需要占用一定的资源,随着半导体技术的发展,器件的性能不断上升、成本不断下降,使得RTOS所消耗的成本不再重要。汽车动态称重仪就是移植了嵌入式操作系统,在实际应用中增强了系统稳定性和可靠性。
2 系统总体方案
汽车动态称重仪主要由数据采集模块、数据处理模块、显示模块、数据通讯模块、外部存储器和外部看门狗组成,如图1所示。数据采集模块负责将称重传感器检测到的重量信号放大、滤波,转换成数字信号传送给CPU;CPU负责与各个外设的通讯和重量信号的分析和处理,并将处理完的重量信号发送给显示模块和通讯模块;显示模块负责重量信号的显示:通讯模块负责将重量信号发送到上位机;外部存储器存放仪表的参数:按键用来设置和修改仪表参数;外部看门狗用来提高仪表的抗干扰能力,增强仪表的稳定性。
3 硬件电路设计
3.1 数据采集模块
由于称重仪表需要高精度,采用外接A/D转换器,选用CS5532。该器件是美国Cirrus Logic公司推出的一种具有极低噪音的多通道型模拟/数字转换器,由于其采用电荷平衡技术和极低噪声的可编程增益斩波稳定测量放大器,内部集成了放大和滤波功能,可得到高达24位分辨率的输出结果,且具有高动态范围和灵活的电源配置选项等优点,使得该器件非常适合于动态称重。其基准电压由专门的基准电压器件AD780提供。电路如图2所示。
3.2 微处理器和外部存储器
微处理器是系统的核心,其性能的好坏直接决定了称重系统的准确性、稳定性和可靠性。基于汽车动态称重仪对精度和实时性的要求,选用PHILIPS公司的P89C668单片机。它具有以下特点:
①片内带有8 KB RAM,64 KB Flash存储器,该存储器既可并行编程也可串行编程(ISP),在实际的成型产品中可通过ISP升级用户程序;②该器件在6个时钟周期内执行一条指令,是传统的80C51的2倍;在每个机器周期,6个时钟周期下速度高达20 MHz(相当于40 MHz性能);③该器件有4个8位I/O端口,3个16位定时器/事件计数器,多中断源,4个优选级,可嵌套中断结构,一个增强型UART和片内振荡器及时序电路;这些资源为系统的硬件设计提供足够的I/O端口,为软件复杂功能的实现和未来程序的扩展,提供了足够的程序存储空间,为重量数据的采样、滤波和称重算法的实现,提供了足够的数据存储空间,可采用ISP功能实现产品的软件升级。
外部存储器采用ATMEL公司的AT24C512器件,拥有64 KB存储容量、I2C接口的电可擦除非易失EEPROM存储器,为设置和校准参数提供存储空间。3.3 显示和通讯模块
显示驱动采用SN74HC595,是一款串行输入并行输出的移位寄存器,仅需3根I/O端口线即可控制6个数码管和8个发光二极管,极大节省了单片机的资源,电路如图3所示。
通讯模块采用MAX232,并采取光隔离设计,以提高仪表的抗干扰能力,如图4所示。
3.4 按键和外部看门狗电路
键盘采用典型的4x4矩阵薄膜按键键盘,用来设置仪表参数。为了提高仪表的抗干扰能力,增强仪表的稳定性,采用外部看门狗复位电路。选用的器件是MAX813,电路如图5所示。
4 系统软件设计
4.1 Small RTOS51简介
Small RTOS5l是一个专门为5l系列单片机设计的嵌入式实时操作内核,使用Keil编译器可以直接使用其代码,其特点:①公开源代码。只要遵循许可协议,任何人可以免费获得源代码,便于用户的二次开发。②可移植性。用户可以把与CPU有关的控制指令压缩到最小。可以使用ANSIC编写应用程序,不仅简化了编程手段,而且便于程序移植。⑧可固化性。Small RTOS51为嵌入式系统设计,可以嵌入到产品中,成为产品的一部分。④占先式运行。Small RT0S51可以管理16个用户任务,每个任务可以设置不同的优先级。Small RTOS5l总是运行优先级最高的任务。⑤中断管理。采用中断管理方式.当有更高级的中断申请时,将目前正在执行的任务挂起。如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套结束后立刻执行。中断嵌套层数可达255层。若需要,可以禁止中断的嵌套管理。⑥RAM需求小。SmallRTOS51为小RAM的系统设计,因而对RAM的需求只有几百字节,相应的系统服务也少。
4.2 系统软件实现
按照仪表所要实现的功能,将整个系统划分为多个并行的任务,占先式操作内核对任务的调度是按照任务优先权的高低进行。这里将系统划分为8个任务,按其优先级从高到低的顺序排序。用操作系统提供的任务建立函数OS一TaskCreate来实现。
(1)Task_AD负责接收A/D转换后的数据,即信号的采样,并判断是否为汽车轴重数据,若是就保存。通过中断服务程序接收A/D转换后的数据,读取完成会发一个信号量AD_Sem,Task_AD任务接收到AD_Sem信号量后开始判断是否保存数据。如果任务检测到一个轴完整通过称台,就发送相应轴的消息到数据处理任务。
(2)Task_IdenTIfy负责识别汽车的轴型和汽车是否完全通过称台。根据国家规定,不同轴型的汽车限载不同,所以动态称重时,仪表要自动识别汽车轴型,然后根据该轴型汽车的限重判断其是否超载。该任务还通过扫描车辆分离器的信号,识别车辆是否完全通过称重台面。若识别到车辆完全通过称台,就发送End_Sem信号量。
(3)Task_Comm_Rece负责接收来自上位机的命令和回应仪表的发送请求。仪表通过上位机发来的不同命令执行相应的操作。
(4)Task_Key负责按键的扫描和识别。
(5)Task_Data负责称重数据的处理。当该任务接收到来自Task_AD任务发送的轴信息后,开始处理该轴的数据。通过称重算法计算出该轴的重量。并将重量以信息的方式发送给Task_Display任务。
(6)Task_Display负责显示重量和参数。该任务接收到数据处理发来的信息,将显示该轴的重量,如果仪表检测到汽车已完全通过称台,显示汽车总重。如果Task_Key任务扫描到参数键按下时,切换到参数显示状态。
(7)Task_End负责汽车完全通过称台后的一系列处理工作,包括总重累加,轴组重量统计,轴型统计。处理完后向数据通讯信息队列发送信息,通知数据发送任务向上位机发送相应数据。
(8)Task_Comm_Send负责向上位机发送数据,当该任务接收到通讯消息后,根据不同的信息值向上位机发送不同的数据,例如,若汽车正向通过称重台面,则通讯信息值为1,Task_Comm_Send接收到该消息后会向上位机发送车辆的重量信息和轴型信息。若汽车反向通过称重台面,则通讯信息值为0,Task_Comm_Send接收到该信息会向上位机发送车辆的倒车信息。
5 结语
以嵌入式操作系统为开发平台能够提高效率,避免传统开发中复杂的循环和判断结构,降低了程序维护的难度。通过合理的任务划分可以满足系统的实时性、可靠性、精确性的要求。