大连理工大学
系统与仿真大作业
课程名称:
系统与仿真
学院(系): 电子信息与电气工程
自动化
专
班
学
业:
级:
号:
学生姓名:
Matlab 版本:
Jeremy
R2018a
2020 年 6 月 19 日
1.1.1 计算过程
1.1.2 代码
%%h0=0
h=dsolve('Dh=1/100*200+1/100*100-1/100/0.01*sqrt(h)','h(0)=0','t');
ezplot(h,[0,50,0,10]);
xlabel('t/sec');
ylabel('liquid level');
%%h0=20
h=dsolve('Dh=1/100*200+1/100*100-1/100/0.01*sqrt(h)','h(0)=20','t');
ezplot(h,[0,50,0,20]);
xlabel('t/sec');
ylabel('liquid level');
1.1.3 运算结果
图 1.1 h0=0 时液位变化
图 1.2 h0=20 时液位变化
结果分析:由图像我们可以看出,两个系统最终将稳定在 9cm。
1.2
1.2.1 计算过程
1.2.2 代码(GUI 部分)
GUI 设计部分:
各部分句柄值: 坐标轴区域:axes1
静态文本框 1:
静态文本框 2:
静态文本框 3:
可编辑文本框 1:
可编辑文本框 2:
可编辑文本框 3:
按钮 1
比例增益
积分增益
微分增益
Kp
Ki
Kd
: 开始仿真
function varargout = Finalsolution12(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Finalsolution12_OpeningFcn, ...
'gui_OutputFcn', @Finalsolution12_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
if nargin && ischar(varargin{1})
[]);
gui_State.gui_Callback = str2func(varargin{1});
end
else
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
gui_mainfcn(gui_State, varargin{:});
end
end
function Finalsolution12_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
guidata(hObject, handles);
end
function varargout = Finalsolution12_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
end
function edit1_Callback(hObject, eventdata, handles)
Kp=get(hObject,'string');
assignin('base','edit1',str2double(get(hObject,'string')));
end
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
end
function edit2_Callback(hObject, eventdata, handles)
Ki=get(hObject,'string');
assignin('base','edit2',str2double(get(hObject,'string')));
end
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
end
function edit3_Callback(hObject, eventdata, handles)
Kd=get(hObject,'string');
assignin('base','edit3',str2double(get(hObject,'string')));
end
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
end
function pushbutton1_Callback(hObject, eventdata, handles)
warning off
sim('Finalsolution');
axes(handles.axes1);
plot(y.time,y.signals.values);%输出图像
grid on
End
1.2.3 仿真
1.2.4 结果
结果分析:通过 PID 调节,液面最终稳定在 20cm 附近,通过调节比例增益,积分常数,微
分常数可以改变系统的稳定时间,超调量.
2.1 代码
clear
clc
wh=200;wc=100;th=60;tc=30;h=9;t=50;roll=1;A=100;R=0.0;
A0=[-1/(2*roll*A*R*sqrt(h)) 0;-1*(wh*th+wc*tc-(wh+wc)*t)/(roll*A*h*h)
-1*(wh+wc)/(roll*A*h)]
B0=[1/roll/A 1/roll/A;(th-t)/roll/A/h (tc-t)/roll/A/h]
C0=[1 0;0 1];
E0=[0 0;wh/roll/A/h wc/roll/A/h];
D0=[0 0;0 0];
F0=[0 0;0 0];
Qc=[B0 A0*B0]
rankQc=rank(Qc)
if(rankQc==2)
disp('该系统是能控的!');
end
2.2 结果
3.1 代码
clear
clc
wh=200;wc=100;th=60;tc=30;h=9;t=50;roll=1;A=100;R=0.01;
A0=[-1/(2*roll*A*R*sqrt(h)) 0;-1*(wh*th+wc*tc-(wh+wc)*t)/(roll*A*h*h)
-1*(wh+wc)/(roll*A*h)]
B0=[1/roll/A 1/roll/A;(th-t)/roll/A/h (tc-t)/roll/A/h]
C0=[1 0;0 1];
E0=[0 0;wh/roll/A/h wc/roll/A/h];
D0=[0 0;0 0];
F0=[0 0;0 0];
Qc=[B0 A0*B0]
rankQc=rank(Qc)
P=[-1,-2]
K=place(A0,B0,P)
Kr=inv(B0)*(A0-B0*K)
3.2 仿真