机械振动测量及球杆定位控制系统实验.doc
《机械振动测量及球杆定位控制系统实验.doc》由会员分享,可在线阅读,更多相关《机械振动测量及球杆定位控制系统实验.doc(41页珍藏版)》请在沃文网上搜索。
1、 机械振动测量实验一、实验目的1、熟悉并掌握MATLAB的基本操作以及调试器的使用方法2、理解图形句柄的含义,熟悉MATLAB界面设计的常用函数和设计方法3、 熟悉Simulink的使用,理解一些常用模块的功能和含义,并熟悉通过Simulink进行动态系统建模和仿真的流程,特别是子系统的创建与封装4、进行数据采集程序的设计,能够将通过采集卡采集到的数据显示到界面中5、掌握用MATLAB对机械振动信号进行信号频谱分析的方法,初步了解简单滤波器的设计。二、实验原理和设计思路该自主实验的硬件平台是转子实验台,设置合适的通道数,即可通过采集卡对转子的机械振动信号进行采集。Simulink是MATLAB
2、的重要软件包,是一种用来实现计算机仿真的软件工具,用于对动态系统建模和仿真,它采用系统模块直观地描述系统典型环节,方便建立系统模型。它是MATLAB 的一个附加组件,可用于实现各种动态系统(包括连续系统、离散系统和混合系统)的建模、分析和仿真。由Simulink建立动态仿真模型,即可获得采集到的振动信号。为了使采集到的振动信号以及信号处理结果能够更好地呈现出来,需要搭建图形交互界面。MATLAB提供了丰富的绘图功能,在MATLAB中,图形对象的名字叫做句柄,它是图形对象的标识代码(唯一的身份),标识代码含有图形对象的各种必要的属性信息。其中,根屏幕的句柄为0,图形窗口的句柄为正整数,其它对象的
3、句柄为对应的双精度浮点数。可以通过这个“句柄”,得到或者修改图形对象的属性。同时,MATLAB还提供了很多图形对象属性函数,能够很方便地对一些图形或控件进行属性设置。具体设计思路如下:我们设计的这个“机械振动测量”软件平台主要包括四个模块,即Simulink动态仿真模块、数据采集模块、图形界面绘制模块、信号处理模块。1、Simulink动态仿真模块该模块为shilei1.mdl文件。通过S-Function,用户可以将自己的模块加入Simulink模型中,从而可以实现用户自定义的算法或者与硬件设备交互等。在该模块中,能够设置采样频率等相关参数,从而获得不同采样频率下的机械振动信号。2、数据采集
4、模块该模块为shilei.cpp文件,功能是实现采集卡的数据信号采集。因为我们所使用的转子实验平台中,振动加速度信号是从通道1中采集,所以在对应采集函数中要将通道设置为通道1。然后通过采集卡初始化函数ADCardInit()、采集函数DAQ1()、读取采样数据函数ReadDaq()等,实现机械振动信号的采集。3、图形界面绘制模块该模块主要是在jixiezhendong.m文件中实现,能够将采集到的机械振动信号绘制到图形界面中,同时能够提供人机交互的一些控件,方便用户进行机械振动测量的相关操作,并获取频谱分析图、振动频率和振动加速度等相关信息。4、信号处理模块该模块主要包括getdata.m,c
5、allradio1.m,callradio2.m三个M文件。由于采集到的机械振动信号中混杂有噪声信号,要想得到准确的振动信号和振动参数,需要通过滤波来滤掉高频的噪声信号,只留下低频的机械振动信号,所以首先需要进行滤波器的设计。其次,关于机械振动测量有两个重要参数,即振动频率和振动加速度。其中,振动频率为幅值最大的波对应的频率,振动加速度为最大幅值电压通过一个转换得到的加速度。所以,在频谱分析的基础上,通过数据处理即可得到振动频率和振动加速度这两个参数。三、设计过程1、复习MATLAB的一些基本指令和操作。比如数值数组及其运算、控制流、M文件等,同时还有MATLAB调试器的相关操作使用,以及MA
6、TLAB的图形绘制操作。2、“机械振动测量”界面的设计。参照DRVI快速可重组虚拟仪器实验平台中的转子实验台加速度传感器振动测量实验的测量界面,如上图所示,了解机械振动测量所需要得到的数据和结果。然后结合老师课堂讲解和实验指导书中关于界面设计的内容,进行“机械振动测量”界面的设计。3、数据采集程序设计。参考实验指导书中数据采集的步骤介绍,进行数据采集程序的设计,同时还有Simulink仿真模块的搭建。从而,实现通过采集卡对转子振动信号的采集,同时能够使振动信号在设计的界面中显示出来。4、机械振动信号的数据处理。获得机械振动信号后,就要对信号进行处理,主要包括频谱分析、低通滤波、参数计算等部分。
7、通过低通滤波滤掉高频的噪声信号,通过参数计算获得振动频率和振动加速度两个机械振动参数。四、Simulink模型下图为本系统的Simulink模型(shilei1.mdl)其中,Constant模块表示的是采样频率,通过修改该常数的值,即可设置不同的采样频率。To Workspace模块的功能是把输出的数据写入工作空间,以便于getdata.m文件对输出信号进行读取,并绘制到界面中。Scope模块的功能是将输出的信号实时显示出来。五、代码及注释1、C+代码及注释shilei.cpp文件的主要功能包括Simulink模型的输入输出通道的设置,以及采集卡的初始化、开启、更新以及退出等功能,可以生成动
8、态链接库,是能够实现对通道信号进行采集的重要文件。以下是shilei.cpp文件的代码及注释/* * sfuntmpl_basic.c: Basic C template for a level 2 S-function. * * - * | See matlabroot/simulink/src/sfuntmpl_doc.c for a more detailed template | * - * * Copyright 1990-2002 The MathWorks, Inc. * $Revision: 1.27 $ */* * You must specify the S_FUNCTIO
9、N_NAME as the name of your S-function * (i.e. replace sfuntmpl_basic with the name of your S-function). */#define S_FUNCTION_NAME shilei /将S_FUNCTION名字改成和文件名一样,即shilei#define S_FUNCTION_LEVEL 2/* * Need to include simstruc.h for the definition of the SimStruct and * its associated macro definitions.
10、 */#include simstruc.h /添加头文件#include abc.h/* 定义全局变量 */double buffer5000; /定义一个通道的数据缓存bufferdouble buffer15000; /定义另一个通道的数据缓存bufferint pnum; /定义读取指针数char ch8; /定义表示8个通道的二进制字符数组/* Error handling * - * * You should use the following technique to report errors encountered within * an S-function: * * ss
11、SetErrorStatus(S,Error encountered due to .); * return; * * Note that the 2nd argument to ssSetErrorStatus must be persistent memory. * It cannot be a local variable. For example the following will cause * unpredictable errors: * * mdlOutputs() * * char msg256; ILLEGAL: to fix use static char msg256
12、; * sprintf(msg,Error due to %s, string); * ssSetErrorStatus(S,msg); * return; * * * See matlabroot/simulink/src/sfuntmpl_doc.c for more details. */*=* * S-function methods * *=*/* Function: mdlInitializeSizes = * Abstract: * The sizes information is used by Simulink to determine the S-function * bl
13、ocks characteristics (number of inputs, outputs, states, etc.). */* mdlInitializeSizes函数用于获取输入端口和输出端口的数量、端口宽度,以及* S-function所需的任何其它对象(诸如状态数量)等有关信息。*/static void mdlInitializeSizes(SimStruct *S) /* See sfuntmpl_doc.c for more details on the macros below */ ssSetNumSFcnParams(S, 0); /* Number of expec
14、ted parameters */ if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S) /* Return if number of expected != number of actual parameters */ return; ssSetNumContStates(S, 0); ssSetNumDiscStates(S, 0);/设置3个输入通道/* void ssSetNumInputPorts(SimStruct *S, int_T nInputPorts),该函数的第一* 参数为模块的一个数据结构,第二个参数nInputPor
15、ts指定模块有几个输入接口。*/if (!ssSetNumInputPorts(S, 3) return;/* void ssSetInputPortWidth(SimStruct *S, int_T port, int_T width),该函数* 的第一个参数为模块的一个数据结构,第二个参数为接口编号,第三个参数指定第* 二个参数所指定接口的数据宽度。*/ ssSetInputPortWidth(S, 0, 1); ssSetInputPortRequiredContiguous(S, 0, true); /*direct input signal access*/ ssSetInputPo
16、rtWidth(S, 1, 1); ssSetInputPortRequiredContiguous(S, 1, true); /*direct input signal access*/ ssSetInputPortWidth(S, 2, 1); ssSetInputPortRequiredContiguous(S, 2, true); /*direct input signal access*/ /* * Set direct feedthrough flag (1=yes, 0=no). * A port has direct feedthrough if the input is us
17、ed in either * the mdlOutputs or mdlGetTimeOfNextVarHit functions. * See matlabroot/simulink/src/sfuntmpl_directfeed.txt. */ /* void ssSetInputPortDirectFeedThrough(SimStruct *S, int_T port, int_T * dirFeed),该函数的第一个参数为模块的一个数据结构,第二个参数为接口编号,* 第三个参数为用于指定接口的输入数据是否能在mdlOutputs或者* mdlGetTimeOfNextVarHit中调
18、用,0表示不能调用,1表示能调用。*/ ssSetInputPortDirectFeedThrough(S, 0, 1); ssSetInputPortDirectFeedThrough(S, 1, 1); ssSetInputPortDirectFeedThrough(S, 2, 1); /设置2个输出通道 if (!ssSetNumOutputPorts(S, 2) return; ssSetOutputPortWidth(S, 0, 1); ssSetOutputPortWidth(S, 1, 1); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S,
19、 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); ssSetOptions(S, 0);/* Function: mdlInitializeSampleTimes = * Abstract: * This function is used to specify the sample time(s) for your * S-function. You must register the same number of sample times as *
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械振动 测量 球杆 定位 控制系统 实验