弹簧质量阻尼实验指导书.docx

上传人:b****8 文档编号:10403198 上传时间:2023-02-11 格式:DOCX 页数:17 大小:281.04KB
下载 相关 举报
弹簧质量阻尼实验指导书.docx_第1页
第1页 / 共17页
弹簧质量阻尼实验指导书.docx_第2页
第2页 / 共17页
弹簧质量阻尼实验指导书.docx_第3页
第3页 / 共17页
弹簧质量阻尼实验指导书.docx_第4页
第4页 / 共17页
弹簧质量阻尼实验指导书.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

弹簧质量阻尼实验指导书.docx

《弹簧质量阻尼实验指导书.docx》由会员分享,可在线阅读,更多相关《弹簧质量阻尼实验指导书.docx(17页珍藏版)》请在冰豆网上搜索。

弹簧质量阻尼实验指导书.docx

弹簧质量阻尼实验指导书

 

质量-弹簧-阻尼系统实验教学指导书

 

北京理工大学机械与车辆学院

2016.3

 

实验一:

单自由度系统数学建模及仿真

1实验目的

(1)熟悉单自由度质量-弹簧-阻尼系统并进行数学建模;

(2)了解MATLAB软件编程,学习编写系统的仿真代码;

(3)进行单自由度系统的仿真动态响应分析。

2实验原理

 

单自由度质量-弹簧-阻尼系统,如上图所示。

由一个质量为m的滑块、一个刚度系数为k的弹簧和一个阻尼系数为c的阻尼器组成。

系统输入:

作用在滑块上的力f(t)。

系统输出:

滑块的位移x(t)。

建立力学平衡方程:

变化为二阶系统标准形式:

其中:

ω是固有频率,ζ是阻尼比。

2.1欠阻尼(ζ<1)情况下,输入f(t)和非零初始状态的响应:

 

2.2欠阻尼(ζ<1)情况下,输入f(t)=f0*cos(ω0*t)和非零初始状态的的响应:

输出振幅和输入振幅的比值:

3动力学仿真

根据数学模型,使用龙格库塔方法ODE45求解,任意输入下响应结果。

仿真代码见附件

4实验

4.1固有频率和阻尼实验

(1)将实验台设置为单自由度质量-弹簧-阻尼系统。

(2)关闭电控箱开关。

点击setup菜单,选择ControlAlgorithm,设置选择ContinuousTimeControl,Ts=0.0042,然后OK。

(3)点击Command菜单,选择Trajectory,选取step,进入set-up,选取OpenLoopStep设置(0)counts,dwelltime=3000ms,

(1)rep,然后OK。

此步是为了使控制器得到一段时间的数据,并不会驱动电机运动。

(4)点击Data菜单,选择DataAcquisition,设置选取Encoder#1,然后OK离开;从Utility菜单中选择ZeroPosition使编码器归零。

(5)从Command菜单中选择Execute,用手将质量块1移动到2.5cm左右的位置(注意不要使质量块碰触移动限位开关),点击Run,大约1秒后,放开手使其自由震荡,在数据上传后点击OK。

(6)点击Plotting菜单,选择SetupPlot,选取Encoder#1Position;然后点击Plotting菜单,选择PlotData,则将显示质量块1的自由振动响应曲线。

(7)在得到的自由振动响应曲线图上,选择n个连续的振幅明显的振动周期,计算出这段振动的时间t,由n/t即可得到系统的频率,将Hz转化为rad/sec即为系统的振动频率ω。

(8)在自由振动响应曲线图上,测量步骤7选取时间段内初始振动周期的振幅X0以及末尾振动周期的振幅Xn。

由对数衰减规律即可求得系统阻尼比。

(9)实验数据记录

序号

第1次实验

第2次实验

第3次实验

实验测试频率

实验测试阻尼比

滑块质量m

弹簧刚度k

阻尼系数c

频率理论值

阻尼比理论值

频率估计误差

阻尼比估计误差

(10)在仿真代码基础上,计算出实验结果对应的理论结果。

对比分析理论和实验结果的差异。

完成实验报告。

4.2幅频特性实验

(1)点击Command菜单,选择Trajectory,选取Sinuscidal,进入set-up,选取OpenLoopStep设置Amplitude(0.5V),Frequency(2Hz),Repetition(8),然后OK。

(2)从Utility菜单中选择ZeroPosition使编码器归零。

从Command菜单中选择Execute,点击Run,在数据上传后点击OK。

(3)然后点击Plotting菜单,选择PlotData,则将显示滑块的受迫振动响应曲线。

