通讯模块采用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接收到该信息会向上位机发送车辆的倒车信息。