当前位置: 首页 > news >正文

控制建模matlab练习05:比例积分控制-①系统建模

此练习主要是比例积分控制,包括三部分:
①系统建模;
②PI控制器;
③PI控制器的应用;
以下是,第①部分:系统建模。

一、在matlab中建立系统的数学模型

1、这个一个体重系统的数学模型,如下图;
2、同时,举例三个案例,每个案例的具体数值,如表格;

  • 传递函数:G(s)
  • 输入有三部分:D(s)、U(s)、7000x0
  • D(s)是扰动部分,对应的时间函数是下面的d(t)=-α(6.25h-5a+S);
  • U(s)是每日净热量摄入,对应的时间函数是下面的u(t)=Ei-Ea

系统模型
3、系统的输出

  • 从图看出输入为三部分的加和,且是一个线性时不变系统,所以输出=系统对这三个输入分别的响应的加和。
  • 因为d(t)和u(t)相当于两个常数,所以系统对常数的响应=系统的单位阶跃响应x这个常数倍。
  • 而7000x0是系统的初始条件,所以也就是系统的冲激响应。
clc;clear;close all;
%% 定义参数
S = 5;
x0 = [70];
h = 175;
a = 20;
Ei = [2500,2100,2500];
alpha = 1.3;
Ea = [0, 0, 500];
%% 定义G(s)
G_s = tf([1],[7000,10*alpha]);
%% 定义扰动和输入
d = -alpha*(6.25*h-5*a+S);
u1 = (Ei(1)-Ea(1));
u2 = (Ei(2)-Ea(2));
u3 = (Ei(3)-Ea(3));
%% 系统的输出
% 从图看出输入为三部分的加和,且是一个线性时不变系统,所以输出=系统对这三个输入分别的响应的加和。
% 因为d(t)和u(t)相当于两个常数,所以系统对常数的响应=系统的单位阶跃响应x这个常数倍。
% 而7000x0是系统的初始条件,所以也就是系统的冲激响应。
t = 0: 1: 3000;
x1 = (u1+d)* step(G_s,t) + 7000 * x0 * impulse(G_s,t) ;
x2 = (u2+d)* step(G_s,t) + 7000 * x0 * impulse(G_s,t) ;
x3 = (u3+d)* step(G_s,t) + 7000 * x0 * impulse(G_s,t) ;
%% 绘图
plot (x1, 'b');
hold on 
plot (x2, 'k');
hold on 
plot (x3, 'r');
grid on;
hold off; 
legend ('Case 1', 'Case 2', 'Case 3');

二、运行结果与分析

案例1:体重会上升到90多公斤,且有界;
案例2:体重会下降到60多公斤,且有界;
案例3:体重会下降到50多公斤,且有界;
(区别就在于,每天热量摄入以及热量消耗的不同)
输出

  • 可以看出,这三个案例最后都会趋向于稳定值;
  • 因为,整个系统不管输入是什么,由系统的传递函数来决定的;
  • 此时,检验系统传递函数的极点,在运行之后命令行窗口打pole(G_s);
  • 得到传递函数极点是-0.0019,是一个负值,说明是一个稳定的系统;
  • 所以,当输入U(s)和D(s)有界的时候,输出一定有界。
    极点

学习来源:《控制之美》[卷1],王天威

http://www.lryc.cn/news/609022.html

相关文章:

  • 【游戏比赛demo灵感】Scenario No.9(又名:World Agent)
  • 【Python✨】解决 Conda 安装 MoviePy 报错问题
  • 【Linux系统编程】进程信号
  • Rust 同步方式访问 REST API 的完整指南
  • python学智能算法(三十一)|SVM-Slater条件理解
  • Rust:如何开发Windows 动态链接库 DLL
  • 【AI编程工具IDE/CLI/插件专栏】-国外IDE与Cursor能力对比
  • 08.Redis 持久化
  • Pytorch实现一个简单的贝叶斯卷积神经网络模型
  • (一)全栈(react配置/https支持/useState多组件传递/表单提交/React Query/axois封装/Router)
  • CICD--自动化部署--jinkins
  • TV电视版软件集合分享
  • 动感按钮:如何打造交互感十足的点击动画效果
  • 【前端安全】聊聊 HTML 闭合优先级和浏览器解析顺序
  • 二叉树算法之【前序遍历】
  • 设计原则和设计模式
  • 图像、视频、音频多模态大模型中长上下文token压缩方法综述
  • 【Leetcode】2106. 摘水果
  • 【openlayers框架学习】九:openlayers中的交互类(select和draw)
  • 安卓调javaScript Not find method “forceLogout“ implementatidsignature or namesp
  • 【C语言符号单词搜索首位置及数量】2022-10-4
  • web前端React和Vue框架与库安全实践
  • 数组和指针的关系
  • 【LeetCode刷题指南】--二叉树的后序遍历,二叉树遍历
  • VUE父级路由没有内容的解决方案
  • Python自动化测试框架:Unittest 断言
  • 数据结构中使用到的C语言
  • elk快速部署、集成、调优
  • [硬件电路-143]:模拟电路 - 开关电源与线性稳压电源的详细比较
  • mybatis-plus从入门到入土(四):持久层接口之BaseMapper和选装件