自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统

自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统

一、问题描述

设控制对象的传递函数为
W p ( s ) = s + 1 s 2 + 8 s + 20 (1) W_{p}(s)=\frac{s+1}{s^{2}+8 s+20} \tag{1} Wp(s)=s2+8s+20s+1(1)
参考模型的传递函数为
W m ( s ) = 6 ( s + 5 ) s 2 + 13 s + 40 (2) W_{m}(s)=\frac{6(s+5)}{s^{2}+13 s+40} \tag{2} Wm(s)=s2+13s+406(s+5)(2)
用Narendra方案设计模型参考自适应系统,并进行数字仿真,比较输入为阶跃信号和方波信号时,系统的输出误差和可调参数的变化过程。

二、问题建模

Narendra方案设计的模型参考自适应控制系统主要针对实际控制对象中不能获得全部状态变量,无法正常通过系统状态变量构成自适应控制规律的情况。而且Narendra方案相对于其它利用控制对象输入输出构成自适应规律的方法,不需要被控对象输出和广义误差的导数,避免了自适应系统的抗干扰能力受到损失。

Narendra方案针对的单输入单输出控制对象的状态空间表达式为
x ˙ p = A p x p + b p u y p = h T x p (3) \begin{aligned} \dot{\boldsymbol{x}}_{p}&=\boldsymbol{A}_{p} \boldsymbol{x}_{p}+\boldsymbol{b}_{p} u \\ y_{p}&=\boldsymbol{h}^{T} \boldsymbol{x}_{p} \end{aligned} \tag{3} x˙pyp=Apxp+bpu=hTxp(3)
式中, x p \boldsymbol{x}_{p} xp n n n 维状态向量, A p \boldsymbol{A}_{p} Ap n × n n \times n n×n 矩阵, b p \boldsymbol{b}_{p} bp n × 1 n \times 1 n×1 矩阵, h T \boldsymbol{h}^{T} hT 1 × n 1 \times n 1×n 矩阵。则控制对象的传递函数为:
W p ( s ) = h T ( s I − A p ) − 1 b p = k p Z p ( s ) R p ( s ) (4) W_{p}(s)=\boldsymbol{h}^{T}\left(s \boldsymbol{I}-\boldsymbol{A}_{p}\right)^{-1} \boldsymbol{b}_{p}=\frac{k_{p} Z_{p}(s)}{R_{p}(s)} \tag{4} Wp(s)=hT(sIAp)1bp=Rp(s)kpZp(s)(4)
式中, Z p ( s ) Z_{p}(s) Zp(s) m m m 阶首一古尔维兹多项式, R p ( s ) R_{p}(s) Rp(s) n n n 阶首一古尔维兹多项式。

参考模型与可调系统的结构类似:
x ˙ m = A m x m + b m r y m = h T x m (5) \begin{aligned} \dot{\boldsymbol{x}}_{m}&=\boldsymbol{A}_{m} \boldsymbol{x}_{m}+\boldsymbol{b}_{m} r \\ y_{m}&=\boldsymbol{h}^{T} \boldsymbol{x}_{m} \end{aligned} \tag{5} x˙mym=Amxm+bmr=hTxm(5)

W m ( s ) = h T ( s I − A m ) − 1 b m = k m Z m ( s ) R m ( s ) (6) W_{m}(s)=\boldsymbol{h}^{T}\left(s \boldsymbol{I}-\boldsymbol{A}_{m}\right)^{-1} \boldsymbol{b}_{m}=\frac{k_{m} Z_{m}(s)}{R_{m}(s)} \tag{6} Wm(s)=hT(sIAm)1bm=Rm(s)kmZm(s)(6)

n − m = 1 n-m=1 nm=1 时,按下述方法设计Narendra自适应控制方案。

