simulink学习笔记:基于模型的控制和pid整定

这篇具有很好参考价值的文章主要介绍了simulink学习笔记:基于模型的控制和pid整定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在学习的时候发现了一个很好的学习simulink的网站,打算来练练手:Introduction: Simulink Control,过程中会涉及到搭建动力学模型和设计pid控制器(整定pid参数)。该模型描述的是火车的两节车厢,对前一节车厢施力,控制其速度按照跟随指定的方波。我在我的资源里也把我建好的所有模型放上去,大家可以直接下载。链接是

simulink基于模型的控制和pid整定配套模型文件

1. 搭建动力学模型

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

根据牛顿第二定律,我们画出受力图:

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
列出动力学方程:
Σ F 1 = F − k ( x 1 − x 2 ) − μ M 1 g x ˙ 1 = M 1 x ¨ 1 Σ F 2 = k ( x 1 − x 2 ) − μ M 2 g x ˙ 2 = M 2 x ¨ 2 \begin{aligned} \Sigma F_{1}&=F-k\left(x_{1}-x_{2}\right)-\mu M_{1} g \dot{x}_{1}=M_{1} \ddot{x}_{1} \\ \Sigma F_{2}&=k\left(x_{1}-x_{2}\right)-\mu M_{2} g \dot{x}_{2}=M_{2} \ddot{x}_{2} \end{aligned} ΣF1ΣF2=Fk(x1x2)μM1gx˙1=M1x¨1=k(x1x2)μM2gx˙2=M2x¨2

于是我们可以搭建如下图所示的模型,简单说一下搭建的思路,从动力学入手我们可以从加速度入手,将加速度单独拿到一边,另一边是合力除上质量,通过积分器可以把加速度依次变成速度和位移,而合力又昆虫用上位移和速度,这样就写成了一个闭环(使用积分器比微分器好,微分器容易出现不连续)。使用到的模块:Sum、Add、Gain、Integrator、Scope、Signal Gernerator

链接给出了具体的搭建步骤,如果感兴趣可以去看一下:Introduction: Simulink Modeling。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
关于参数的设置要先在工作区设置好。新建一个parameter.m文件和simulink文件在一起,写入参数:

parameter.m

clc
clear
M1 = 1;
M2 = 0.5;
k  = 1;
F  = 1;
mu = 0.02;
g  = 9.8;

运行后加载后工作区,上面的模型才能运行!因为在诸如Gain的模块里写的是1/M1,M1是个变量,从工作区里得到。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

设置仿真的时间为1000,运行我们看到速度的幅度现在基本是±3.5,类似一个方波。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
但是我们现在不能让其是我们想要的速度,于是我们接下来就就加入pid控制实现按我们规定的速度运行。

2. PID控制器的实现

2.1 开环效果

这一部分可以接上一步的train_model.slx操作,我写好的模型在train_model_pid1.slx中。

我们然后使用Out1和一个In1模块替换所有的Scope,如下图所示。我们还要给三个Out1分别命名为x1_dot、x1和x2,以及In1命名为F。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

然后我们右键生成子系统

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
如图我们添加pid控制器,并且加入波形发生器signal builder。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

对于pid我们的初始的设置为:kp=1,ki=0,kd=0。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定我们设置波形为如图所示,时间长度为300s,在10秒从0阶跃到1,在150秒从1阶跃回0.simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

这里我们设置的仿真时间和信号发生器的时间是一样的,也是300s(后面的闭环效果也是一样的)。我们可以运行一下上面的模型看一下效果,和前面的动力学模型的效果是一样的。因为现在还没有加反馈。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

2.1.1 提取开环模型

要注意的是,上面我们的模型框图并没有添加闭环的反馈。我们在PID控制器后面的信号线右键选择Linear Analysis Points,接着选择Open loop Input,然后会显示一个向下的箭头,

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

同样的我们可以在子模块的x1_dot输出信号线右键选择Linear Analysis Points,接着选择Open loop Output,然后会显示一个向上的箭头。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们用模型线性化器提取模型。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
点击Step我们可以看到输入阶跃信号的输出。这个输出和我们在simulink的输出是一样的。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们可以调整一下图的坐标(后面的图都可以同样的操作),右键选择Properties
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
改这两个参数我们可以看到

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们可以看到生成了线性化的模型linsys1,在Linear Analysis Workspace里面,
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
根据生成的模型我们可以计算反馈系统下的零极点。在命令行窗口输入:

sys_cl = feedback(linsys1,1);
p = pole(sys_cl)
z = zero(sys_cl)

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
这等价于下面的模型框图:

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

