手把手带你玩串级PID仿真实验

2023-10-07 01:18

本文主要是介绍手把手带你玩串级PID仿真实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面的话

由于在设计四旋翼飞行器的时候用到了串级PID控制,因此花了一点时间搞了搞,真正想学相关的理论的,当然是去看胡寿松的红皮《自动控制原理》啦,只是感觉书上的纯理论推导很不直观,之后查了一些乱七八糟的文档,实验之类的,感觉还是用仿真实际调一调,看看波形比较直观,便于学习和理解。于是整理一下学习笔记,发上来保存,同时也希望能让想了解串级PID(尤其是做四旋翼控制的盆友们)得到一丢丢帮助。能力有限,文章浅显,甚是惭愧。 

                                                                                                                      串级PID仿真实验
        本文以某燃烧室温度控制为例,利用SIMULINK放着工具,分别建立单级PID控制系统与串级PID控制系统,来对比分析两种PID控制的特点。
        某燃烧系统由主副两个燃烧室构成,以主燃烧室的温度为主变量,副燃烧室温度为副变量,主副燃烧室的传递函数如下:

      
下面针对以上系统,在SIMULINK中首先建立单级PID控制系统,如下图所示:
在系统中,输入信号取阶跃信号r1,输出连接到示波器c2上,G4与G3为燃烧室系统的主副传递函数,q4、q3为施加在系统上的一次、二次扰动信号(取单位阶跃的形式),PID_controller3是PID控制,其设置界面如下图:

上述对话框可以直接设置PID的三个参数,通过调整三个参数,得到最佳响应的曲线,如下图。可以看到,在单级PID系统中,系统对于给定的输入阶跃信号在振动两次之后趋于稳定。调节PID参数,可以控制系统响应的超调量,稳定时间,衰减比等等一系列相关参数。
 

再令一次扰动信号单独作用,观察系统的响应波形,从波形上我们可以看出,一次扰动信号使系统产生的振幅在0.1---0.12之间:
 

再单独令二次扰动作用于系统,观察系统对二次扰动信号的响应曲线。
从图中可以看出,二次扰动使系统产生的振幅达到了0.16多,可见单级PID控制系统对二次扰动的抑制效果并不理想。下面针对这个系统,改用串级PID控制来仿真测试一下其控制效果。
首先结合系统,构建串级PID控制的仿真结构图,如下:
其中的关键元件与单级PID类似,PID控制器用了两个,分别位于两层反馈回路之间,q2、q1分别为一次扰动、二次扰动。通过调整两个PID控制器的参数(具体调试方法采用从内环到外环的顺序,先断开外环,输入信号直接作用于内环,内环调好之后加上外环继续调试即可)可以得到较为理想的输出曲线:
可以看到,在串级PID控制中,系统对阶跃信号的响应速度比单级PID快了4倍左右,超调量也小了很多,二次震荡的波峰几乎为0,系统能够比单级PID更快速的趋于稳定。下面类比于单级PID控制,分别观察扰动信号单独作用下系统的响应,一次来分析系统与扰动信号的抑制能力。
在一次扰动单独作用下的输出曲线如下图所示:
从图中可以看出,串级PID控制系统对一次扰动信号产生的响应,其振幅的量级在10的负3次方,对应最大振幅为0.0022,对比单级PID的一次扰动响应,可以很清晰的看出,串级PID对一次扰动的抑制效果要远远强于单级PID。
下面再让二次扰动单独作用。可以看到其响应曲线如下图:
从图中可以看出,串级PID对二次扰动的响应其振幅不到0.1,对比单级PID,可以看出,串级PID的效果也是远好于单级PID。
本文以一个温度系统为例,利用Simulink,分别建立单级PID控制系统与串级PID控制系统的仿真结构图,通过调整参数,实现最优输出,并且对比研究了两种控制算法的相关特性。更深层次的串级PID理论分析,详见胡寿松《自动控制原理》。

这篇关于手把手带你玩串级PID仿真实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155167

相关文章

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

Matlab simulink建模与仿真 第十章(模型扩展功能库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、模型扩展功能库中的模块概览         注:下面不会对Block Support Table模块进行介绍。 二、基于触发的和基于时间的线性化模块 1、Trigger-Based Linearization基于触发的线性化模块 (1)每次当模块受到触发时,都会调用linmod或者dlinmod函数

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

AMEsim和Simulink联合仿真生成新的.mexw64液压模型文件

AMEsim和Simulink进行联合仿真非常重要的就是AMEsim经过第四阶段Simulation会在相同文件下面生成一个与AMEsim液压模型相同名字的.mexw64文件,在Simulink进行联合仿真的S-Function需要找的也就是这个文件,只不过输入的时候除了液压模型名字之外,后面有一个短下划线。 简而言之: AMEsim和Simulink联合仿真, 首先是需要AMEsim软

LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算

关于BUCK电路的原理可以参考硬件工程师炼成之路写的《 手撕Buck!Buck公式推导过程》.实验内容是将12V~5V的Buck电路仿真,要求纹波电压小于15mv. CCM和DCM的区别: CCM:在一个开关周期内,电感电流从不会到0. DCM:在开关周期内,电感电流总会到0. CCM模式Buck电路仿真: 在用LTspice模拟CCM电路时,MOS管驱动信号频率为100Khz,负载为10R(可自

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将