首先在控制器中引入两个辅助信号发生器 F 1 F_1 F1 F 2 F_2 F2 F 1 F_1 F1 接在控制对象的输入端, F 2 F_2 F2 接在控制对象的输出端。辅助信号发生器 F 1 F_1 F1 的输入信号为 u ( t ) u(t) u(t),输出信号为 ω 1 \omega_1 ω1。辅助信号发生器 F 2 F_2 F2 的输入信号为 y p ( t ) y_p(t) yp(t),输出信号为 ω 2 \omega_2 ω2。控制对象的综合输入信号 u ( t ) u(t) u(t) 的形式如下:
u ( t ) = k 0 r ( t ) − ω 1 − ω 2 (7) u(t)=k_{0} r(t)-\omega_{1}-\omega_{2} \tag{7} u(t)=k0r(t)ω1ω2(7)
其中, k 0 k_0 k0 是加在参考输入 r ( t ) r(t) r(t) 之后的可调增益。

下面设计辅助信号发生器 F 1 F_1 F1 F 2 F_2 F2,这两个都是 ( n − 1 ) (n-1) (n1) 阶的稳定动态系统。 F 1 F_1 F1 的状态空间表达式和传递函数分别为:
v ˙ 1 = Λ v 1 + b u ω 1 = c T v 1 (8) \begin{aligned} \dot{\boldsymbol{v}}_{1}&=\boldsymbol{\Lambda} \boldsymbol{v}_{1}+\boldsymbol{b} u \\ \omega_{1}&=\boldsymbol{c}^{T} \boldsymbol{v}_{1} \end{aligned} \tag{8} v˙1ω1=Λv1+bu=cTv1(8)

W 1 ( s ) = c T ( s I − Λ ) b = C ( s ) N ( s ) (9) W_{1}(s)=\boldsymbol{c}^{T}(s \boldsymbol{I}-\boldsymbol{\Lambda}) \boldsymbol{b}=\frac{C(s)}{N(s)} \tag{9} W1(s)=cT(sIΛ)b=N(s)C(s)(9)

式中, v 1 \boldsymbol{v}_{1} v1 ( n − 1 ) (n-1) (n1) 维列向量, Λ \boldsymbol{\Lambda} Λ ( n − 1 ) × ( n − 1 ) (n-1) \times (n-1) (n1)×(n1) 矩阵, c \boldsymbol{c} c ( n − 1 ) (n-1) (n1) 维列向量。

同理,可用下式描述辅助信号发生器 F 2 F_{2} F2
v ˙ 2 = Λ v 2 + b y p ω 2 = d T v 2 + d 0 y p (10) \begin{aligned} \dot{\boldsymbol{v}}_{2}&=\boldsymbol{\Lambda} \boldsymbol{v}_{2}+\boldsymbol{b} y_{p} \\ \omega_{2}&=\boldsymbol{d}^{T} \boldsymbol{v}_{2}+d_{0} y_{p} \end{aligned} \tag{10} v˙2ω2=Λv2+byp=dTv2+d0yp(10)

W 2 ( s ) = d 0 + d T ( s I − Λ ) b = D ( s ) N ( s ) + d 0 (11) W_{2}(s)=d_{0}+\boldsymbol{d}^{T}(s \boldsymbol{I}-\boldsymbol{\Lambda}) \boldsymbol{b}=\frac{D(s)}{N(s)}+d_{0} \tag{11} W2(s)=d0+dT(sIΛ)b=N(s)D(s)+d0(11)

