观测器控制仿真案例详解(s-function函数)

目录

  • 一、弹簧-质量-阻尼系统
    • 1. 系统状态空间方程
    • 2. 观测器状态空间方程
  • 二、仿真(Simulink s-function函数)
    • 1. 搭建Simulink仿真模型
    • 2. s-function函数代码
    • 3. 仿真效果

控制理论–观测器设计

一、弹簧-质量-阻尼系统

弹簧-质量-阻尼系统

  • 系统参数: m = 1 , K = 1 , B = 0.5 m = 1\,, K = 1\,, B = 0.5 m=1,K=1,B=0.5
  • 状态变量: z 1 = x (位置) ; z 2 = x ˙ (速度,不可测) z_1 = x \, \text{(位置)};\quad z_2 = \dot{x}\text{ (速度,不可测)} z1=x(位置);z2=x˙ (速度,不可测)
  • 输入: u = F (外力) u = F \quad \text{(外力)} u=F(外力)

1. 系统状态空间方程

[ z ˙ 1 z ˙ 2 ] = [ 0 1 − 1 − 0.5 ] [ z 1 z 2 ] + [ 0 1 ] u y = [ 1 0 ] [ z 1 z 2 ] = z 1 \begin{aligned} \begin{bmatrix} \dot{z}_1 \\ \dot{z}_2 \end{bmatrix} &= \begin{bmatrix} 0 & 1 \\ -1 & -0.5 \end{bmatrix} \begin{bmatrix} z_1 \\ z_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u \\ y =& \begin{bmatrix} 1 & 0 \end{bmatrix} \begin{bmatrix} z_1 \\ z_2 \end{bmatrix} = z_1 \end{aligned} [z˙1z˙2]y==[0110.5][z1z2]+[01]u[10][z1z2]=z1

2. 观测器状态空间方程

[ z ^ ˙ 1 z ^ ˙ 2 ] = [ − 2.5 1 0.25 − 0.5 ] [ z ^ 1 z ^ 2 ] + [ 0 1 ] u + [ 2.5 − 1.25 ] y \begin{aligned} \begin{bmatrix} \dot{\hat{z}}_1 \\ \dot{\hat{z}}_2 \end{bmatrix} &= \begin{bmatrix} -2.5 & 1 \\ 0.25 & -0.5 \end{bmatrix} \begin{bmatrix} \hat{z}_1 \\ \hat{z}_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u + \begin{bmatrix} 2.5 \\ -1.25 \end{bmatrix} y \end{aligned} [z^˙1z^˙2]=[2.50.2510.5][z^1z^2]+[01]u+[2.51.25]y

二、仿真(Simulink s-function函数)

1. 搭建Simulink仿真模型

在这里插入图片描述

2. s-function函数代码

  • Mode_system.m
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 2;  %
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 3;  %z1,z2,y
sizes.NumInputs      = 1;  %u
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [0;1];
function sys=mdlDerivatives(t,x,u)
M = 1;
K = 1;
B = 0.5;
uc = u(1);
z1 = x(1);
z2 = x(2);
dz1 = z2;
dz2 = (-K/M) * z1-(B/M) * z2 + (1/M)*uc;
sys = [dz1;dz2];
function sys=mdlOutputs(t,x,u)
z1 = x(1);
y = z1;
sys = [y;x]; %sys = [z1,z2,y]
  • Observer.m
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2; %z1_hat,z2_hat
sizes.NumInputs      = 2; %u和y
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [0;0];
function sys=mdlDerivatives(t,x,u)
A = [-2.5,1;0.25,-0.5];
B = [0;1];
L = [2.5;-1.25];
z_hat = x; %z_hat = [z1_hat;z2_hat]; 
u_input = u(1); %输入1
y_meas = u(2);  %输入2
dz_hat = A * z_hat + B * u_input + L * y_meas;
sys = dz_hat;
function sys=mdlOutputs(t,x,u)
sys = x; %sys = [z1_hat; z2_hat];

3. 仿真效果

在这里插入图片描述

由图可知, z 1 , z 2 z1,z2 z1,z2 分别被 z ^ 1 , z ^ 2 \hat{z}_1\, , \hat{z}_2 z^1,z^2所观测,且效果不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端面试题】后端一次性返回10w条数据,该如何渲染?

后端一次返回 10w 条数据,本身这种技术方案设计就不合理。 问题分析: JS 支持处理10w 条数据,但 DOM 一次渲染 10w 条数据,可能会卡顿,所以需想办法减少 DOM 渲染 若非要实现,则可以考虑以下两种方案 自…

【C语言】程序环境,预处理,编译,汇编,链接详细介绍,其中预处理阶段重点讲解

目录 程序环境 翻译环境 1. 翻译环境的两个过程 2. 编译过程的三个阶段 执行环境 预处理(预编译) 1. 预定义符号 2. #define 2.1 用 #define 定义标识符(符号) 2.2 用 #define 定义宏 2.3 #define 的替换规则 2.4 # 和 ## 的用法 2.5 宏和函数 2.6 #undef …

Java小白入门到实战应用教程-权限修饰符

Java小白入门到实战应用教程-权限修饰符 前言 在前面的内容中我们其实已经接触到了权限修饰符:public 在java中权限修饰符除了public外,还有private、protected、默认权限。 权限修饰符可用来修饰类、成员变量、方法(函数)。 其中修饰类只能用publi…

使用Response.Write实现在页面的生命周期中前后台的交互

最近在做一个很大的查询,花时间很多, 用户会以为死掉了,就做了一个前后交互的,用于显示执行进度,在网上找了一下,这个比较合适。 主要是简单,大道至简 改进了一下:效果如下图 代码…

