【控制】非线性系统的Terminal控制

【控制】非线性系统的Terminal控制

1.导言

在滑模面中,线性项可以改善系统光滑性和连续性;非线性项可以加快系统收敛
对于普通滑模控制,通常选取线性的滑模面,其可以保证系统收敛,但无法保证在有限时间内收敛。在线性滑模面中加入非线性项,可以使得系统能在有限时间内收敛,这就是我们常说的Terminal滑模控制。
本文将使用电机为被控对象,对其设计相应控制器,完成仿真。仿真源代码链接见文章末尾

2.被控对象

本文使用电机作为被控对象,其数学模型如下:
J θ ¨ = u + d ( t ) ∣ d ( t ) ∣ ≤ η J \ddot\theta = u + d(t) \\ |d(t)| \leq \eta Jθ¨=u+d(t)d(t)η

其中 u u u为电机输入, θ \theta θ为电机输出, d ( t ) d(t) d(t)为系统的扰动,且扰动的上限值为 η \eta η
x 1 = θ , x 2 = θ ˙ x_1 = \theta, x_2 =\dot \theta x1=θ,x2=θ˙将其转换为状态空间模型如下:
x ˙ 1 = x 2 x ˙ 2 = 1 J u + 1 J d ( t ) y = x 1 \dot x_1 = x_2 \\ \dot x_2 = \frac{1}{J}u + \frac{1}{J}d(t) \\ y = x_1 x˙1=x2x˙2=J1u+J1d(t)y=x1

3.滑模控制器

3.1滑模面设计

考虑系统状态 X = [ x 1 , x 2 ] T = [ θ , θ ˙ ] T X = [x_1, x_2]^T = [\theta, \dot \theta]^T X=[x1,x2]T=[θ,θ˙]T,系统的期望状态 X d = [ x 1 d , x 2 d ] T = [ θ d , θ ˙ d ] T X_d =[x_{1d}, x_{2d}]^T = [\theta_d, \dot \theta_d]^T Xd=[x1d,x2d]T=[θd,θ˙d]T,定义误差向量如下:
E = X − X d = [ e , e ˙ ] T E = X - X_d = [e, \dot e]^T E=XXd=[e,e˙]T
设计同时具有线性项和非线性项的滑模面如下:
S = C E − C P ( t ) S = CE - CP(t) S=CECP(t)

其中系数矩阵 C = [ c 1 , c 2 ] C = [c_1, c_2] C=[c1,c2], E E E为常规的线性项,非线性项为 P ( t ) = [ p ( t ) , p ˙ ( t ) ] T P(t) = [p(t), \dot p(t)]^T P(t)=[p(t),p˙(t)]T
为了使得系统在时间 T c T_c Tc时完全收敛, p ( t ) p(t) p(t)需要满足如下2条性质:

(1). p ( 0 ) = e ( 0 ) ,   p ˙ ( 0 ) = e ˙ ( 0 ) ,   . . . ,   p ( n ) ( 0 ) = e ( n ) ( 0 ) p(0) = e(0), \, \dot p(0) = \dot e(0), \, ... , \, p^{(n)}(0) = e^{(n)}(0) p(0)=e(0),p˙(0)=e˙(0),...,p(n)(0)=e(n)(0),其中 n n n为系统阶数。
(2). p ( t ) p(t) p(t) t = T c t = T_c t=Tc时刻满足 n n n阶可微。

按照上述要求,构造非线性项函数如下:

