企业门户网站云服务器配置要求,手机网站程序下载,网页界面设计软件windows版,桂林到阳朔多少公里目录 一、建立系统数学模型二、控制器设计1. 设计滑模面(切换面)2.设计控制器 u3. 稳定性证明 三、 Matlab 仿真1. s-function 模型2. 主要代码3. 仿真结果(采用符号函数sign(s))4. 仿真结果(采用饱和函数sat(s)) 一、建立系统数学模型 { x ˙ 1 x 2 x ˙ 2 x 3 x ˙ 3 x 1 … 目录 一、建立系统数学模型二、控制器设计1. 设计滑模面(切换面)2.设计控制器 u3. 稳定性证明 三、 Matlab 仿真1. s-function 模型2. 主要代码3. 仿真结果(采用符号函数sign(s))4. 仿真结果(采用饱和函数sat(s)) 一、建立系统数学模型 { x ˙ 1 x 2 x ˙ 2 x 3 x ˙ 3 x 1 x 2 x 3 u \begin{aligned} \left\{ \begin{array}{l} \dot{x}_1 x_2 \\ \dot{x}_2 x_3 \\ \dot{x}_3 x_1 x_2 x_3 u \end{array} \right. \end{aligned} ⎩ ⎨ ⎧x˙1x2x˙2x3x˙3x1x2x3u 该数学模型参考通俗理解滑模变结构控制
二、控制器设计
设计滑模控制器需要满足以下条件
稳定性条件在s0的滑模面上状态是收敛的即滑动模态存在可达性条件在切换面s0以外的运动点将于有限时间内到达切换面保证滑模运动的稳定性达到控制系统运动品质要求。
1. 设计滑模面(切换面) s x 1 2 x 2 x 3 \begin{align*} s x_1 2x_2x_3 \end{align*} sx12x2x3
2.设计控制器 u
对滑模面函数求导得 s ˙ x ˙ 1 2 x ˙ 2 x ˙ 3 \dot{s} \dot{x}_12\dot{x}_2\dot{x}_3 s˙x˙12x˙2x˙3
将数学模型中状态变量表达式代入可得 s ˙ x ˙ 1 2 x ˙ 2 x ˙ 3 x 2 2 x 3 x 1 x 2 x 3 u x 1 x 2 2 x 3 x 2 x 3 u \begin{align*} \dot{s} \dot{x}_12\dot{x}_2\dot{x}_3 \\ x_22x_3x_1x_2 x_3u \\ x_1x_22x_3x_2 x_3 u \end{align*} s˙x˙12x˙2x˙3x22x3x1x2x3ux1x22x3x2x3u
取 s ˙ \dot{s} s˙ 趋近律 采用指数趋近律 s ˙ − s g n ( s ) − s \dot{s} -sgn(s)-s s˙−sgn(s)−s s g n ( s ) sgn(s) sgn(s)为符号函数求得控制器 u u u u − s g n ( s ) − s − x 1 − x 2 − 2 x 3 − x 2 x 3 \begin{align*} u -sgn(s) - s -x_1 -x_2 -2x_3-x_2 x_3 \end{align*} u−sgn(s)−s−x1−x2−2x3−x2x3
3. 稳定性证明
设计 L y a p u n v o Lyapunvo Lyapunvo函数 V 1 2 s 2 V \frac{1}{2}s^2 V21s2 , 求得其导数 V ˙ s s ˙ − ∣ s ∣ − s 2 \dot{V} s\dot{s} -|s|-s^2 V˙ss˙−∣s∣−s2 由此可知该 L y a p u n v o Lyapunvo Lyapunvo 函数的导数负定系统渐进稳定 t → ∞ t \rightarrow \infty t→∞ 时 s → 0 s \rightarrow 0 s→0。因此 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3都趋于 0 0 0。
三、 Matlab 仿真
1. s-function 模型 2. 主要代码
仿真中为避免与模板中的 u u u 冲突将输入 u 用 control_u 替代。
pa struct(c1,1, ...c2,2);case 1,sysmdlDerivatives(t,x,u,pa);case 3,sysmdlOutputs(t,x,u,pa);sizes.NumContStates 3; %3个连续状态变量
sizes.NumDiscStates 0; %input只有输出没有输入即没有自身状态
sizes.NumOutputs 4; %输出为dx1,dx2,dx3,control_u
sizes.NumInputs 0; %输入个数为0
sizes.DirFeedthrough 0; %输入不会直接影响输出。输出是仅仅由状态变量决定的
sizes.NumSampleTimes 1; % at least one sample time is needed
%状态方程的更新通过输入u 来计算新的状态值然后输出这些状态值。
%这意味着输入u 不直接影响输出而是通过状态更新来间接影响输出。
%所以 DirFeedthrough 应该设置为 0。% 初始化状态变量
x0 [3;0;0]; function sysmdlDerivatives(t,x,u,pa)
c1 pa.c1;
c2 pa.c2;
x1 x(1);
x2 x(2);
x3 x(3);
%滑模面
s x3c2*x2c1*x1;
%控制输入
control_u -sign(s)-s-x1-x2-2*x3-x2*x3;
%系统状态方程
dx1 x2;
dx2 x3;
dx3 x1x2*x3control_u;
sys [dx1;dx2;dx3];%输出函数
function sysmdlOutputs(t,x,u,pa)
c1 pa.c1;
c2 pa.c2;
x1 x(1);
x2 x(2);
x3 x(3);
%滑模面
s x3c2*x2c1*x1;
%控制输入
control_u -sign(s)-s-x1-x2-2*x3-x2*x3; %使用符号函数sign(s)
%control_u -sat(s)-s-x1-x2-2*x3-x2*x3; %使用饱和函数消除抖振(改进)
% 输出状态变量 x1, x2, x3 以及 control_u
sys [x;control_u]; %或者sys [x(1);x(2);x(3);control_u];3. 仿真结果(采用符号函数sign(s)) 使用符号函数的控制器u会产生明显抖振为了消除抖振可以采用饱和函数来替代符号函数 即指数趋近律 s ˙ − s g n ( s ) − s \dot{s} -sgn(s)-s s˙−sgn(s)−s 换为 s ˙ − s a t ( s ) − s \dot{s} -sat(s)-s s˙−sat(s)−s 其中 s a t ( s ) { 1 s Δ k s ∣ s ∣ ≤ Δ k 1 / Δ − 1 s − Δ sat(s) \left\{ \begin{array}{ll} 1 s \Delta \\ ks |s| \leq \Delta k 1/\Delta\\ -1 s -\Delta \end{array} \right. sat(s)⎩ ⎨ ⎧1ks−1sΔ∣s∣≤Δk1/Δs−Δ
取阈值 Δ 1 \Delta 1 Δ1 改进后的控制器u为 u − s a t ( s ) − s − x 1 − x 2 − 2 x 3 − x 2 x 3 \begin{align*} u -sat(s) - s -x_1 -x_2 -2x_3 -x_2 x_3 \end{align*} u−sat(s)−s−x1−x2−2x3−x2x3
更改代码实现饱和函数控制器只需把之前函数输出部分代码中 s i g n ( s ) sign(s) sign(s)改为 s a t ( s ) sat(s) sat(s),其余不变
function sysmdlOutputs(t,x,u,pa)
c1 pa.c1;
c2 pa.c2;
x1 x(1);
x2 x(2);
x3 x(3);
%滑模面
s x3c2*x2c1*x1;
%控制输入
%control_u -sign(s)-s-x1-x2-2*x3-x2*x3; %使用符号函数sign(s)
control_u -sat(s)-s-x1-x2-2*x3-x2*x3; %使用饱和函数消除抖振% 输出状态变量 x1, x2, x3 以及 control_u
sys [x;control_u]; %或者sys [x(1);x(2);x(3);control_u];并在s-function函数最下方(即 m d l T e r m i n a t e ( t , x , u ) mdlTerminate(t,x,u) mdlTerminate(t,x,u)函数后面)添加 s a t ( s ) sat(s) sat(s)饱和函数的实现
%function sysmdlTerminate(t,x,u)
%sys [];
% end mdlTerminate% y sat(s) 将输入 s 限制在 [-1, 1] 范围内其中 k 1 / D
function y sat(s)
D 1; %设置阈值 D
k 1 / D; %设置比例常数 k
if s Dy 1;
elseif s -Dy -1;
elsey k * s;
end4. 仿真结果(采用饱和函数sat(s)) 可以看出抖振被有效消除。