【控制】滑模控制,小例子,有程序有结果图

这篇具有很好参考价值的文章主要介绍了【控制】滑模控制,小例子,有程序有结果图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录 滑模控制的一点笔记和看法
1 【控制】滑动模型控制(Sliding Mode Control)
2 【控制】滑模控制,小例子,有程序有结果图
3 【控制】滑模控制,滑模面的选择

1 问题描述

假设存在一个被控系统如下
x ˙ 1 = x 2 x ˙ 2 = x 3 x ˙ 3 = x 1 + x 2 x 3 + u (1) \begin{aligned} \dot{x}_1 &= x_2 \\ \dot{x}_2 &= x_3 \\ \dot{x}_3 &= x_1 + x_2 x_3 + u \\ \end{aligned} \tag{1} x˙1x˙2x˙3=x2=x3=x1+x2x3+u(1)

2 滑模控制器设计

接下来设计其滑模控制器

2.1 滑模面选择

设计滑模面为
s = x 3 + 2 x 2 + x 1 (2) s = x_3 + 2 x_2 + x_1 \tag{2} s=x3+2x2+x1(2)

2.2 控制器设计

对切换函数 s s s 求导有
s ˙ = x ˙ 3 + 2 x ˙ 2 + x ˙ 1 = x 1 + x 2 x 3 + u + 2 x 3 + x 2 = x 1 + x 2 + 2 x 3 + x 2 x 3 + u (3) \begin{aligned} \dot{s} &= \dot{x}_3 + 2 \dot{x}_2 + \dot{x}_1 \\ &= x_1 + x_2 x_3 + u + 2 x_3 + x_2 \\ &= x_1 + x_2 + 2 x_3 + x_2 x_3 + u \end{aligned} \tag{3} s˙=x˙3+2x˙2+x˙1=x1+x2x3+u+2x3+x2=x1+x2+2x3+x2x3+u(3)

取指数趋近律有
s ˙ = − sgn ( s ) − s (4) \dot{s} = -\text{sgn}(s) - s \tag{4} s˙=sgn(s)s(4)

可得控制器 u u u
s ˙ = − sgn ( s ) − s = x 1 + x 2 + 2 x 3 + x 2 x 3 + u u = − sgn ( s ) − s − x 1 − x 2 − 2 x 3 − x 2 x 3 (5) \begin{aligned} \dot{s} &= -\text{sgn}(s) - s = x_1 + x_2 + 2 x_3 + x_2 x_3 + u \\ u &= -\text{sgn}(s) - s - x_1 - x_2 - 2 x_3 - x_2 x_3 \end{aligned} \tag{5} s˙u=sgn(s)s=x1+x2+2x3+x2x3+u=sgn(s)sx1x22x3x2x3(5)

2.3 稳定性证明

取李雅普诺夫函数有
V = 1 2 s 2 (6) V = \frac{1}{2} s^2 \tag{6} V=21s2(6)

求导有
V ˙ = s s ˙ = s ( − sgn ( s ) − s ) = − sgn ( s ) s − s 2 = − ( ∣ s ∣ + s 2 ) ≤ 0 (7) \begin{aligned} \dot{V} &= s \dot{s} \\ &= s (-\text{sgn}(s) - s) \\ &= -\text{sgn}(s) s - s^2 \\ &= -(|s| + s^2) \le 0 \end{aligned} \tag{7} V˙=ss˙=s(sgn(s)s)=sgn(s)ss2=(s+s2)0(7)

因为李雅普诺夫函数的微分是负定的,那么系统渐进稳定,即 s s s 趋于0。又因为 s = x 3 + 2 x 2 + x 1 s = x_3 + 2 x_2 + x_1 s=x3+2x2+x1,因此 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3 都会趋于0。

3 实验验证

3.1 单纯滑模面控制

单纯使用滑模面的控制会出现抖振现象,这一点也可以从下图中看出。

【控制】滑模控制,小例子,有程序有结果图

clear
clc

