8.6 综合实例及MATLAB/Simulink应用

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

【例8-13】 某单位负反馈控制系统的开环传递函数H_0028,设计一个串联的校正装置,使校正后的系统静态速度误差系数≥10s-1,相角裕量≥45,增益裕量≥10 dB。

解:使用MATLAB/Simunlink求解本题的基本步骤如下。

【步骤1】 确定开环传递函数中的系数K。

系统的静态速度误差系数的计算公式为:

P_236-2

根据题目要求,校正后的系统静态速度误差系数最小为10s-1,因此可求得K=20。

因此,系统的开环传递函数为H_0029

【步骤2】 建立控制系统的数学模型。

MATLAB的代码如下:

  1. clc; % 清除工作空间显示
  2. clear; % 清除工作空间的所有变量
  3. num_open = [0 20]; % 开环传递函数分子多项式系数
  4. den_open = conv(conv([1 0],[1 1]),[1 2]); % 开环传递函数分母多项式系数
  5. sys_open = tf(num_open,den_open) % 开环传递函数模型

程序运行的结果为:

  1. Transfer function:
  2. 20
  3. --------------------
  4. s^3 + 3 s^2 + 2 s

【步骤3】 分析系统的动态特性。

根据建立好的数学模型,绘制系统的频率响应曲线,分析系统的动态特性。利用margin命令计算闭环系统当前的相角裕量和增益裕量,以此确定所需的串联校正环节。

MATLAB代码如下:

  1. % 分析系统的频率响应特性
  2. [Gm, Pm, Wcg, Wcp] = margin(sys_open) % 计算相角裕量和增益裕量
  3. margin(sys_open);

程序的运行结果为:

  1. Gm = -10.50
  2. Pm = -28.0814
  3. Wcg = 1.4142
  4. Wcp = 2.4253

系统频率响应曲线如图8.48所示。

P_237-1

图8.48 闭环系统的频率响应曲线

计算结果显示,未校正的系统增益裕量只有-10.5,相角裕量为-28.0814;相角穿越频率为1.4142,幅值穿越频率为2.4253。系统尚不稳定,离题设要求的性能相去甚远。因此,需要串联校正环节,使系统的动态特性满足要求。

【步骤4】 设计系统的串联校正装置。

由于系统期望相角裕量为45,因此校正装置需要将相角提升大约73。如果单纯采用超前校正,则很难提升如此之大的相角;如果单纯采用滞后校正,则系统的增益裕量又会下降(目前的增益裕量尚且没有满足题设的要求)。综合考虑,需要采用超前滞后校正。

首先设计滞后环节。假定校正后的系统增益穿越频率为1,并且取零极点之比为10,则滞后环节的传递函数为H_0030。此时,系统的频率响应如图8.49所示。

P_238-1

图8.49 加入滞后环节后的系统频率响应曲线

对应的MATLAB代码如下:

  1. % 设计串联校正器的滞后环节
  2. num_zhihou = [1 0.1]; %滞后环节传递函数的分子多项式系数
  3. den_zhihou = [1 0.01]; %滞后环节传递函数的分母多项式系数
  4. sys_zhihou = tf(num_zhihou, den_zhihou); %滞后环节的传递函数模型
  5. sys_new = sys_open * sys_zhihou %加入滞后环节后系统的开环传递函数
  6. margin(sys_new); %绘制加入滞后环节后系统的Bode曲线

随后,根据滞后校正得出的结果,相应设计超前校正环节为H_0031。此时,系统的频率响应如图8.50所示。

P_238-2

图8.50 加入超前滞后校正环节后系统的频率响应曲线

对应的MATLAB代码如下:

  1. % 设计串联校正器的超前环节
  2. num_chaoqian = [1 0.5]; den_chaoqian = [1 5]; %超前环节传递函数的分子、分母多项式系数
  3. sys_chaoqian = tf(num_chaoqian,den_chaoqian); %超前环节的传递函数模型
  4. sys_new = sys_new * sys_chaoqian; %加入超前-滞后环节后系统的开环传递函数
  5. margin(sys_new); %绘制加入超前-滞后环节后系统的Bode曲线

不难看出,此时闭环系统的增益裕量为13.3,相角裕量为52.5,增益穿越频率为1.37;各项参数均符合题设要求。

利用如下MATLAB代码,可以对比校正前后系统的频率响应:

  1. % 对比校正前后的系统频率响应
  2. figure(1); %开启新的图形显示窗口
  3. bode(sys_open); %绘制开环传递函数的Bode曲线
  4. hold on; %在同一幅图像上显示多条曲线
  5. bode(sys_new); %绘制加入校正环节后系统的Bode曲线
  6. gtext('校正前的'); gtext('校正后的'); gtext('校正前的'); gtext('校正后的');
  7. %为曲线添加标注
  8. grid on %显示网格线

