PID算法的理解及场景模拟
增量式PID算法的简化版之后的公式:
△u(t)=Ae(t)-Be(t-1)+Ce(t-2)
△u:PID控制器输出的下一时刻的调整量
e(t):PID控制器在当前时刻的状态变化量-给定值
e(t-1):PID控制器在上一时刻的状态变化量-给定值
e(t-2):PID控制器在上上时刻的状态变化量-给定值
A、B、C 是控制控制系数,A比例,B积分,C微分
需要明确两个重要的概念,被确定量与给定值
被确定量是指传感器检测到的当前系统的状态,给你值是我们希望系统达到的某种状态。(这两个关键变量也因该在公式中有所体现)
假设已知下面这个关系,假设初始速度v0 = 100,且PID控制的公式如下:
△u = 0.8v(t) + 0.2v(t-1) + 0.1v(t-2)
模拟情形:0-50:当前速度是100,期望速度是100,当50-150,期望速度变为50,150-200,期望速度变为200
PID控制器的输出的变化如图:(蓝色曲线为PID控制器输出的下一刻产生的速度变化量,黄色曲线为0,标准值,作为速度调整变化的参照曲线)

下图给出PID控制器的电机输出(蓝色)与目标速度(黄色)的关系

初始速度是100.当50s的时候,期望速度变为50 ,此时PID控制器给电机的反馈要低于达到目标速度的输出,以达到加快减速的目的,而当期望速度由50变为150,点击的输出量要大于150需要的量,以达到加快加速的目的,这个就是i这个分量的作用。d这个分量的作用是消除震荡,消除由于刚刚的提高加速的高输出带来的加速或加速过度带来的影响。具体的这三个参数还是需要在实际的闭环系统中进行调节,达到最佳值。
总结:
p:主要的调节作用,通过加速或减速,已达到期望速度,值一般最大
I:加速调节的作用,通过过量的调节方式,实现快速达到期望值
D:消除震荡,消除由于I的过度调节引起的震荡
模拟的python源码:
# -*- coding: UTF-8 -*- #约定俗成的写法plt
import matplotlib.pyplot as plt curV = 100
curV_p1 = 100
curV_p2 = 100
stanV = 100
p = 0.7
i = 0.2
d = 0.1
index = 0
x = []
v = []
s = []
while index < 200:
x.append(index)
index = index + 1
v_d = (curV - stanV) * p + (curV_p1 - stanV) * i + (curV_p2 - stanV) * d
curV_p1 = curV
curV_p2 = curV_p1
curV = curV - v_d
print (index,v_d,curV)
v.append(curV)
s.append(stanV)
if index == 50:
stanV = 50
elif index == 150:
stanV = 200 plt.plot(x,v)
plt.plot(x,s)
plt.show()
PID算法的理解及场景模拟的更多相关文章
- PID算法通俗理解,平衡车,倒立摆,适合不理解PID算法的人来看!
先插句广告,本人QQ522414928,不熟悉PID算法的可以一起交流学习,随时在线(PID资料再我的另一篇博客里) 倒立摆资料连接↓ https://www.cnblogs.com/LiuXinyu ...
- PID算法控制简单理解
1 传统的位式控制算法 用户期望值Sv(设定值)经控制算法输出一个输出信号OUT,输出信号加载到执行部件上(像MOS管等)对控制对象进行控制(步进电机.加热器等),控制对象的当前值(Pv)如速度通过传 ...
- 广告成本控制-PID算法
今天我们来聊聊广告成本控制中常用的PID算法. 0.PID算法简介 首先我们可以看下维基百科中给PID算法的定义:由比例单元(Proportional).积分单元(Integral)和微分单元(Der ...
- 自整定模糊PID算法的理论
模糊控制系统的构成与与常规的反馈控制系统的主要区别在于控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的.具体实现过程如下所示: (1)预处理: 输入数据往往是通 ...
- PID算法知识点博文收藏记录
https://blog.csdn.net/Uncle_GUO/article/details/51367764 https://blog.csdn.net/HandsomeHong/article/ ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- PID算法笔记2
总所周知,PID算法是个很经典的东西.而做自平衡小车,飞行器PID是一个必须翻过的坎.因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂.并举出PID的形象例子来帮助理解PID.一. ...
- PID算法
所谓PID就是比例-积分-微分的英文缩写,但并不是必须同时具备这三种算法,也可以是 PD, PI,甚至只有 P算法控制,下面分别介绍每个参数的含义:首先需要明确一个事实就是,要实现PID算法,必须在硬 ...
- PID控制器开发笔记之一:PID算法原理及基本实现
在自动控制中,PID及其衍生出来的算法是应用最广的算法之一.各个做自动控制的厂家基本都有会实现这一经典算法.我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景. ...
随机推荐
- hdu 5903 Square Distance(dp)
Problem Description A string is called a square string if it can be obtained by concatenating two co ...
- CF989C A Mist of Florescence 构造 思维好题 第八题
A Mist of Florescence time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Idea各种快捷生成Live Template的代码整合
Idea各种快捷生成整合 快速生成method方法注释 配置方法 打开Idea ---> Settings , 搜索 live 点击右边的 + 号,创建模板组 Template Group,之后 ...
- JS-特效 ~ 05. 缓动框架兼容封装/回掉函数/兼容透明度/层级、旋转轮播图、正则表达式、验证表单注册账号、
缓动函数中opcity 写百分值的值 JS一般不用小数运算,会照成精度丢失 元素的默*认透明度是 层级一次性赋值,不缓动 利用for…in为同一个父元素的子元素绑定属性 缓动框架兼容封装/回掉函数/ ...
- 一个例子明白 javascript 中 for 与 for in 的区别
var arr = new Array(); arr["a"] = "aa"; arr["b"] = "bb"; arr ...
- 拆解大数据总线平台DBus的系统架构
Dbus所支持两类数据源的实现原理与架构拆解. 大体来说,Dbus支持两类数据源: RDBMS数据源 日志类数据源 一.RMDBMS类数据源的实现 以mysql为例子. 分为三个部分: 日志抽取模块 ...
- openresty域名动态解析
工作中使用openresty,使用第三方服务API通过域名访问.但是,域名通过DNS解析出来之后,在openresty是有 配置解析阶段 很多时候我们会在 Nginx 配置文件里配置上一些域名,比如配 ...
- 关闭同一网络内的windows主机
声明这是技术讨论!切勿用来攻击别人,一切法律后果自负! 1. 在windows的cmd命令行下操作(如下操作都是以windows的机器在为主) net view #显示同一网络同所有主机 2. 打开远 ...
- Cookie的删除
1.设置一个Cookie,与要删除的Cookie同名,并将有效时间设置为0: protected void doGet(HttpServletRequest request, HttpServletR ...
- sys模块理解补充
首先,我们利用import语句输入sys模块.基本上这句话告诉python,我们想要这个模块.sys模块包含了与python解释器和它的环境有关的函数. 当python执行import sys语句的时 ...