使用滑模控制对sin(t)曲线追踪
结合:【Matlab】简单的滑模控制程序及Simulink仿真本片文章观看,此篇文章是在这篇文章的基础上进行修改的
输出u的推导过程

如果不明白控制量输出u的推到过成请看:【控制理论】滑模控制最强解析这篇文章
根据推到结果写s—function函数
控制器的s-function
function [sys,x0,str,ts] = simple_adaptive_controller(t, x, u, flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes; % 调用初始化子函数
case 1,
sys=[];
case 2,
sys=[];
case 3,
sys=mdlOutputs(t,x,u); %计算输出子函数
case 4,
sys=[]; %计算下一仿真时刻子函数
case 9,
sys=[]; %终止仿真子函数
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes %初始化子函数 sizes = simsizes; sizes.NumContStates = 0; %连续状态变量个数
sizes.NumDiscStates = 0; %离散状态变量个数
sizes.NumOutputs = 1; %输出变量个数
sizes.NumInputs = 5; %输入变量个数
sizes.DirFeedthrough = 1; %输入信号是否在输出端出现
sizes.NumSampleTimes = 0; % at least one sample time is needed sys = simsizes(sizes);
x0 = []; %初始值
str = [];
ts = []; %[0 0]用于连续系统,[-1 0]表示继承其前的采样时间设置
simStateCompliance = 'UnknownSimState'; function sys=mdlOutputs(t,x,u) %计算输出子函数 J = 2;
thd = u(1);
dthd = u(4);
ddthd = u(5);
th = u(2);
dth = u(3); e = th - thd;
de = dth;
c = 10;
s = c*e + de;
xite = 1.1; k = 0;
ut = J*-c*(dth - dthd)-J*xite*sign(s) - J*ddthd ;
sys(1) = ut;
模型状态方程的s-function函数建立
function [sys,x0,str,ts] = plant(t, x, u, flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes; % 调用初始化子函数
case 1,
sys=mdlDerivatives(t,x,u); %调用计算微分子函数
case 2,
sys=[];
case 3,
sys=mdlOutputs(t,x,u); %计算输出子函数
case 4,
sys=[]; %计算下一仿真时刻子函数
case 9,
sys=[]; %终止仿真子函数
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes %初始化子函数 sizes = simsizes; sizes.NumContStates = 2; %连续状态变量个数
sizes.NumDiscStates = 0; %离散状态变量个数
sizes.NumOutputs = 2; %输出变量个数
sizes.NumInputs = 1; %输入变量个数
sizes.DirFeedthrough = 0; %输入信号是否在输出端出现
sizes.NumSampleTimes = 1; % at least one sample time is needed sys = simsizes(sizes);
x0 = [0, 0]; %初始值
str = [];
ts = [0 0]; %[0 0]用于连续系统,[-1 0]表示继承其前的采样时间设置
simStateCompliance = 'UnknownSimState'; function sys = mdlDerivatives(t, x, u) %计算微分子函数
J = 2;
dt = sin(t);
ut = u(1);
sys(1) = x(2);
sys(2) = 1/J*(ut+dt); function sys=mdlOutputs(t,x,u) %计算输出子函数
sys(1) = x(1);
sys(2) = x(2);
simulink模型

最终图像
蓝色是追踪角度thea曲线
黄色是sin曲线
橘红色是dthea曲线

使用滑模控制对sin(t)曲线追踪的更多相关文章
- 车辆跟随滑模控制的python实现
上一篇文章一个汽车跟踪问题的滑模控制实例,已经从理论上证明了可以使用滑模变结构控制策略来解决汽车跟踪问题. 下面分别采用指数趋近律.等速趋近律.准滑模控制的方法完成车辆跟随问题的仿真 import m ...
- 【Matlab】简单的滑模控制程序及Simulink仿真
文章: [控制理论]滑模控制最强解析 滑模控制程序及Simulink仿真 这篇文章仿真和输出U的推到有些问题,博主根据此篇文章进行修改进行对sin(t)曲线的追踪(使用滑模控制) 使用滑模控制对sin ...
- 控制CUP占用率曲线
在<编程之美>上看过一道面试题就是要求:输出cup占用率的曲线图 今天看到了一篇文章就试试看看: #include <iostream> #include <cmath& ...
- 控制CPU占用率曲线
编程之美的第一个问题,我的机器是双核的,用文中的代码,得到的曲线波动比较大额,受其他进程的影响比较大.文中提到10ms接近windows的调度时间片,如果选得太小,会造成线程被频繁唤醒和挂起,造成内核 ...
- TCP/IP详细说明--滑模、拥塞窗口、慢启动、Negle算法
TCP的数据流大致能够分为两类,交互数据流与成块的数据流. 交互数据流就是发送控制命令的数据流.比方relogin,telnet.ftp命令等等.成块数据流是用来发送数据的包,网络上大部分的TCP包都 ...
- 编程之美读书笔记1.1——让CPU占用率曲线听你的指挥
http://blog.csdn.net/pipisorry/article/details/36189155 <strong><span style="font-size ...
- STM32控制永磁同步电机 | FOC电机控制算法概述
1. FOC基本概念 参考:https://www.sohu.com/a/432103720_120929980 FOC(field-oriented control)为磁场导向控制,又称为矢量控制( ...
- Android中滑屏实现----手把手教你如何实现触摸滑屏以及Scroller类详解
前言: 虽然本文标题的有点标题党的感觉,但无论如何,通过这篇文章的学习以及你自己的实践认知,写个简单的滑屏小 Demo还是just so so的. 友情提示: 在继续往下面读之前,希望您对以下知识点 ...
- Android中滑屏实现----触摸滑屏以及Scroller类详解 .
转:http://blog.csdn.net/qinjuning/article/details/7419207 知识点一: 关于scrollTo()和scrollBy()以及偏移坐标的设置/取值问 ...
随机推荐
- 《Symfony 5全面开发》教程05、http请求的query参数
首先我们删除上节课所下的断点,在Phpstorm底部我们打开debug选项卡.点击这个按钮展开所有的PHP断点,选中之后点击这个删除,然后我们关闭xdebug监听. 回到浏览器刷新页面,当我们的浏览器 ...
- VS 返回值被忽略的解决方法
•问题 用 Visual Studio 编写 C++ 代码的时候,一旦用到 scanf , freopen 等函数的时候,编译器总会不合时宜的给你提示 "返回值被忽略",那么该如何 ...
- Excel:替换表格中的0值
替换时需要勾选"单元格匹配",否则会把所有单元格中的0字符都给替换掉
- Pycharm:Python2和3及其的Anaconda的正确设置
这两天学习需要用到第三方库pyKriging,然而电脑之前下载的是Python2.7,pyKriging只支持Python3.6,尝试了很多方法也无果后,只好重新下载Python3.6,由于在网上查到 ...
- docker-docke安装和镜像仓库安装和管理
1.安装docker # yum install -y yum-utils device-mapper-persistent-data lvm2 # yum-config-manager \ --ad ...
- 02-asio学习
https://blog.csdn.net/weixin_42881084/article/details/101996032 https://blog.csdn.net/Marble_ccp/art ...
- django程序在windows服务器上发布
django程序在windows服务器上发布 参考文献:https://www.cnblogs.com/djangocn/p/10227006.html 1.安装 IIS 和 GCI 打开服务器管理器 ...
- vue--加载模块详解
1.postcss-loader.autoprefixer.css-loader .sass-loader:加载css模块及css预处理模块,添加浏览器前缀到CSS内容里 加载模块:npm insta ...
- 操作系统以及python的简介
今日笔记 操作系统 文件的概念 编程语言的发展史 编程语言的分类 python简介 python解释器的版本说明 内容详细 操作系统 操作系统(Operating System,简称OS),是管理 ...
- SpringBoot入门二:与Mybatis整合
一.编程步骤 1.引入依赖 springboot相关依赖(略).mybatis-spring-boot-starter.mysql.druid.lombook <dependency> & ...