基于μC/OS-Ⅲ的整车式动态称重仪表
2015-06-07李建波牛昱光
李建波,牛昱光
(太原理工大学信息工程学院,山西太原 030024)
基于μC/OS-Ⅲ的整车式动态称重仪表
李建波,牛昱光
(太原理工大学信息工程学院,山西太原 030024)
针对高速路收费系统对车辆称量精度及轴型识别率的要求,通过分析整车式动态称重秤台结构及称重过程的特点,提出了悬臂梁应变桥式称重传感器接线方案及整车式动态称重仪表的软硬件设计方案;论述了分割车辆上秤过程,识别车轴,计算单轴质量的专家算法及基于嵌入式实时操作系统μC/OS-Ⅲ的软件实现。经测试该仪表不仅提高了称量精度而且不借助辅助设备能够准确识别车辆轴型。
动态称重;称重传感器;专家算法;嵌入式实时操作系统μC/OS-Ⅲ
0 引言
随着称重技术的发展,动态称重[1]在高速公路计重收费系统中得到了广泛应用,动态称重汽车衡也从单台面结构、双台面结构发展到了大台面整车式结构,称重系统精度得到了进一步提高。在单、双台面结构的动态称重汽车衡中,需要采用分轴计重求和的方式对车辆进行称量,但由于轮胎与台面接触时间短、轮胎驱动力、车辆自身振动、路面激励等因素对称重精度影响较严重,而大台面整车式结构的动态称重汽车衡可以改善这些因素对称重精度的影响。在动态称重技术中,需要区分车辆轴数及单轴质量,对于大台面整车式结构的动态称重将面临如何区分车辆轴数及单轴质量的难题,多数解决方案是采用在驶入方向增加单台面方式,这将导致增加设备成本和降低可靠性。本文的解决方案是在不增加复杂的秤台设备情况下,设计一套基于嵌入式系统的硬件环境和软件程序,对实际称重数据波形进行在线分析,采用专家算法对整个车辆的上秤过程进行分割,从而计算出轴数及轴重,实现整车式动态称重。
1 硬件设计
整车式动态称重仪表的硬件结构如图1所示。主控芯片采用ARM-Cortex M4架构[2]的STM32F407VGT6处理器;触摸屏数据传输采用静态存储控制器FSMC[3],触摸控制采用SPI接口;称重信号采集采用2片独立的高精度A/D转换芯片CS5532提供4路ADC采集通道;多路光电隔离数字I/O通道实现与辅助设备连接;扩展64 Mbit容量的 Flash存储器用于保存系统参数和过车数据;具有USB接口(USB-A)、网口(PHY:DM9161AEP、LAN:HR911105A)、串口(Max232)通信方式。
图1 硬件系统结构图
其中,主控芯片、触摸屏和Flash存储器及ADC芯片的电路设计可参考相应器件的参考电路,多路数字I/O通道采用光电隔离措施。ADC数据采集通道接线盒电路如图2所示(部分电路未给出)。大台面采用多个同一型号悬臂梁应变桥式压力传感器,灵敏度相同并通过R6进行补偿,接线盒另一功能为调整传感器的失调电压。利用AD8237芯片负反馈通道抑制传感器失调电压,由于单极性供电需R3、R4和A2提供参考电压,R5和A3提供调整电压。并通过R0、RF、R7和A4构成的加法器输出给ADC转换芯片CS5532。跳线帽JP1控制传感器是否接入电路,用于秤台及传感器的调整。
图2 ADC数据采集通道接线盒电路
2 算法设计
车辆匀速行驶上秤台过程波形如图3实线所示。整个过程呈明显的阶梯状,同时伴随着抖动。为满足实时性要求,仪表ADC采样数据通过DMA(外设到内存自动增长循环模式[4])方式存储到特定内存单元,减少CPU占用。由于轴数是计重收费费率的一个最重要的因素,对单轴质量有相关限重规定,因此需要准确识别车辆轴数及轴重。根据上轴过程数学模型,本仪表采用了专家算法对整个过程进行分割。
上轴过程模型如下:根据轮胎特点认为轮胎与地面为面接触,忽略轮胎和秤台形变因素影响,根据压强与压力原理:F=pS,假定p恒定,车速v恒定,在运动中S与时间t成正比,受力函数的表达式如式(1)所示:
(1)
式中:a为上轴开始时刻;b为上轴结束时刻。
由于采用滑动滤波[5]则滤波后受力函数:
(2)
式中T为滤波周期。
为计算方便,假设T=2(b-a)则:
(3)
波形如图3所示。
图3 理想ADC数据与滑动滤波波形
假设a=2,b=6,k(b-a)=1,其中k(b-a)为增加轴重的重力。当T!= 2(b-a)时,f′(t)成梯形,f(t)和f1(t)相似,这里略去了公式及图形。
根据单轴模型特征及轴间过程特征,建立专家算法分割过车过程以便计算轴数及轴重。专家算法主要根据以下几个特征对整个过程进行分割,包括数据变化率、上轴阈值、轴间间隔、数据平稳性。并根据这些特征建立知识库。
推理过程:首先根据数据变化率达到阈值且变化趋势符合模型设置上轴标志,变化率达到峰值过程中估算轴重,变化率低于阈值后,判断是否达到上轴阈值,达到后判断是否达到上轴间隔时间和上轴过渡时间,最后判断数据是否稳定并和估计值比较计算轴重。整车都上秤后根据总轴数、上轴时间间隔和轴重信息进行车轴分组,与轴型库对比后对轴型进行修正,计算轴组质量。若出现多轴或丢轴现象,可通过上位机通知仪表,仪表重新分析上轴过程,并调整系统参数。
3 软件实现
为达到实时性和交互性要求,本仪表采用了μC/OS-Ⅲ实时嵌入式系统[6]和emWin图形界面进行软件设计。硬件驱动部分代码采用ST官方提供的固件库函数,支持控制器的所有外设性能特征,可明显减少程序开发时间。
3.1 系统配置和任务创建
系统配置:配置系统时基中断1 ms,修改中断向量表,配置好DWT提供时间戳时钟源,配置系统功能。
创建自己的任务:
static OS_TCB AppTaskStartTCB; /*声明任务控制块*/
static CPU_STK AppTaskStartStk[START_STK_SIZE];/*声明任务堆栈*/
static void AppTaskStart(void *p_arg); /*声明任务*/
OSTaskCreate((OS_TCB *)&AppTaskStartTCB,
(CPU_CHAR *)“App Task Start”,
(OS_TASK_PTR ) AppTaskStart,
…
(OS_ERR * )&err); /*创建任务*/
在开始任务中创建emWin屏幕显示及触摸屏任务,还需创建专家任务、数据存储任务、通信任务[7],方法同上,并编写相应的任务函数。
3.2 界面移植
配置好FSMC时序及SPI时序,编写LCD板级支持函数:
Void LCD_DrawPoint(u16 x,u16 y,u16 color); //在屏幕上画点
U16 LCD_ReadPoint(u16 x,u16 y); //读屏幕上一点
Void LCD_MyInit(); //屏幕初始化
配置界面,创建自己的窗口:
static const GUI_WIDGET_CREATE_INFO aDialogCreate1[]= {{FRAMEWIN_CreateIndirect,*pName,Id,x0,y0,
xSize,ySize,RAMEWIN_CF_ACTIVE}, //窗体
{ TEXT_CreateIndirect,* pName,Id,x0,y0,xSize,ySize,TEXT_CF_RIGHT }, //控件
};
hWin1 = GUI_CreateDialogBox(aDialogCreate1,GUI_COUNTOF(aDialogCreate1),0,0,0,0);
//建立窗体编写相应的屏幕显示任务函数。
3.3 专家算法分割过程的程序实现
整个分割过程以上轴标记点为基础元素,提供给专家算法任务进行处理,同时由存储任务存储该变量。由于车辆类型和车速不同,很难确定统一的上轴判断标准,因此在最低判断标准下接受第一轴,并根据第一轴的上秤信息重新确定其他轴的上秤标准,如:stdpre_tim(标准轴间间隔时间)和stdwth_tim(标准过渡时间)由[第一轴过渡时间×系数]获得。系数通过知识库查询得到,该系数可根据上位机提供的多轴或丢轴信息,重新提取上轴标记点计算调整。
分割过程流程如图4所示。
图4 过程分割流程图
专家算法代码结构:
if(ddiffer != 0) //ddiffer != 0,star_tim != 0 (上轴过渡过程)
{if(mark_point[AxTolNum].star_tim != 0)
{ if(ddiffer > mark_point[AxTolNum].val_peak)
… } //检测数据变化率,预算结束时间
else //ddiffer != 0,star_tim == 0 (上轴开始)
{ if(ddtimer >= mark_point[AxTolNum-1].end_tim)?…)
… } //判断是否接受上一轴,下一轴记录初始化
else //ddiffer == 0,star_tim != 0 (上轴过渡结束)
{if(mark_point[AxTolNum].star_tim != 0)
{ if((mark_point[AxTolNum].pre_tim >= std_wth_tim)…)
…} //判断是否达到上轴标准,是否覆盖上一轴
else // ddiffer == 0,star_tim == 0 (数据平稳)
{ if(mark_point[AxTolNum].val_max < ADdata)…)
… } //计算数据稳定性,并保存数据
3.4 数据保存
数据存储器由内部Flash和外部Flash两部分组成。为防止数据掉电丢失,仪表的出厂参数和用户参数保存于内部Flash中,车辆的上轴标记点数据和最终处理获得的车辆信息数据保存于外部Flash中。外部Flash按1 024Bytes/Page分页,每辆车占10页,每页约存25个标记点,通过变化率阈值控制标记点存储个数。由于秤台与收费站间的车道距离不能停滞5辆以上车辆,因此设计缓存容量为10辆车数据(5辆未上传车辆数据、5辆已上传车辆数据),上位机调取一辆车辆信息后将该车标记为已上传车辆,若已上传信息车辆满5辆则删除最先一辆数据。当上位机返回车型正确信息后,仪表删除该车数据,返回错误信息时,则调取车辆数据重新计算调整系统参数,调整完成后删除车辆数据。其余内存用于保存车辆信息历史数据。
4 测试结果
图5为常见的不同车型货车的调试输出波形,实线曲线为ADC采样值(经过滑动滤波处理),短点划线曲线为采样值变化率绝对值(经过放大处理),长点划线曲线为系统判断出的上轴过程(直条处为一轴)。159型车辆的2、3轴为连轴,轴间距离远小于1129型车辆。由图5可以看出:车辆上秤前空秤时的ADC数据为零点内码;通常车辆第一轴较轻且与其他轴的过渡时间相近,因此引起数据变化率较小,以第一轴信息为依据判断其他上轴过程;单轴轴重可选择局部均值或中位值作为质量,整车质量需去除周期抖动后取均值;上秤阈值可有效去除抖动引起的虚假上轴信号;依据轴间时间间隔及轴重信息可对车轴进行分组判断轴型[8]。
图5 综合处理调试输出波形
5 结束语
单双台面称重方式属于先求局部,再由局部累加求整体;大台面属于获得整体同时分割局部。通过实际测试,整车式大台面动态称重较单、双台面单轴称重累加求和方式可有效去除单轴称重误差的累积,确保了称重可靠性和整车称量精度。本仪表采用专家算法无需辅助设备,根据上轴过程特征,可靠地区分了上轴过程,计算出单轴质量。采用上轴标记点存储过程数据减少数据保存量,通过处理可从整车质量中准确的计算出轴数及单轴质量,去除了因辅助设备故障引起的不能识别轴数影响收费的因素。
[1] 肖振发,符锌砂.基于动态称重的高速公路超载管理系统研究及设计.交通信息与安全,2012,30(2):92-95.
[2] 廖义奎.ARM Cortex-M4嵌入式实战开发精解:基于STM32F4.北京:北京航空航天大学出版社,2013.
[3] 汤莉莉,黄伟.基于STM32的FSMC接口驱动TFT彩屏设计.现代电子技术,2013(20):139-144.
[4] 刘火良,杨森.STM32库开发实践指南.北京:机械工业出版社,2013.
[5] 高玉凯,郑双雁.非均匀采样信号的滑动滤波方法.电子技术应用,2010,36(12):75-81.
[6] JEAN L J.嵌入式实时操作系统μC/OS-Ⅲ.宫辉,曾鸣,龚光华,等,译.北京:北京航空航天大学出版社,2012.
[7] 孙启富,孙运强,姚爱琴.基于STM32的通用智能仪表设计与应用.仪表技术与传感器,2010(10):34-36.
[8] 李丽宏,石常兴.数据融合技术在车辆轴型识别系统中的应用.电子设计工程,2011,19(9):76-78.
Full-Vehicle Dynamic Weighing Instrument Based on μC/OS-Ⅲ
LI Jian-bo,NIU Yu-guang
(College of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China)
Aiming at the requirements of vehicle weighing accuracy and shaft type recognition rate in the highway toll system,by analyzing the characteristics of the full-vehicle dynamic weighing platform structure and weighing process,this paper put forward the wiring scheme of cantilever beam strain bridge weighing sensor and the hardware and software design solutions of full-vehicle dynamic weighing instrument.The segmentation of axle increasing process to identify axles and calculate single shaft weight based on the expert algorithm and the software implementations based on the embedded real-time kernel μC/OS-Ⅲ were also discussed.The result shows that the instrument not only improves weighing accuracy and can accurately identify the vehicle axis without the aid of auxiliary equipment.
dynamic weighing;weighing sensor;expert algorithm;embedded real-time kernel μC/OS-Ⅲ
2014-10-16 收修改稿日期:2015-03-14
TP274
A
1002-1841(2015)07-0028-04
李建波(1988—),硕士研究生,研究领域为智能仪器。 E-mail:lijianbofly@126.com
牛昱光(1958—),副教授,研究领域为智能仪表、集散控制系统及应用。E-mail:ygniu@sina.com