线性时变系统的PID控制-2

news2024/9/29 15:30:58

线性时变系统的PID控制-1的基础上采用S函数进行Simulink仿真。

被控对象的描述方式可变换为:

在S函数中,采用初始化、微分函数和输出函数,即mdllnitializeSizes函数、mdIDerivatives函数和mdlOutputs函数。在初始化中采用sizes结构,选择1个输出。3个输入,3个输入实现了P、I、D三项的输入。S函数嵌入在Simulink程序中。系统初始状态为: x(0)=0,t(0)=0。取kp=10,ki =2,kd=1,仿真结果如图所示。

仿真图:

S函数控制器子函数程序:chap1_5ctrl.m

function [sys,x0,str,ts]= spacemodel(t,x.u,flag)

switch flag,

case 0,

[sys,x0,str,ts]-mdlInitializeSizes;

case 1,

sys=mdlDerivatives(t,x,u);

case 3,

sys=mdlOutputs(t,x,u);

case {2,4,9}

sys=[ ];

otherwise

error(['Unhandled flag = ',num2st(flag)]);

end

function[sys,x0,str,ts]=mdlInitializeSizes

sizes = simsizes;

sizes.NumContStates=0;

sizes.NumDiscStates= 0;

sizes.NumOutputs=l;

sizes.NumInputs =3;

sizes.DirFeedthrough=l;

sizes.NumSampleTimes =1;% At least one sample time is needed

sys - simsizes(sizes);

x0=[];

str=[];

ts=[0 0];

function sys=mdlOutputs(t,x,u)

kp=10;

ki=2;

kd=1;

ut=kp*u(1)+ki*u(2)+kd*u(3);

sys(1)=ut;

S函数被控对象子程序:chap1_5plant.m

function [sys,x0,str,ts] = spacemodel(t,x,u, flag)

switch flag,

case 0,

[sys,x0,str,ts]=mdllnitializeSizes;

case 1,

sys=mdlDerivatives(t.x,u);

case 3,

sys=mdIOutputs(t,x,u);

case {2,4,9}

sys=[];

otherwise

error(['Unhandled flag =' num2str(flag));

end

function [sys,x0,str,ts]=mdllnitializeSizes

sizes= simsizes;

sizes.NumContStates= 2;

sizes.NumDiscStates=0;

sizes.NumOutputs=1;

sizes.NumInputs=1;

sizes.DirFeedthrough=0;

sizes.NumSampleTimes = l; % At least one sample time is needed

sys = simsizes(sizes);

x0=[0;0];

str=[];ts =[0 0];

function sys=mdlDerivatives(t,x,u) %Time-varying model

ut= u(1);

J=20+10*sin(6*pi*t);

K=400+300*sin(2*pi*t);sys( 1)-x(2);

sys(2)=-J*x(2)+K*ut;

function sys=mdlOutputs(t,x,u)

sys(1)=x(1);

作图程序:

close all;

plot(ty(:,1),t,ty(:,2),'k:' linewidth’,2);

xlabel('time(s));ylabel('yd,y');

legend('Ideal position signal','Position tracking');s

通过本实例的仿真可见,采用S函数,很容易地表示复杂的被控对象及控制算法,特别适合于复杂控制系统的仿真。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣sql简单篇练习(三)

力扣sql简单篇练习(三) 1 查找重复的电子邮箱 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT Email FROM Person GROUP BY Email HAVING count(id)>21.3 运行截图 2 每个产品在不同商店的价格 2.1 题目内容 2.1.1 基本题目信息 2.1.2 示…

[经典的图像warping方法] Thin Plate Spline: TPS理论和代码详解

0. 前言 2022年没有新写什么博客, 主要精力都在搞论文. 今年开始恢复! 本文的目标是详细分析一个经典的基于landmark(文章后面有时也称之为控制点control point)的图像warping(扭曲/变形)算法: Thin Plate Spine (TPS). TPS被广泛的应用于各类的任务中, 尤其是生物形态中应用…

动态内存管理(C语言)

目录 为什么要存在动态内存分配 动态内存函数的介绍 malloc函数 free函数 calloc函数 realloc函数 常见的动态内存错误 对NULL指针解引用错误 对动态开辟的空间越界访问 对非动态开辟内存使用free释放 使用free释放一块动态开辟内存的一部分 对同一块动态内存多次释放 动态开辟…

客快物流大数据项目(一百零五):启动ElasticSearch

文章目录 启动ElasticSearch 一、启动ES服务端 二、​​​​​​​启动Kibana 启动ElasticSearch

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(频率计数器)】

目录 序言 🏮放置虚拟仪器仪表🏮 🧧频率计数器🧧 🥳🥳(1)“测量”选项组:参数测量区。 🥳🥳(2)“耦合”选项组:用于选择电流耦合方…

CSDN 的故障处理流程,实例分享

CSDN 的研发团队每隔一段时间会和大家分享团队的进展,请看: 2021 年年底的汇报 2022 年上半年的汇报 2022 年下半年的汇报 从上面的报告中大家可以看到,我们在取得进展的同时, 也碰到了很多问题,也有一些困惑。 我写了…

「链表」简析

前言 前言:研究一个数据结构的时候,首先讲的是增删改查。 文章目录前言一、链表简介1. 含义2. 节点组成3. 存储方式1)数据在内存中的存储方式2)单链表在内存中的存储方式3)双链表在内存中的存储方式4)循环链…