式中, v 2 \boldsymbol{v}_{2} v2 ( n − 1 ) (n-1) (n1) 维列向量, d \boldsymbol{d} d ( n − 1 ) (n-1) (n1) 维列向量。 F 1 F_{1} F1 F 2 F_{2} F2 共用的状态方程中的参数矩阵 Λ \boldsymbol{\Lambda} Λ b \boldsymbol{b} b 的形式如下:
Λ = [ 0 ⋮ I n − 2 0 − l 1 ⋯ − l n − 1 ] , b = [ 0 ⋮ 0 1 ] (12) \boldsymbol{\Lambda}=\left[\begin{array}{ccc} 0 & & \\ \vdots & I_{n-2} & \\ 0 & & \\ -l_{1} & \cdots & -l_{n-1} \end{array}\right], \quad \boldsymbol{b}=\left[\begin{array}{c} 0 \\ \vdots \\ 0 \\ 1 \end{array}\right] \tag{12} Λ= 00l1In2ln1 ,b= 001 (12)
两个辅助信号发生器的输出方程中参数矩阵 c \boldsymbol{c} c d \boldsymbol{d} d 可表示为:
c T = [ c 1 c 2 ⋯ c n − 1 ] , d T = [ d 1 d 2 ⋯ d n − 1 ] (13) \boldsymbol{c}^{T}=\left[\begin{array}{llll} c_{1} & c_{2} & \cdots & c_{n-1} \end{array}\right], \quad \boldsymbol{d}^{T}=\left[\begin{array}{llll} d_{1} & d_{2} & \cdots & d_{n-1} \end{array}\right] \tag{13} cT=[c1c2cn1],dT=[d1d2dn1](13)
综上,由被控对象 W p ( s ) W_{p}(s) Wp(s)、辅助信号发生器 W 1 ( s ) W_{1}(s) W1(s) W 2 ( s ) W_{2}(s) W2(s) 和可调增益 k 0 k_{0} k0 构成的可调系统传递函数如下:
W ( s ) = y p ( s ) r ( s ) = k 0 W p ( s ) 1 + W 1 ( s ) + W 2 ( s ) W p ( s ) = k 0 k p Z p ( s ) N ( s ) [ N ( s ) + C ( s ) ] R p ( s ) + k p Z p ( s ) [ d 0 N ( s ) + D ( s ) ] (14) \begin{aligned} W(s)=\frac{y_{p}(s)}{r(s)} &=\frac{k_{0} W_{p}(s)}{1+W_{1}(s)+W_{2}(s) W_{p}(s)} \\ &=\frac{k_{0} k_{p} Z_{p}(s) N(s)}{[N(s)+C(s)] R_{p}(s)+k_{p} Z_{p}(s)\left[d_{0} N(s)+D(s)\right]} \end{aligned} \tag{14} W(s)=r(s)yp(s)=1+W1(s)+W2(s)Wp(s)k0Wp(s)=[N(s)+C(s)]Rp(s)+kpZp(s)[d0N(s)+D(s)]k0kpZp(s)N(s)(14)
为使可调系统的传递函数与参考模型的传递函数一致,即
W ( s ) = k m Z m ( s ) R m ( s ) (15) W(s)=\frac{k_{m} Z_{m}(s)}{R_{m}(s)} \tag{15} W(s)=Rm(s)kmZm(s)(15)
要求:
k 0 = k m k p (16) k_{0} = \frac{k_{m}}{k_{p}} \tag{16} k0=kpkm(16)

N ( s ) = Z m ( s ) (17) N(s) = Z_{m}(s) \tag{17} N(s)=Zm(s)(17)

[ N ( s ) + C ( s ) ] R p ( s ) + k p Z p ( s ) [ d 0 N ( s ) + D ( s ) ] = R m ( s ) Z p ( s ) (18) {[N(s)+C(s)] R_{p}(s)+k_{p} Z_{p}(s) } {\left[d_{0} N(s)+D(s)\right]=R_{m}(s) Z_{p}(s) } \tag{18} [N(s)+C(s)]Rp(s)+kpZp(s)[d0N(s)+D(s)]=Rm(s)Zp(s)(18)

下面为应用李雅普诺夫稳定性理论设计自适应规律,需将可调系统和参考模型改写成状态方程的形式。

