1 引言
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 显示和通讯模块
通讯模块采用MAX232,并采取光隔离设计,以提高仪表的抗干扰能力,如图4所示。
3.4 按键和外部看门狗电路
键盘采用典型的4x4矩阵薄膜按键键盘,用来设置仪表参数。为了提高仪表的抗干扰能力,增强仪表的稳定性,采用外部看门狗复位电路。选用的器件是MAX813,电路如图5所示。
4 系统软件设计
4.1 SmallRTOS51简介
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 结语
以嵌入式操作系统为开发平台能够提高效率,避免传统开发中复杂的循环和判断结构,降低了程序维护的难度。通过合理的任务划分可以满足系统的实时性、可靠性、精确性的要求。