电动助力转向系统(EPS)数据采集的实现_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电动助力转向系统(eps)数据采集的实现现实中常常会对控制系统举行数据采集或者发送控制指令,都要求对底层的硬件举行操作,但是visual basic没有提供挺直拜访底层硬件的控件和办法,只能通过调用动态链接库dll或者用法aetivex控件来读写存储器单元、端口,甚至控制硬件中断。下面主要介绍用法visual c+6.0编写数据采集函数的动态链接库dll的过程。动态链接库虽然是一个可执行模块,但它并不能挺直运行,它只是提供一组函数供windows应用程序或其他动态链接库调用,以完成其特别任务。在用法visual c+6.0创建dll后会生成三个文件,*.cpp,stdafx.cpp,stdaf

2、x.h,只需在stdafx.cpp中将程序入口函数dllmain()补全,加入自定义的功能函数,并新建*.def模块定义文件,将自定义的功能函数在此文件中一一输出。其中,dllmain函数是win32 dll的入口和出口点。在每次装入或卸载dll时,windows 9x调用该函数,主要用来完成一些初始化任务,或在dll卸载之前,windows调用该函数做一些须要的释放资源等清除工作。值得注重的是,dll的调用商定共有4种方式:_fastcall、_pascal、_stdcall、_cdecl,vc+默认调用方式为_cdecl,而vb默认调用方式则为_stdcau,因此必需限定调用方式,即将函数

3、定义为如下格式: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类型)

4、 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 integerdeclare function getval lib "eps.dll" (byval portid as integer)as single在这

5、样声明之后,函数output、input、getval才可以像用法vb本身自带的函数那样在需要时举行挺直调用。3.3 vb中高精度定时数据的采集在电动助力转向台架实验的过程中,全部的扭矩,电流,角度,齿条位移等都是根据精确的物理时光来采集,并且记录在数据文件中。实时数据的采集过程需要用到定时器,定时器的精度必需能够满足实时采样和数字滤波的要求。本实验台利用windows api函数实现精确记时的办法,即利用高性能频率记数法。利用这种办法需要用法两个api函数:queryperformaneefrequency和queryperperformancecounter。(1) queryperfor

6、maneefrequeney函数:获得高性能频率记数器的震荡频率,该函数的定义如下:private declare function queryperformaneefrequeney lib "kernel32"_(lpfrequency as large_integer) as long函数中的数据结构large_integer定义如下:type large_integerlowpart as longhighpart as longendtype调用该函数后,函数会将系统频率记数器的震荡频率保存到lpperformancecount中,其中低位保存到lowpart中,

7、高位保存到highpart中。(2) queryperformancecounter函数获得系统频率记数器的震荡次数,函数的定义如下:private declare function queryperformaneecounter lib”kernel32”_(lpperformancecount as large_integer) as long获得记时器震荡次数保存在lpperformancecount中。在程序设计中。首先通过利用queryperformancefrequency函数获得频率记数器的震荡频率,然后在执行数据采集程序段之前调用queryperformance counter

8、函数获得频率记数器的震荡次数,在数据采集程序段结束时再调用queryperformanee counter函数获得频率记数器的震荡次数,将两次获得的震荡次数相减后再除以震荡频率就获得了两次间隔之间的时光(以秒为单位)。因此在数据采集程序中建立了一个循环。在循环中不断的调用queryperformaneecounter获得频率记数器的震荡次数并同从前的频率记数器的震荡次数相减,将结果除以频率记数器的震荡频率,假如达到设定的采集时光则执行数据采集任务,这样就达到了精确记时采集的任务。在实验的过程中,程序每隔3ms拜访一次a/d板,也就是每3ms会读一个数据到内存中,为了越发清晰的观看各种状态下曲线

9、的变幻状况,以及尖脉冲干扰浮现的时光,在软件设计时尽可能把这些点所有读入,并在实时曲线上显示出来。但是假如把这些点所有记录下来,数据量会十分大,不利于后续的助力特性等的分析,因此在软件中设定一个n值,当采集到的点数达到此值时,程序将这n个值做一次滤波处理,然后将处理过的数保存在数据库中,供后续的分析与处理。在这里n值取为50。试验证实,该定时器能满足eps定时采集的要求。3.4采集数据的过滤实验台外部干扰对于传感器的影响很大,因此采集到的数据需要经过处理。举行软件滤波的办法主要有:限幅滤波法,中位值滤波法,算术平均滤波等。(1)限幅滤波法。对于超过被测鼍可能上限和可能下限的测量值,则被认为是因为偶然的脉冲噪声丽引起,忽视该测量值。(2)中位值滤波法。对一组测量值,去掉其中的最大值和最小值,只对中位举行处理。(3)算术平均值法。取多个中位值的平均值。在数据采集过程中,实验台系统不行避开会产生尖脉冲干扰。本数据采集系统对模拟量实行的数字滤波办法是结合防脉冲干扰平均法和移动平均滤波法各自优点,即既能防止脉冲干扰,又能提高系统实时性,这里设置数据氏数据的个数为n个,每采样一次新数据,主程序就调用一次防脉冲移动平均滤波子程序,去掉n个数据中的最大值和最小值,再取余下(n-2)个数据的算术平均值来逼进真切的模拟量数值,然后再将所得的平均值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论