自抗扰控制器中跟踪微分器的设计

本文深入探讨韩京清老师的《自抗扰控制技术》中介绍的跟踪微分器设计,包括传统和改进型跟踪微分器的数学原理、Simulink模型及MATLAB代码实现,通过对比分析,展示改进型跟踪微分器在消除噪声放大效应方面的优势。

韩京清老师所写的《自抗扰控制技术》中,介绍了跟踪微分器的设计过程,下面就把数学原理和代码来详细记录跟踪微分器的设计过程。
跟踪微分器的作用就是从被噪声污染的信号中合理的提取微分信号。
(1)一般的跟踪微分器
传统的微分信号是用如下的微分环节来得到的:
v˙=w(s)v=sTs+1v=1T(v−vTs+1)\dot{v}=w(s)v=\frac{s}{Ts+1}v=\frac{1}{T}(v-\frac{v}{Ts+1})v˙=w(s)v=Ts+1sv=T1(vTs+1v),其中TTT是比较小的时间常数。其等价的模型如下图所示的Simulink,其中T=0.01T=0.01T=0.01,输入信号是sin(t)sin(t)sin(t)
传统微分器
所得到的结果如下图:
在这里插入图片描述
当输入信号v(t)v(t)v(t)变化比较缓慢而时间常数TTT比较小时,就有近似关系v(t−T)≈1Ts+1v(t)v(t-T)\approx\frac{1}{Ts+1}v(t)v(tT)Ts+11v(t),从而v(t)˙≈1T(v(t)−v(t−T))\dot{v(t)}\approx\frac{1}{T}(v(t)-v(t-T))v(t)˙T1(v(t)v(tT))。证明过程有点长,有兴趣的可以去看自抗扰控制这本书的第二章。
下面是用代码来实现上面的过程,如果令v‾=vTs+1\overline{v}=\frac{v}{Ts+1}v=Ts+1v,则上面的微分环节公式就可以写成v˙=1T(v−v‾)\dot{v}=\frac{1}{T}(v-\overline{v})v˙=T1(vv),写到这里,关键就是如何求出v‾\overline{v}v。可以利用vvvv‾\overline{v}v之间的传递函数关系写出v‾˙=1T(v−v‾)\dot{\overline{v}}=\frac{1}{T}(v-\overline{v})v˙=T1(vv),就会得到下面的递推公式:

