一种对不同类型齐格勒-尼科尔斯 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代码及文章讲解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常用工具类之AJ-Captcha入门

1.引入MAVEN依赖 若依官方引入的是1.2.7版本。我选择了目前最常用的1.3.0版本。 在项目中给的 ruoyi-framework\pom.xml 添加依赖 <!-- anji滑块验证码 --><dependency><groupId>com.anji-plus</groupId><artifactId>spring-boot-starter-captc…

通过调整图像hue值并结合ImageEnhance库以实现色调增强

前言 PIL库中的ImageEnhance类可用于图像增强&#xff0c;可以调节图像的亮度、对比度、色度和锐度。 通过RGB到HSV的变换加调整可以对图像的色调进行调整。 两种方法结合可以达到更大程度的图像色调增强。 调整hue值 __author__ TracelessLe __website__ https://blog…

vue2中引入天地图及相关配置

前言 项目中需要引入特殊用途的地图&#xff0c;发现天地图比高德地图、百度地图要更符合需求&#xff0c;于是看了看天地图。 正文 vue2项目中如何引入天地图并对相关的配置进行修改使用呢&#xff1f;官方给的4.0版本的使用说明。 引入&#xff1a; 进入到public/index.html中…

Cocos Creator3D:制作可任意拉伸的 UI 图像

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 制作可任意拉伸的 UI 图像 UI 系统核心的设计原则是能够自动适应各种不同的设备屏幕尺寸&#xff0c;因此我们在制作 UI 时需要正确设置每个控件元素的尺寸&#xff08;size&#…

TypeScript ~ TS 掌握自动编译命令 ③

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; TypeScript ~ TS &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &…

【CV 向】OpenCV 图形绘制指南

文章目录 引言1. 创建画布2. 绘制线段3. 绘制矩形4. 绘制圆5. 绘制椭圆6. 绘制多边形7. 绘制字体结论 引言 Python OpenCV 是一个功能强大的计算机视觉库&#xff0c;除了图像处理和计算机视觉任务外&#xff0c;它还提供了丰富的功能来绘制各种图形。无论是在计算机视觉应用中…

Springboot程序开启远程DEBUG

一、远程debug的原理 Spring Boot程序远程debug的原理主要是通过在启动时指定JVM参数来启用远程调试模式&#xff0c;并在调试器中连接到程序所在的调试地址&#xff0c;从而实现对程序的远程调试。 具体步骤如下&#xff1a; 在运行Spring Boot程序时&#xff0c;在启动命令…

软考高级系统架构设计师(四) 计算机网络2磁盘阵列

目录 磁盘阵列RAID RAID级别 ​IPV6 网络接入技术 综合布线 磁盘阵列RAID 磁盘阵列&#xff08;Redundant Arrays of Independent Disks&#xff0c;RAID&#xff09;&#xff0c;有"数块独立磁盘构成具有冗余能力的阵列”之意。 磁盘阵列是由很多块独立的磁盘&#…

P35[10-5]硬件IIC配置+读写MPU6050(软)(此处注意与软件iic区别)

接线图如下: 注:硬件读写iic的连接位置固定,可参考引脚定义表(如下) 声明:I2C1重映射时,有一次更换机会,但是此面包板由于OLED的该引脚无法接线,因此只能接在PB10 PB11的I2C2上 软件iic初始化部分:(此处即可替代掉整个软件iic.c初始化的底层) void MPU6050_Init(vo…

MyCat总结

目录 什么是mycat 核心概念 逻辑库 逻辑表 分片节点 数据库主机 用户 mycat原理 目录结构 配置文件 读写分离 搭建读写分离 搭建主从复制&#xff1a; 搭建读写分离&#xff1a; 分片技术 垂直拆分 实现分库&#xff1a; 水平拆分 实现分库&#xff1a; ER表 全局表 分…

IDEA新UI速览,成了VS Code的样子?

IntelliJ IDEA 2023.1 现已发布。此版本包括对新 UI 的改进&#xff0c;根据从用户那里收到的反馈进行了彻底改造。此外还实现了性能增强&#xff0c;从而在打开项目时更快地导入 Maven 和更早地使用 IDE 功能。由于采用了 background commit checks&#xff0c;新版本提供了简…

【学习学习】NLP理解层次模型

NLP&#xff08;Neuro-Linguistic Programming&#xff0c;神经语言程序学&#xff09;&#xff0c;由两位美国人理查得.班德勒&#xff08;Richard Bandler&#xff09;与约翰.葛瑞德&#xff08;John Grinder&#xff09;于1976年创办&#xff0c;并在企业培训中广泛使用。美…

Vue3的计算属性和监听属性

目录 computed 语法介绍 简写版 完整版 watch 介绍 监听ref式数据代码示例 监听reactive式数据 watchEffect函数 computed 语法介绍 与Vue2.x中computed配置功能一致 import {computed} from vuesetup(){...//计算属性——简写let fullName computed(()>{return per…

【C++篇】C++新增的一些基础特性

友情链接&#xff1a;C/C系列系统学习目录 知识总结顺序参考C Primer Plus&#xff08;第六版&#xff09;和谭浩强老师的C程序设计&#xff08;第五版&#xff09;等&#xff0c;内容以书中为标准&#xff0c;同时参考其它各类书籍以及优质文章&#xff0c;以至减少知识点上的…

改进YOLOv8 | 优化器篇 | YOLOv8 引入谷歌 Lion 优化器

论文地址:https://arxiv.org/pdf/2302.06675.pdf 代码地址:https://github.com/google/automl/tree/master/lion 我们提出了一种将算法发现作为程序搜索的方法,并将其应用于发现用于深度神经网络训练的优化算法。我们利用高效的搜索技术来探索一个无限且稀疏的程序空间。为了…

2022前端趋势报告(上)

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 一、前言 本文内容来自于《St…

Python在不同领域中的应用

Python 是一种功能强大且易于使用的编程语言&#xff0c;因此在各个领域都有广泛的应用。以下是 Python 在不同领域中的应用&#xff1a; 数据科学&#xff1a;Python 是数据科学家和机器学习专家的首选工具之一。它有成熟的数据分析库和工具包&#xff0c;如 Pandas、NumPy、S…

【前端知识】React 基础巩固(十五)——书籍购物车简单案例

React 基础巩固(十五)——书籍购物车简单案例 案例代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"v…

C国演义 [第六章]

第六章 最长递增子序列题目理解步骤dp含义递推公式初始化遍历顺序 代码 最长连续递增序列题目理解步骤dp含义递推公式初始化遍历顺序 代码 最长递增子序列 力扣链接 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&am…

Linux->线程同步

目录 前言&#xff1a; 1 线程同步引入 2 条件变量 2.1 线程饥饿 2.2 条件变量接口 2.3 添加条件变量 3 生产者和消费者模型 前言&#xff1a; 本篇主要讲解了关于线程同步的相关知识&#xff0c;还有生产者和消费者模型的认识和使用。 1 线程同步引入 在讲解线程同步之…