几种常用的PID控制算法
位置式PID
- 适用于被控对象不含积分环节。
- 这种算法的实现也需要用到增量式PID的思想,不然求和项会随着控制时间的增大而大幅度增大,导致内存占用过多。
- matlab仿真;
%-----------------位置式PID------------------%
e = [];
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i = 0:0.01:10e(3) = r - y(end);deltau = 0.5*(e(3)-e(2))+0.5*e(3)+0.05*(e(3)-2*e(2)+e(1));u(2) = u(1) + deltau;y = [y,u(2)];e = [e(2:3),0];u = [u(2),0];
end
figure(1)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('位置式PID')
增量式PID
- 这种适用于被控对象含有积分环节,像步进电机这种。
- matlab仿真:
%-----------------增量式PID------------------%
e = [];
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i = 0:0.01:10e(3) = r - y(end);deltau = 0.4*(e(3)-e(2))+0.05*e(3)+0*(e(3)-2*e(2)+e(1));u(2) = deltau;y = [y,u(2)];e = [e(2:3),0];u = [u(2),0];
end
figure(2)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('增量式PID')
积分分离的PID控制算法
- 这种算法的出现是因为很多时候积分项在被控对象没有达到稳态的时候就达到很大的数值使控制器饱和,因此有必要在偏差很大的情况下抑制积分环节。
- 示意图
- matlab仿真:
%-----------------积分分离PID------------------%
e = []; key = 0;
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i = 0:0.01:10e(3) = r - y(end); if abs(e(3)) < 0.7 key = 1; else key = 0; end %赋值限制小了会有稳态误差deltau = 0.5*(e(3)-e(2))+0.5*key*e(3)+0.05*(e(3)-2*e(2)+e(1));u(2) = u(1) + deltau;y = [y,u(2)];e = [e(2:3),0];u = [u(2),0];
end
figure(4)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('积分分离PID')
带死区的PID控制算法
- 示意图:
- matlab仿真:
%-----------------死区PID------------------%
e = [];
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i = 0:0.01:10 e(3) = r - y(end);if abs(e(3))<0.1 %死区增大稳态误差增大e(3) = 0;enddeltau = 0.5*(e(3)-e(2))+0.5*e(3)+0.05*(e(3)-2*e(2)+e(1));u(2) = u(1) + deltau;y = [y,u(2)];e = [e(2:3),0];u = [u(2),0];
end
figure(5)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('死区PID')
不完全微分PID控制算法
- 示意图:
抗干扰 - matlab仿真:
%-----------------不完全微分PID------------------%
e = []; alpha = 0.5;
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0; u1=[]; u1(1) = 0; u1(2) = 0;
r = 1; y = []; y(1) = 0;
for i = 0:0.01:10e(3) = r - y(end);deltau = 0.5*(e(3)-e(2))+0.5*e(3)+0.05*(e(3)-2*e(2)+e(1));u(2) = u(1) + deltau;u1(2) = alpha*u1(1) + (1-alpha)*u(2);y = [y,u1(2)];e = [e(2:3),0];u = [u(2),0];u1 = [u1(2),0];
end
figure(3)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('不完全微分PID')
几种常用的PID控制算法相关推荐
- 几种常用的PID控制方式(入门推荐)
笔者最近做比赛,就顺便研究了一下几种常用的PID控制方法,首先我会对PID控制系统做一个简要的说明和自我理解,以方便刚入门的小白快速的理解和使用,不涉及深入的原理以及公式,如有错误,烦请指出,(大佬务 ...
- [经验] 轻松解读PID控制算法的三种参数的自整定方法
轻松解读PID控制算法的三种参数的自整定方法 - 机器人论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)
- 5种常用的四轴飞行器PID算法讲解集合
先分享一些算法的效果 1. 三角函数直接解算欧拉角+互补滤波+单级PID版本 效果:简单暴力,但是 补滤波效果差,单级 PID响应慢,打舵跟随效应差. 2. 三角函数直接解算欧拉角+卡尔曼滤波+单级P ...
- 四轴PID控制算法详解(单环PID、串级PID)
正文开始:这篇文章分为三个部分: PID原理普及 常用四轴的两种PID算法讲解(单环PID.串级PID) 如何做到垂直起飞.四轴飞行时为何会飘.如何做到脱控? PID原理普及 1. 对自动控制系统的 ...
- 浅谈单神经元网络PID控制算法及MATLAB仿真
本文仅用作记录学习单神经元网络PID控制算法过程的心得体会及个人理解,若有错误,欢迎指正! 传送门 神经网络 神经网络的三个主要构成 神经元 单神经元网络PID控制算法 增量式 位置式 神经元的输入 ...
- PID控制算法基础知识
PID控制算法基础知识 本文为PID控制算法的基础介绍 文章目录 PID控制算法基础知识 一.算法概述 二.控制器的P.I.D项 总结 一.算法概述 PID是一个闭环控制算法.要实现PID算法,必须在 ...
- 自己对PID控制算法的一点见解
简介 无人机能够在空中自动飞行,直升机可以悬停在空中,地铁可以精准的停在地铁站预设的位置,火车可以按照预定的速度行驶,平衡车可以保持直立平衡而不摔倒等等,这些都离不开自动控制技术,有了自动控制技术才使 ...
- 温控中使用PID控制算法
本文主要介绍各种PID控制算法的调节器在温度控制中控制特性.功能及主要应用场合,对大家合理选用用于温度控制提供方向. 对于温度控制算法包括常规PID.模糊控制.神经网络.Fuzzy_PID.神经网络P ...
- PID控制算法与参数整定,用这几招轻松搞定!
关注.星标公众号,不错过精彩内容 直接来源:21ic电子网 之前给大家分享过PID基础理论的文章: 重温经典PID算法 PID原理和参数调试 今天进一步分享一些PID相关细节内容. 在过程控制中,按偏 ...
- 基于串级 PID 控制算法的四旋翼无人机控制系统设计与实现
1.内容简介 略 489-可以交流.咨询.答疑 2.内容说明 无人机,英文名称UAV C Unmanned Aerial Vehicle,是一种特殊的飞行器, 可以按照预先设定的轨迹进行各种运动, ...
最新文章
- 如何选一台好的中低端的笔记本电脑
- mysql_result 对应mysqli哪个_php – 如何在mysqli中转换mysql_result?
- python s d是什意思_python里d是什么意思
- 云原生人物志|华为云CTO张宇昕:云原生已经进入深水区
- UIAutomator2
- GitHubPage博客搭建学习专栏
- CVPR 2021奖项出炉:最佳论文花落马普所,何恺明获提名,首届黄煦涛纪念奖颁布
- appleId登录java
- html 科赫雪花,CSS3 科赫雪花分形动画
- opencv cvtcolor函数中断异常
- 学习笔记-Matlab二维绘图
- android 2d 漫画界面,宅男舔屏必备!动漫人物Live2d壁纸App
- Excel中如何对多个sheet进行同样的操作
- Nginx证书配置:cer文件和jks文件转nginx证书.crt和key文件
- 电脑tcp协议设置成服务器,电脑tcp协议设置成服务器
- pdf阅读器(福昕pdf阅读器电脑版)免安装pjb
- 神经网络——机器学习基础
- [教程]BT服务器架设全攻略
- el-table设置封装
- Arduino练习三——PWM 调控灯光亮度实验