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

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

{ v ( k ) ˙ = 1 T ( v ( k ) − v ‾ ( k ) ) v ‾ ( k + 1 ) = v ‾ ( k ) + h 1 T ( 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))
其中 h h h是一个小的常数。
下面是代码的实现过程,对正弦信号求微分:

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_2 v(t)˙τ1τ2v(tτ1)v(tτ2),0<τ1<τ2
延迟信号 v ( t − τ 1 ) v(t-\tau_1) v(tτ1)可以由惯性环节 1 τ 1 s + 1 \frac{1}{\tau_1s+1} τ1s+11来获取,这个微分近似公式的传递函数为
v ( t ) ˙ = 1 τ 1 − τ 2 ( 1 τ 1 s + 1 − 1 τ 2 s + 1 ) v ( t ) = s τ 1 τ 2 s 2 + ( τ 1 + τ 2 ) s + 1 v ( 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
改进的跟踪微分器
其所对应的仿真图如下所示。
改进的跟踪微分器仿真图
根据上面的传递函数,可以写出它的微分形式:
{ x 1 ˙ = x 2 x 2 ˙ = − 1 τ 1 τ 2 ( x 1 − v ( t ) ) − τ 1 + τ 2 τ 1 τ 2 x 2 v ˙ = x 2 \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
根据上面的微分方程,离散化成计算机容易处理的形式:
{ x 1 ( k + 1 ) = x 1 ( k ) + h x 2 ( k ) x 2 ( k + 1 ) = x 2 ( k ) − h ( 1 τ 1 τ 2 ( x 1 ( k ) − v ( k ) ) + τ 1 + τ 2 τ 1 τ 2 x 2 ( k ) ) v ( k ) ˙ = x 2 ( 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);

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

  • 18
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值