装置模型和PID控制器的基本模型

在命令行里设计PID控制器

装置模型为一个传递函数:
sys=1(s+1)3s y s=\frac{1}{(s+1)^{3}} sys=(s+1)31​
首先创建一个装置的模型sys,并设计一个简单的PI控制器

sys = zpk([],[-1 -1 -1],1);
% C_pi是一个PI开环控制器
[C_pi,info] = pidtune(sys,'Pi');

此时装置模型和控制器分别为

sys =1-------(s+1)^3
Continuous-time zero/pole/gain model.C_pi = 1 Kp + Ki * ---s with Kp = 1.14, Ki = 0.454
Continuous-time PI controller in parallel form.

接着创建一个反馈控制器,并检查闭环的阶跃相应

% 反馈控制
T_pi = feedback(C_pi*sys, 1);
% 画图,显示阶跃相应
step(T_pi)

得到

将交叉频率设定成1.0

% 提高响应时间
% 设计一个快速反应的PI控制器
[C_pi_fast,info] = pidtune(sys,'Pi',1.0);
T_pi_fast = feedback(C_pi_fast*sys,1);
step(T_pi,T_pi_fast)
axis([ 0 30 0 1.4])
legend('PI','PI_fast')

最终发现始终无法达到参考值,因为PI控制器的自由度不够,最后设计一个PIDF控制器

% PIDF控制器
[C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)
T_pidf_fast =  feedback(C_pidf_fast*sys,1);
% 对比PI控制器和PIDF控制器
step(T_pi_fast, T_pidf_fast);
axis([0 30 0 1.4]);
legend('PI,fast','PIDF,fast');

设计一个2-DOF二自由度的PID控制器

装置的二阶传递函数模型为:
G(s)=1s2+0.5s+0.1G(s)=\frac{1}{s^{2}+0.5 s+0.1} G(s)=s2+0.5s+0.11​
使用1.5rad/s的带宽:

wc = 1.5;
G = tf(1,[1 0.5 0.1]);
C2 = pidtune(G,'PID2',wc)

或者直接使用PID这样的type模式,例如

传递函数如下:

 G = tf(0.0575,[1 2.4635 0.7980]) Controller_PID = pidtune(G,'PID')

控制器为

Controller_PID =1          Kp + Ki * --- + Kd * ss          with Kp = 27.7, Ki = 15, Kd = 11.3Continuous-time PID controller in parallel form.

添加闭环控制

Controller_feedback = feedback(Controller_PID*G,1)Controller_feedback =0.6471 s^2 + 1.594 s + 0.8617----------------------------------s^3 + 3.111 s^2 + 2.392 s + 0.8617Continuous-time transfer function.% 画图
step(Controller_feedback)

为传递函数自动设定PID参数——pidtune学习笔记相关推荐

  1. 自动控制原理PID参数整定的Matlab实现

      以一道题为例介绍调节PID控制器系数的方法,有:试凑法(Trial-and-Error Method).齐格勒-尼科尔斯校正规则(Ziegler and Nichols First Method. ...

  2. oracle修改asm参数文件,学习笔记:Oracle RAC参数文件管理 修改创建asm中的spfile文件...

    天萃荷净 Oracle rac创建修改asm中的spfile文件内容 create spfile to asm --查看sid SQL> show parameter instance_name ...

  3. oracle scn参数,【学习笔记】Oracle数据库使用_MINIMUM_GIGA_SCN推进SCN案例

    天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库SCN故障解决办法,使用_MINIMUM_GIGA_SCN推进SCN案例. 最近帮朋友弄一个WIN环境的数据库,需要增加SCN值, ...

  4. oracle查询大小写敏感参数,【学习笔记】Oracle 11G密码大小写敏感的设置方法 sec_case_sensitive_logon参数...

    天萃荷净 分享一篇Oracle数据库密码大小写敏感设置案例,从11.1开始密码大小写敏感了,同时可以设置sec_case_sensitive_logon参数可以忽略大小写敏感(USER$.SPARE4 ...

  5. linux读取命令行参数,Linux学习笔记(五)—— Linux命令行参数

    一.客户端输入 脚本执行的过程是对数据变量进行处理的过程,之前在脚本中处理的数据都是静态数据,而不是和客户端交互的动态数据.在大多数情况下脚本执行过程需要和客户端进行交互,用来获得脚本处理的数据,这些 ...

  6. python形式参数和实际参数_python学习笔记3:函数和参数

    函数 函数的参数和返回值 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参,下例中的peison 实参(实际参数): 在调用函数的时候输入的值:下例中的明月 de ...

  7. 自动机器学习库:TPOT の 学习笔记

    文章目录 1 TPOT简介 2 安装和使用 TPOT 2.1 安装TPOT库 2.2 使用 TPOT 库 流程 (1)配置类 (2)在搜索结束时,会找到性能最佳的管道 3 TPOT 分类实例 加载数据 ...

  8. linux内核earlyprink,内核启动参数机制学习笔记

    前两天把内核关于内核启动参数的一些知识彻底地分析了一遍<Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)>,发现了一些以前没有注意的细节问题,这里总结如 ...

  9. python中的命令行参数_python学习笔记6:命令行参数

    1. 使用步骤 使用步骤如下: # 导入模块 import argparse # 获取parser, description文本会显示在help信息中 parser = argparse.Argume ...

最新文章

  1. 五天带你学完《计算机网络》·第三天·传输层
  2. linux 网卡绑定updelay,Linux 配置双网卡绑定实现负载均衡
  3. Docker核心组件的关系
  4. IssueTrackerCSVS 代码笔记-数据层的反射工厂模式
  5. Android NDK开发:打包so库及jar包供他人使用
  6. 【转】STL中map用法详解
  7. oracle索引实验报告,Oracle之索引(Index)实例讲解
  8. GPS: 经纬度概念
  9. 关于注册时验证邮箱,并实现类似安卓的吐丝效果
  10. 操作系统知识点总结和题集大杂烩
  11. Window用dos命令解压缩文件
  12. WPF 触发器Triggers
  13. crh寄存器_STM32直接操作寄存器
  14. excel 两组数据交点_数据分析入门:8种常用的数据分析方法
  15. 杭州电子科技大学acm--2022
  16. python之pygal学习
  17. SOAP协议规范介绍
  18. 看大数据平台如何打造餐饮业务一体化?
  19. 16-K3S Helm
  20. windows与linux中,ping大数据包的命令格式

热门文章

  1. 持续集成部署Jenkins工作笔记0005---应用服务器设置账号密码说明
  2. JAVA高并发服务器工作笔记0001---Java中InetAddress与InetSocketAddress的基本用法
  3. makefile工作笔记0001---认识使用makefile
  4. STM32工作笔记0022---STM32F1开发版 GPIO口工作原理
  5. JPA零碎要点---JTA全局事物理解
  6. c++ xml 解析“后直接跟值问题
  7. 素数c分解语言程序,PTA|《C语言程序设计实验与习题指导(第3版)》实验4-2-3 验证“哥德巴赫猜想” (20分)...
  8. 随想录(一种powerpc编译学习的方法)
  9. 一步一步写算法(开篇)
  10. 基于51单片机的电梯控制系统