程序运行的结果如图8.51所示。

P_239-1

图8.51 系统校正前后不同的频率响应曲线

从图8.51中可以看出:超前滞后校正环节主要作用于0.01~10频率段;滞后校正将低频部分的相频曲线“压低”,超前校正则将高频部分的相频曲线“抬高”,从而大大提高了系统中频段的相位。

同时,滞后校正“抬高”低频部分的幅频曲线,而超前校正“压低”从低频开始较广频率范围的幅频曲线,这又使得系统的增益频率左移。双重作用下,系统的相角裕量大大增加。

此外,相角穿越频率右移,使系统的增益裕量进一步提高。超前滞后校正较好的满足了题设的要求。当然,这些是以牺牲系统的增益穿越频率为代价的。

综上,校正后的系统开环传递函数为:

  1. Transfer function:
  2. 20 s^2 + 12 s + 1
  3. --------------------------------------------------------
  4. s^5 + 8.01 s^4 + 17.08 s^3 + 10.17 s^2 + 0.1

【步骤5】 比较校正前后系统的性能。

比较一下校正前后系统的阶跃响应。

MATLAB代码如下:

  1. % 系统校正前后的阶跃响应曲线
  2. figure(2); % 开启新的图形显示窗口
  3. step(feedback(sys_open,1)); % 绘制原始闭环系统的阶跃响应曲线
  4. grid on; % 显示网格线
  5. figure(3); % 开启新的图形显示窗口
  6. step(feedback(sys_new,1)); % 绘制校正后闭环系统的阶跃响应曲线
  7. gtext('校正前的'); gtext('校正后的'); % 为曲线添加标注
  8. grid on; % 显示网格线

程序运行的结果如图8.52和图8.53所示。

P_240-1

图8.52 系统校正前的阶跃响应曲线

P_240-2

图8.53 系统校正后的阶跃响应曲线

可见,校正环节的加入,使得系统由不稳定变得动态特性良好。

【步骤6】 顺便指出,还可以采用在第7章中提过的rltool工具进行校正。在rltool中可以很方便地放置零极点,通过观察系统的频率响应曲线,不断调节零极点的位置,直到系统的频率特性符合要求。此时,可从界面中直接读取出校正环节的传递函数,非常简捷。

MATLAB命令为rltool(sys_open)。校正后的结果如图8.54所示,具体过程不再赘述。

P_241-1

图8.54 利用rltool进行校正环节设计

习 题

【8.1】 给定单位负反馈控制系统,被控对象的传递函数H_0032

(1)利用MATLAB建立控制系统的数学模型,并绘制其幅频特性曲线;

(2)设计一个滞后校正装置,使得系统的相角裕量达到45°。

(提示:采用Bode图校正方法)

【8.2】 已知某单位负反馈控制系统的开环传递函数H_0033

(1)利用MATLAB建立控制系统的数学模型,并绘制其幅频特性曲线;

(2)设计一个超前校正装置,使系统的静态速度误差系数为Kv=10s-1,相角裕量不小于50°;

(3)设计一个滞后校正装置,使系统的静态速度误差系数为Kv=10s-1,相角裕量不小于50°;

(4)比较两种校正效果的差别。

(提示:采用Bode图校正方法)

【8.3】 已知某单位负反馈控制系统的开环传递函数H_0034

(1)利用MATLAB建立控制系统的数学模型,并绘制出其幅频特性曲线,计算其相角裕量、增益裕量、幅值穿越频率和相角穿越频率等参数;

(2)设计一个超前滞后校正环节,保证系统的静态速度误差系数为Kv=20s-1,相角裕量不小于60°,并且增益裕量大于等于8 dB。

(提示:采用Bode图校正方法)

【8.4】 已知某单位负反馈控制系统的开环传递函数H_0035

(1)利用MATLAB建立控制系统的数学模型,并绘制其根轨迹曲线,确定使系统稳定时K的取值范围;

(2)如果只采用增益校正,确定K的取值,保证闭环系统主导极点阻尼比为0.5。

(提示:采用根轨迹校正方法)

【8.5】 单位负反馈控制系统中的开环传递函数H_0036

(1)利用MATLAB建立控制系统的数学模型,并绘制其根轨迹曲线,确定使系统稳定时K的取值范围;

(2)设计校正装置,保证闭环系统的主导极点位于H_0037,并且静态速度误差系数为Kv=50s-1。

(提示:采用根轨迹校正方法)

【8.6】 利用MATLAB中的rltool工具,重新完成习题8.5。

(提示:利用rltool工具中放置零极点位置的功能)