基于数据采集卡HY-1232A/D板实现电动助力转向系统的设计

描述

  作者:化永星;陆文昌;毕世高;顾灶德

1 前言

电动助力转向系统已成为现代汽车发展的必然趋势。只有精确实时的采集到车辆转角数据,助力转向系统才能根据这些数据采用各种先进的算法来控制助力电机的转动。所以说,车辆转角数据的采集是电动助力转向系统的重要组成部分。此文章详细的讲述了电动助力转向系统数据采集的硬件和软件。

2 数据采集硬件

数据采集硬件系统主要由计算机,A/D转换板,数字量信号输入/输出板,传感器以及信号处理装置等组成,基本的结构如图1所示。试验台传感器所输出的信号一共有两种,一种是模拟信号,另外一种是数字信号。而计算机只能对数字量进行处理,为了能使计算机处理或存储模拟信号,就必须将其转换为数字量,因此模拟信号的采集主要通过A/D板进行转换,然后输入计算机中进行处理;数字信号(光电编码器输出的脉冲信号)的采集是南数字信号输入输出处理板来完成。

计算机

图1数据采集硬件系统

2.1 数据采集卡(A/D)-HY-1232A/D板

HY-1232板是一种IBM-PC XT/AT总线兼容A/D,D/A板,具有32路单端模拟输入通道,12Bit分辨率,模拟输入电压范围,双极性为-5V,+5V,单极性为0,+5V。数据传输方式采用软件查询方式和中断方式,而且可以直接插入到计算机的任一总线扩展槽中,构成计算机数据采集的控制系统。HY一1232的A/D转换采用软件触发方式,在程序中首先向该板写入模拟通道,A/D板将自动对该通道进行A/D转换。在程序中读入A/D完成标志位即可判断转换是否完成。当A/D完成位为‘1’时,则A/D转换已完成。

2.2 HY-6160数字量信号输入输出板

HY-6160板有32个数字量输入通道,32个数字量输出通道和一个外部事件中断通道。每个输入或输出通道为一组,占用一个地址。数字量输入/输出信号电平与TTL电平兼容。中断申请信号为TTL电平。数字量输出通道上电清零。光电编码器将转向盘的转角转换为电脉冲输入给数字信号输入输出板,通过计算脉冲数的大小即町获得转向盘转过的角度。

2.3 传感器

2.3.1 扭矩传感器

扭矩传感器主要测量转向盘输出扭矩的大小和方向,然后将其转化为相应的电压值传送给控制器的ECU。扭矩是作为EPS系统控制策略的重要依据,直接会影响到控制效果的好坏,因此扭矩传感器也被作为重点对像进行研究和开发。本试验台选用的传感器为电位计式扭矩传感器。

2.3.2 霍尔电流传感器

霍尔元件是一种磁电转换器件,能把磁场信号转换为电信号,当霍尔器件H处于磁感应强度为B的磁场中时,在H(由半导体材料制成的薄片)纵向通过控制电流I,将引起薄片两边载流子数量的变化,因而产生一个电势差,即霍尔电压曲,Un=K/d*k*B

式中:K为所用材料的霍尔常数;d为薄片厚度;IC为控制电流;B为磁感应强度。

本试验台中电流传感器型号是CS500B(南京茶花港联传感测控技术有限公司)。

3 数据采集软件总体设计

本试验台的数据采集软件系统采用VB作为编程语言,使用模块化结构。软件的主体功能主要包括数据采集,数据存储与处理,数据实时显示,坐标设定,实时曲线显示等。驾驶员作用在方向盘上的扭矩由扭矩传感器输入到计算机内的A/D板,A/D板将此模拟信号再转换为数字信号,通过采集软件进行存储等操作;电流传感器输出模拟电流信号和扭矩信号一样都进入A/D板进行转换;安装在方向盘上的光电编码器将脉冲信号输入到计算机内的计数板上,由采集软件通过计算脉冲数的大小来得到方向盘的转角。软件中除了基本的数据保存等功能外,还有实时数据显示,实时曲线显示,通过软件叮以直接看到系统工作过程中扭矩、电流、方身盘转角的大小,还可以观察它们之间的关系。图2为软件的结构框图。

计算机

图2数据采集软件结构框图

3.1 Visual BASIC对底层硬件的访问

现实中经常会对控制系统进行数据采集或者发送控制命令,都要求对底层的硬件进行操作,但是Visual BASIC没有提供直接访问底层硬件的控件和方法,只能通过调用动态链接库DLL或者使用AetiveX控件来读写存储器单元、端口,甚至控制硬件中断。下面主要介绍使用Visual c++6.0编写数据采集函数的动态链接库DLL的过程。

动态链接库虽然是一个可执行模块,但它并不能直接运行,它只是提供一组函数供Windows应用程序或其他动态链接库调用,以完成其特殊任务。在使用Visual c++6.0创建DLL后会生成三个文件,*.cpp,stdafx.cpp,stdafx.h,只需在stdafx.cpp中将程序入口函数DLLMain()补全,加入自定义的功能函数,并新建*.DEF模块定义文件,将自定义的功能函数在此文件中一一输出。其中,DllMain函数是Win32 DLL的入口和出口点。在每次装入或卸载DLL时,Windows 9x调用该函数,主要用来完成一些初始化任务,或在DLL卸载之前,Windows调用该函数做一些必要的释放资源等清除工作。值得注意的是,DLL的调用约定共有4种方式:_fastcall、_pascal、_stdcall、_cdecl,vc++默认调用方式为_cdecl,而VB默认调用方式则为_stdcaU,因此必须限定调用方式,即将函数定义为如下格式:

