10.4 综合实例及MATLAB/Simulink应用

下面通过一个综合实例,讲述MATLAB/Simulink在本章中的应用。

【例10-5】 给定一个线性系统,其状态空间表达为H_304-1,试采用两维状态反馈方法,实现闭环阻尼比ξ=0.707,无阻尼自然振荡频率ωc=10 rad/s。

解:利用MATLAB求解的基本步骤如下。

【步骤1】 建立系统的状态空间模型。

相应的MATLAB代码如下:

  1. clear al; %清除工作空间的变量
  2. A = [0 1; 0 -5]; B = [0; 100]; C = [1 0]; D = 0;
  3. sys = ss(A,B,C,D) %建立系统的状态空间模型

【步骤2】 检验此系统的可控性和可观性。

相应的MATLAB代码如下:

  1. ctrl_matrix = ctrb(A,B); %检验控制系统的可控性
  2. if(rank(ctrl_matrix) == 2) %根据题意,可知能控矩阵的秩为2时,系统完全可控
  3. disp('系统完全可控!');
  4. else
  5. disp('系统不完全可控!');
  6. end
  7. observe_matrix = obsv(A,C); %检验控制系统的可观性
  8. if(rank(observe_matrix) == 2) %根据题意,可知能观矩阵的秩为2时,系统完全可观
  9. disp('系统完全可观!');
  10. else
  11. disp('系统不完全可观!');
  12. end

运行程序,输出结果为:

  1. 系统完全可控!
  2. 系统完全可观!

由输出结果可知,题设中的系统是可控且可观的,因此可以实现任意的极点配置,也可以对系统设计观测器。

【步骤3】 求取状态反馈矩阵,进行状态反馈。

根据题设要求,闭环阻尼比ξ=0.707,无阻尼自然振荡频率ωc=10 rad/s;不难得出,闭环系统的期望极点为s1,2=-7.07±7.07i。

因此系统的特征多项式为H_305-1

假设两维状态反馈矩阵为H_305-2,那么反馈后的闭环系统特征多项式为:

P_305-1

根据H_305-3,可直接求得状态反馈矩阵K=[1,0.914]。

【步骤4】 对状态反馈前后的系统进行对比分析。

利用MATLAB对状态反馈后的系统进行建模,并且对比反馈前后系统的阶跃响应。代码如下:

  1. K = [1 0.914]; %状态反馈矩阵K
  2. A_state_feedback = A - B * K; %对系统进行状态反馈
  3. sys_state_feedback = ss(A_state_feedback,B,C,D) %状态反馈后系统的状态空间模型
  4. syms s; %定义符号变量s
  5. det(s * eye(2) - A_state_feedback) %求取状态反馈后系统的特征多项式
  6. figure(1); %在图1上绘制反馈前后阶跃响应曲线对比
  7. step(sys); %反馈前系统的阶跃响应曲线
  8. hold on; %允许在同一坐标系下绘制不同的图形
  9. step(sys_state_feedback,2); %反馈后系统的阶跃响应曲线
  10. title('反馈前后阶跃响应曲线对比图') %添加图标题
  11. gtext('反馈前系统的阶跃响应曲线'); gtext('反馈后系统的阶跃响应曲线'); %在响应曲线上标示
  12. grid on; %添加栅格
  13. figure(2); %在图2上单独绘制反馈
  14. %后阶跃响应曲线
  15. step(sys_state_feedback); grid on; %反馈后系统的阶跃响应
  16. %曲线并添加栅格
  17. title('反馈后阶跃响应曲线图') %添加图标题

程序运行结果为:

  1. % 反馈后系统的状态空间表达式
  2. a = x1 x2
  3. x1 0 1
  4. x2 -100 -96.4
  5. b = u1
  6. x1 0
  7. x2 100
  8. c = x1 x2
  9. y1 1 0
  10. d = u1
  11. y1 0
  12. Continuous-time model.
  13. % 反馈后,闭环系统的特征多项式
  14. ans = s^2+482/5*s+100

反馈前后,系统阶跃响应曲线的对比如图10.10所示。

P_306-1

图10.10 状态反馈前后系统阶跃响应曲线的对比

不难看出,在进行反馈前,系统不稳定,阶跃响应曲线很快发散。加入二维状态反馈后,闭环系统稳定,阶跃响应曲线的如图10.11所示。

P_306-2

图10.11 进行状态反馈后系统的阶跃响应曲线

分析其原因,在反馈前系统的特征多项式为H_306-1,有极点(0,0),不在S平面的左半部分,系统不稳定;状态反馈后,系统的极点是-7.07±7.07i,在S平面的左半部分,系统稳定。

【例10-6】 给定受控系统的状态空间模型为:H_307-1,试在MATLAB中建立上述控制系统的数学模型,并且设计其降维状态观测器。

解:利用MATLAB求解的基本步骤如下。

【步骤1】 建立系统的状态空间模型。

相应的MATLAB代码如下:

  1. A = [4 4 4; -11 -12 -12; 13 14 13]; B = [1; -1; 0]; C = [1 1 1]; D = 0;
  2. sys = ss(A,B,C,D) %建立系统的状态空间模型

【步骤2】 判断系统的可观性。