p ( t ) = { 1 0 ! e ( 0 ) + 1 1 ! e ˙ ( 0 ) t + 1 2 ! e ¨ ( 0 ) t 2 + A 1 t 3 + A 2 t 4 + A 3 t 5        0 ≤ t ≤ T c 0        t ≥ T c p(t) = \begin{cases} \frac{1}{0!} e(0) + \frac{1}{1!} \dot e(0) t + \frac{1}{2!} \ddot e(0) t^2 + A_1t^3 + A_2t^4 + A_3t^5 \, \, \, \, \, \, 0 \leq t \leq T_c \\ 0 \, \, \, \, \, \, t \ge T_c \end{cases} p(t)={ 0!1e(0)+1!1e˙(0)t+2!1e¨(0)t2+A1t3+A2t4+A3t50tTc0tTc
其中 T c T_c Tc为自设的收敛时间,系统输出将在 T c T_c Tc时刻完全跟踪上输入; e ( 0 ) e(0) e(0)为误差 e e e在零时刻的值, e ˙ ( 0 ) \dot e(0) e˙(0)等值依次类推; A 1 , A 2 , A 3 A_1, A_2, A_3 A1,A2,A3是与收敛时间 T c T_c Tc相关的系数。
按照性质(2)求解 A 1 , A 2 , A 3 A_1, A_2, A_3 A1,A2,A3参数:
{ p ( T c ) = 0 p ˙ ( T c ) = 0          ⟹    A 1 , A 2 , A 3 p ¨ ( T c ) = 0 \begin{cases} p(T_c) = 0 \\ \dot p(T_c) = 0 \, \, \, \, \, \, \, \, \Longrightarrow \, \, A_1, A_2, A_3 \\ \ddot p(T_c) = 0 \end{cases} p(Tc)=0p˙(Tc)=0A1,A2,A3p¨(Tc)=0

若是 n n n阶系统,则 E E E C C C等向量都扩大至 n n n维,非线性项 p ( t ) p(t) p(t)增加至 2 ( n + 1 ) 2(n+1) 2(n+1)项,并通过 n + 1 n+1 n+1个方程求解系数 A 1 , . . . , A n + 1 A_1, ..., A_{n+1} A1,...,An+1

3.2稳定性证明与控制器设计

考虑 L y a p u n o v Lyapunov Lyapunov函数 V = 1 2 S T S V = \frac{1}{2} S^T S V=21STS,其对时间的微分如下:
V ˙ = S T S ˙ = S T ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d + c 2 1 J u + c 2 1 J d ( t ) ) = S T ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) + S T c 2 1 J u + S T c 2 1 J d ( t ) ≤ S T ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) + S T c 2 1 J u + ∣ ∣ S T ∣ ∣ c 2 ( 1 J η + K ) = S T ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) + S T c 2 1 J u + ∣ ∣ S T ∣ ∣ 2 ∣ ∣ S T ∣ ∣ c 2 ( 1 J η + K ) = S T ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) + S T c 2 1 J u + S T S ∣ ∣ S T ∣ ∣ c 2 ( 1 J η + K ) = S T { ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) + c 2 1 J u + S ∣ ∣ S T ∣ ∣ c 2 ( 1 J η + K ) } \dot V = S^T \dot S = S^T (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d + c_2 \frac{1}{J} u + c_2 \frac{1}{J} d(t)) \\ =S^T (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) + S^T c_2 \frac{1}{J} u + S^T c_2 \frac{1}{J} d(t) \\ \leq S^T (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) + S^T c_2 \frac{1}{J} u + ||S^T|| c_2 ( \frac{1}{J} \eta + K) \\ = S^T (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) + S^T c_2 \frac{1}{J} u +\frac{||S^T||^2} {||S^T||} c_2 ( \frac{1}{J} \eta + K) \\ = S^T (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) + S^T c_2 \frac{1}{J} u +\frac{S^T S} {||S^T||} c_2 ( \frac{1}{J} \eta + K) \\ = S^T \{ (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) + c_2 \frac{1}{J} u +\frac{S} {||S^T||} c_2 ( \frac{1}{J} \eta + K) \} V˙=STS˙=ST(c1(e˙p˙(t))c2p¨(t)c2x¨d+c2J1u+c2J1d(t))=ST(c1(e˙p˙(t))c2p¨(t)c2x¨d)+STc2J1u+STc2J1d(t)ST(c1(e˙p˙(t))c2p¨(t)c2x¨d)+STc2J1u+STc2(J1η+K)=ST(c1(e˙p˙(t))c2p¨(t)c2x¨d)+STc2J1u+STST2c2(J1η+K)=ST(c1(e˙p˙(t))c2p¨(t)c2x¨d)+STc2J1u+STSTSc2(J1η+K)=ST{ (c1(e˙p˙(t))c2p¨(t)c2x¨d)+c2J1u+STSc2(J1η+K)}
其中 K K K为正数。为保证系统稳定性,令 V ˙ \dot V V˙的上界为0,推导出控制器的输出如下:
S T { ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) + c 2 1 J u + S ∣ ∣ S T ∣ ∣ c 2 ( 1 J η + K ) } = 0 ⇓ u = − J c 2 − 1 ( c 1 ( e ˙ − p ˙ ( t ) ) − c 2 p ¨ ( t ) − c 2 x ¨ d ) − J S ∣ ∣ S T ∣ ∣ ( 1 J η + K ) S^T \{ (c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) + c_2 \frac{1}{J} u +\frac{S} {||S^T||} c_2 ( \frac{1}{J} \eta + K) \} = 0 \\ \Downarrow \\ u = -Jc_2^{-1}(c_1 (\dot e - \dot p(t)) - c_2 \ddot p(t) - c_2 \ddot x_d ) - J \frac{S} {||S^T||} ( \frac{1}{J} \eta + K) ST{ (c1(e˙p˙(t))c2p¨(t)c2x¨d)+c2J1u+STSc2(J1η+K)}=0u=Jc21(c1(e˙p˙(t))c2p¨(t)c2x¨d)JSTS(J1η+K)
在matlab代码实现时可以使用符号函数 s g n ( S ) sgn(S) sgn(S)代替向量 S T ∣ ∣ S ∣ ∣ \frac {S^T}{||S||} SST。为了进一步地消除符号函数带来的抖动问题,利用饱和函数 t a n h ( S ) tanh(S) tanh(S)函数代替符号函数 s g n ( S ) sgn(S) sgn(S)

4.仿真与结果

Simulink仿真

Simulink仿真系统如上。其中输入为正弦波 θ d = s i n ( t ) \theta_d = sin(t) θd=sin(t);被控对象模型为 J θ ¨ = u + d ( t ) J \ddot \theta = u + d(t) Jθ¨=u+d(t),其中扰动 d ( t ) = s i n t d(t) = sint d(t)=sint
仿真结果如下。其中黄色曲线为输入,即期望的电机角度 θ d \theta_d θd,蓝色曲线为实际输出,即实际的电机角度 θ \theta θ,红色曲线为实际输出的一阶导数,即电机的角速度 θ ˙ \dot \theta θ˙。系统输出在 T c = 1 s T_c = 1s Tc=1s时跟踪上了期望输入。

在这里插入图片描述


源代码下载链接:https://github.com/Fantasty9413/SMC-for-motor/tree/master/Terminal
别忘了给博主点赞!!!

猜你喜欢

转载自blog.csdn.net/fantasty9413/article/details/109067087
今日推荐