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转换函数,其声明方式如下:
本文地址:http://sjzytwl.xhstdz.com/quote/67995.html 物流园资讯网 http://sjzytwl.xhstdz.com/ , 查看更多