一种对不同类型齐格勒-尼科尔斯 P-I-D 控制器调谐算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文章讲解


💥1 概述

如今,许多不同的控制器被用于工业和许多其他领域。一般来说,这些控制器可以分为两大类:
• 传统控制器 • 非常规控制器 作为传统控制器,我们可以计算多年来已知的控制器

,例如ON-OFF,P,PI,PD,PID所有不同的类型和实现。所有传统控制器的一个特点是,必须知道过程的数学模型才能设计控制器。
比例-积分-微分(PID)控制器是从上世纪初开始,在自动控制领域具有悠久历史的三任期控制器。由于其直观性和相对简单性,除了能够在各种过程中提供令人满意的性能外,它实际上已成为工业环境中的标准控制器。

📚2 运行结果

 

 

 

 

 

 

 

 

 

 

 

部分代码:

%% Figure One %%
figure
[Gc_p,Kp_p,Ti_p,Td_p]=myzntune('P',[0.4167,0.76,1.96,10],'openloop')
[Gc_pi,Kp_pi,Ti_pi,Td_pi]=myzntune('PI',[0.4167,0.76,1.96,10],'openloop')
[Gc_pid,Kp_pid,Ti_pid,Td_pid]=myzntune('PID',[0.4167,0.76,1.96,10],'openloop')
                                step(feedback(series(Gc_p,Gp),1),feedback(series(Gc_pi,Gp),1),feedback(series(Gc_pid,Gp),1))
                                title('Comparision of P,PI and PID Controllers (Tuned by Step Response Method)')
                                legend('Response of P Controller', 'Response of PI Controller', 'Response of PID Controller')
%% Figure Two %%
figure
% title('Comparision of PID and PID (With Filter )Controllers (Tuned by Step Response Method)')
[Gc_f,Kp_f,Ti_f,Td_f]=myzntune('PIDF',[0.4167,0.76,1.96,10],'openloop')
[Gcpid,Kppid,Tipid,Tdpid]=myzntune('PID',[0.4167,0.76,1.96,10],'openloop')
%                                 subplot(1,2,2)
                                step(feedback(series(Gcpid,Gp),1),feedback(series(Gc_f,Gp),1))
                                title('Comparision of PID and PID (With Filter )Controllers (Tuned by Step Response Method)')
                                legend('Response of PID Controller', 'Response of PID (With Filter)Controller')

%% Sustained Oscillation Method  %%
%% Figure Three %%
figure
[Gcp,Kpp,Tip,Tdp]=myzntune('P',[12.60,2.80,10],'closeloop')
[Gcpi,Kppi,Tipi,Tdpi]=myzntune('PI',[12.60,2.80,10],'closeloop')
[Gcpid1,Kppid1,Tipid1,Tdpid1]=myzntune('PID',[12.60,2.80,10],'closeloop')
                                step(feedback(series(Gcp,Gp),1),feedback(series(Gcpi,Gp),1),feedback(series(Gcpid1,Gp),1))
                                title('Comparision of P,PI and PID Controllers (Tuned by Sustained Oscillation Method)')
                                legend('Response of P Controller', 'Response of PI Controller', 'Response of PID Controller')
                                
%% Figure Four %%    
figure
[Gcf,Kpf,Tif,Tdf]=myzntune('PIDF',[12.60,2.80,10],'closeloop')
                                step(feedback(series(Gcpid1,Gp),1),feedback(series(Gcf,Gp),1))
                                title('Comparision of PID and PID (With Filter )Controllers (Tuned by Sustained Oscillation Method)')
                                legend('Response of PID Controller', 'Response of PID (With Filter)Controller')

%% Cohen Coon %%
%% Figure Five %%   
figure
[Gcp_cc,Kpp_cc,Tip_cc,Tdp_cc]=myCohenCoon('P',[0.4167,0.76,1.96,10]);
[Gcpi_cc,Kppi_cc,Tipi_cc,Tdpi_cc]=myCohenCoon('PI',[0.4167,0.76,1.96,10]);
[Gcpd_cc,Kppd_cc,Tipd_cc,Tdpd_cc]=myCohenCoon('PD',[0.4167,0.76,1.96,10]);
[Gcpid_cc,Kppid_cc,Tipid_cc,Tdpid_cc]=myCohenCoon('PID',[0.4167,0.76,1.96,10]);
[Gcpidf_cc,Kppidf_cc,Tipidf_cc,Tdpidf_cc]=myCohenCoon('PIDF',[0.4167,0.76,1.96,10]);

