PID整定二:基于Ziegler-Nichols的频域响应

2023-11-03

PID整定二:基于Ziegler-Nichols的频域响应

1参考

1.1根轨迹图的绘制及分析
1.2计算机控制技术01-3.4离散系统的根轨迹分析法
1.3PID控制算法学习笔记
在这里插入图片描述
在这里插入图片描述

2连续Ziegler-Nichols方法的PID整定

2.1整定方法

基于稳定性分析的频域响应PID整定方法:对于给定的被控对象传递函数,可以得到其根轨迹,对应穿越jw轴的点,增益Km为系统开始振荡时的增益K值,wn为振荡频率。
整定公式为:
kp=0.6 * km;
ki=kp * wm/pi;
kd=kp * pi/(4*wm);

2.2仿真示例

整定程序:

%PID Controler Based on Ziegler-Nichols
clear all;
close all;
sys=tf(400,[1,30,200,0]);
figure(1);
rlocus(sys);%画根轨迹图
[km,pole]=rlocfind(sys);%手动!!找系统开始震荡时的增益Km和对应的极点(穿越jw虚轴)
wm=imag(pole(2));%震荡频率

%由系统开始震荡时的增益Km和频率wn确定PID参数:
kp=0.6*km;
ki=kp*wm/pi;
kd=kp*pi/(4*wm);

figure(2);
grid on;
bode(sys,'r');
sys_pid=tf([kd,kp,ki],[1,0]);%PID控制器的传函
sysc=series(sys,sys_pid);%被控系统加上PID整定后的系统!!!
hold on;
bode(sysc,'b');

figure(3);
rlocus(sysc);

整定前系统根轨迹图见Figure1,系统有3个极点,根轨迹图有3根,从极点开始,终止与无限远(因为系统无0点,否则有终止于0点的线),**[km,pole]=rlocfind(sys);%手动!!找系统开始震荡时的增益Km和对应的极点(穿越jw虚轴)**当用鼠标选取与虚轴相交的点时,找到系统振荡开始的增益Km=14,对应的极点有三个(红色的点),振荡频率wm=14rad/s,根据整定公式可得Kp=8.8371;Ki=39.4847;Kd=0.4945。
在这里插入图片描述
整定前后的系统伯德图见Figure2,整定后,频带拓宽,相移超前。
在这里插入图片描述
整定后的系统根轨迹图见Figure3,所有极点位于负半平面,系统达到完全稳定状态
在这里插入图片描述
PID控制跟踪正弦波信号:
在这里插入图片描述
绘图:


close all;
plot(t,y(:,1),'r',t,y(:,2),'k','linewidth',2);
xlabel('time(s)');ylabel('position signal');
legend('ideal position signal','position tracking');

