1. 渐近跟踪问题和扰动抑制问题
对于线性时不变系统而言,实现渐近跟踪和扰动抑制,必须在控制器中“植入”参考信号和扰动信号的模型。因此,对参考信号和扰动信号建立相应的模型是求解渐近跟踪问题和扰动抑制问题的前提。
2. 无静差跟踪控制系统设计
2.1 系统结构
图1 无静差跟踪控制系统结构框图
无静差跟踪控制系统组成一般如图1所示。控制器由“伺服控制器”和“镇定控制器”所组成。伺服控制器为一个线性时不变系统,其功能是为控制系统实现渐近跟踪和扰动控制提供机理保证。镇定补偿器为一个静态反馈,其功能是使控制系统渐近稳定。
3. 仿真与分析
3.1 问题描述
给定一个连续时间线性时不变受控系统:
其中,(表示状态信号维度,表示输入信号维度,表示扰动信号维度)。给定参考输入和扰动为阶跃函数。要求综合使系统实现无静差跟踪的镇定补偿器和伺服补偿器。
注:本例子引用于《线性系统理论》(第2版)——郑大钟著第6章,无静差跟踪控制314页;
3.2 控制器设计
步骤1:判断输入输出维度关系,,满足。
步骤2:判断系统是否完全能控;
%% 系统状态方程
A = [0,1,0,0;
0,0,-1,0;
0,0,0,1;
0,0,11,0];
b = [0;1;0;-1];
bw =[0;4;0;6];
dim_x = 4; % 状态变量x的维度=4
%% 判断系统是否完全能控
E_con = ctrb(A,b); % 求解能控性矩阵
E_val_con = rank(E_con); % 根据能控性矩阵是否满秩判断能控性
if E_val_con == dim_x
fprintf('系统完全能控');
else
fprintf('系统不完全能控');
end
步骤3:求解给定参考输入和扰动的共同不稳定多项式;
由于给定参考输入和扰动均为阶跃函数,所以利用拉普拉斯变换有:
和,两者最小公倍式为
步骤4:判断是否可实现无静差跟踪控制;
计算 ,求得特征根,则
%% 判断是否存在无静差跟踪控制器
M_con = [-A,b; % 无静差控制器是否存在的判断矩阵
-c,0];
M_val_con = rank(M_con); % 无静差控制器是否存在的判断矩阵的秩
if M_val_con == dim_x + dim_w
fprintf('存在无静差跟踪控制器\n');
else
fprintf('不存在无静差跟踪控制器\n');
end
步骤5:求解给定参考输入和扰动的共同不稳定模型(内模);
,其中,
本系统中,
步骤6:构造增广矩阵的状态方程;
步骤7:利用极点配置求和;
%% 伺服控制器和镇定控制器系数求解
Ac = zeros(1,1); bc = ones(1,1);
ZG_A = [A,zeros(4,1);-bc*c,Ac]; % 增广矩阵
ZG_B = [b;0];
p_K = [-1;-1;-1+1i;-1-1i;-2]; % 系统期望极点
K = acker(ZG_A,ZG_B,p_K); % 控制器增益系数K
fprintf('控制器增益系数 K=\n')
disp(K);
控制器增益系数 K=
-1.4000 -2.0400 -27.4000 -8.0400 0.4000
利用MATLAB求得:
自此,控制器设计完毕。
3.3 结果分析
1. 主函数(main.m)
%%————————————————————————————————————%%
%功能:基于内模原理的无静差跟踪控制器设计
%时间:2020年4月14日
%作者:Peng Jin
%版本:V1.0
%———————————————————————————————————%%
%%
clc
clear all
close all
%% 系统状态方程
A = [0,1,0,0;
0,0,-1,0;
0,0,0,1;
0,0,11,0];
b = [0;1;0;-1];
bw =[0;4;0;6];
c = [1,0,0,0];
dim_x = 4; % 状态变量x的维度=4
dim_u = 1; % 输入控制u的维度=1
dim_w = 1; % 扰动输入w的维度=1
%% 判断系统是否完全能控
E_con = ctrb(A,b); % 求解能控性矩阵
E_val_con = rank(E_con); % 根据能控性矩阵是否满秩判断能控性
if E_val_con == dim_x
fprintf('系统完全能控\n');
else
fprintf('系统不完全能控\n');
end
%% 判断是否存在无静差跟踪控制器
M_con = [-A,b; % 无静差控制器是否存在的判断矩阵
-c,0];
M_val_con = rank(M_con); % 无静差控制器是否存在的判断矩阵的秩
if M_val_con == dim_x + dim_w
fprintf('存在无静差跟踪控制器\n');
else
fprintf('不存在无静差跟踪控制器\n');
end
%% 伺服控制器和镇定控制器系数求解
Ac = zeros(1,1); bc = ones(1,1);
ZG_A = [A,zeros(4,1);-bc*c,Ac]; % 增广矩阵
ZG_B = [b;0];
p_K = [-1;-1;-1+1i;-1-1i;-2]; % 系统期望极点
K = acker(ZG_A,ZG_B,p_K); % 控制器增益系数K
fprintf('控制器增益系数 K=\n')
disp(K);
%% 系统求解
x0 = [0;0;0;0;0];
[t,x] = ode45(@genzong,[0,20],x0);
y0 = 1;
figure;
plot(t,x(:,1),'r-'); % y的实际输出值
hold on;
plot(t,y0,'b-'); % y的期望值
xlabel('时间/s'); ylabel('期望输入与跟随输出');
2. 系统方程(genzong.m)
function dx = genzong(t,x)
k1 = -1.4; k2 = -2.04; k3 = -27.4; k4 = -8.04; % 镇定补偿器增益系数
kc = -0.4; % 伺服补偿器增益系数
u = [-k1 -k2 -k3 -k4 kc]*x;
y0 = 1; % 参考输入
w = 1; % 扰动信号
y = x(1); % 输出方程
e = y -y0; % 输出误差
dx(1) = x(2);
dx(2) = -x(3) + u + 4*w;
dx(3) = x(4);
dx(4) = 11*x(3) - u + 6*w;
dx(5) = -x(1) + y0;
dx = dx';
end
仿真结果如下:
图2 仿真结果图
由结果可知,控制器能实现无静差跟踪控制。
4. 内模原理
(1)内模:由上图可知,无静差控制方案的特点在于:在伺服补偿器中植入参考输入和扰动的共同不稳定模型,通常称这个置于系统内部的外部型号模型为“内模”。
(2)内模原理:无静差跟踪控制系统,在保证系统渐近稳定前提下,系统可实现渐近跟踪和扰动抑制的基本原因在于内模以及内模产生的补偿作用。通常,称基于参考输入和扰动的共同不稳定模型即内模实现的无静差跟踪控制的机理称为内模原理。
(3)内模原理的特性:
a. 内模原理更具一般性(即对任意类型函数)和更为一般角度(即同时对参考输入和扰动信号),一阶和二阶无静 差控制实质为内模的局部应用。
b. 利用内模原理实现无静差跟踪控制的系统 ,仅对除内模以外的受控系统和补偿器的参数变动具有很强鲁棒性,
而对内模参数不具有鲁棒性。结合上面例子而言,控制器对于 这两个参数发生扰动时,跟踪控制将会 失效。
例如,将dx(5) = -x(1)+y0改为dx(5) = -x(1)+1.5*y0,即将,则系统就存在了误差。
function dx = genzong(t,x)
k1 = -1.4; k2 = -2.04; k3 = -27.4; k4 = -8.04; % 镇定补偿器增益系数
kc = -0.4; % 伺服补偿器增益系数
u = [-k1 -k2 -k3 -k4 kc]*x;
y0 = 1; % 参考输入
w = 1; % 扰动信号
y = x(1); % 输出方程
e = y -y0; % 输出误差
dx(1) = x(2);
dx(2) = -x(3) + u + 4*w;
dx(3) = x(4);
dx(4) = 11*x(3) - u + 6*w;
dx(5) = -x(1) + 1.5*y0;
dx = dx';
end
图3 内模参数有扰动时的仿真结果图
(4)内模原理实质:依靠参考输入和扰动的共同不稳定代数方程的根与参考输入和扰动的不稳定振型实现精确对消,从而达到渐近跟踪和扰动抑制的目标。因此,内模参数的任何摄动,都将直接破坏这种精确对消,从而破坏渐近跟踪和扰动抑制的机理。
尽管如此,在工程应用中,假设参考输入和扰动有界,即使的系数产生变动,基于内模原理的无静差跟踪控制系统的输出仍能以有限误差实现跟踪,如图3所示。