step(feedback(series(Gcp_cc,Gp),1),feedback(series(Gcpi_cc,Gp),1),feedback(series(Gcpd_cc,Gp),1),feedback(series(Gcpid_cc,Gp),1),feedback(series(Gcpidf_cc,Gp),1))
title('System Response with Cohen Coon Tuned PID Controllers')
legend('Response of P Controller', 'Response of PI Controller', 'Response of PD Controller','Response of PID Controller','Response of PID(With Filter) Controller')

%% The Chien, Hrones and Reswick Tuning Algorithm %%
%%[ Gc,Kp,Ti,Td ] = mychrtune( type,data,method,overshoot)
%% Figure Six %%
figure
[Gcp0,Kpp0,Tip0,Tdp0]=mychrtune('P',[0.4167,0.76,1.96,10],'set',0)
[Gcp20,Kpp20,Tip20,Tdp20]=mychrtune('P',[0.4167,0.76,1.96,10],'set',20)

[Gcpi0,Kppi0,Tipi0,Tdpi0]=mychrtune('PI',[0.4167,0.76,1.96,10],'set',0)
[Gcpi20,Kppi20,Tipi20,Tdpi20]=mychrtune('PI',[0.4167,0.76,1.96,10],'set',20)

[Gcpid0,Kppid0,Tipid0,Tdpid0]=mychrtune('PID',[0.4167,0.76,1.96,10],'set',0)
[Gcpid20,Kppid20,Tipid20,Tdpid20]=mychrtune('PID',[0.4167,0.76,1.96,10],'set',20)

[Gcpidf0,Kppidf0,Tipidf0,Tdpidf0]=mychrtune('PIDF',[0.4167,0.76,1.96,10],'set',0)
[Gcpidf20,Kppidf20,Tipidf20,Tdpidf20]=mychrtune('PIDF',[0.4167,0.76,1.96,10],'set',20)

subplot(1,2,1)
% title('Set Point Regulation with 0% Overshoot ')
step(feedback(series(Gcp0,Gp),1),feedback(series(Gcpi0,Gp),1),feedback(series(Gcpid0,Gp),1),feedback(series(Gcpidf0,Gp),1))
title('System Response with Setpoint Regulation with 0% Overshoot by CHR tune PID Controller')
legend('Response of P Controller', 'Response of PI Controller','Response of PID Controller','Response of PID(With Filter) Controller')

subplot(1,2,2)
% title('Set Point Regulation with 20% Overshoot ')
% figure
step(feedback(series(Gcp20,Gp),1),feedback(series(Gcpi20,Gp),1),feedback(series(Gcpid20,Gp),1),feedback(series(Gcpidf20,Gp),1))
title('System Response with Setpoint Regulation with 20% Overshoot by CHR tune PID Controller')
legend('Response of P 20%Controller', 'Response of PI Controller','Response of PID Controller','Response of PID(With Filter) Controller')
%% FIgure Seven %%%
figure
[Gcp_d0,Kpp_d0,Tip_d0,Tdp_d0]=mychrtune('P',[0.4167,0.76,1.96,10],'distrub',0)
[Gcp_d20,Kpp_d20,Tip_d20,Tdp_d20]=mychrtune('P',[0.4167,0.76,1.96,10],'distrub',20)
 
[Gcpi_d0,Kppi_d0,Tipi_d0,Tdpi_d0]=mychrtune('PI',[0.4167,0.76,1.96,10],'distrub',0)
[Gcpi_d20,Kppi_d20,Tipi_d20,Tdpi_d20]=mychrtune('PI',[0.4167,0.76,1.96,10],'distrub',20)
 