x_1(:,1) = rand;
x_2(:,1) = rand;
x_3(:,1) = rand;

%%    
tBegin = 0;
tFinal = 20;
dT = 0.1;
times = (tFinal - tBegin) / dT;
t(1,1) = tBegin;

for k = 1:times
    % record time
    t(:,k+1) = t(:,k) + dT;
    
    % slide model plane
    s = x_3(:,k) + 2*x_2(:,k) + x_1(:,k);
    
    % control input
    u = -sign(s)-s-x_1(:,k)-x_2(:,k)-2*x_3(:,k)-x_2(:,k)*x_3(:,k);
    
    % update states
    dot_x_3 = x_1(:,k) + x_2(:,k) * x_3(:,k) + u;
    x_3(:,k+1) = x_3(:,k) + dT * (x_1(:,k) + x_2(:,k) * x_3(:,k) + u);
    dot_x_2 = x_3(:,k+1);
    x_2(:,k+1) = x_2(:,k) + dT * dot_x_2;
    dot_x_1 = x_2(:,k+1);
    x_1(:,k+1) = x_1(:,k) + dT * dot_x_1;
end

%%
plot(t,x_1, t,x_2, t,x_3, 'linewidth',1.5);
legend('$x_1$', '$x_2$', '$x_3$', 'interpreter','latex');
grid on;

3.2 饱和函数替换符号函数

为了防止抖振,可以采用饱和函数 sat(s) 代替控制器中的符号函数sgn(s)。
在Matlab中没有相应的函数,因此我们写了个子函数来自己构建饱和函数,这一点可以在下边的代码里看到。

【控制】滑模控制,小例子,有程序有结果图文章来源地址https://www.toymoban.com/news/detail-419475.html

clear
clc

x_1(:,1) = rand;
x_2(:,1) = rand;
x_3(:,1) = rand;

%%    
tBegin = 0;
tFinal = 20;
dT = 0.1;
times = (tFinal - tBegin) / dT;
t(1,1) = tBegin;

for k = 1:times
    % record time
    t(:,k+1) = t(:,k) + dT;
    
    % slide model plane
    s = x_3(:,k) + 2*x_2(:,k) + x_1(:,k);
    
    % control input
    u = -sat(s)-s-x_1(:,k)-x_2(:,k)-2*x_3(:,k)-x_2(:,k)*x_3(:,k);
    
    % update states
    dot_x_3 = x_1(:,k) + x_2(:,k) * x_3(:,k) + u;
    x_3(:,k+1) = x_3(:,k) + dT * (x_1(:,k) + x_2(:,k) * x_3(:,k) + u);
    dot_x_2 = x_3(:,k+1);
    x_2(:,k+1) = x_2(:,k) + dT * dot_x_2;
    dot_x_1 = x_2(:,k+1);
    x_1(:,k+1) = x_1(:,k) + dT * dot_x_1;
end

%%
plot(t,x_1, t,x_2, t,x_3, 'linewidth',1.5);
legend('$x_1$', '$x_2$', '$x_3$', 'interpreter','latex');
grid on;

%% 
function out = sat(s)
    sMax = 10;
    sMin = -10;
    out = s;
    if s > sMax
        out = sMax;
    end
    if s < sMin
        out = sMin;
    end  
end

Ref.

  1. 基于准滑动模态的滑模控制实例(采用饱和函数sat(s)代替符号函数)