{v(k)˙=1T(v(k)−v‾(k))v‾(k+1)=v‾(k)+h1T(v(k)−v‾(k))\left\{ \begin{array}{lr} \dot{v(k)}= \frac{1}{T}(v(k)-\overline{v}(k)) & \\ \overline{v}(k+1) = \overline{v}(k)+h\frac{1}{T}(v(k)-\overline{v}(k)) \end{array} \right.{v(k)˙=T1(v(k)v(k))v(k+1)=v(k)+hT1(v(k)v(k))
其中hhh是一个小的常数。
下面是代码的实现过程,对正弦信号求微分:

clear all;
h=0.001;
T=0.001;
time = 20;
N = time/T;
n=0:N-1;
x = sin(n*T);

for k=1:1:N
    xDelay(1)=0;
    
    y(k) = (x(k)-xDelay(k))/T;
    xDelay(k+1) = xDelay(k) + h*(x(k)-xDelay(k))/T;
end
plot(n*T,x,n*T,y);

得到的结果如下:
在这里插入图片描述

(2)改进的跟踪微分器
为了消除或减弱噪声放大效应,把微分近似公式换成下面这一种。
v(t)˙≈v(t−τ1)−v(t−τ2)τ1−τ2,0&lt;τ1&lt;τ2\dot{v(t)}\approx\frac{v(t-\tau_1)-v(t-\tau_2)}{\tau_1-\tau_2}, 0&lt;\tau_1&lt;\tau_2v(t)˙τ1τ2v(tτ1)v(tτ2),0<τ1<τ2
延迟信号v(t−τ1)v(t-\tau_1)v(tτ1)可以由惯性环节1τ1s+1\frac{1}{\tau_1s+1}τ1s+11来获取,这个微分近似公式的传递函数为
v(t)˙=1τ1−τ2(1τ1s+1−1τ2s+1)v(t)=sτ1τ2s2+(τ1+τ2)s+1v(t)\dot{v(t)}=\frac{1}{\tau_1-\tau_2}(\frac{1}{\tau_1s+1}-\frac{1}{\tau_2s+1})v(t)=\frac{s}{\tau_1\tau_2s^2+(\tau_1+\tau_2)s+1}v(t)v(t)˙=τ1τ21(τ1s+11τ2s+11)v(t)=τ1τ2s2+(τ1+τ2)s+1sv(t)
其所对应的Simulink如下图所示,τ1=0.01,τ2=0.02\tau_1=0.01,\tau_2=0.02τ1=0.01,τ2=0.02
改进的跟踪微分器
其所对应的仿真图如下所示。
改进的跟踪微分器仿真图
根据上面的传递函数,可以写出它的微分形式:
{x1˙=x2x2˙=−1τ1τ2(x1−v(t))−τ1+τ2τ1τ2x2v˙=x2\left\{ \begin{array}{lr} \dot{x_1}=x_2 &amp; \\ \dot{x_2} = -\frac{1}{\tau_1\tau_2}(x_1-v(t))-\frac{\tau_1+\tau_2}{\tau_1\tau_2}x_2 &amp; \\ \dot{v}=x_2 \end{array} \right.x1˙=x2x2˙=τ1τ21(x1v(t))τ1τ2τ1+τ2x2v˙=x2
根据上面的微分方程,离散化成计算机容易处理的形式:
{x1(k+1)=x1(k)+hx2(k)x2(k+1)=x2(k)−h(1τ1τ2(x1(k)−v(k))+τ1+τ2τ1τ2x2(k))v(k)˙=x2(k)\left\{ \begin{array}{lr} x_1(k+1) = x_1(k)+hx_2(k) &amp; \\ x_2(k+1) = x_2(k)-h(\frac{1}{\tau_1\tau_2}(x_1(k)-v(k))+\frac{\tau_1+\tau_2}{\tau_1\tau_2}x_2(k)) &amp; \\ \dot{v(k)}=x_2(k) \end{array} \right.x1(k+1)=x1(k)+hx2(k)x2(k+1)=x2(k)h(τ1τ21(x1(k)v(k))+τ1τ2τ1+τ2x2(k))v(k)˙=x2(k)
下面是代码:

clear all;
h=0.001;
T=0.001;
tau1=0.01;
tau2=0.02;
time = 20;
N = time/T;
n=0:N-1;
x = sin(n*T);

for k=1:1:N
    x1(1) = 0;
    x2(1) = 0;
    x1(k+1) = x1(k)+h*x2(k);
    x2(k+1) = x2(k)-h*((x1(k)-x(k))/tau1/tau2+(tau1+tau2)*x2(k)/tau1/tau2);
    y(k) = x2(k);
end
plot(n*T,x,n*T,y);

实现的结果如下图:
在这里插入图片描述
如果对这两个微分器分别加上噪声的话,再来比较谁的微分效果更好,代码如下:

clear all;
h=0.001;
T=0.001;
tau1=0.01;
tau2=0.02;
time = 20;
N = time/T;
n=0:N-1;
x = sin(n*T);
noise=-1+2*rand(1,N);% add noise[-1,1]
x = x+0.01*noise;% gain is 0.01

for k=1:1:N
    x1(1) = 0;
    x2(1) = 0;
    x1(k+1) = x1(k)+h*x2(k);
    x2(k+1) = x2(k)-h*((x1(k)-x(k))/tau1/tau2+(tau1+tau2)*x2(k)/tau1/tau2);
    y(k) = x2(k);
end
plot(n*T,x,n*T,y);

仿真图如下:
在这里插入图片描述
而传统的微分器的效果如下:
在这里插入图片描述
两者的对比已经非常明显了。(我也不清楚怎么差别这么大,是噪声幅度太大了吗)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值