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及其衍生出来的算法是应用最广的算法之一.各个做自动控制的厂家基本都有会实现这一经典算法.我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景. ...
随机推荐
- python实现煲机脚本
生日的时候女票送了一副新耳机,还挺帅气. 装逼界的人都知道,新耳机是有"煲"这个步骤的 至于有没有效果?怎么煲?煲多久?这些问题都是耳机界常年争执的问题,各路高手分成各种门派常年杀 ...
- 【Offer】[55-2] 【平衡二叉树】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树.如果某二叉树中任意节点的左.右子树的深度相差不超过1,那么它就是一棵平衡二叉树.例如, ...
- SSL证书部署相关知识总结
证书生成工具,手动:Keymanager工具https://keymanager.org/ 证书服务商集成:可自由获得TrustAsia.Let’s Encrypt颁发的 免费证书. Keymanag ...
- Python 基础 3 - 元组
元组与列表区别 Python 元组与列表类似,不同之处在于列表可以修改,元组不可以修改 元组用小括号 () 定义,列表用方括号 [] 定义 元组不可修改,列表可修改 元组创建 只需要在小括号 () 内 ...
- sql 删除完全表中完全重复的数据保留一条
1.删除完全重复数据 原始数据: 期望数据: delete result from (select ROW_NUMBER () over(partition by id order by id) r, ...
- 3、循环链表(java实现)
1.节点类 public class Node<T> { public T data; public Node next; } 2.实现类 public class CircularLin ...
- ubuntu上vritualbox为系统分配硬盘空间
VBoxManage是virtualbox 在ubuntu上提供的管理virtualbox的命令行命令 VBoxManage modifyhd windowsDevEnv --resize VBoxM ...
- 学习数据库SQL语句2
2018年11月15日 下午 —————————————————————————————————————————————————————————————————————————————————— 1 ...
- Android MediaPlayer 基础简介
本文链接: Android MediaPlayer 基础简介 简单介绍MediaPlayer的基本概念,状态,常用的方法与监听器. 什么是MediaPlayer MediaPlayer类可以用来播放音 ...
- DirectX12 3D 游戏开发与实战第四章内容(下)
Direct3D的初始化(下) 学习目标 了解Direct3D在3D编程中相对于硬件所扮演的角色 理解组件对象模型COM在Direct3D中的作用 掌握基础的图像学概念,例如2D图像的存储方式,页面翻 ...