非线性状态误差反馈NLSEF

发布时间 2024-01-10 17:33:55作者: 阿风小子

一、作用
找到一种非线性的控制组合代替传统的PID控制器的线性组合,获得更有效的误差反馈控制率,只需将误差信号换成关于误差的非线性函数如fst函数(fhan函数)和fal函数等,可实现“小误差大增益,大误差小增益”的效果。

二、理论分析
有了跟踪微分器TD之后,我们就可以利用误差e1=v1-x1和误差微分e2=v2-x2组成PD控制u=Kp*e1+Kd*e2,甚至可以实现PID控制u=Kp*e1+Kd*e2+Ki*e0,其中

但是这种线性组合不一定是最好的,韩京清老师在论文中提到“大量仿真研究表明采用e1,e2和e0的适当非线性组合效果更好”,于是他提出常用的两种形式的非线性组合:

对于第一种非线性组合来说,α和δ是可以调节的参数,一般取a0<0<a1<1<a2,δ根据工程经验一般取0.1。在二阶系统的控制中一般只用误差e1和误差微分e2来组成非线性PD控制器:
第二种非线性组合用到的fhan(e1,c*e2,r,h0)与跟踪微分器TD中用到的fhan(e,x2,r,h)不同,用于误差反馈时,其参数c叫“阻尼因子”,相当于PID的微分增益,h0叫精度因子,决定跟踪设定值的跟踪精度,1/h0相当于PID的比例增益。

三、Matlab仿真
3.1 .m文件
function u0  = NLSEF(e1,e2)
k1=2;k2=4;
a1=0.5;a2=0.25;
delta=0.1;
u0=k1*fal(e1,a1,delta)+k2*fal(e2,a2,delta);
end
fal.m

function [f] = fal(e,a,d)
if abs(e)<d
    f=e*d^(a-1);
else
    f=(abs(e))^a*sign(e);
end
end
3.2 simulink仿真
和ESO结合使用时,非线性误差反馈控制律的输出u0往往要减去干扰估计值z3