对上述情况的检查表明,原点存在零极点取消。此外,其余极点具有负数 实部和两个“最慢”的极点很复杂。这表明当前形式的闭环系统是稳定的 并且占主导地位的极点阻尼不足。我们接下来根据上面的分析运行看一下闭环的情况。

2.2 闭环效果

我们运行上面的模型,现在我们取消之前添加的Open loop InputOpen loop Output,还是右键再点一下Linear Analysis Points中的Open loop InputOpen loop Output就可以取消了。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

我们还是运行一下闭环添加了反馈的效果。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

2.2.1 闭环pid参数整定

选择控制系统设计器

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

点击Add Blocks。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

然后不要直接在Edit Architecture界面按OK,要回到模型,我们设置一下输入和输出(我的理解是一个参考输入和一个实际输出),我们在信号发生器后面的信号线右键选择Linear Analysis Points,接着选择Input Perturbation,然后会显示一个向下的加号箭头。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

同样的我们可以在子模块的x1_dot输出信号线右键选择Linear Analysis Points,接着选择Output Measurement,然后会显示一个向上的箭头。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
然后返回前面的Edit Architecture界面按OK,这步和前面的顺序不能反了,否则不能出现下面的Controllers And Fixed Blocks以及Responses。(可能只出现一个,我之前就是搞错了顺序只出现了Controllers And Fixed Blocks)

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

好了我们现在可以看一下根轨迹。如图选择Turning Method,选择Root Locus Editor
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
点击plot
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们就出现了根轨迹。我们可以用鼠标“拖拽”标记闭环极点的粉红色框以图形方式完成 位置并将它们拖向开环极位置(用 x 标记)【这个就很神奇,动态调节】,可以自己尝试一下哈。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

然后我们根据现在的这个系统绘制一下输出的响应,点击New Plot,然后点击New Step

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
选择New input-output transfer response

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们定义输入信号,在Specify input signal下点击Add signal to list
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

然后选择Select signal from model

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
点击回到模型点击信号发生器后面的那根信号线。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
信号就出现了Select signals对话框里,再点击Add signal
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

我们定义输出信号

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
然后选择Select signal from model
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
点击回到模型点击子系统后面的那根x1_dot的信号线。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

信号就出现了Select signals对话框里,再点击Add signal
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
点击Plot,我们绘制响应曲线。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

结果如图所示:
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们还是改变一下图的Properties,在图像上右键选Properties,改一下图的坐标轴的范围。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
这和我们在simulink里仿真的模型的结果是一样的,我们看到存在稳态误差,积分器可以很好地减少稳态误差。

我们首先打开看一下我们的pid的传递函数,在Controllers And Fixed Blocks选择Open Selection

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们看到pid的传递函数是1,和我们的初始的设置是一样的。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

我们回到根轨迹图右键选中Add Porle or Zero,然后我们选中Integratorsimulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

现在只有一个积分器,肯定是不稳定的,我们还要有个零点来组成PI控制器。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

我们回到根轨迹图右键选中Add Porle or Zero,然后我们选中Real Zero。现在就是PI控制器了

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们可以很方便地看PID三个参数的变化怎么影响输入输出曲线的(不同于直接的在PID控制器整定),我们选中Parameter,在下面有滑动条我们可以很方便地拖动调整最后的输出。在拖动的过程中输出曲线也会相应变化!

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
看看下面的gif。还是很方便的。
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
最后我们设置零点的位置是-0.15,如图所示最终的pid效果,传递函数为 0.5 × 1 + 6.7 s s 0.5\times \frac{1+6.7s}{s} 0.5×s1+6.7s

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们将调整好的pid参数更新到simulink模型里,点击菜单栏的Update Blocks

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

重新点击我们模型框图里的pid控制器,我们看到pid的参数确实改了。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

我们看到最终的效果就好很多了。速度很平稳地到了1,也没有发生超调。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定

这里在上面网站的基础上拓展一点:在pid控制器模块里也有整定参数的按钮:调节
simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
滑动上面的滚动条也可以查看曲线,但是这就是pid控制器了,kd也会被考虑进来。

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
我们整定好也可以点击如图的Update Blocks

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
于是我们的pid参数又变了

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定
运行一下再看下效果,响应速度变快了,但是就有一些跳变了,但是依旧没有超调:

simulink学习笔记:基于模型的控制和pid整定,# MATLAB Simulink,simulink,模型,控制,pid,参数整定文章来源地址https://www.toymoban.com/news/detail-647419.html