ω \boldsymbol{\omega} ω 表示可调系统中的信号向量:
ω T = [ r − v 1 T − y p − v 2 T ] (19) \boldsymbol{\omega}^{T}=\left[\begin{array}{llll} r & -\boldsymbol{v}_{1}^{T} & -y_{p} & -\boldsymbol{v}_{2}^{T} \end{array}\right] \tag{19} ωT=[rv1Typv2T](19)
θ T \boldsymbol{\theta}^{T} θT 表示可调系统中的可调参数向量:
θ T = [ k 0 c T d 0 d T ] (20) \boldsymbol{\theta}^{T}=\left[\begin{array}{llll} k_{0} & \boldsymbol{c}^{T} & d_{0} & \boldsymbol{d}^{T} \end{array}\right] \tag{20} θT=[k0cTd0dT](20)
则(7)式中的控制信号可改写成如下形式:
u = θ T ω (21) u=\boldsymbol{\theta}^{T} \boldsymbol{\omega} \tag{21} u=θTω(21)
最终可调系统可改写成如下状态方程的形式:
[ x ˙ p v ˙ 1 v ˙ 2 ] = [ A p 0 0 0 Λ 0 b h T 0 Λ ] [ x p v 1 v 2 ] + [ b p b 0 ] θ T ω (22) \left[\begin{array}{c} \dot{\boldsymbol{x}}_{p} \\ \dot{\boldsymbol{v}}_{1} \\ \dot{\boldsymbol{v}}_{2} \end{array}\right]=\left[\begin{array}{ccc} \boldsymbol{A}_{p} & 0 & 0 \\ 0 & \boldsymbol{\Lambda} & 0 \\ \boldsymbol{b} \boldsymbol{h}^{T} & 0 & \boldsymbol{\Lambda} \end{array}\right]\left[\begin{array}{l} \boldsymbol{x}_{p} \\ \boldsymbol{v}_{1} \\ \boldsymbol{v}_{2} \end{array}\right]+\left[\begin{array}{c} \boldsymbol{b}_{p} \\ \boldsymbol{b} \\ 0 \end{array}\right] \boldsymbol{\theta}^{T} \boldsymbol{\omega} \tag{22} x˙pv˙1v˙2 = Ap0bhT0Λ000Λ xpv1v2 + bpb0 θTω(22)
θ = θ ‾ + Ψ \boldsymbol{\theta}=\overline{\boldsymbol{\theta}}+\boldsymbol{\Psi} θ=θ+Ψ,若参考模型与可调系统完全匹配,则 Ψ = 0 \boldsymbol{\Psi}=0 Ψ=0

设控制对象输出与参考模型输出间的误差为 e 1 e_{1} e1,则有
e 1 = y p − y m = h c T ( x − x m c ) = h c T e (23) e_{1}=y_{p}-y_{m}=\boldsymbol{h}_{c}^{T}\left(\boldsymbol{x}-\boldsymbol{x}_{m c}\right)=\boldsymbol{h}_{c}^{T} \boldsymbol{e} \tag{23} e1=ypym=hcT(xxmc)=hcTe(23)
选取李雅普诺夫函数为
V = 1 2 ( e T P e + Ψ T Γ − 1 Ψ ) (24) V=\frac{1}{2}\left(\boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{e}+\boldsymbol{\Psi}^{T} \boldsymbol{\Gamma}^{-1} \boldsymbol{\Psi}\right) \tag{24} V=21(eTPe+ΨTΓ1Ψ)(24)
式中, P \boldsymbol{P} P Γ \boldsymbol{\Gamma} Γ 都是正定对称矩阵,求 V V V 对时间的导数:
V ˙ = 1 2 e T ( P A c + A c T P ) e + Ψ T ( ω b c T P e + Γ − 1 Ψ ˙ ) (25) \dot{V}=\frac{1}{2} \boldsymbol{e}^{T}\left(\boldsymbol{P} \boldsymbol{A}_{c}+\boldsymbol{A}_{c}^{T} \boldsymbol{P}\right) \boldsymbol{e}+\boldsymbol{\Psi}^{T}\left(\boldsymbol{\omega} \boldsymbol{b}_{c}^{T} \boldsymbol{P} \boldsymbol{e}+\boldsymbol{\Gamma}^{-1} \dot{\boldsymbol{\Psi}}\right) \tag{25} V˙=21eT(PAc+AcTP)e+ΨT(ωbcTPe+Γ1Ψ˙)(25)
最终选取的自适应规律
Ψ ˙ = − Γ ω b c T P e (26) \dot{\boldsymbol{\Psi}}=-\boldsymbol{\Gamma} \boldsymbol{\omega} \boldsymbol{b}_{c}^{T} \boldsymbol{P} \boldsymbol{e} \tag{26} Ψ˙=ΓωbcTPe(26)
b c T P = h c T \boldsymbol{b}_{c}^{T} \boldsymbol{P}=\boldsymbol{h}_{c}^{T} bcTP=hcT,则
θ ˙ = Ψ ˙ = − Γ ω h c T e = − Γ ω e 1 (27) \dot{\boldsymbol{\theta}}=\dot{\boldsymbol{\Psi}}=-\boldsymbol{\Gamma} \boldsymbol{\omega} \boldsymbol{h}_{c}^{T} \boldsymbol{e}=-\boldsymbol{\Gamma} \boldsymbol{\omega} e_{1} \tag{27} θ˙=Ψ˙=ΓωhcTe=Γωe1(27)