在响应曲线图上,测量出振动振幅,计算出振动的频率并于输入的正弦曲线频率比较。

(4)根据实验情况,改变输入的正弦曲线频率的大小,重复上述,纪录实验数据。

输入频率

滑块实验幅值

滑块仿真幅值

0.1Hz

0.2Hz

(5)在仿真代码基础上,实现正弦激励代码,计算出实验结果对应的理论结果。

对比分析理论和实验结果的差异。

完成实验报告。

实验二:

双自由度系统数学建模及仿真

1实验目的

(1)熟悉双自由度质量-弹簧-阻尼系统并进行数学建模;

(2)了解MATLAB软件编程,学习编写系统的仿真代码;

(3)进行双自由度系统的仿真动态响应分析。

2实验原理

2.1数学建模

 

双自由度质量-弹簧-阻尼系统,如上图所示。

由两个质量为m1和m2的滑块、两个刚度系数为k1和k2的弹簧和两个阻尼系数为c1和c2的阻尼器组成。

系统输入:

作用在滑块上的力f(t)。

系统输出:

滑块的位移x1(t)和x2(t)。

建立力学平衡方程:

2.2固有频率

将动力学方程写成矩阵形式:

得到系统的质量矩阵M和刚度矩阵K。

解行列式可得固有频率方程:

可计算出固有频率方程:

两个振动模态,两个固有频率:

高模和低模。

2.3解耦

通过数学变换将微分方程变化为以下形式:

注意:

y1和y2不是滑块的位移。

滑块的位移x1(t)和x2(t)是y1和y2的函数。

3动力学仿真

根据数学模型,使用龙格库塔方法ODE45求解,任意输入下响应结果。

仿真代码见附件

4实验

4.1固有频率分析

(1)将实验台设置为双自由度质量-弹簧-阻尼系统,第一个滑块没有阻尼器可以不接,认为第一个阻尼为零。

(2)闭合控制器开关,点击setup菜单,选择ControlAlgorithm,设置选择ContinuousTimeControl,Ts=0.0042,然后OK。

点击Command菜单,选择Trajectory,选取step,进入set-up,选取OpenLoopStep设置(0)counts,dwelltime=3000ms,

(1)rep,然后OK。

此步是为了使控制器得到一段时间的数据,并不会驱动电机运动。

(2)点击Data菜单,选择DataAcquisition,设置分别选取Encoder#1,Encoder#2,然后OK离开;从Utility菜单中选择ZeroPosition使编码器归零。

(4)从Command菜单中选择Execute,用手将质量块1移动到2.5cm左右的位置(注意不要使质量块碰触移动限位开关),点击Run,大约1秒后,放开手使其自由振荡,在数据上传后点击OK。

(5)点击Plotting菜单,选择SetupPlot,分别选取Encoder#1Position,Encoder#2

Position;然后点击Plotting菜单,选择PlotData,则将显示质量块1,2的自由振动响应曲线。

(6)实验数据纪录:

实验条件:

滑块质量m1和m2,弹簧刚度k1和k2,阻尼系数c1和c2。

实验数据:

时间-滑块1位移数据;时间-滑块2位移数据。

问题1:

两个滑块位移的频率测量值是高模和低模频率么?

问题2:

实际的机械系统是多自由度的,如何通过实验法测试系统固有频率?

(7)实验报告。

关键点是理论和实验结果对比分析。

4.2幅频特性实验

(1)点击Command菜单,选择Trajectory,选取Sinuscidal,进入set-up,选取OpenLoopStep设置(200counts)Amplitude,Frequency(2Hz),Repetition(8),然后OK。

(2)从Utility菜单中选择ZeroPosition使编码器归零。

从Command菜单中选择Execute,点击Run,在数据上传后点击OK。

(3)然后点击Plotting菜单,选择PlotData,则将显示质量块1,2的受迫振动响应曲线。

在响应曲线图上,即可测量出振动振幅。

问题1:

单自由度和双自由度系统的幅频特性有何差异?

问题2:

高模贡献分析。

实验三:

PID控制

1实验目的

(1)学习PID闭环控制结构和系统闭环传递函数计算;

(2)PID控制器参数设计;

(3)控制性能分析。

2实验原理

上图给出闭环控制系统原理框图。

单自由度质量-弹簧-阻尼系统结构下,断开弹簧和阻尼,仅仅保留滑块质量m。

电控箱可以看做比例增益khw。

其中:

u是控制器输出。

PID控制:

其中:

e是比较器输出,参考输入与实际输出的偏差值。