到了这里,关于simulink学习笔记:基于模型的控制和pid整定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Simulink建模:PID控制模型

    本文研究PID控制的Simulink模型实现及其代码生成。 PID控制是一个非常经典的控制方法,离散化的位置式PID控制的公式如下: x ( t ) = K p ⋅ e ( t ) + K i ⋅ ∫ 0 t e ( t ) d t + K d ⋅ d e ( t ) d t x(t) = K_{p}cdot e(t) + K_{i}cdot int_{0}^{t} e(t)dt + K_{d}cdot frac{de(t)}{dt} x ( t ) = K p ​ ⋅ e ( t ) +

    2024年02月03日
    浏览(33)
  • 【MATLAB数据处理实用案例详解(22)】——基于BP神经网络的PID参数整定

    基于BP神经网络的PID控制的系统结构如下图所示: 考虑仿真对象,输入为r(k)=1.0,输入层为4,隐藏层为5,输出层为3,仿真输出满足 a ( k ) = 1.2 ( 1 − 0.8 e x p ( − 0.1 k ) ) , y ( k ) = a ( k ) y − 1 1 + ( y − 1 ) 2 + u − 1 a(k)=1.2(1-0.8exp(-0.1k)),y(k)=a(k) frac{y-1}{1+(y-1)^2}+u-1 a ( k ) = 1.2 ( 1 −

    2024年02月07日
    浏览(59)
  • 双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)

    前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:双容模糊 获取完整无水印报告+仿真源文件+相关文献 双容水箱液位控制系统的设计与仿真 1、基于

    2024年02月07日
    浏览(49)
  • 基于simulink的PID控制器设计

    目录 1、PID算法的基本理论 1.1 PID 控制的基本概念 1.2 基本公式 1.3 PID控制系统原理图 2、在simulink中搭建PID控制器模型及调参  3、调参 PID 控制器是一种比例、积分、微分并联控制器。它是最广泛应用的一种控制器。在 PID 控制器中,它的数学模型由比例、积分、微分三部分

    2024年02月03日
    浏览(54)
  • m基于PID控制算法的四旋翼无人机飞行控制simulink仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB   无人机采用常见的四旋翼无人飞行器,如图1所示。       PID 控制器,即控制器的控制方式为 P 比例调整, I 积分调整以及 D 微分调整三个部分构成, PID 控制器是目前为止应用最为广泛的控制方式。 PID 控制器具

    2023年04月22日
    浏览(75)
  • 基于PID控制器的四旋翼无人机控制系统的simulink建模与仿真,并输出虚拟现实动画

    目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1四旋翼无人机的动力学模型 4.2 PID控制器设计 4.3 姿态控制实现 4.4 VR虚拟现实动画展示 5.完整工程文件        基于PID控制器的四旋翼无人机控制系统的simulink建模与仿真,并输出vr虚拟现实动画,输出PID控制器

    2024年04月09日
    浏览(57)
  • 双容水箱恒水位控制系统,基于SIMULINK仿真环境,在假设双容水箱的数学建模后,采用PID控制算法

    双容水箱恒水位控制系统,约8k字。 基于SIMULINK仿真环境,在假设双容水箱的数学建模后,采用PID控制算法,分别选用单回路控制系统和串级控制系统两种控制方案进行系统的分析设计。 通过MATLAB仿真并采用经验法对比例、积分、微分各参数进行整定,通过比较各阶跃响应曲

    2024年01月22日
    浏览(60)
  • 毕业设计-基于 PID 控制算法仿真算法研究- Matlab

    目录 前言 课题背景和意义 实现技术思路 一、 基本原理  二、无超调 PID 控制器的设计 三、无超调 PID 设计的验证 代码 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。

    2024年02月06日
    浏览(51)
  • 基于Matlab自抗扰控制器及其PID控制(附上完整源码+数据)

    自抗扰控制器(Active Disturbance Rejection Control, ADRC)是一种新型的控制策略,它具有强大的抗干扰能力和良好的控制性能。与传统的PID控制器相比,ADRC能够更好地抑制系统的干扰,提高控制系统的稳定性和鲁棒性。 在ADRC中,核心思想是引入一个扰动观测器(Disturbance Observer,

    2024年02月16日
    浏览(49)
  • 过控Matlab-串级控制系统的参数整定(二)

    太原理工大学过程控制实验之串级控制系统的参数整定 构成以锅炉温度为主变量,锅炉夹套温度为副变量的串级控制系统,假设主、副对象传递函数分别为 1)建立被控系统的Simulink结构图,或利用程序建模。 根据系统单位阶跃响应,采用作图法或计算法建立原系统的近似模型

    2024年02月02日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包