三、问题求解

由上述推导可知,为用Narendra方案设计该MRACS,需引入辅助信号发生器 F 1 F_{1} F1 F 2 F_{2} F2。整个参数整定及设计自适应规律即为确定参数向量 θ T = [ k 0 c T d 0 d T ] \boldsymbol{\theta}^{T}=\left[\begin{array}{llll} k_{0} & \boldsymbol{c}^{T} & d_{0} & \boldsymbol{d}^{T} \end{array}\right] θT=[k0cTd0dT]

根据推导过程中的(4)式和(6)式,设:
y p = W p ( s ) u = k p Z p ( s ) R p ( s ) u , y m = W m ( s ) r = k m Z m ( s ) R m ( s ) r (28) y_{p}=W_{p}(s) u=\frac{k_{p} Z_{p}(s)}{R_{p}(s)} u, \quad y_{m}=W_{m}(s) r=\frac{k_{m} Z_{m}(s)}{R_{m}(s)} r \tag{28} yp=Wp(s)u=Rp(s)kpZp(s)u,ym=Wm(s)r=Rm(s)kmZm(s)r(28)
结合问题中给出的具体模型,可得:
R p ( s ) = s 2 + 8 s + 20 , Z p ( s ) = s + 1 , k p = 1 R m ( s ) = s 2 + 13 s + 40 , Z m ( s ) = s + 5 , k m = 6 (29) \begin{array}{crr} R_{p}(s)=s^{2}+8 s+20, & Z_{p}(s)=s+1, & k_{p}=1 \\ R_{m}(s)=s^{2}+13 s+40, & Z_{m}(s)=s+5, & k_{m}=6 \end{array} \tag{29} Rp(s)=s2+8s+20,Rm(s)=s2+13s+40,Zp(s)=s+1,Zm(s)=s+5,kp=1km=6(29)
辅助信号发生器 F 1 F_{1} F1 F 2 F_{2} F2 分别为:
v ˙ 1 = − l v 1 + u , ω 1 = c v 1 , W 1 ( s ) = C ( s ) N ( s ) = c s + l (30) \dot{v}_{1}=-l v_{1}+u, \quad \omega_{1}=c v_{1}, \quad W_{1}(s)=\frac{C(s)}{N(s)}=\frac{c}{s+l} \tag{30} v˙1=lv1+u,ω1=cv1,W1(s)=N(s)C(s)=s+lc(30)

v ˙ 2 = − l v 2 + y p , ω 2 = d v 2 + d 0 y p , W 2 ( s ) = d 0 + D ( s ) N ( s ) = d 0 + d s + l (31) \dot{v}_{2}=-l v_{2}+y_{p}, \quad \omega_{2}=d v_{2}+d_{0} y_{p}, \quad W_{2}(s)=d_{0}+\frac{D(s)}{N(s)}=d_{0}+\frac{d}{s+l} \tag{31} v˙2=lv2+yp,ω2=dv2+d0yp,W2(s)=d0+N(s)D(s)=d0+s+ld(31)

