飞行器系统仿真Word下载.docx
《飞行器系统仿真Word下载.docx》由会员分享,可在线阅读,更多相关《飞行器系统仿真Word下载.docx(55页珍藏版)》请在冰点文库上搜索。
(4)命令输入
clear;
clc
[tx]=sim('
CAD1'
);
hSimulink=figure();
subplot(3,1,1);
plot(t,x(:
1));
grid;
ylabel('
r'
subplot(3,1,2);
2));
q'
subplot(3,1,3);
3));
sigma'
);
CAD1_S'
hSFun=figure();
'
);
ylabel(subplot(3,1,2);
ylabel(
模型仿真结果:
S函数仿真结果:
题目2:
给出动态方程
x(1x2)xtx1;
X(O)1,X(O)0
(1)用MATLA语言编写S—函数;
(2)用命令行gear/adams法对
(1)进行仿真,显示曲线x(t=0:
100);
(3)建立方框图,用RK45仿真50秒,显示曲线
(1)用MATLAB语言编写S—函数
(2)直接调用ode数值积分函数进行仿真,系统微分方程:
functiondx=CAD01_02odefun(t,x)
dx
(1)=x
(2);
dx
(2)=1-(1-x
(1)*x
(1))*x
(2)-t*x
(1);
dx=dx'
;
调用ode解算器入口:
clc;
[tx]=ode15s(@CAD01_02odefun,0:
100,[10]);
hGear=figure();
set(hGear,'
NumberTitle'
'
off'
'
Name'
IntegratedbytheGear
algorithm'
Units'
Normalized'
Position'
[]);
subplot(2,1,1);
plot(t,x(:
x'
subplot(2,1,2);
dx/dt'
[tx]=ode113(@CAD01_02odefun,0:
hAdams=figure();
set(hAdams,'
IntegratedbytheAdamsalgorithm'
Units'
卩osition'
[]);
subplot(2,1,2);
ode15s(Gear)仿真结果:
ode113(Adams)仿真结果:
(3)建立方框图,用RK45仿真50秒,显示曲线方框图模型:
(4)
问题3:
质量一弹簧系统,质量M恢复系数K阻力系数C,主
动力P,动力学方程为Mx(Cx2Mg)sign(x)KxPM=1kg,
K=4kg/s2,C=100kg/m,g=s2,=;
(1)在原点处用linmod线性化,求线性系统的A,B,C,D;
(2)对线性模型,判断能控性;
(3)对线性模型,求阶跃、脉冲响应曲线;
(4)对原模型进行仿真,P=sin(t)(使用Simulink);
(5)对原模型进行仿真,P=sin(t)(使用ode23)
(1)①线性化时需在模型中制定输入端、输出端(状态),如下图,状态
选为位置和速度
②linmod函数应用于该系统会出现奇异,故选用改进的linmod2函数:
clc;
[A,B,C,D]=linmod2('
CAD3'
ssO=ss(A,B,C,D);
Co=ctrb(ssO);
[rowcol]=size(A);
isControllable=~(rank(Co,eps)-row);
hStep=figure。
Response'
unit'
,‘normalized'
step(ss0);
grid;
hImpulse=figure();
set(hImpulse,
'
Impulse
,‘normalized'
[,,,]);
impulse(ss0);
命令窗口输出结果:
A=
+008*
OH
」0
0」
DH
Thesysfemisconf「o=ed
(3)孚®
>
Mi
mHJ'
FIMWH-
w爭>
M-
SSI«
S.
(5)对原模型进行仿真,P=sin(t)(使用Simulink)
仿真结果:
1
I
11
111J
ii
H
8
i
4
IM
(6)对原模型进行仿真,P=sin(t)(使用ode23)系统微分方程:
functiondx=CAD3odefun(t,x)
M=1;
K=4;
C=100;
g=;
miu=;
dx
(2)=(sin(t)-K*x
(1)-sign(x
(2))*(C*x
(2)*x
(2)+miu*M*g))/M;
仿真入口程:
options=odeset(
RelTol'
1e-3,'
AbsTol'
[1e-55e-5]);
[tx]=ode23(@CAD3odefun,0:
:
10,[00],options);
yu
case3,
functionsys=mdlOutputs(t,x,u,ul,ur,yl,yr)if(u>
=ur+yr)
y=yr;
elseif(u<
=ul+yl)
y=yl;
elseif(u>
ul+yl)&
&
(u<
ul)
y=u-ul;
ur+yr)&
(u>
ur)
y=u-ur;
else
y=0;
sys=y;
参数传递及初始化
FunctionBio-kFaraTnerters-S-fun-tion
■r
问题5:
已知系统A=[01;
-1-2],B=[10;
01],C=[10;
01],D=
[00;
00],求系统的状态空间方程(linmod),并分析系统的稳定性,
练习仿真参数设置
答:
对模型进行线性化并分析稳定性
[ABCD]=linmod('
CAD5'
)
hpz=figure();
set(hpz,'
Pole-zeromapofthelinmodsystem'
pzmap(ssO);
sgrid;
P=lyap(A,eye(row));
fori=1:
row
subdet(i)=det(P(1:
i,1:
i));
subdet
系统零极点图:
曲**IMf
IQ
-ta-i■i.
*GD
x0'
[],[],ix,[],[],dx'
存在正实部的极点,系统不稳定。
问题6:
系统的动力学方程为dx/dt=Ax+Bu,y=Cx+Du,A=[0
100;
0010;
0001;
-1-2-3-4],B=[12;
34;
23;
45],C=[1122;
2354];
D=[10;
01],求:
(1)系统动态平衡点
(2)x(0)=[1111]'
ix=[1234]'
dx=[0101]'
的系=[1234]
统动态平衡点
系统框图模型
GZ>
In*
State-Space
系统的平衡点分析
程序
[x,u,y,dx,options]=trim('
CAD6'
options(10)
x0=[1111];
ix=[1234];
dx=[0101];
idx=[1234];
CAD01_06'
idx);
运行结果
x=[0;
0;
0];
u=[0;
y=[0;
ans=9
x=[;
];
u=[;
y=[;
ans=41
问题7:
自学文件C与M-s函数模板和示例文件
Simulink中的示例文件实现了将输入信号放大为2倍输出的功能,自
学时对示例程序进行改进,使之可以指定信号放大的倍数。
语言S函数源代码
#defineS_FUNCTION_NAMECAD02_07sfun
/***Modified:
changethefunctionname*/
#defineS_FUNCTION_LEVEL2
#include"
"
staticvoidmdlInitializeSizes(SimStruct*S)
{
ssSetNumSFcnParams(S,1);
/***Revised:
setthenumberofinputparametersto1*/
if(ssGetNumSFcnParams(S)!
=ssGetSFcnParamsCount(S)){
return;
}
if(!
ssSetNumInputPorts(S,1))return;
ssSetInputPortWidth(S,0,DYNAMICALLY_SIZED);
ssSetInputPortDirectFeedThrough(S,0,1);
ssSetNumOutputPorts(S,1))return;
ssSetOutputPortWidth(S,0,DYNAMICALLY_SIZED);
ssSetNumSampleTimes(S,1);
ssSetOptions(S,SS_OPTION_EXCEPTION_FREE_CODE);
staticvoidmdlInitializeSampleTimes(SimStruct*S)
ssSetSampleTime(S,0,INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S,0,;
staticvoidmdlOutputs(SimStruct*S,int_Ttid)
int_Ti;
InputRealPtrsTypeuPtrs=ssGetlnputPortRealSignalPtrs(S,O);
real_T*y=ssGetOutputPortRealSignal(S,0);
int_Twidth=ssGetOutputPortWidth(S,0);
constmxArray*pmxRatio=ssGetSFcnParam(S,0);
getthepointertotheparameterinthetypeofmxArray*/
constreal_T*pRatio=mxGetPr(pmxRatio);
getthepointertotheparameterinthetypeofreal_T*/
for(i=0;
i<
width;
i++){
*y++=(*pRatio)*(*uPtrs[i]);
themagnifyingratioisacquiredfromtheinputparameter*/
staticvoidmdlTerminate(SimStruct*S){}
#ifdefMATLAB_MEX_FILE
#include"
#else
#endif
封装及用户界面:
问题8自学文件Stateflow示例文件
function[varargout]=stateflow(varargin)
%STATEFLOWOpensSIMULINKandcallssfnewwhen即propriate.
%Copyright1995-2002TheMathWorks,Inc.%$Revision:
$$Date:
2004/04/1501:
01:
52$ifnargout>
[varargout{:
}]=sf(varargin{:
});
sf(varargin{:
Stateflow是有限状态机(finitestatemachine)的图形工具,它可以用
于解决复杂的逻辑问题,用户可以通过图形化工具实现在不同状态之间的转换。
Stateflow可以直接嵌入到Simulink仿真模型中,并且在仿真的初始化阶段,SIMULINK会把Stateflow绘制的逻辑图形通过编译程序转换成C语言,使二者有机地结合在一起。
Stateflow可以在SIMULINKExtra模块库中找到。
Stateflow的仿真原理是有限状态机(finitestatemachine)理论,有限
状态机是指系统含有可数的状态,在相应的状态事件发生时,系统会从当前状态转移到与之对应的状态。
在有限状态机中实现状态的转移是有一定条件的,同时
相互转换的状态都会有状态转移事件,这样就构成了状态转移图。
在SIMULINK
的仿真窗口中,允许用户建立有限个状态以及状态转移的条件与事件,从而绘制
出有限状态机系统,这样就可以实现对系统的仿真。
Stateflow的仿真框图一般
都会嵌入到Simulink仿真模型中,同时实现状态转移的条件或是事件即可以取自Stateflow仿真框图,也可以来自Simulink仿真模型。
第二部分综合(60)
rcptgttor|TvoBody
ititlSitttTool.I
Start
Stoj
Stej
Orbit
CouldEpoch
CoordTyp@:
|J2000
ApogaoR^dius
|PerigceRalius
Inclion
Coord
ArgunentofPerigee
Proj
RAaN
09
lay201311:
45:
03
Kacilitydfiatkou-To-Satellite-Satellitel:
AccessSiMunaryKeporthatkou-To-Satellitel
Jun
2003
12:
42:
43.49
L
58:
32.39
948.902
2
l?
30.51
Juri
23:
44.10
373.584
3
03:
00:
51.11
Z
JUli
11:
21.17
630.058
04:
13.27
39.14
R05.875
5
06:
29:
56.83
14.50
977.667
6
08:
14:
57.61
Juii
33:
41.10
1123.494
7
Jim
10:
34.61
20:
16.6S
1182.039
47:
30.10
12;
00;
Q0.00
T-19.903
GlobalStatistics
■inDiirntion
17:
.Tun
373.584
l^iDuration
34.61
16.65
1182.039
leanDuration
84&
940
TotalDiiration
6791.523
AccessStartTine(UTCC)
StopTi®
n(UTCG)
Duration(sec)
C?
■阳如13ll:
43:
6fr
UatelliteSatellite丄fseiiiiurSeiwurlTu>
fatilUy匕卷百匕旧占SimaryRci?
mtt
S«
]ii£
;
ur1-Tu~lafii1甘
Access
StflTiTine(irrcc)
Stop,Ti*c(UTCG)
Ehirntifin(sec)
2Jun200503:
07:
(12,M
2Juri刻吧O3:
U*:
1LXO
69,nr
2Jun200306:
39j09.18
22.57
253.3S3
2Jun200508:
33.27
2Jun200300:
30:
30.17
416.905
fl
2Jun20t)S10:
44.40
2JunZOOS10:
16:
3K.4»
$54一001
GlobalStatiKtics
linDmmtInn
2Jun2Q0S03:
tt7r02.hi
2Jim2nt)303tOS:
ll.SO
sa.1ST
lasDuration
2Juii200108;
23/J3+2T
2Juri0S:
70;
X.lT
41S.VQ5
leanDurjitiun
273.36Z
T-nfolDrnrntino
1093.447
J2
U9I»
y^013lb:
(JO:
!
0SctiiiurlTuFdullLty1milla:
AjccgsuSumiaryRrpurt
ScaiBOTl-Talomila
GlobalStutieticE
Ifty20131S:
DL:
35
radii1j<
Hialiiiiu-Tu_S>
ile]Iile-SaldIilei;
huceuvWui・aryRupurt
hatlcauTnSntrllilcl
linDurationlaiDirrnticmleanI)ur4lionTntaiDuration