线性化系统与原非线性系统控制器稳态输入符号相反问题咨询
线性化系统与原非线性系统控制器稳态输入符号相反问题咨询
我现在遇到一个很奇怪的问题,想请教一下各位:
我有一个非线性系统,打算先对其线性化后设计控制器,再把这个控制器直接用到原非线性系统上验证性能。目前步骤都做完了,但发现两个系统的稳态控制输入符号完全相反:线性化系统是-88,而非线性系统是+35。
系统模型
我的非线性系统状态方程如下:
$$\dot{x_1}= x2$$
$$\dot{x_2} = -10x_1+1.8{x_1^2}-0.25x_2-30 +u$$
当输入$u=0$时,系统的平衡点是$(-2.16,0)$(稳定点)和$(7.71,0)$(鞍点),我选择在鞍点附近做线性化,得到的矩阵:
- $A= \begin{bmatrix}0&1 \ 17.75&-0.25\end{bmatrix}$
- $B= \begin{bmatrix}0 \ 1\end{bmatrix}$
- $C=[1, 0]$(输出$y=x_1$)
控制器设计(极点配置)
我用Matlab做极点配置设计控制器,代码如下:
clc clear all A=[0 1;17.75 -0.25] B=[0 1]' C=[1 0] D=zeros(1,1); sys = ss(A,B,C,D); G = tf(sys) step(G); PO=10; ts=5; zita = abs(log(PO/100))/(sqrt(pi^2 + (log(PO/100))^2)); % 根据ts和PO计算阻尼比 wn = 4/(zita*ts); alpha = -zita*wn; wd = wn*sqrt(1-zita^2); p1 = alpha + j*wd; p2 = alpha - j*wd; p3=10*real(p2) Aaug = [A zeros(2, 1); -C 0]; Baug = [B;0]; Caug = [C 0]; Daug = D; K=place(Aaug,Baug,[p1 p2 p3]); Kp=K(1,1:2); Ki=K(1,3);
设计完后搭建Simulink仿真,线性化系统的输出$y$能跟踪上期望参考输入,但稳态控制输入是-88。
非线性系统仿真结果
之后我把完全相同的控制方案用到原非线性系统上,非线性系统的状态方程实现如下:
function xdotdot= fcndot(x,xp,u) % 定义常数 ma = -10; maa= 1.8; md = -0.25; delta = -30*1; % 非线性方程 xdotdot = ma*x+maa*x*x+md*xp+delta+u
仿真时我让系统工作在鞍点附近,参考输入和线性化系统一致,输出$y$也能跟踪参考,误差、状态量的波形和线性化系统差不多,但稳态控制输入却是+35,和线性化系统的符号完全相反。
我现在很困惑:为什么其他信号都差不多,唯独控制输入的符号差异这么大?是我哪里出错了吗?这种情况有可能发生吗?
备注:内容来源于stack exchange,提问作者Marià
相关产品推荐
相关产品推荐

