10.4 综合实例及MATLAB/Simulink应用
下面通过一个综合实例,讲述MATLAB/Simulink在本章中的应用。
【例10-5】 给定一个线性系统,其状态空间表达为,试采用两维状态反馈方法,实现闭环阻尼比ξ=0.707,无阻尼自然振荡频率ωc=10 rad/s。
解:利用MATLAB求解的基本步骤如下。
【步骤1】 建立系统的状态空间模型。
相应的MATLAB代码如下:
- clear al; %清除工作空间的变量
- A = [0 1; 0 -5]; B = [0; 100]; C = [1 0]; D = 0;
- sys = ss(A,B,C,D) %建立系统的状态空间模型
【步骤2】 检验此系统的可控性和可观性。
相应的MATLAB代码如下:
- ctrl_matrix = ctrb(A,B); %检验控制系统的可控性
- if(rank(ctrl_matrix) == 2) %根据题意,可知能控矩阵的秩为2时,系统完全可控
- disp('系统完全可控!');
- else
- disp('系统不完全可控!');
- end
- observe_matrix = obsv(A,C); %检验控制系统的可观性
- if(rank(observe_matrix) == 2) %根据题意,可知能观矩阵的秩为2时,系统完全可观
- disp('系统完全可观!');
- else
- disp('系统不完全可观!');
- end
运行程序,输出结果为:
- 系统完全可控!
- 系统完全可观!
由输出结果可知,题设中的系统是可控且可观的,因此可以实现任意的极点配置,也可以对系统设计观测器。
【步骤3】 求取状态反馈矩阵,进行状态反馈。
根据题设要求,闭环阻尼比ξ=0.707,无阻尼自然振荡频率ωc=10 rad/s;不难得出,闭环系统的期望极点为s1,2=-7.07±7.07i。
因此系统的特征多项式为。
假设两维状态反馈矩阵为,那么反馈后的闭环系统特征多项式为:
根据,可直接求得状态反馈矩阵K=[1,0.914]。
【步骤4】 对状态反馈前后的系统进行对比分析。
利用MATLAB对状态反馈后的系统进行建模,并且对比反馈前后系统的阶跃响应。代码如下:
- K = [1 0.914]; %状态反馈矩阵K
- A_state_feedback = A - B * K; %对系统进行状态反馈
- sys_state_feedback = ss(A_state_feedback,B,C,D) %状态反馈后系统的状态空间模型
- syms s; %定义符号变量s
- det(s * eye(2) - A_state_feedback) %求取状态反馈后系统的特征多项式
- figure(1); %在图1上绘制反馈前后阶跃响应曲线对比
- step(sys); %反馈前系统的阶跃响应曲线
- hold on; %允许在同一坐标系下绘制不同的图形
- step(sys_state_feedback,2); %反馈后系统的阶跃响应曲线
- title('反馈前后阶跃响应曲线对比图') %添加图标题
- gtext('反馈前系统的阶跃响应曲线'); gtext('反馈后系统的阶跃响应曲线'); %在响应曲线上标示
- grid on; %添加栅格
- figure(2); %在图2上单独绘制反馈
- %后阶跃响应曲线
- step(sys_state_feedback); grid on; %反馈后系统的阶跃响应
- %曲线并添加栅格
- title('反馈后阶跃响应曲线图') %添加图标题
程序运行结果为:
- % 反馈后系统的状态空间表达式
- a = x1 x2
- x1 0 1
- x2 -100 -96.4
- b = u1
- x1 0
- x2 100
- c = x1 x2
- y1 1 0
- d = u1
- y1 0
- Continuous-time model.
- % 反馈后,闭环系统的特征多项式
- ans = s^2+482/5*s+100
反馈前后,系统阶跃响应曲线的对比如图10.10所示。
图10.10 状态反馈前后系统阶跃响应曲线的对比
不难看出,在进行反馈前,系统不稳定,阶跃响应曲线很快发散。加入二维状态反馈后,闭环系统稳定,阶跃响应曲线的如图10.11所示。
图10.11 进行状态反馈后系统的阶跃响应曲线
分析其原因,在反馈前系统的特征多项式为,有极点(0,0),不在S平面的左半部分,系统不稳定;状态反馈后,系统的极点是-7.07±7.07i,在S平面的左半部分,系统稳定。
【例10-6】 给定受控系统的状态空间模型为:,试在MATLAB中建立上述控制系统的数学模型,并且设计其降维状态观测器。
解:利用MATLAB求解的基本步骤如下。
【步骤1】 建立系统的状态空间模型。
相应的MATLAB代码如下:
- A = [4 4 4; -11 -12 -12; 13 14 13]; B = [1; -1; 0]; C = [1 1 1]; D = 0;
- sys = ss(A,B,C,D) %建立系统的状态空间模型
【步骤2】 判断系统的可观性。
相应的MATLAB代码如下:
- observe_matrix =obsv(A,C); %系统的能观测矩阵
- rank_of_obsv =rank(observe_matrix); %能观测矩阵的秩
- if rank_of_obsv ==3 %判断系统的能观性
- disp('系统是完全可观的');
- else
- disp('系统是不完全可观的');
- end
运行程序,输出结果为:
- 系统是完全可观的
同时,输出矩阵C的秩为1,所以降维观测器的最小维数为3-1=2。
【步骤3】 设定降维观测器的期望极点。
设定常数矩阵R和降维观测器期望极点的位置向量p。代码如下:
- R = [0 1 0;0 0 1]; P = [C; R]; % 常数矩阵R和P
- invP = inv(P) % 常数矩阵P的逆矩阵
- p = [-3; -4]; % 期望的观测器极点位置
【步骤4】 求取等价系统的模型。
确定受控系统在非奇异变换下,所得的代数等价系统为
相应的MATLAB代码如下:
- AA = P * A * invP; % 等价系统的状态转移矩阵AA
- A11 = [AA(1,1)]; A12 = [AA(1,2:3)]; A21 = [AA(2:3,1)]; A22 = [AA(2:3,2:3)]; % 对矩阵分块
- B = P * B; % 等价系统的输入矩阵BB
- B1 = B(1); B2 = B(2:3); % 对矩阵分块
- C = C * invP; % 等价系统的输出矩阵CC
程序运行的结果为:
- AA = 6 0 -1
- -11 -1 -1
- 13 1 0
- BB = 0
- -1
- 0
- CC = 1 0 0
【步骤5】 求取矩阵L。
确定矩阵L,使得的特征值为步骤2中指定的p向量。计算系统特征多项式的代码如下:
- syms L_1 L_2 %在工作空间中声明符号变量L_1和L_2
- syms s %在工作空间中声明符号变量s,用于计算特征多项式
- L = [L_1;L_2];
- eq = collect(det(s * eye(2) - (A22 - L * A12)),s) %以s为变量,计算系统的特征多项式
程序运行的结果为:
- eq = s^2+(1-L_2)*s+1-L_1-L_2
为了确定矩阵L的具体取值,需要首先计算期望的系统特征多项式。代码如下:
- syms s
- system_eq = expand((s - p(1)) * (s - p(2))) %以s为变量,展开期望的系统特征多项式
得出的期望特征多项式为:
- system_eq = s^2+7*s+12
由此,可以唯一地确定L矩阵的数值。代码如下:
- [L_1,L_2] = solve('1-L_2 = 7','1-L_1-L_2 = 12') %解方程组
求解结果为:
- L_1 = -5
- L_2 = -6
因此,L矩阵为[-5;-6]。
【步骤6】 求取降维观测器的动态方程。
至此就可以得出系统降维观测器的动态方程了。代码如下:
- L = [L_1; L_2]
- AW = (A22 - L * A12); BU = (B2 - L * B1); BY = (A21 - L * A11) + (A22 - L * A12) * L;
- CW = invP(1:3,2:3); DY = invP(1:3,1) + invP(1:3,2:3) * L;
程序运行的结果为:
- AW = [ -1, -6]
- [ 1, -6]
- BU = [ -1]
- [ 0]
- BY = [ 60]
- [ 80]
- CW = -1 -1
- 1 0
- 0 1
- DY = [ 12]
- [ -5]
- [ -6]
因此,系统的降维观测器动态方程为。
习 题
【10.1】 给定单输入、单输出受控系统状态空间表达为
(1)利用MATLAB建立系统的数学模型;
(2)计算上述控制系统的极点,并判断系统的稳定性;
(3)计算状态反馈矩阵,将不稳定的极点配置到指定位置-1和-2;
(4)计算反馈后闭环系统的极点,并且绘制反馈前后系统的阶跃响应曲线,比较二者的区别。
【10.2】 已知系统的开环传递函数为。
(1)利用MATLAB建立上述控制系统的数学模型;
(2)将得出的传递函数模型转换为状态空间模型;
(3)计算状态反馈矩阵,使闭环系统的极点位于-5和-2±2i;
(4)画出反馈系统的结构图,绘制反馈前后系统的阶跃响应曲线。
【10.3】 已知倒立摆系统的状态空间方程为
(1)利用MATLAB建立上述控制系统的数学模型;
(2)计算系统的可控性矩阵,判断系统是否完全能控;
(3)设计状态反馈矩阵,使闭环系统的极点位于。
【10.4】 给定受控系统系数矩阵为。
(1)利用MATLAB对上述控制系统建立数学模型;
(2)设计观测器,使观测器的极点为-10两重根。
【10.5】 设计下列系统的降维观测器,并使极点为给定的值。
【10.6】 已知某伺服电机的传递函数为。
(1)利用MATLAB建立伺服电机的数学模型;
(2)将得到的传递函数模型转化为状态空间模型;
(3)设计降维状态观测器,使观测器的极点为-15;
(4)设计状态反馈矩阵,使得闭环传递函数为;
(5)绘制系统的阶跃响应曲线,分析系统的动态特性,计算其稳态误差。