设输出误差 e 1 e_{1} e1 和可调参数向量 θ \boldsymbol{\theta} θ 分别为:
e 1 = y p − y m (32) e_{1}=y_{p}-y_{m} \tag{32} e1=ypym(32)

θ T = [ k 0 c d 0 d ] (33) \boldsymbol{\theta}^{T}=\left[\begin{array}{llll} k_{0} & c & d_{0} & d \end{array}\right] \tag{33} θT=[k0cd0d](33)

则按照(14)式可得可调系统的传递函数 W ( s ) W(s) W(s) 为:
W ( s ) = k 0 ( s + 1 ) ( s + l ) ( s + l + c ) ( s 2 + 8 s + 20 ) + ( s + 1 ) [ d 0 ( s + l ) + d ] = k m Z m ( s ) R m ( s ) = 6 ( s + 5 ) s 2 + 13 s + 40 (34) \begin{aligned} W(s) &=\frac{k_{0}(s+1)(s+l)}{(s+l+c)\left(s^{2}+8 s+20\right)+(s+1)\left[d_{0}(s+l)+d\right]} \\ &=\frac{k_{m} Z_{m}(s)}{R_{m}(s)}=\frac{6(s+5)}{s^{2}+13 s+40} \end{aligned} \tag{34} W(s)=(s+l+c)(s2+8s+20)+(s+1)[d0(s+l)+d]k0(s+1)(s+l)=Rm(s)kmZm(s)=s2+13s+406(s+5)(34)
由(16)式可知 k ˉ 0 = k m / k p = 6 \bar{k}_{0}=k_{m} / k_{p}=6 kˉ0=km/kp=6

由(17)式知 N ( s ) = s + l = Z m ( s ) = s + 5 N(s)=s+l=Z_{m}(s)=s+5 N(s)=s+l=Zm(s)=s+5,则 l = 5 l=5 l=5

W ( s ) W(s) W(s) 中要求分子、分母有公因式 ( s + 1 ) (s+1) (s+1),因而有 s + l + c ˉ = s + 1 s+l+\bar{c}=s+1 s+l+cˉ=s+1,则 c ˉ = − 4 \bar{c}=-4 cˉ=4

W ( s ) W(s) W(s) 的分子、分母中消去公因式 ( s + 1 ) (s+1) (s+1),可得 d 0 ˉ = 5 \bar{d_{0}}=5 d0ˉ=5 d ˉ = − 5 \bar{d}=-5 dˉ=5

