1 问题描述
(1)时滞系统控制器设计;
(2)控制策略:将当前的控制量,延时一定时长后,再赋值给当前系统;
2 时滞算法步骤
(1)申请控制量 存储空间
假设延时时间为 ,计算步长为 ,那么可得
(2)控制器计算出此时控制量 ,并赋值给 最后一个元素
(3)被控系统当前所需的控制量取为
(4)重复步骤(2)(3)直到结束
3 使用Simulink中S函数实现时滞算法
function [sys,x0,str,ts]=mdlInitializeSizes(tau, h)
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs =1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
%
% initialize the initial conditions
%
x0 =[];
%
% str is always an empty matrix
%
str = [];
%
% initialize the array of sample times
%
ts = [0 1]; %固定步长,和simulink内部设置的固定步长保持一致
global kn ux
% h=0.1; % 迭代步长
% tau=1; %延迟时间
kn=floor( abs( tau/h ) )+1;
% 声明存储时滞控制量的空间
ux=zeros( kn, 1); %初始化
%
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(t,x,u,tau, h)
%% 时滞系统的延迟算法
global ux
% global ux
% u=[7,4,5,1,2,6,8,9,0,3, 7,4,5,1,2,6,8,9,0,3];
ux=delay(ux, u)
ux(1)
sys =ux(1);
%% 延迟算法
function ux=delay(ux, uin)
global kn
for i=1: kn-1
ux(i)=ux(i+1);
end
ux(kn)=uin;
4 对时滞系统的控制方法
自抗扰控制技术:估计补偿不确定因素的控制技术
京东
¥39.10
(1)无视时滞法
将时滞算子近似为1,再利用时滞算法处理控制量;
(2)提高阶次法
将时滞算子近似为惯性环节
(3)输出预估法
(4)输入预估法
5 数值仿真实验
(1)仿真模块
(2)控制结果
6 使用PID控制器+延时处理算法
7 采用ADRC+延时处理算法
8 经验总结
(1)S函数初始化模块只执行一次,编写时滞算法时,将当前 保存为全局变量;
(2)采用时滞算法,必须需要调整参数 (增大);
——2021.06.11——
评论(0)
您还未登录,请登录后发表或查看评论