精华内容
下载资源
问答
  • 增量式pid调参技巧
    千次阅读 多人点赞
    2020-11-03 22:02:41

    最近有一项目带一恒温部件,于是打算采用PID,查阅资料,PID分为位置式和增量式两种,我采用增量式。一轮操作后(复制粘贴),把PID控温部分写完了,然后准备开始调参,于是在某度开始搜索调参方式,翻了几篇文章后,大致都是这样子:

    a)、积分时间置于最大,微分时间置于最小

    b)、改变比例度,求起振点。

    c)、加大微分时间使振荡停止,接着把比例度调得稍小一些,使振荡又产生,加大微分时间,使振荡再停止,

             来回这样操作,直至虽加大微分时间,但不能使振荡停止,以求得微分时间的最佳值,

             此时把比例度调得稍大一些直至振荡停止。

    d)、把积分时间调成和微分时间相同的数值一般情况下是没有什么问题的,如果又产生振荡则加大积分时间直至振荡停止。

    好,方法找到了,开始操作,积分和微分置0,调比例,结果如下:

     

     额,怎么我比例值怎么调都不振荡,怎么回事?无奈,分析一下算法吧。以下是我找到的增量式PID:

    void PIDIncrementalCalc(PID_Incremental *vPID, float pv)
    {
        float thisError;
        float increment;
        float pError, dError, iError;
    
        thisError = vPID->setpoint - pv;
    
        pError = thisError - vPID->lasterror;
        iError = thisError;
        dError = thisError - 2 * (vPID->lasterror) + vPID->preerror;
    
        increment = vPID->kp * pError + vPID->ki * iError + vPID->kd * dError;
    
        vPID->result += increment;
    
        vPID->preerror = vPID->lasterror;
        vPID->lasterror = thisError;
    }

     一通理解发现:

    比例项是当前误差减去前一个误差,那就是求误差的变化率

    积分项是当前误差。唔?没有积分

    微分项大致意思是求误差变化率的变化率

    然后再查阅位置式PID代码:

    void PIDRegulationCalc(PID_Regulation *vPID, float pv)
    {
      float thisError;
      thisError = vPID->setpoint - pv;
      vPID->integral += thisError;
      vPID->result = vPID->kp * thisError + vPID->ki * vPID->integral + vPID->kd * (thisError - vPID->lasterror);
      vPID->lasterror = thisError;
    }

    一通理解发现:

    比例项是误差

    积分项是误差的累加

    微分项是误差的变化率

    咦?怎么增量式PID没积分,增量式PID的积分项是跟位置式的比例项是一样的,增量式PID的比例项是跟位置式的微分项是一样的,难道......?

    再次查看网络的调参教程,发现他们都是用位置式PID的......。难怪,增量式PID的比例项相当于位置式的微分项,那我肯定怎么调都没用啊。而且增量式PID压根就没有积分,所谓的积分项其实是位置式的比例项。

    所以,再次一番思考,增量式PID的调参方式应该是这样:

    首先把比例项和微分项置0

    然后调整积分项,求起振点

    接着调节比例项,抑制振荡

    最后调节微分项,削弱超调

    按照这个来调,终于可以把PID调起来了。第一次搞PID,没想到踩了一个大坑。

    其实我觉得增量式PID应该改成这样:

    increment = vPID->kd * dError + vPID->kp * pError + vPID->kdd * ddError;

    意思是增量=微分+比例+二阶微分

    最后我发现网络上有的人在增量式PID上做积分分离、变积分等积分操作,我觉得都是扯,增量式PID都没积分,分离个啥积分、变个啥积分哦。

    更多相关内容
  • 增量式pid调节

    2017-05-09 22:14:46
    pid学习
  • 在分析增量式数字 PID基本算法的基础上,讨论了PID调节器参数对控制性能的影响及PID调节器控制参数的整定,并利用具有积分分离和消除设定值变化冲击的PID控制算法来实现具有最佳组合的PID控制。仿真实验结果表明,经...
  • PID调参过程详解(包括增量式和位移式)

    万次阅读 多人点赞 2017-07-30 16:03:57
    位置式PID调参步骤: 预设目标值是11000 1.首先,我们进行PID参数整定的时候,先设I D为0,然后把P值从0逐渐增大,直到系统震荡.如下图(P值设的500,这是因为P值过大,出现了震荡.这时我们就需要调整P值大小,让...

    位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与目标预设值做比较,得到控制偏差,然后通过对偏差的P比例,I积分,D微分进行控制,使偏差趋于零的过程

    位置式PID调参步骤:

    预设目标值是11000

    1.首先,我们进行PID参数整定的时候,先设I D为0,然后把P值从0逐渐增大,直到系统震荡.如下图(P值设的500,这是因为P值过大,出现了震荡.这时我们就需要调整P值大小,让曲线出现静态,而静态一般实在P值较小而且I值为0情况下才出现,如第二个图,我将P设置为50即)

    ps:(我使用的是串口打印出实际值和预测值,然后word打印的表格 未使用串口波形助手,也可百度收缩串口波形助手 原理一样 这里注重调参过程)

     

     

     

    由上图可以看出,我们提高了P的值一定程度上消除了静差,提高了响应速度,但是会导致系统震荡,故我们加入微分D可以有效抑制震荡.

    故我们加入KD试试效果

     

     

     

    可以确定KD的值即为500了,然后我们就调整KPKI,调试电机,一般KI的值都很小或者根本不需要.

    调试KP,一般应该把P给小一点,然后KD应该尽可能大点,I值一般都是0.

     

     

    总结:一开始先加大比例Pp小了会达不到目标速度,会差很多,所以再加大p,知道电机出现嗒嗒嗒的抖动或者观察上位机的波形剧烈抖动的时候,这时候p就过大了,实际上p可以不是很大,比如400,调试时候增加幅值可以设为20I稍微来点就可以,平衡车的工程经验是ki=kp/200,但是这里我给的是0.2,还要看具体情况,积分参数过大,实际速度和目标速度的静差会很大。

     

    电机速度闭环控制使用增量式PI调参  和上面的方法一样的,只是步骤稍微有点不一样

    增量式pid调节目标速度时候参数整定:

    先加大KI,这时候会越来越接近实际速度,当KI过大的时候,在切换目标速度的时候,就会抖动,这时候就是KI大了响应速度高了,但导致超调量增加,这时候就加大增量式的KP,来缓减抖动,减小超调量。

    展开全文
  • 经典PID原理解析,PID参数整定工具书。涵盖了PI、PD、PID等位置式和增量式PID的调试方法。并且结合波形解说,十分适合初学者理解和进一步学习。
  • PID控制能满足相当多的工业对象的控制要求,尤其适用于可建立精确模型的确定性控制系统。由于其算法简单,鲁棒性强和可靠性高适合多数控制系统中,可以结合采用自适应、模糊、滑模、神经网络等智能控制以增强控制性能...

            PID控制能满足相当多的工业对象的控制要求,尤其适用于可建立精确模型的确定性控制系统。由于其算法简单,鲁棒性强和可靠性高适合多数控制系统中,可以结合采用自适应、模糊、滑模、神经网络等智能控制以增强控制性能和适应环境的能力。

             首先从理论原则出发:通过实际运行,由液晶屏观察输出曲线与给定曲线之间相似度,根据各种参数对系统的影响,反复调节试凑。

            1.整定比例部分:先将比例系数Kp由小调到大,直到得到超调小,反应快的响应曲线,当没有静差或者静差已经小到允许范围,确定最优比例系数。

            2.积分环节,先将积分常数Ti为最大值,比例系数略微缩小,然后减少积分时间常数,保持良好的情况下消除静差。

            3.加入微分环节:当使用比例积分控制器能消除静差,但动态过程不满意,再加入微分环节,构成PID控制器,逐步地增大微分时间常数,逐步试凑。

            比例作用:迅速消除误差,加大比例系数,可以减少静差,但不能消除稳态误差,过大容易引起不稳定。

            积分作用:消除静差,但容易引起超调,甚至出现振荡。

            微分作用:减小超调,克服振荡,提高稳定性,改善系统动态特性。

     

    增量式PID公式:

    算法流程图:

     

    PID具体调参方面:

    1. 起初通过按键进行对调参,根据调参原则手动调参,并尝试看看我们采用的驱动方式是否合适
    2. 通过在程序上对参数进行调整。                    

            采用位置方式?PID算法控制流程:初始设定目标转速(对应左右轮子的转速),PID开始响应时将采集电机实际转速与目标转速,比较后得出偏差值E,进而代入PID计算公式得到调整量,即更新后的PWM的占空比,再进行不断调节处理,直至电机转速稳定在一个小范围上下波动。

            为什么采用增量式PID而不选择位置式PID呢?

            增量式PID算法的无需累积增加,控制增量△Uk与最新三次采样值相关;每次只输出控制增量△Uk,则当发生故障时排除故障点范围大大缩小;当控制手动与自动相互切换时其冲击小,基本上可以做到无干扰切换。

     

    展开全文
  • 21-2-17 PID调试——增量式PID

    千次阅读 2021-02-17 13:44:00
    21-2-17 PID调试——增量式PID速度PID测试数据 速度PID 速度PID采用增量式PI控制 源码: 内联代码片。 void Motor_Speed_PI(motor_parameter_st *Motorx) { (*Motorx).PID_speed.bias = (*Motorx).actual_speed-(*...

    21-2-17 PID调试——增量式PID

    速度PID

    速度PID采用增量式PI控制
    源码: 内联代码片

    void Motor_Speed_PI(motor_parameter_st *Motorx)
    { 
    	(*Motorx).PID_speed.bias = (*Motorx).actual_speed-(*Motorx).target_speed;//计算此次偏差               
    	(*Motorx).PWM-=(*Motorx).PID_speed.Kp*((*Motorx).PID_speed.bias-(*Motorx).PID_speed.last_Bias)+(*Motorx).PID_speed.Ki*(*Motorx).PID_speed.bias;			//增量式PI控制器  
    	(*Motorx).PID_speed.last_Bias = (*Motorx).PID_speed.bias;//保存上一次偏差	                  
    }
    

    调参策论

    PID参数调整的口诀:
    参数整定找最佳,从小到大顺序查
    先是比例后积分,最后再把微分加
    曲线振荡很频繁,比例度盘要放大
    曲线漂浮绕大湾,比例度盘往小扳
    曲线偏离回复慢,积分时间往下降
    曲线波动周期长,积分时间再加长
    曲线振荡频率快,先把微分降下来
    动差大来波动慢。微分时间应加长
    理想曲线两个波,前高后低4比1
    一看二调多分析,调节质量不会低
    转自:https://www.cnblogs.com/agvcfy/p/9467148.html

    这个策略适用的是绝对式PID,对于增量式PID来说P对应绝对式中的D,I对应绝对式中的P。

    测试数据

    根据先绝对式PID调整时的先P后I最后D的原则
    P=0;
    I=0.25;//估算得
    target_speed=300;(mm/s)
    可以看到虽然收敛但是反应速度不够快,尝试增大I

    P=0;
    I=0.4;
    target_speed=300;(mm/s)
    用类似二分法的思想,直接将I取到0.4,发现速度曲线震荡,无收敛趋势,(0.25+0.4)/2,将I取0.3
    P=0;
    I=0.3;
    target_speed=300;(mm/s)
    曲线收敛但还不赶快,继续增加I

    P=0;
    I=0.35;
    target_speed=300;(mm/s)震荡大,但已经有收敛趋势

    P=0.4;
    I=0.35;
    target_speed=300;(mm/s)
    在这里插入图片描述加入P后震荡明显被抑制,但反应不够快,增加P

    P=0.4;
    I=0.35;
    target_speed=300;(mm/s)
    P设为0.8,曲线开始震荡,无收敛趋势,P超调了。同样二分法思想(0.4+0.8)/2,尝试将P设为0.6

    P=0.6;
    I=0.35;
    target_speed=300;(mm/s)
    虽然震荡幅度减小,但震荡依然存在,继续减小P

    P=0.5;
    I=0.35;
    target_speed=300;(mm/s)
    P=0.55;
    I=0.35;
    target_speed=300;(mm/s)在这里插入图片描述P=0.5;
    I=0.3;
    target_speed=300;(mm/s)P=0.5;
    I=0.2;
    target_speed=300;(mm/s)
    P=0.5;
    I=0.1;
    target_speed=300;(mm/s)

    P=0.55;
    I=0.05;
    target_speed=300;(mm/s)
    在这里插入图片描述P=0.6;
    I=0.05;
    target_speed=300;(mm/s)
    在这里插入图片描述

    P=0.6;
    I=0.1;
    target_speed=300;(mm/s)

    在这里插入图片描述
    P=0.55;
    I=0.1;
    target_speed=300;(mm/s)在这里插入图片描述P=0.45;
    I=0.1;
    target_speed=300;(mm/s)
    在这里插入图片描述P=0.4;
    I=0.1;
    target_speed=300;(mm/s)
    在这里插入图片描述P=0.35;
    I=0.1;
    target_speed=300;(mm/s)在这里插入图片描述P=0.25;
    I=0.1;
    target_speed=300;(mm/s)

    在这里插入图片描述P=0.3;
    I=0.1;
    target_speed=300;(mm/s)
    在这里插入图片描述P=0.27;
    I=0.1;
    target_speed=300;(mm/s)
    在这里插入图片描述P=0.27;
    I=0.11;
    target_speed=300;(mm/s)
    在这里插入图片描述P=0.27;
    I=0.09;
    target_speed=300;(mm/s)
    在这里插入图片描述
    P=0.25;
    I=0.09;
    target_speed=300;(mm/s)在这里插入图片描述P=0.25;
    I=0.1;
    target_speed=300;(mm/s)

    在这里插入图片描述
    P=0.25;
    I=0.1;
    target_speed=500;(mm/s)

    在这里插入图片描述快测试完才发现测试的时候电机是空转的,电机在空载和负载情况下的相应曲线并不相同。
    所以一切重新再来。。

    展开全文
  • 增量式pid分析 及 参数整定

    万次阅读 多人点赞 2017-01-16 14:19:13
    /************************************************************************** 函数功能:增量PI控制器 1.入口参数:编码器测量值,目标...根据增量式离散PID公式 pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k
  • PID增量式算法

    千次阅读 2021-10-13 12:24:02
    ​     这里先提供博主的学习资源:PID算法从理论到实践 小游戏让你秒懂调参技巧 - 软件调参 - FPV帮 - 分享飞行的技巧与乐趣 (fpvbang.com) ​     PID是我们最常见的控制算法之一,全名为(Proportion ...
  • PID参数理解及调参方法(附典型PID算法程序)

    万次阅读 多人点赞 2019-04-05 22:51:36
    调PID步骤 (1) 确定比例系数Kp 确定比例系数Kp 时,首先去掉PID 的积分项和微分项,可以令Ti=0、Td=0,使之成为 纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp 由0 开始逐渐增 大,直至...
  • 基于自适应算法和增量式PID算法的模拟直升飞机控制系统 文章目录基于自适应算法和增量式PID算法的模拟直升飞机控制系统控制系统硬件单片机系统传感器系统介绍直升机模拟系统介绍系统模块介绍ADC采样系统STM32CUBEMX...
  • PID原理的详细分析及调节过程

    万次阅读 多人点赞 2018-08-02 19:55:24
    常用四轴的两种PID算法讲解(单环PID、串级PID) 如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控? 参数调节过程实例详解 PID原理普及 1、 对自动控制系统的基本要求:  稳、准、快:  稳定性(P和I降低...
  • 智能车 PID 调试

    千次阅读 2022-03-12 17:13:56
    文章目录智能车 PID 调试学习目的开环控制与闭环控制开环控制闭环控制小结PID 概述简介PID 公式:舵机 PID分析算法电机 PID分析算法调试口决注意事项 学习目的 使电机速度和舵机转向更精准,有利于导航控制。 ...
  • 电机控制及调参

    千次阅读 2021-11-10 23:56:26
    电机调参一、电机相关0、废话1、电机种类2、电机控制方式二、电机控制器1、PID控制器2、PID 各环节作用3、PID 种类三、电机调参1、Tmotor 调参1.1 控制框图1.2 PID 程序1.3 Tmotor 控制的完整程序1.4 PID 调试技巧2...
  • 暑假集训期间做了三个控制类的模拟题,其中平衡小车和球形小车都用到了PID控制算法,调试过程中遇到了很多奇奇怪怪的问题。不得不说,PID对于不了解它的人就是这样残酷,而对熟练掌握的人则是一把利器,对于我来说,...
  • pid算法原理及调整规律解析

    千次阅读 2020-12-30 23:47:15
    在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在...
  • 笔者最近做比赛,就顺便研究了一下几种常用的PID控制方法,首先我会对PID控制系统做一个简要的说明和自我理解,以方便刚入门的小白快速的理解和使用,不涉及深入的原理以及公式,如有错误,烦请指出,(大佬务笑)...
  • PID控制原理解释

    千次阅读 2019-03-29 00:01:04
    PID控制原理解释 文章目录PID控制原理解释0.前言1.控制原理图解释2.算法分析3.PID数学模型解释 0.前言 ...1.控制原理图解释 ...重点学习位置式PID控制,增量式PID控制 备注:原创不易,转载请说明出处 感谢! ...
  • 舵机的PD控制

    2021-07-28 22:01:42
    PID 舵机以及差速PD调节 struct PID { uint8 SetPoint; //设定目标 Desired Value uint16 SetSpeed; uint16 SumError; //误差累计 float P; //比例常数 Proportional Const float I; //积分常数 Integral Const...
  • 不过该场景一般是对未上线的业务系统进行初始调参,因为执行该功能可能会影响业务运行,故称之为离线模式。 资源竞争导致的慢SQL 当系统同时执行某些SQL语句的时候,它们可能会互相影响,进而导致某些SQL语句变为慢...
  • 其他文件搜索命令 第四节 帮助命令 第五节 用户管理命令 第六节 压缩解压命令 第七节 网络命令 第七节 挂载命令 第八节 关机重启命令 第五章 文本编辑器Vim 第一节 Vim常用操作 第二节 Vim使用技巧 第六章 软件包...
  • 0. 要求 简短的问题描述 ...PI 控制具有原理简单,使用方便,适应性强,鲁棒性强的优点,但是在控制非线性、时变、耦合及参数和结构不稳定的复杂过程时,无论怎么调参,效果总是不够理想。 本文在无刷电机
  • 最全并发编程面试题

    2022-08-05 15:49:49
    找出cpu耗用厉害的进程pid, 终端执行top命令,然后按下shift+p 查找出cpu利用最厉害的pid号 根据上面第一步拿到的pid号,top -H -p pid 。然后按下shift+p,查找出cpu利用率最厉害的线程号,比如top -H -p 1328 将...
  • 面经-hangzhou

    2022-07-08 20:25:08
    加油
  • 【零散知识点总结2】

    2022-03-06 11:21:57
    MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? MySQL 索引 栈中如何优化 MySQL? 优化数据库的方法 主键、外键和索引的区别? SQL 注入漏洞产生的原因?如何防止? 存储时期 对于...
  • 客户端回 Watcher........................................................................... 55 10. ACL 权限控制机制.............................................................................. 56 ...
  • java面试题

    2022-05-21 11:40:10
    Java 什么是面向对象(java基本思想是?) 面向对象编程思想是java的基本思想。java的整个体系和技术实现都是以这个思想为基础。 面向对象思想,是一种将现实世界抽象成代码的思想。即通过将现实世界中独立个体...
  • 【JVM】JVM基础

    2022-03-27 19:15:37
    具体来说:这两种架构之间的区别: 基于栈架构的特点 设计和实现更简单,适用于资源受限的系统 避开了寄存器的分配难题:使用零地址指令方式分配 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。...
  • 实施运维企业面试题-5

    万次阅读 2022-01-04 15:02:05
    NETWORK 1 请描述 TCP/IP 协议中主机与主机之间通信的三要素 参考答案 IP 地址(IP address) 子网掩码(subnet mask) IP 路由(IP router) 2 请描述 IP 地址的分类及每一类的范围 参考答案 A 类 1-26 ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

增量式pid调参技巧

友情链接: number-and-tuxiang.zip