[Gcpid_d0,Kppid_d0,Tipid_d0,Tdpid_d0]=mychrtune('PID',[0.4167,0.76,1.96,10],'distrub',0)
[Gcpid_d20,Kppid_d20,Tipid_d20,Tdpid_d20]=mychrtune('PID',[0.4167,0.76,1.96,10],'distrub',20)
 
[Gcpidf_d0,Kppidf_d0,Tipidf_d0,Tdpidf_d0]= mychrtune('PIDF',[0.4167,0.76,1.96,10],'distrub',0)
[Gcpidf_d20,Kppidf_d20,Tipidf_d20,Tdpidf_d20]=mychrtune('PIDF',[0.4167,0.76,1.96,10],'distrub',20)

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Srinibas Bhuyan (2023). A MATLAB Approach to study different types of Ziegler-Nichols P-I-D Controller Tuning Algorithm

🌈4 Matlab代码及文章讲解

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

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

相关文章

MySQL数据库 【增删改查】

目录 一、新增 指定列插入 一次插入多个数据 二、查询 1、全列查询 2、指定列查询 3、查询字段为表达式 4、查询的时候给列名/表达式 指定别名 5、查询时去重 6、排序查询 7、条件查询 8、模糊查询 9、空值查询 10、分页查询 三、修改 四、删除 SQL 最核心…

JS-26 认识防抖和节流函数;自定义防抖、节流函数;自定义深拷贝、事件总线函数

目录 1_防抖和节流1.1_认识防抖和节流函数1.2_认识防抖debounce函数1.3_防抖函数的案例1.4_认识节流throttle函数 2_Underscore实现防抖和节流2.1_Underscore实现防抖和节流2.2_自定义防抖函数2.3_自定义节流函数 3_自定义深拷贝函数4_自定义事件总线 1_防抖和节流 1.1_认识防…

【Netty】NIO基础(三大组件、文件编程)

文章目录 三大组件Channel & BufferSelector ByteBufferByteBuffer 正确使用姿势ByteBuffer 内部结构ByteBuffer 常见方法分配空间向 buffer 写入数据从 buffer 读取数据mark 和 reset 字符串与 ByteBuffer 互转Scattering ReadsGathering Writes粘包、半包分析 文件编程Fi…

vue 当新增样式无法生效的情况下如何处理

使用scoped属性时&#xff0c;会遇到样式问题。需要使用样式穿透解决 <style lang"scss" scoped> </style> 可以使用以下方法 &#xff1a;deep css 使用 >>> less 使用 /deep/ scss 使用 ::v-deep 代码写法如下: .a :deep(.b) { } .…

Mac的docker安装redis

Mac的docker安装redis 1、docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12205 …

mysql、redis 、RabbitMQ只能本机访问,怎么改?

如果只能本机访问&#xff0c;怎么改? 一、mysql - 改my.ini 刷脚本 bind-address0.0.0.0 然后重启一下mysql服务 任务管理器-关掉mysql 搜索 计算机管理-重启mysql服务 然后 打开查询&#xff0c;并选择mysql数据&#xff0c;输入这个sql语句&#xff0c;点击运行 sele…

SpringAMQP使用

说明&#xff1a;SpringAMQP&#xff08;官网&#xff1a;https://spring.io/projects/spring-amqp&#xff09;是基于RabbitMQ封装的一套模板&#xff0c;并利用了SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。安装和原始使用参考&#xff1a;http://t.csdn.cn…

视频做成GIF动图怎么做?分享超简单的制作方法

将视频制作GIF动图的好处在于它可以将原本较长的视频压缩成一个简短、易于分享的图像文件。这使得它们非常适合用于社交媒体、博客、电子邮件等场景&#xff0c;可以当做表情包来使用&#xff0c;尤其是看到一段搞笑的视频&#xff0c;想要把它做成GIF动图该怎么做呢&#xff1…

常见java知识点1

目录 1 什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f; 2 使用Spring框架有什么好处&#xff1f; 3 Java常用的包&#xff08;列举六个&#xff09; 4 Arraylist 和 Linkedlist 的区别 5 HashMap和Hashtable的区别 6 Java中常见的…

小白到运维工程师的自学之路 第五十四集 (ansible自动化运维工具)

