0 引 言
随着我国经济的发展,作为国家经济命脉的公路运输量也急剧增加,而超重车辆所占的比例也与日俱增,这已对交通安全和公路寿命造成了严重威胁。在此情况下,由于传统的静态称重存在效率低,占地面积大,移动不方便等缺点,已不能满足发展的需要。于是技术(Weigh in Motion,)作为一种智能称重技术已得到了广泛研究和迅速发展。系统研发面临的主要问题是怎样在保持高精度的情况下,提高车辆通过的速度并降低成本。解决方法有两个,一是引进国外成套设备;二是自主研发。其中,引进国外设备,因价格昂贵,维护不便等诸多因素,不能广泛应用;国内对于动态称重系统的研究和生产较国外稍晚,但发展迅速并日趋成熟。目前,国内较为流行的是轴重测量,即分别测出车辆各轴的轴重,再由称重系统计算出整车重量。整个系统由传感器、数据采集卡、应用软件、数据库系统以及微处理器、LCD和打印机等组成。本文针对动态称重系统中数据采集、分析、处理、显示、保存等环节的特点,采用面向对象的设计思想,在VC++平台下研发动态称重系统应用软件,该软件具有实用性、可复用性、易扩充及易维护等特点。
1 误差分析及处理
动态称重系统的误差来源包括动态因素和静态因素。动态因素主要有汽车自身的振动、称重区路面的不平整,汽车经过此区的速度及加速度。静态因素主要体现在客观环境的变化和硬件自身问题,如:当时系统所处温度、传感器是否运行良好,模/数转换的分辨率等。误差的来源决定误差的处理方式。一方面通过对检测硬件条件和检测方式的设定避免产生不必要的误差,另一方面通过良好的数据处理方法提高软件处理数据的精度,目前主要有以下几种方法:ADV法、DV法、V法、位移积分法、补偿法、专家系统、参数估计法、神经网络。在动态称重系统中滤波方法主要有:有限幅滤波、中值滤波、算术平均值、滑动平均、加权平均滤波、复合滤波等方法。本软件采用滑动加权平均滤波,即设一个数据缓冲区依顺序存放N次采样数据,每采进一个新数据,就将最先采集的数据丢掉,而后求包括新数据在内的 N个数据的加权平均值,便得到该次采样的有效数据。
其中:
式中:Xn为第n次采样经滤波后的输出;Xn-i为未经滤波的第n-i次采样值;N为滑动平均项数;Ci为加权。
2 应用软件的整体设计
2.1 系统结构与主要模块
本系统基于C/S三层架构,用户接口层采用友好的GUI界面,主要是用户相关操作的实现以及数据显示;业务逻辑层进行模块化的设计,包括参数设置、数据采集、传输和处理;数据库服务器层对数据库的操作进行封装,主要完成数据的保存与维护。整个软件功能模块图如图1所示,包含了数据传输、数据处理、输入/输出、数据显示等四大模块。以信号的处理与显示为核心,信号的流向如图2所示,首先在称重区不断得到重力传感器所采集的电压信号,进行滤波、放大、A/D转换,并将所采集的数据根据上位机系统初始化形式,以串口或者网络通信的方式传输,上位机对所接收的数据进行判断后,予以滤波、运算、存储、显示,并将所得出的结果以委决书或发票回馈于车主。
2.2 类图
通过此类图完整显示本汽车动态称重系统软件的内部静态结构,如图3所示。其中,CDatabase,CDis- pose,CDisplay,CTransport,CPrint,CQuery,CMotion-Line,CStaticLine分别表示数据库连接类、数据处理类、数据显示类、通信类、报表打印类、查询类、动态曲线和静态曲线类。数据处理类对数据传输类具有依赖性。
3 软件实现
3.1 传输实现
工控系统的数据通信一般以串口为主,但由于串口通信只能用于短距离通信,网络通信也得到了一定的应用。本系统在通用性的前提下实现串口和网络通信两种方式。考虑到汽车动态称重系统对数据的实时性、可靠性要求,通过对通信类采用多线程封装,实现主动发送串口和网络监听的实时数据采集,提高实时数据传输效率。用到的线程函数有两个,一个是监听线程函数UINT ListenThread(LPVOID pParam),另一个是读数据线程UINT ReadTread(LPVOID pParam)。由于本系统对同一串口的不同时读写,所以不存在同步操作,监听线程在后台通过对WaitCommEvent事件的监听调用,读取线程完成下位机数据的接收。
3.2 数据处理实现
由于动态称重过程中存在大量的动态干扰因素,易造成传输模块所传数据存在较大误差,所以首先选择算法对接收数据滤波进行预处理,然后进行标度转换。数值计算求出轴重,而滤波是这部分的核心,下面给出加权滑动平均滤波的主要实现代码:
评论
加载更多