【数学建模】评价类模型:优劣解距离法

【数学建模】评价类模型:优劣解距离法 目录 【数学建模】评价类模型:优劣解距离法 1:前言 2:算法 1. 将原始矩阵正向化(统一为极大型) 2. 正向矩阵标准化(消除量纲) 3. 计算得分并归一化 3:例题 4&#xff1a…

shell脚本自动化部署

1、自动化部署DNS [rootweb ~]# vim dns.sh [roottomcat ~]# yum -y install bind-utils [roottomcat ~]# echo "nameserver 192.168.8.132" > /etc/resolv.conf [roottomcat ~]# nslookup www.a.com 2、自动化部署rsync [rootweb ~]# vim rsync.sh [rootweb ~]# …

jenkins集成jmeter

jenkins 安装插件HTML Publisher startup trigger Groovy 脚本介绍 cd /app/jmeter rm -rf result.jtl jmeter.log report mkdir -p report sh /app/jmeter/apache-jmeter-5.6.3/bin/jmeter.sh -n -t test.jmx -l result.jtl -e -o ./report-n: 表示以非 GUI 模式运行 JMete…

Java每日一练_模拟面试题1(死锁)

一、死锁的条件 死锁通常发生在两个或者更多的线程相互等待对方释放资源,从而导致它们都无法继续执行。死锁的条件通常被描述为四个必要条件,也就是互斥条件、不可剥夺条件、占有并等待条件和循环等待条件。 互斥条件:资源不能被共享&#x…

unity中实现流光效果——世界空间下

Properties{_MainTex ("Texture", 2D) "white" {}_FlowColor ("Flow Color", Color) (1, 1, 1, 1) // 流光颜色_FlowFrequency ("Flow Frequency", Float) 1.0 // 流光频率_FlowSpeed ("Flow Speed", Float) 1.0 // 流光…

QListView实现自定义的控件展示(可以根据选中与否置顶展示)

文章目录 0 问题引入1、方案1:使用QListwidget自定义的widget1.1 效果1.1 思路 2、方案2:使用QListView自定义model自定义delegate2.1.浅谈2.2.实现 3、总结4、引用 0 问题引入 问题:有人问我如何实现上图的功能,当时我脑海里有了…

手把手使用 SVG + CSS 实现渐变进度环效果

效果 轨道 使用 svg 画个轨道 <svg viewBox"0 0 100 100"><circle cx"50" cy"50" r"40" fill"none" stroke-width"10" stroke"#333"></circle></svg>简单的说&#xff0c;就是…

【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(下)

【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(下) 大家好 我是寸铁&#x1f44a; 【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(下)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分&#xf…

计算机毕业设计Hadoop+Spark旅游景点可视化 旅游景点推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

### 开题报告 **论文题目&#xff1a;** 基于Spark的旅游景点可视化系统的设计与实现 **研究背景与意义&#xff1a;** 随着旅游业的快速发展&#xff0c;人们对旅游信息的获取和处理需求越来越高。传统的旅游信息系统虽然能够提供静态的数据查询和展示功能&#xff0c;但在…

C++(区别于C的)基础内容总结

参考&#xff1a; C 教程 | 菜鸟教程 (runoob.com) 简介 C 被认为是一种中级语言&#xff0c;它综合了高级语言和低级语言的特点。 C 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言&#xff0c;最初命名为带类的C&…

Java中类装载的执行过程

类装载的执行过程 类从加载到虚拟机中开始&#xff0c;直到卸载为止&#xff0c;它的整个生命周期包括了&#xff1a;加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中&#xff0c;验证、准备和解析这三个部分统称为连接&#xff08;linking&#xff09;。 1.加载 …

学习记录(9):Prompt提示词技巧

依旧照例先感谢前辈们的慷慨分享 今天学习的是这篇文章↓ 原文&#xff1a;转自公主号“博金斯的AI笔记” —《4篇Prompt论文的提示词技巧, 3 个 GPTs 实例测试》 文章目录 一、提示词框架二、逻辑链&#xff08;Chain of thought&#xff09;三、思维树&#xff08;Tree of th…

[渗透测试学习] PermX-HackTheBox

文章目录 PermX-HackTheBox信息搜集漏洞利用权限提升参考文章PermX-HackTheBox 信息搜集 nmap扫描一下端口 nmap -sC -v 10.10.11.23扫描结果如下 PORT STATE SERVICE 22/tcp open ssh | ssh-hostkey: | 256 e2:5c:5d:8c:47:3e:d8:72:f7:b4:80:03:49:86:6d:ef (ECDSA…

二维码直达App,Xinstall为你打通运营任督二脉

在移动互联网时代&#xff0c;App的推广和运营显得尤为重要。然而&#xff0c;许多企业在投入大量资源进行App推广和运营时&#xff0c;总会遇到一些棘手的问题&#xff0c;如用户转化率低、数据分析困难等。今天&#xff0c;我们要为大家揭秘一个神奇的助手——Xinstall&#…

Github2024-07-29 开源项目周报Top15

根据Github Trendings的统计,本周(2024-07-29统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目2Java项目2HTML项目2C项目2TypeScript项目2JavaScript项目2非开发语言项目1Vue项目1Go项目1Dart项目1C++项目1Rust项目1Jupyter Note…

【Linux】-----进度条小程序

目录 前言 基本知识 Ⅰ、回车和换行 Ⅱ、缓冲区 两个有意思的现象 简单定义 刷新缓冲区 简易倒计时程序 进度条代码 多文件下makefile写法 一代(无任何场景) procs1.h代码 procs1.c代码 主函数main1.c 一代运行结果&#xff1a; 二代 (搭配下载场景) procs2.c代…