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及其衍生出来的算法是应用最广的算法之一.各个做自动控制的厂家基本都有会实现这一经典算法.我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景. ...
随机推荐
- Codeforce Round #574(Div.2)
...
- Stealth——01场景的基本搭建以及基础逻辑
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- 使用Elastic APM监控你的.NET Core应用
作者:Jax 前言 在应用实际的运维过程中,我们需要更多的日志和监控来让我们对自己的应用程序的运行状况有一个全方位的了解.然而对于大部分开发者而言,平时大家所关注的更多的是如何更优雅的实现业务,或者是 ...
- 【Offer】[46] 【把数字翻译成字符串】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串: 0翻译成"a",1翻译成"b",..... 1 ...
- Navicat Premium基本使用
Navicat Premium基本使用 转自:https://blog.csdn.net/Yangchenju/article/details/80633055 Navicat Premium基本使用 ...
- Matlab2016b破解安装教程——超详细
一.MATLAB是什么 MATLAB :是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simuli ...
- Nuget打包类库及引用
什么是nuget 适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以创建.共享和使用有用的代码. 通常,此类代码捆绑到"包"中,其中包含编译的代码(如 DL ...
- SpannableString设置文本背景色
参考内容: http://blog.csdn.net/harvic880925/article/details/38984705 http://blog.it985.com/14433.html 1. ...
- 使用HTML制作网页
网页基本信息[编码格式] gb2312:简体中文,一般用于包含中文和英文的页面 ISO-885901:纯英文,一般用于只包含英文的页面 big5:繁体中文,一般用户带有繁体字的页面 utf-8:国际通 ...
- AirFlow常用命令
airflow常用命令如下所示: airflow test dag_id task_id execution_date 测试task 示例: airflow test example_hello_wo ...