extern“C“ _declspec(dllexport)《函数返回数据类型》_std-call函数名[参数列表]。

只有做这样的限定后,生成的DLL库才不会出现错误。

3.2利用VB调用动态链接库

在VB中调用动态链接库之前,VB要求必须在窗体或模块的声明中定义所要调用的函数,否则VB不能识别所调用的动态链接库。

如果调用的动态链接库中的函数无返回值,则将其声明为过程:

Declare Sub 过程名 lib“.DLL库名” (Byval参数As类型)

如果调用的动态链接库中的函数有返回值,则将其声明为函数:

Declare Function 函数名 lib“.DLL库名” (Byval参数As类型) a8类型

具体到本数据采集系统的端口操作函数及A/D转换函数,其声明方式如下:

Declare Sub Outport Lib ”vbio.dll“ (ByVal portID As Integer,

ByVal nByte As Integer)

Declare Function Inport Lib ”vbio.dll“ (ByVal portlD As Integer)

As Integer

Declare Function Getval Lib ”EPS.dll“ (ByVal portID As Integer)As Single

在这样声明之后,函数Output、Input、Getval才可以像使用VB本身自带的函数那样在需要时进行直接调用。

3.3 VB中高精度定时数据的采集

在电动助力转向台架试验的过程中,所有的扭矩,电流,角度,齿条位移等都是按照准确的物理时间来采集,并且记录在数据文件中。

实时数据的采集过程需要用到定时器,定时器的精度必须能够满足实时采样和数字滤波的要求。本试验台利用Windows API函数实现精确记时的方法,即利用高性能频率记数法。利用这种方法需要使用两个API函数:QueryPerformaneeFrequency和QueryPerPerformanceCounter。

(1) QueryPerformaneeFrequeney函数:获得高性能频率记数器的震荡频率,该函数的定义如下:

Private Declare Function QueryPerformaneeFrequeney Lib ”kernel32“_

(lpFrequency As LARGE_INTEGER) As Long

函数中的数据结构LARGE_INTEGER定义如下:

Type LARGE_INTEGER

lowpart As Long

highpart As Long

EndType

调用该函数后,函数会将系统频率记数器的震荡频率保存到lpPerformanceCount中,其中低位保存到lowpart中,高位保存到highpart中。

(2) QueryPerformanceCounter函数获得系统频率记数器的震荡次数,函数的定义如下:

Private Declare Function QueryPerformaneeCounter Lib”kernel32”_

(lpPerformanceCount As LARGE_INTEGER) As Long

获得记时器震荡次数保存在lpPerformanceCount中。

在程序设计中。首先通过利用QueryPerformanceFrequency函数获得频率记数器的震荡频率,然后在执行数据采集程序段之前调用QueryPerformance Counter函数获得频率记数器的震荡次数,在数据采集程序段结束时再调用QueryPerformanee Counter函数获得频率记数器的震荡次数,将两次获得的震荡次数相减后再除以震荡频率就获得了两次间隔之间的时间(以秒为单位)。因此在数据采集程序中建立了一个循环。在循环中不断的调用QueryPerformaneeCounter获得频率记数器的震荡次数并同先前的频率记数器的震荡次数相减,将结果除以频率记数器的震荡频率,如果达到设定的采集时间则执行数据采集任务,这样就达到了精确记时采集的任务。

在试验的过程中,程序每隔3ms访问一次A/D板,也就是每3ms会读一个数据到内存中,为了更加清楚的观察各种状态下曲线的变化情况,以及尖脉冲干扰出现的时间,在软件设计时尽可能把这些点全部读入,并在实时曲线上显示出来。但是如果把这些点全部记录下来,数据量会非常大,不利于后续的助力特性等的分析,因此在软件中设定一个N值,当采集到的点数达到此值时,程序将这N个值做一次滤波处理,然后将处理过的数保存在数据库中,供后续的分析与处理。在这里N值取为50。实验证明,该定时器能满足EPS定时采集的要求。

3.4采集数据的过滤

试验台外部干扰对于传感器的影响很大,因此采集到的数据需要经过处理。进行软件滤波的方法主要有:限幅滤波法,中位值滤波法,算术平均滤波等。

(1)限幅滤波法。对于超过被测鼍可能上限和可能下限的测量值,则被认为是由于偶然的脉冲噪声丽引起,忽略该测量值。

(2)中位值滤波法。对一组测量值,去掉其中的最大值和最小值,只对中位进行处理。

(3)算术平均值法。取多个中位值的平均值。

在数据采集过程中,试验台系统不可避免会产生尖脉冲干扰。本数据采集系统对模拟量采取的数字滤波方法是结合防脉冲干扰平均法和移动平均滤波法各自优点,即既能防止脉冲干扰,又能提高系统实时性,这里设置数据氏数据的个数为N个,每采样一次新数据,主程序就调用一次防脉冲移动平均滤波子程序,去掉N个数据中的最大值和最小值,再取余下(N-2)个数据的算术平均值来逼进真实的模拟量数值,然后再将所得的平均值记录下来。

4 小结与实验结果

本文详细介绍了EPS试验台数据采集用的主要传感器,在试验台硬件的基础上。开发了基于VB语言的数据采集系统,给出了数据采集系统的程序框图。介绍了VB对于底层硬件的访问方法,以及在采集过程中高精度定时器的应用,最后介绍了程序的滤波方法。图3为数据采集软件的t作界面。

图3数据采集软件的工作界面

本文作者创新点:利用Visual Basic进行数据采集可以利用两种方法,利用MSComm控件和利用API函数的方法,本文利用API函数的方法,具有采集精度高,数据采集实时的特点。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分