0引言
目前,ABS实车试验数据的实时采集和处理一般由插在PC机扩展槽中的数据采集卡来完成,这种方法对汽车环境和车载电源有较严格的要求,需要对车辆进行一定的改造才能实施。本文介绍一种简易的ABS试验数据采集与处理的方法。
1 ABs数据采集与处理系统设计
ABS的各项测试数据主要有车轮速度和车身速度、瞬时车轮转速和时间、制动管路压强、制动力矩和汽车载荷等参数。由于价格和实际安装难易程度不同,目前,在车辆中一般只安装有轮速信号传感器和汽车减速度传感器。对这两种传感 器信号的采集方法可见参考文献[2 ,3 ]。本文主要讨论对这两种传感器采集得到的数据进行实时传输与分析处理的方法。ABS数据采集与处理系统的原理框图如图1所示。 系统电控单元ECU不断从车轮角速度传感器和汽车减速度传感器读入信号,一方面利用这些信号计算出车轮的角加、减速度和参考滑移率,然后与设定的门限值进行比较,从而控制电磁阀的输出;另一方面则将这些信号通过串口发送到ECU的串口和PC机串口互联,可以在对原ABS系统和车辆环境不做任何改动的前提下,实时采集与存储ABS内部运动过程。
图1 ABS数据采集与处理系统原理图(点击可看图)
2 Matlab对计算机串口的编程
Matlab是数学计算的强大工具,它以矩阵作为数据操作的基本单位,广泛应用在以矩阵运算为主要工作方式的数理统计、自动控制、数字信号处理、动态系统仿真等领域。Matlab便捷灵活、操作简单、处理功能强大,因而利用Matlab对采 集到的ABS试验数据进行分析处理是非常合适的,关键问题是如何将数据从ECU传到计算机。 Matlab支持面向对象技术,用一个对象将计算机串口封装起来,只要创建串口对象,对串口对象操作就是对串口操作,非常方便。使用serial函数就可创建串口对象,串口对象有很多属性[4],通过定义串口对象的属性,能定义串口的通信模式,从串口对象属性也能了解串口的状态。要想通过串口传输数据,必须先用fopen函数打开串口;数据传输结束后要用fclose。函数关闭串口。表1列出了常用的与串口操作有关的函数。
表1 Matlab串口函数介绍
_____________________________________________________ 函数 说明
_____________________________________________________ serial 创建一个串口对象,格式:s = serial('coml' ) fopen 打开串口对象,格式:fope n( s) fread 读取串口数据,格式: fread(s) fclose 关闭串口对象,格式:fclose(s) free 解除Matlab对串口对象的控制,使 serial 其他程序能对该串口进行读写操作 delete 删除对象s,格式:delete( s) clear 从工作空间中删除对象s,格式:clear(s) ___________________________________________________
当建立了一个串口对象后,可以利用Matlab对其参数进行设置,包括对波特率、同步或异步读取方式、读取或写数据的等待时间等。本文以波特率的设置为例来说明串口参数的设置方法。 波特率的设置,一般有两种方法:(1)在创建串口对象时设定波特率:s=serial(`coml' ,'baudrate','9600'); (2)用set命令:set(s,'baudrate','9600')。
3 ABS系统数据采集与处理实例
3.1数据采集格式
ECU一次向Matlab传递8个变量的实时数据,每个变量占2个字节,其中高位字节在前,低位字节在后,共16个字节。传递次序和变量名如表2所列。
表2传递的8个变量的顺序和变量名
_____________________________________________________ 变量名 说明
_____________________________________________________ 1 Acc-high 减速度传感器信号的高电平时间 2 Acc-low 减速度传感器信号的低电平时间 3 Acc 估计的车身减速度 4 Vref 参考车速 5 Zq 左前轮速 6 Zh 左后轮速 7 Yq 右前轮速 8 Yh 右后轮速 _____________________________________________________
(责任编辑:泉水) |