根据全部上式,可得闭环结构微分方程:

对应的传递函数:

3PID设计

PID控制器中设置积分因子ki为零,则为PD控制。

传递函数变为:

闭环特征方程是分母:

设计频率ω=4Hz,三种阻尼(欠阻尼ζ=0.2,临界ζ=1.0,过阻尼ζ=2.0)的控制器设计。

ω=4Hz

khwkp

khwkd

ζ=0

ζ=0.2

ζ=1

ζ=2.0

4实验

4.1频率

(1)在控制器断开的情况下,拆除与质量块1连接的弹簧,使其余元件远离质量块1的运动范围,为其安装4个500g的铜块,加上小车本身的质量,标定总质量m=2.6kg。

(2)实验标定khw值:

根据估计出的khw值,设置控制器ki=0和kd=0,调整kp来估计系统系统频率ω=4Hz。

注意:

kp不能大于0.08。

(3)闭合控制器开关;点击Data菜单,选择DataAcquisition,设置选取Encoder#1和CommandedPositioninformation;点击Command菜单,选择Trajectory,选取step,设置(0)counts,dwelltime=3000ms,

(1)rep。

(4)点击setup菜单,选择ControlAlgorithm,设置选择ContinuousTimeControl,Ts=0.0042,选取PID,进入SetupAlgorithm,输入kp的值(ki=0和kd=0)(输入的值不能大于kp=0.08),然后OK。

移动质量块1到-0.5cm的位置(规定,朝电机方向为负)选择ImplementAlgorithm,然后Ok。

注意:

从此步开始的每一步,要进行下一步之前,都要与运动装置保持一定的安全距离;选择ImplementAlgorithm后,控制器将会立即加载,若出现不稳定的或者很大的控制信号时,运动装置可能反应很剧烈;若加载后,系统看上去稳定,要先用一轻质不尖锐的物体轻轻碰触质量块以验证其稳定性。

(5)点击Command菜单,进入Execute,用手将质量块移动到2cm左右的位置,点击Run,移动质量块大约到3cm位置,然后释放(不要拿着质量块多于一秒,以免电机过热而断开控制)。

(6)点击Plotting菜单,选择SetupPlot,选取Encoder#1;然后点击Plotting菜单,选择PlotData,则将显示质量块1的时间响应曲线。

试想一下,若将比例增益系数kp增加一倍,则系统的响应频率将有什么变化?

4.2阻尼

(1)确定kd的值(不能大于0.04),使得khwkd=50N/(m/s),重复步骤4,除了输入kd的值和ki=0和kp=0。

(2)先用尺子检查系统的稳定性,然后用手来回的移动质量块来感受系数kd带来的粘性阻尼的影响(注意不要极度的迫使质量块运动,以免电机过热而断开控制)。

(3)增大的kd值(kd<0.04),重复以上步骤,看能否感受到阻尼的增大?

4.3位置控制

(1)控制电机驱动滑块1移动到某一个特定的位置,获取时间-位移数据后,计算闭环控制特性,包括:

超调量、上升时间、调节时间、稳态误差。

(2)使用仿真方法计算得到同样条件下的动态响应结果,对比分析理论与实验结果的差异。

4.4正弦激励

(1)使用正弦输入驱动滑块作正弦运动,获取时间-位移数据后,计算闭环控制系统幅频特性。

(2)使用仿真方法计算得到同样条件下的幅频响应结果,对比分析理论与实验结果的差异。

4.5柔性结构控制

(1)实验台只有质量块,为刚性结构机械系统。

如果安装上一根弹簧,则组成简单的柔性结构系统(具有柔性环节)。

此时机械系统由于能量交互可能产生振动。

如何设计控制器来动态控制机械振动。

 

实验四:

扰动抑制

1实验目的

(1)外扰动设置;

(2)PID控制器设计;

(3)控制性能分析。

2实验原理

 

上图给出闭环控制系统原理框图。

单自由度质量-弹簧-阻尼系统结构下,断开弹簧和阻尼,仅仅保留滑块质量m。

位移输出受到外扰动d干扰。

电控箱可以看做比例增益khw。

其中:

u是控制器输出。

PID控制:

其中:

e是比较器输出,参考输入与实际输出的偏差值。

根据全部上式,可得闭环结构微分方程:

对应的传递函数:

3PID设计

PID控制器中设置积分因子ki为零,则为PD控制。

传递函数变为:

闭环特征方程是分母:

 

附件1:

实验1仿真代码

%exp1

clc

clear

globalSKSCSMSF;