ZYNQ IP核之MMCM/PLL

锁相环(Phase Locked Loop,PLL),一种反馈控制电路,对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。 Xilinx 7系列器件中的时钟资源包含了时钟管理单元CMT&…

SAPIEN PrimalSQL 2023.1[x64] Crack

SAPIEN PrimalSQL 2023.1 使数据库查询开发和测试变得轻而易举,无论您的数据库类型或供应商如何。 通过单个工具支持多个数据库提供程序。 Access、SQL Server、SQL Server Compact、MySQL、Oracle、ODBC、OLEDB、Sybase 等。 使用Visual Query Builder构建复杂的…

maven基础

一、Maven基础 为什么要学习Maven? Maven作为依赖管理工具,能够管理大规模的jarjarjar包,使用MavenMavenMaven后,依赖对应的JarJarJar包,能够自动下载、方便、快捷切规范。Maven作为构建管理工具,当我们使…

HTTP实用指南

HTTP实用指南 01.初始HTTP 当我们在浏览器地址栏输入一个网址或者关键字,它会给我们跳转到对应的网页,在这一过程中,内部到底是怎么运作的? 总结上述图片过程,用流程图来表示,如下: 处理输入信…

【论文翻译】Semantic Graph Convolutional Networks for 3D Human Pose Regression

【iccv论文】https://openaccess.thecvf.com/content_CVPR_2019/papers/Zhao_Semantic_Graph_Convolutional_Networks_for_3D_Human_Pose_Regression_CVPR_2019_paper.pdf 【github】https://github.com/garyzhao/SemGCN 摘要 在本文中,我们研究了用于回归的图卷积网…

ANR触发机制分析

ANR是一套监控Android应用程序响应是否及时的机制,可以把发生ANR比作是引爆炸弹,那么整个流程包含三部分组成: 埋定时炸弹:system_server进程启动倒计时,在规定时间内如果目标应用进程没有干完所有的活,则…

QEMU之一调试uboot(vexpress-a9)

u-boot版本:u-boot-2017.05开发板:vexpress-a9(没办法,目前看到的都是这个开发板,想QEMU调试tiny210,一直没看到怎么修改qemu)编译u-boot:make ARCHarm CROSS_COMPILEarm-linux-gnueabi- vexpre…

Avast 发布免费的 BianLian 勒索软件解密器

安全软件公司 Avast 发布了 BianLian 勒索软件的免费解密器,以帮助恶意软件的受害者在不向黑客支付费用的情况下恢复锁定的文件。 在 2022 年夏天 BianLian 勒索软件的活动增加后大约半年,该威胁组织入侵了多个知名组织,解密器的可用性就出现…

swagger(前言技术)

目录 一、swagger简介 1.前后端分离的特点 2.在没有swagger之前 3.swagger的作用 4.swagger的优点 二、swagger入门 1.新建springboot项目 2.集成swagger 3.开发一个controller用于测试 5.启动服务,验证集成效果 三、swagger常用注解 四、swagger使用综…

2022年PTA行业研究报告

第一章 行业概况 PTA是精对苯二甲酸(Pure Terephthalic Acid)的英文简称,在常温下是白色粉状晶体, 无毒、易燃,若与空气混合,在一定限度内遇火即燃烧。 PTA是重要的大宗有机原料之一,广泛用于化学纤维、轻…

【数据结构入门】-线性表之顺序表(1)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【数据结构】 从今天开始,就正式进入数据结构的大门了,把握机会,好好学习,加油。 本文目录…

Arduino环境下对NodeMCU ESP8266将文件直接传入flash的三种方式

flash存储简答介绍 参考:https://www.elecfans.com/consume/572040.html flash存储器又称闪存(快闪存储器),就其本质而言,flash存储器属于EEPROM(电擦除可编程只读存储器)类型。是一种长寿命的…

Java多线程案例之单例模式

目录 一、饿汉模式 二、懒汉模式 前言:单例模式是校招中最常见的设计模式之一。下面我们来谈谈其中的两个模式:懒汉,饿汉。 何为设计模式? 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多…