到了这里,关于【控制】滑模控制,小例子,有程序有结果图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制

            在越来越多的应用场景中,无刷直流电机开始采用无位置传感器的控制方式。无刷直流电机运行于中高转速时,可以利用反电势信号估算转子位置,具体实现的方法不止一种,应用较多的是滑模观测器法。         本文整理了该方法的基本原理,介绍了在MAT

    2023年04月09日
    浏览(49)
  • 机器人动力学与控制学习笔记(十七)——基于名义模型的机器人滑模控制

            滑模运动包括趋近运动和滑模运动两个过程。系统从任意初始状态趋向切换面,直到到达切换面的运动称为趋近运动,即趋近运动为的过程。根据滑模变结构原理,滑模可达性条件仅保证由状态空间任意位置运动点在有限时间内到达切换面的要求,而对于趋近运动的

    2024年02月12日
    浏览(35)
  • (2-3-3)位置控制算法:无人机运动控制系统——基于自适应反演滑模控制器的仿真测试

    2.3.5  基于自适应反演滑模控制器的仿真测试 文件test/fault_AISMC.py实现了一个基于非线性动力学模型的无人机飞行控制仿真环境,通过使用自适应反演滑模控制器(Adaptive Inverse Sliding Mode Control,AdaptiveISMC_nonlinear)对无人机进行控制,并引入了执行器故障模型以模拟实际飞行中

    2024年04月16日
    浏览(37)
  • PMSM无感foc控制(滑模-反正切-PLL)【仿真模型搭建教程】(附模型)

    本文主要目的是教大家如何把文献中的公式转换成仿真模型。 首先介绍滑模控制的原理及如何搭建simulink模型。 1.1基于反电势估计位置原理         永磁同步电机在静止坐标系αβ下的电压方程: 扩展反电动势包含转子位置信息,并且αβ 轴下 扩展反电动势的反正切函数

    2023年04月08日
    浏览(48)
  • Unity例子——第一人称视角的角色控制器

    本文是为了前文Unity四元组的举例示范,为了让读者更好地理解。 效果是实现一个可以由鼠标进行方向操作,键盘进行移动操作的任务。 此为效果视频: 1687597097844 下面进行教学: 新建一个场景,放置一个plane作为地板,尺寸自定 创建一个新的material挂在plane上 再地板上放置

    2024年02月10日
    浏览(40)
  • 5个 Istio 访问外部服务流量控制最常用的例子,你知道几个?

    5 个 Istio 访问外部服务的流量控制常用例子,强烈建议 收藏 起来,以备不时之需。 部署 sleep 服务,作为发送请求的测试源: 在 Istio 外部,使用 Nginx 搭建 duckling 服务的v1和v2两个版本,访问时显示简单的文本: 执行如下命名访问外部服务 httpbin.org : 返回结果如下: 此时的

    2024年02月08日
    浏览(33)
  • 超详细的74HC595应用指南(以stm32控制点阵屏为例子)

    74HC595是一款常用的串行输入/并行输出(Serial-in/Parallel-out)移位寄存器芯片,在数字电子领域有着广泛的应用。它具有简单的接口和高效的扩展能力,成为了许多电子爱好者和工程师们的首选之一。本文将深入介绍74HC595芯片的功能、应用场景以及工作原理。 平时我们需要实

    2024年02月15日
    浏览(26)
  • 【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子)

    74HC595是一款常用的串行输入/并行输出(Serial-in/Parallel-out)移位寄存器芯片,在数字电子领域有着广泛的应用。它具有简单的接口和高效的扩展能力,成为了许多电子爱好者和工程师们的首选之一。本文将深入介绍74HC595芯片的功能、应用场景以及工作原理。 平时我们需要实

    2024年02月14日
    浏览(30)
  • 小程序常用实用例子

    拍照 // 选择照片     ChooseImage() {         wx.chooseImage({             count: 4, //默认9             sizeType: [\\\'original\\\', \\\'compressed\\\'], //可以指定是原图还是压缩图,默认二者都有             sourceType: [\\\'album\\\'], //从相册选择             success: (res) 

    2024年02月03日
    浏览(20)
  • 用浏览器控制台抓取shodan、搜索引擎、zone-h的结果

    大部分内容来自参考连接的内容,只是一种爬取内容的思路。 在很久以前自己会有爬取zone-h做目标测试的需求,但是总是有各种反爬限制。而且个别网址还有前端自动生成内容的功能,使用JavaScript可以很方便的让我们得到自己想要得结果做数据整理。 会用到DOM属性如下:

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包