不带PID控制的正弦波跟踪:
在这里插入图片描述
带PID控制的正弦波跟踪:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PID整定二:基于Ziegler-Nichols的频域响应 的相关文章

  • 正确重载 stringbuf 以替换 MATLAB mex 文件中的 cout

    MathWorks 目前不允许您使用cout当 MATLAB 桌面打开时 从 mex 文件中读取 因为它们已重定向 stdout 他们当前的解决方法是提供一个函数 mexPrintf 他们要求你改用 http www mathworks c
  • 如何在 R 中导入 matlab 表

    我有一个matlab mat文件与表数据类型我想将其导入 R 中 我为此使用 readMat R 正在将其作为列表读取 之后有没有办法将列表转换为 R 中的数据帧或表格格式 当我使用as dataframe我收到以下错误 Error in
  • Matlab 中二维插值的函数形式

    我需要从二维数据数组构造一个插值函数 我需要返回实际函数的东西的原因是 我需要能够将函数作为我需要进行数值积分的表达式的一部分进行计算 因此 interp2 并没有解决这个问题 它不返回函数 我可以使用 TriScatteredInterp
  • 数组中 2 个百分位之间的平均元素

    我有 2 个长度为 200 的向量 例如 A 和 B 然后我使用以下方法找到数组 A 的每第二个百分位数 A1 prctile A 1 2 100 1 这样A1是一个长度为50的数组 现在我想找到A1中每两个元素内的A元素的平均值 即A的第
  • MATLAB:生成给定三种颜色的颜色图

    我正在尝试在 MATLAB 中生成给定三种颜色 最高值 零值和最低值 的颜色图 我的思维过程是从最高端到中间循环 并将每个步骤存储到一个 3xN 第一列是 R 第二列是 G 第三列是 B 矩阵 所以我正在使用 fade from high
  • 如何在Matlab脚本中将泰勒级数系数存储到数组中

    这个问题是在 m 脚本的上下文中 我知道如何获取函数的泰勒级数 但我没有看到任何命令允许将级数的系数存储到数组中 sym2poly似乎不起作用 如何将系数存储到数组中 例如这个函数 syms x f 1 x 2 4 x 9 我们怎样才能得到
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属
  • 增加 .fig 文件中的散点标记大小

    我有一个图形文件 scatter fig 该图有许多使用 scatter 的散点绘图仪 现在我只有这个无花果文件 我需要增加所有散点的标记大小 手动尝试过 但非常困难 有没有办法我可以做类似的事情 H 图形句柄 s 点 h 设置 s 标记大
  • 如何使用Matlab提高PSD的分辨率

    我有音频信号 我用 Matlab 读取该信号 并使用 pwelch 获取其 PSD 这是我正在使用的代码 x Fs audioread audioFile wav x x 1 mono xPSD f pwelch x hamming 512
  • 在 matlab/octave 中将数据集分成两个子集 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 将数据集分为两个子集 例如 训练 和 测试 其中 训练集包含 80 的数据 测试集包含剩余的 20 分裂的意思是生成一个长度等于的逻辑索引
  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • 如何获取活动对象 MATLAB GUI 的句柄

    我正在尝试使用 MATLAB GUI 创建日历 我有两个Edit Text对象 edittext1 and edittext2 我想做这个 我把光标放在edittext1然后在日历中选择日期 它会进入文本字段edittext1 同样对于ed
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 定义自定义 Mupad 程序的一般相对搜索路径

    假设我有一个 mupad 笔记本myMupadNotebook mn在路径上 C projectFolder ABC abc 它调用程序MyMupadProcedure mu它位于 C DEF GHI 现在我有一个 Matlab 脚本mai