在(27)式中令 Γ \boldsymbol{\Gamma} Γ 为单位矩阵,则自适应规律如下:
k ˙ 0 = − r e 1 , c ˙ = v 1 e 1 , d ˙ 0 = y p e 1 , d ˙ = v 2 e 1 (35) \dot{k}_{0}=-r e_{1}, \quad \dot{c}=v_{1} e_{1}, \quad \dot{d}_{0}=y_{p} e_{1}, \quad \dot{d}=v_{2} e_{1} \tag{35} k˙0=re1,c˙=v1e1,d˙0=ype1,d˙=v2e1(35)
下将上述连续自适应规律进行离散化,用于实际的数值仿真实验。设数值积分步长为 h h h,则各时刻的参考模型状态向量及控制对象状态向量如下:
x m ( k + 1 ) = x m ( k ) + h [ A m ( k ) x m ( k ) + B m ( k ) r ( k ) ] x p ( k + 1 ) = x p ( k ) + h [ A p ( k ) x p ( k ) + B p ( k ) u ( k ) ] (36) \begin{aligned} \boldsymbol{x}_{m}(k+1)&=\boldsymbol{x}_{m}(k)+h\left[\boldsymbol{A}_{m}(k) \boldsymbol{x}_{m}(k)+\boldsymbol{B}_{m}(k) r(k)\right] \\ \boldsymbol{x}_{p}(k+1)&=\boldsymbol{x}_{p}(k)+h\left[\boldsymbol{A}_{p}(k) \boldsymbol{x}_{p}(k)+\boldsymbol{B}_{p}(k) u(k)\right] \end{aligned} \tag{36} xm(k+1)xp(k+1)=xm(k)+h[Am(k)xm(k)+Bm(k)r(k)]=xp(k)+h[Ap(k)xp(k)+Bp(k)u(k)](36)
各时刻的参考模型输出及控制对象输出如下:
y m ( k ) = h T x m ( k ) , y p ( k ) = h T x p ( k ) (37) y_{m}(k)=\boldsymbol{h}^{T} \boldsymbol{x}_{m}(k), \quad y_{p}(k)=\boldsymbol{h}^{T} \boldsymbol{x}_{p}(k) \tag{37} ym(k)=hTxm(k),yp(k)=hTxp(k)(37)
引入的两个辅助信号发生器 F 1 F_{1} F1 F 2 F_{2} F2 的状态向量如下:
v 1 ( k + 1 ) = v 1 ( k ) + h [ Λ v 1 ( k ) + b u ( k ) ] v 2 ( k + 1 ) = v 2 ( k ) + h [ Λ v 2 ( k ) + b y p ( k ) ] (38) \begin{aligned} v_{1}(k+1)&=v_{1}(k)+h\left[\boldsymbol{\Lambda} v_{1}(k)+\boldsymbol{b} u(k)\right] \\ v_{2}(k+1)&=v_{2}(k)+h\left[\boldsymbol{\Lambda} v_{2}(k)+\boldsymbol{b} y_{p}(k)\right] \end{aligned} \tag{38} v1(k+1)v2(k+1)=v1(k)+h[Λv1(k)+bu(k)]=v2(k)+h[Λv2(k)+byp(k)](38)
最终的自适应规律离散化后,可写为
θ ( k + 1 ) = θ ( k ) − h ω ( k ) e 1 ( k ) (39) \boldsymbol{\theta}(k+1)=\boldsymbol{\theta}(k)-h \boldsymbol{\omega}(k) e_{1}(k) \tag{39} θ(k+1)=θ(k)hω(k)e1(k)(39)
在阶跃信号输入下,参考模型和可调系统的输出 y m ( t ) y_m(t) ym(t) y p ( t ) y_p(t) yp(t) 及其误差 e e e,以及综合控制信号 u ( t ) u(t) u(t) 的变化曲线如 图1 所示。

在这里插入图片描述

图1. 阶跃信号输入下,参考模型和可调系统的输出及其误差,以及综合控制信号的变化曲线

在阶跃信号输入下,四种可调参数的变化曲线如 图2 所示。

在这里插入图片描述

图2. 阶跃信号输入下,四种可调参数的变化曲线

在方波信号输入下,参考模型和可调系统的输出 y m ( t ) y_{m}(t) ym(t) y p ( t ) y_p(t) yp(t) 及其误差 e e e,以及综合控制信号 u ( t ) u(t) u(t) 的变化曲线如 图3 所示。
在这里插入图片描述

图3. 方波信号输入下,参考模型和可调系统的输出及其误差,以及综合控制信号的变化曲线

在方波信号输入下,四种可调参数的变化曲线如 图4 所示。

在这里插入图片描述

图4. 方波信号输入下,四种可调参数的变化曲线

附录:实现MATLAB代码

% 课本习题3.5-用Narendra方案设计MRACS,并比较输入为阶跃信号和方波信号时
% 系统的输出误差和可调参数的变化过程。
clear, clc;
close all;

% 数值积分步长和仿真步数
h = 0.01; L = 40/h;