一、概述 Ansible是一种开源的自动化工具&#xff0c;用于自动化任务的执行、配置管理和应用部署。它采用基于Python编写的简单、轻量级的语法&#xff0c;可以通过SSH协议远程管理和配置多台计算机。 Ansible的主要特点包括&#xff1a; 1、简单易用&#xff1a;设计简单&a…

LCD—STM32液晶显示(1.显示器简介及LCD显示原理)(6000字详细介绍)

目录 显示器简介 液晶显示器 液晶 像素 液晶屏缺点 LED显示器 OLED显示器 显示器的基本参数 STM32板载液晶控制原理&#xff08;不带微控制器&#xff09; 液晶控制原理 控制信号线(不带液晶控制器) 液晶数据传输时序 显存 总结 3.2寸液晶屏介绍&#xff08;搭载…

基于单片机的智能鞋柜的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过DHT11温湿度采集&#xff1b;通过按键设置逻辑处理&#xff1b;通过LED紫外线消毒&#xff1b;通过继电器控制风扇进行换气除湿&#xff1b;通过继电器控制加热片进行加热&#xff1b;整个电路以5v供电; 电路图 PCB 源代码 #i…

cocosCreator 3.6以上接入腾迅Bugly 捕捉JS错误 Android

cocosCreator3.6以上接入Bugly上报其实很简单&#xff0c;不需要网上那么多弯弯绕&#xff0c;三须三步走。 1. 按照官网方式接入android的bugly 2. android端写一个Bugly上报管理类 3. 修改你工程目录下native\engine\common\Classes\目录下的Game.h, Game.cpp两个文件&…

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解 1.GPT 模型 1.1 GPT 模型简介 在自然语言处理问题中&#xff0c;可从互联网上下载大量无标注数据&#xff0c;而针对具体问题的有标注数据却非常少&#x…

【JavaEE】Tomcat的安装和使用、创建Mevan项目使用Servlet写一个程序

目录 前言 一、Tomcat的下载和安装 二、写一个简单的Servlet项目 1、创建一个Maven项目 2、引入依赖 3、创建目录 4、编写Servlet代码。 5、打包程序 6、将程序部署到Tomcat上 7、验证程序运行结果 三、在IDEA上安装Smart Tomcat插件 四、Servlet中的一些常见错误 …

基于timegan扩增技术,进行多维度数据扩增(Python编程,数据集为瓦斯浓度气体数据集)

1.数据集介绍 瓦斯是被预测气体&#xff0c;其它列为特征列,原始数据一共有472行数据&#xff0c;因为原始数据比较少&#xff0c;所以要对原始数据&#xff08;总共8列数据&#xff09;进行扩增。 开始数据截图 截止数据截图 2. 文件夹介绍 lstm.py是对未扩增的数据进行训练…

ChatGLM-6B+LangChain实战

目标&#xff1a;原始使用ChatGLM-6B可接受的文字长度有限&#xff0c;打算结合LangChain实现长文本生成摘要. 方法&#xff1a; step1&#xff1a;自定义一个GLM继承LangChain中的langchain.llms.base.LLM&#xff0c;load自己的模型. step2&#xff1a;使用LangChain的mapred…

electron globalShortcut 快捷键与系统全局快捷键冲突

用 electron 开发自己的接口测试工具&#xff08;Post Tools&#xff09;&#xff0c;在设置了 globalShortcut 快捷键后&#xff0c;发现应用中的快捷键与系统全局快捷键冲突了&#xff0c;导致系统快捷键不可正常使用。 快捷键配置 export function initGlobalShortcut(main…

MySQL数据库(一)

目录 一、MySQL安装与配置 1.1什么是数据库 1.2数据库的分类 二、MySQL服务器安装 2.1Windows绿色安装 2.2配置环境 一、MySQL安装与配置 1.1什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问…

typescript manual

这里写目录标题 throw new Error在浏览器中调试Json定义类型定义数组 functionNamed functionanonymous function Axios经典片段 错误及解决ref valuebecause it is a constantAPI 和 客户端定义的数据结构不一样ServerClient throw new Error throw new Error(“Get data err…