随机推荐

  • 【Android UI设计与开发】第08期:底部菜单栏(三)Fragment+FragmentTabHost实现仿新浪微博底部菜单栏

    PS 这是转载CSDN作者yangyu20121224的文章 真的非常不错 它主要讲述如何通过Fragment碎片实现点击TabHost切换页面 可惜作者很长时间没有更新了 他写的那系列文章都很实用 以后在做Android布局时会用到该篇文
  • Reading and Writing Images_OpenCV 3.0.0-dev documentation

    OpenCV 3 0 0 dev documentation OpenCV API Reference imgcodecs Image file reading and writing https docs opencv org 3 0 b
  • Python While 循环语句

    Python 编程中 while 语句用于循环执行程序 即在某条件下 循环执行某段程序 以处理需要重复处理的相同任务 其基本形式为 while 判断条件 condition 执行语句 statements 执行语句可以是单个语句或语句块 判
  • iOS开发抓包工具之Charles使用

    在iOS开发过程中 抓包是常见的必备技能之一 这里我们主要介绍一下Mac下的抓包利器Charles 文中版本 4 0 1 它可以非常方便的抓取Http Https请求 从而提高我们的开发效率 本文中不提供破解版安装使用说明 网上一大堆 建议
  • 单链表头插和尾插详解

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 链表定义 二 代码解析 1 程序代码 2 程序图解 前言 链表是一种常见的数据元素 它和我们之前学的数组不同 储存元素个数不受限制 操作难度也更大 为加强
  • Linux man手册一篇通

    linux man man是Linux的一个非常强的的命令 它的全称为manual 手册 有了它不用联网 轻松获取相关信息 man手册章节组成 man手册通常由多个类型章节组成 章节类型定义如下 章节 内容 中文 1 Executable
  • 攻防世界---getit

    getit 题目描述 菜鸡发现这个程序偷偷摸摸在自己的机器上搞事情 它决定一探究竟 题目附件 https adworld xctf org cn media task attachments e3dd9674429f4ce1a25c08ea
  • Java语音技术之FreeTTS

    转自 微点阅读 https www weidianyuedu com content 0017809736406 html Java语音技术之FreeTTS Java提供了语音API技术用于支持应用程序或Web页面中的人机语音交互 其核心技
  • Flash Download failed - “Cortex-M3“解决方法

    前几天在玩STM32F1的时候 烧录代码的时候出现这样一个错误 Error Flash Download failed Cortex M3 首先肯定要看配置问题 采用不同的仿真器 需要配置的选项就不同 这个完全可以自己看产品说明 当确定配置
  • vscode资源管理器隐藏配置文件的显示

    资源管理器显示太多 开头的文件 大多是配置文件 显示过多造成查看混乱 如何隐藏这些文件呢 左下角点击设置按钮中的设置 点击如图所示的按钮 在弹出的settings json 中添加如下内容并保存 files exclude true 注意
  • Nginx报错[emerg]: unknown directive “”

    前言 今天用记事本修改Nginx中的conf配置文件 由于自己没有备份 导致出问题 解决了两个小时都没有解决掉 不过遇到问题是好事 可以解决 如果有备份遇到问题也许不会一直去解决吧 但是 如果工作中的项目 由于自己的不备份 随意改动 影响项
  • 【C++入门】C/C++的(静态)断言用法总结

    1 C语言的断言 1 1 函数原型 include
  • linux0.11中的fork实现和一些注意事项

    最近几天刚开始在读代码 读的挺爽的 不过碰到了很多问题 慢慢来吧 有一个fork的系统调用一直没弄明白 查了一下再CSDN上有一篇好文 记录一 下 顺便自己添加一些自己的想法 下面是思路和提问 内核是linux0 11版本 里面的fork
  • Java刷新bean重新加载bean 上下文 刷新bean

    Autowired private ApplicationContext applicationContext 可以为接口或者业务方法被调用 public void reloadInstance 获取上下文 DefaultListableB
  • Transformer 训练优化

    前言 自 BERT 出现以来 NLP 领域已经进入了大模型的时代 大模型虽然效果好 但是毕竟不是人人都有着丰富的 GPU 资源 在训练时往往就捉襟见肘 出现显存 out of memory 的问题 或者训练时间非常非常的久 因此 这篇文章主
  • C语言深入学习--checklist6:函数、变量

    函数 1 如何查看函数在内存中的地址 打印该函数名的值就可以了 函数名是一个const的函数指针 2 如何给一个函数指针赋值 下面这个例子 函数指针的赋值和调用都有了 include
  • VNC远程连接(Win连Linux)

    VNC是主流Linux发行版内置的图形化远程工具之一 1 在Linux上启动VNC Server 执行vncserver命令 2 直接运行 vncviewer exe 系统会出现 Connection details 对话框 在 Conne
  • Mol Cell Proteomics.

    大家好 本周分享的是发表在MCP上的一篇关于鸟枪蛋白质组学中的错误率的文章 题目是Integrated identification and quantification error probabilities for shotgun pr
  • Android 仪表盘 图片 中心 旋转

    因为项目需求 需要做一个基于仪表盘方式的数据显示方式 在网上一会 google 一会 baidu 最后得来的也就是对 Matrix 的几个解释 之前还被 hdpi mdpi ldip 搞得晕头转向的 郁闷了许久 但是今天终于搞定了 心情愉悦
  • PID整定二:基于Ziegler-Nichols的频域响应

    PID整定二 基于Ziegler Nichols的频域响应 1参考 2连续Ziegler Nichols方法的PID整定 2 1整定方法 2 2仿真示例 1参考 1 1根轨迹图的绘制及分析 1 2计算机控制技术01 3 4离散系统的根轨迹分