% 可调系统参数
nump = [1, 1];          % 可调系统分子多项式系数
denp = [1, 8, 20];      % 可调系统分母多项式系数
[Ap, Bp, Cp, Dp] = tf2ss(nump, denp);   % tf2ss()函数从系统的传递函数建立系统的状态空间模型
n = size(Ap, 1);        % 状态向量的维数
% 参考模型参数
numm = 6*[1, 5];        % 参考模型分子多项式系数
denm = [1, 13, 40];     % 参考模型分母多项式系数
[Am, Bm, Cm, Dm] = tf2ss(numm, denm);
% 辅助信号发生器参数
Af = -5;                    % 通过推导得出的最佳辅助信号发生器的A矩阵参数
Bf = [zeros(n-2, 1); 1];

% 设定所有参数初始值
yr0=0;yp0=0;u0=0;e0=0;
v10=zeros(n-1,1);v20=zeros(n-1,1);
xp0=zeros(n,1);xm0=zeros(n,1);
theta0=zeros(2*n,1);
% r=2;yr=r*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)];
yr=[zeros(1,L/4) ones(1,L/4) ones(1,L/4) ones(1,L/4)];

% 初始分配参数空间
time = zeros(1, L);         % 用于记录仿真的时刻,对应绘图的横轴
u = zeros(1, L);            % 控制对象的综合输入信号(L个值)
xp = zeros(n, L);           % 可调系统的状态向量(L个n维向量)
yp = zeros(1, L);           % 可调系统的输出(L个值)
xm = zeros(n, L);           % 参考模型的状态向量(L个n维向量)
ym = zeros(1, L);           % 参考模型的输出(L个值)
e = zeros(1, L);            % 输出误差(L个值)
theta = zeros(4, L);        % 可调系统中的可调参数向量(L个4维向量)

for k = 1:L
    time(k) = k*h;
    % 被控对象
    xp(:,k) = xp0+h*(Ap*xp0+Bp*u0);
    yp(k) = Cp*xp(:,k);
    % 参考模型
    xm(:,k) = xm0+h*(Am*xm0+Bm*yr0);
    ym(k) = Cm*xm(:,k);
    % 输出误差
    e(k) = yp(k)-ym(k);
    
    v1 = v10+h*(Af*v10+Bf*u0);      % 辅助信号发生器F1的状态向量
    v2 = v20+h*(Af*v20+Bf*yp0);     % 辅助信号发生器F2的状态向量
    
    omega0 = [yr0; -v10; -yp0; -v20];
    theta(:,k) = theta0-h*omega0*e0;
    omega = [yr(k); -v1; -yp(k); -v2];  % 可调系统中的信号向量
    u(k) = theta(:,k)' * omega;
    
    % 将本轮求解得到的参数赋值给参数初始值,方便下一轮迭代使用
    u0 = u(k);
    xp0 = xp(:,k);
    yp0 = yp(k);
    xm0 = xm(:,k);
    yr0 = yr(k);
    e0 = e(k);
    v10 = v1;
    v20 = v2;
    omega0 = omega;
    theta0 = theta(:,k);
end

figure(1)
subplot(2,1,1);
plot(time, ym, 'Color', 'b', 'LineWidth', 1.2)
hold on
plot(time, yp, 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.1);
plot(time, e, 'Color', 'k', 'LineStyle', ':', 'LineWidth', 1.8);
hold off
xlabel('t');
ylabel('y_m(t)、y_p(t)');
legend('y_m(t)','y_p(t)','e');
subplot(2,1,2);
plot(time, u, 'LineWidth', 1.4);
xlabel('t');
ylabel('u(t)');

figure(2)
plot(time, theta(1,:), 'Color', 'r', 'LineWidth', 1.2)
hold on
plot(time, theta(2,:), 'Color', 'black', 'LineWidth', 1.1)
plot(time, theta(3,:), 'Color', 'g', 'LineWidth', 1.3)
plot(time, theta(4,:), 'Color', 'b', 'LineWidth', 1.5)
hold off
xlabel('t');ylabel('可调参数');
legend('k_0','c','d_0','d');

参考书目

李言俊, 张科. 自适应控制理论及应用[M]. 西北工业大学出版社, 2005.

猜你喜欢

转载自blog.csdn.net/alan1ly/article/details/126056696