sampling=1/1000;

SK=200;

SC=0;

SM=2.6;

State=zeros(1,2);

State

(1)=1;

State

(2)=0.0;

sss=zeros(1,1);

fork=1:

fix(5/sampling)

t=k*sampling;

sss(k,1)=t;%time

SF=0;

sss(k,2)=SF;

[TimeOdeArray,VarOdeArray]=ode45(@mdlDerivatives1,[tt+sampling],State);

[m,n]=size(TimeOdeArray);

TimeAtEndOfArray=TimeOdeArray(m,1);

if(abs(TimeAtEndOfArray-(t+sampling))>=abs(0.001*sampling))warning('numericalintegrationfailed');break;end

VAR=VarOdeArray(m,:

);%Ò»¸ö²½³¤½áÊøµÄ״̬

State=VAR;%³õʼ״̬¸üУ¬½øÐÐÏÂÒ»´Îµü´ú

sss(k,3)=VAR

(1);%response

sss(k,4)=VAR

(2);%velocity

end

plot(sss(:

1),sss(:

2),'r',sss(:

1),sss(:

3),'k',sss(:

1),sss(:

4),'b');

%mdlDerivatives1

functiondx=mdlDerivatives1(T,x)

globalSKSCSMSF;

%y

(1)=x;

%y

(2)=xd;

dx=zeros(2,1);

%sloshingdynamics

dx

(1)=x

(2);

dx

(2)=SF/SM-SK/SM*x

(1)-SC/SM*x

(2);

附件2:

实验2仿真代码

%exp2

clc

clear

globalSK1SK2SC1SC2SM1SM2SF;

sampling=1/1000;

SK1=200;

SK2=200;

SC1=0;

SC2=0;

SM1=2.6;

SM2=2.6;

State=zeros(1,4);

State

(1)=1.0;

State(3)=0.0;

sss=zeros(1,1);

fork=1:

fix(5/sampling)

t=k*sampling;

sss(k,1)=t;%time

SF=0;

sss(k,2)=SF;

[TimeOdeArray,VarOdeArray]=ode45(@mdlDerivatives2,[tt+sampling],State);

[m,n]=size(TimeOdeArray);

TimeAtEndOfArray=TimeOdeArray(m,1);

if(abs(TimeAtEndOfArray-(t+sampling))>=abs(0.001*sampling))warning('numericalintegrationfailed');break;end

VAR=VarOdeArray(m,:

);%Ò»¸ö²½³¤½áÊøµÄ״̬

State=VAR;%³õʼ״̬¸üУ¬½øÐÐÏÂÒ»´Îµü´ú

sss(k,3)=VAR

(1);%response1

sss(k,4)=VAR

(2);%velocity1

sss(k,5)=VAR(3);%response2

sss(k,6)=VAR(4);%velocity2

end

plot(sss(:

1),sss(:

2),'r',sss(:

1),sss(:

3),'k',sss(:

1),sss(:

5)-sss(:

3),'b');

%mdlDerivatives2

functiondx=mdlDerivatives2(T,x)

globalSK1SK2SC1SC2SM1SM2SF;

%x

(1)=x1;

%x

(2)=x1d;

%x(3)=x2;

%x(4)=x2d;

dx=zeros(4,1);

%sloshingdynamics

dx

(1)=x

(2);

dx

(2)=(SF-SC1*x

(2)+SC1*x(4)-SK1*x

(1)+SK1*x(3))/SM1;

dx(3)=x(4);

dx(4)=(-1*SC2*x(4)-SC1*x(4)+SC1*x

(2)-SK1*x(3)-SK2*x(3)+SK1*x

(1))/SM2;

 

附件3快速傅里叶变换FFT计算频率代码

%frequencyresponse

sampling=1/1000;

Fs=fix(1/sampling);

data=sss(1:

fix(5/sampling),3);

m=length(data);

nfft=2^nextpow2(m);

y=fft(data,nfft);%¸µÀïÒ¶±ä»»

Ayy=abs(y)*2/nfft;

f0=(0:

nfft/2-1)*Fs/nfft;%Hz,1/s

f1=f0*2*pi;%rad/s

zzz(:

1)=f0;

zzz(:

2)=f1;

zzz(:

3)=Ayy(1:

nfft/2);

plot(zzz(:

1),zzz(:

3));

xlabel('frequency/Hz');

ylabel('magnitude');

title('freqencyresponse');

 

1Command/Trajectory

输入命令

2Command/Execute

执行

3plotting/Setupplot

绘图运动轨迹

4Setup改变控制器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1