相应的MATLAB代码如下:

  1. observe_matrix =obsv(A,C); %系统的能观测矩阵
  2. rank_of_obsv =rank(observe_matrix); %能观测矩阵的秩
  3. if rank_of_obsv ==3 %判断系统的能观性
  4. disp('系统是完全可观的');
  5. else
  6. disp('系统是不完全可观的');
  7. end

运行程序,输出结果为:

  1. 系统是完全可观的

同时,输出矩阵C的秩为1,所以降维观测器的最小维数为3-1=2。

【步骤3】 设定降维观测器的期望极点。

设定常数矩阵R和降维观测器期望极点的位置向量p。代码如下:

  1. R = [0 1 0;0 0 1]; P = [C; R]; % 常数矩阵RP
  2. invP = inv(P) % 常数矩阵P的逆矩阵
  3. p = [-3; -4]; % 期望的观测器极点位置

【步骤4】 求取等价系统的模型。

确定受控系统在非奇异变换H_307-2下,所得的代数等价系统为

P_307-1

相应的MATLAB代码如下:

  1. AA = P * A * invP; % 等价系统的状态转移矩阵AA
  2. A11 = [AA(1,1)]; A12 = [AA(1,2:3)]; A21 = [AA(2:3,1)]; A22 = [AA(2:3,2:3)]; % 对矩阵分块
  3. B = P * B; % 等价系统的输入矩阵BB
  4. B1 = B(1); B2 = B(2:3); % 对矩阵分块
  5. C = C * invP; % 等价系统的输出矩阵CC

程序运行的结果为:

  1. AA = 6 0 -1
  2. -11 -1 -1
  3. 13 1 0
  4. BB = 0
  5. -1
  6. 0
  7. CC = 1 0 0

【步骤5】 求取矩阵L。

确定矩阵L,使得H_308-1的特征值为步骤2中指定的p向量。计算系统特征多项式的代码如下:

  1. syms L_1 L_2 %在工作空间中声明符号变量L_1L_2
  2. syms s %在工作空间中声明符号变量s,用于计算特征多项式
  3. L = [L_1;L_2];
  4. eq = collect(det(s * eye(2) - (A22 - L * A12)),s) %以s为变量,计算系统的特征多项式

程序运行的结果为:

  1. eq = s^2+(1-L_2)*s+1-L_1-L_2

为了确定矩阵L的具体取值,需要首先计算期望的系统特征多项式。代码如下:

  1. syms s
  2. system_eq = expand((s - p(1)) * (s - p(2))) %以s为变量,展开期望的系统特征多项式

得出的期望特征多项式为:

  1. system_eq = s^2+7*s+12

由此,可以唯一地确定L矩阵的数值。代码如下:

  1. [L_1,L_2] = solve('1-L_2 = 7','1-L_1-L_2 = 12') %解方程组

求解结果为:

  1. L_1 = -5
  2. L_2 = -6

因此,L矩阵为[-5;-6]。

【步骤6】 求取降维观测器的动态方程。

至此就可以得出系统降维观测器的动态方程了。代码如下:

  1. L = [L_1; L_2]
  2. AW = (A22 - L * A12); BU = (B2 - L * B1); BY = (A21 - L * A11) + (A22 - L * A12) * L;
  3. CW = invP(1:3,2:3); DY = invP(1:3,1) + invP(1:3,2:3) * L;

程序运行的结果为:

  1. AW = [ -1, -6]
  2. [ 1, -6]
  3. BU = [ -1]
  4. [ 0]
  5. BY = [ 60]
  6. [ 80]
  7. CW = -1 -1
  8. 1 0
  9. 0 1
  10. DY = [ 12]
  11. [ -5]
  12. [ -6]

因此,系统的降维观测器动态方程为H_309-0-1

习 题

【10.1】 给定单输入、单输出受控系统状态空间表达为

P_309-1

(1)利用MATLAB建立系统的数学模型;

(2)计算上述控制系统的极点,并判断系统的稳定性;

(3)计算状态反馈矩阵,将不稳定的极点配置到指定位置-1和-2;

(4)计算反馈后闭环系统的极点,并且绘制反馈前后系统的阶跃响应曲线,比较二者的区别。

【10.2】 已知系统的开环传递函数为H_309-1

(1)利用MATLAB建立上述控制系统的数学模型;

(2)将得出的传递函数模型转换为状态空间模型;

(3)计算状态反馈矩阵,使闭环系统的极点位于-5和-2±2i;

(4)画出反馈系统的结构图,绘制反馈前后系统的阶跃响应曲线。

【10.3】 已知倒立摆系统的状态空间方程为

P_309-2

(1)利用MATLAB建立上述控制系统的数学模型;

(2)计算系统的可控性矩阵,判断系统是否完全能控;

(3)设计状态反馈矩阵,使闭环系统的极点位于H_310-1

【10.4】 给定受控系统系数矩阵为H_310-2

(1)利用MATLAB对上述控制系统建立数学模型;

(2)设计观测器,使观测器的极点为-10两重根。

【10.5】 设计下列系统的降维观测器,并使极点为给定的值。

P_310-1

【10.6】 已知某伺服电机的传递函数为H_310-5

(1)利用MATLAB建立伺服电机的数学模型;

(2)将得到的传递函数模型转化为状态空间模型;

(3)设计降维状态观测器,使观测器的极点为-15;

(4)设计状态反馈矩阵,使得闭环传递函数为H_310-6

(5)绘制系统的阶跃响应曲线,分析系统的动态特性,计算其稳态误差。