0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是串级PID? 简单PID和串级PID的优劣对比

电子设计 来源: 电子森林 作者: 电子森林 2021-02-26 15:21 次阅读

什么是串级PID?

什么是串级PID?顾名思义就是两个串起来的PID,下面是一个双闭环的例子,外环是位置环,内环是速度环,最终的执行器是电机,电机输出产生了速度和位置;具体框图如下图所示;

当然执行器也可以是四轴飞行器,整体过程如下:

我们在外环给定相应的位置高度,外环PID的输出就是内环PID的期望值;

内环PID的输出将产生相应的油门大小,最终飞行器会产生上升的速度;

内环反馈值为速度,控制相应的速度达到外环所需的速度期望值;

最终外环达到期望的位置;

可能这里比较抽象,好吧,下面继续细化一下硬件的细节;

PID的算法控制其实是一种无系统模型的控制,可以根据参数经验经验去调试系统;

但是实际的物理对象的模型其实早就确定好了,PID的输入量和输出量的物理意义也会因为实际的被控对象而改变;

换句话说,PID的输入基本上和系统的反馈量相关,而实际的反馈量是什么,从一开始就因为系统而确定下来了;

内环和外环

如果外环是因,那内环就是果。万物皆有因果。

比如伺服控制器的三环:

  • 位置环
  • 速度环
  • 电流

外环的变化会直接导致内环的变化,而内环是直接导致执行器变化的关键,如果这里依然使用飞行器作为例子,对于整个四轴飞行系统而言;

我们通过控制电机的电流,从而决定电机的输出扭矩;

扭矩和负载一起决定电机转速;

螺旋桨快速旋转从而产生了飞行器的升力,于是也决定了上升的速度;

最终也导致了飞行器的位置变化;

这是整个的控制过程。

如果只用单环的PID去控制系统,可以在给定系统期望的情况下达到所需要的位置吗?

答案是可以。

那这样串级PID还有什么意义吗?

答案是有。

我们试想一下,如果单纯使用单环PID去控制系统。

那我们看一下单环的PID系统框图;

我们设定了一个高度,并且希望飞行器达到预期位置高度,那么这时候系统的反馈值只有位置量;

那么飞行器是以什么样的速度去飞行?以什么样的加速度去启动?我们就无法去有效地控制飞行器的速度,让它去快速地到达期望的位置,具体位置曲线如下图所示;

其实不难理解,因为一开始的高度差很大,所以PID计算输出的值就很大,因此初始速度会非常大,随着飞行器越来越接近期望位置,偏差越来越小,PID输出量逐渐减小,因此速度逐渐减小。

其实很多时候,PID只是底层,称之为内环PID,通过它可以先稳定某个系统,优化动态特性,然后在外层嵌套其他算法,当然,外面有好几层PID的控制系统是也很常见的。也就是我们介绍的串级PID的系统,具体如下所示;

控制器的本质是出入跟输出的函数映射关系。

其实从这个角度来看,通常PID适用于低阶的线性时不变系统,在此基础上限制到P,I,D三个系数。

整体还需要根据具体的系统,有所变化,有的系统其实只需要两个系数(比如PD或PI),甚至有的系统只需要一个就行(比如P)。因此上面系统中,外环只需要使用P环节就足够了,另外可以对速度曲线进行规划。

假设这里使用了速度曲线规划,因为可以对飞行器的速度进行控制了;

所以我们期望它尽快达到最大速度,因此从最开始的阶段进行匀加速,达到最大速度后开始匀速上升,即将到达期望位置的时候,进行匀减速,最终悬停到目标位置;

那么整体的位置变化曲线如下所示;

换句说话说,就是外环PID的输出作为内环PID的输入;

下面是单环PID的伪算法;

previous_error := 0 //上一次偏差

integral := 0 //积分和

//循环

//采样周期为dt

loop:

//setpoint 设定值

//measured_value 反馈值

error := setpoint − measured_value //计算得到偏差

integral := integral + error × dt //计算得到积分累加和

derivative := (error − previous_error) / dt //计算得到微分

output := Kp × error + Ki × integral + Kd × derivative //计算得到PID输出

previous_error := error //保存当前偏差为下一次采样时所需要的历史偏差

wait(dt) //等待下一次采用

goto loop

那么改成串级PID需要如何操作呢?

具体伪算法如下所示;

previous_error := 0 //上一次偏差

integral := 0 //积分和

previous_error_inner := 0 //内环PID上一次偏差

integral_inner := 0 //内环PID积分和

//循环

//采样周期为dt

loop:

//外环计算

//setpoint 外环设定值

//measured_value 外环反馈值

error := setpoint − measured_value //计算得到偏差

integral := integral + error × dt //计算得到积分累加和

derivative := (error − previous_error) / (n*dt) //计算得到微分

output := Kp × error + Ki × integral + Kd × derivative //计算得到PID输出

previous_error := error //保存当前偏差为下一次采样时所需要的历史偏差

setpoint_inner = output //外环的PID输出赋值给内环的PID输入

wait(n*dt) //等待下一次采样

goto loop

loop_inner:

//setpoint_inner 内环设定值

//measured_value_inner 内环反馈值

error_inner := setpoint_inner − measured_value_inner //计算得到偏差

integral_inner := integral_inner + error_inner × dt //计算得到积分累加和

derivative_inner := (error_inner − previous_error_inner) / dt //计算得到微分

//计算得到PID输出

output_inner := Kp_inner × error + Ki_inner × integral_inner + Kd_inner × derivative_inner

previous_error_inner := error_inner //保存当前偏差为下一次采样时所需要的历史偏差

wait(dt) //等待下一次采样

goto loop_inner

这里将内环PID的相关变量加了后缀 _inner,loop是外环PID进行周期控制,loop_inner是内环PID进行周期控制,两者相互独立,将外环PID的输出赋值给内环PID的输入即可;

遇到干扰的时候,内环控制器首先进行粗调,外环控制器再进一步细调。

因此控制效果必然优于单环的PID控制系统。

串级控制系统在结构上仅仅比简单控制系统多了一个内环回路,可是实践证明,对于相同的干扰,串级控制系统的控制质量是简单控制系统无法比拟的。

PID参数

串级PID的参数整定基本遵循从内到外,先整定内环PID的参数,再整定外环PID的参数;

根据经验法调试参数,通常来说先整定内环比例参数P,然后整定积分参数I,动态特性可以整理微分参数D,当然还需要对饱和的情况进行处理;

总之可以观察输入输出曲线;

那到底什么样的响应曲线算好的呢?

一般来说并不存在最优的,比如有的对速度和加速度有限制,有的系统一定不能出现超调量等等,有的系统则是响应越快越好。所以还是那句话,我不要你觉得,我要我觉得,合适才是最好的。

总结

本文简单介绍了串级PID的相关概念,以四轴飞行器为例,对比了简单PID和串级PID的优劣;

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PID
    PID
    +关注

    关注

    36

    文章

    1473

    浏览量

    85940
  • 执行器
    +关注

    关注

    5

    文章

    379

    浏览量

    19458
  • 外环控制器
    +关注

    关注

    0

    文章

    2

    浏览量

    5867
  • PID 算法控制

    关注

    2

    文章

    2

    浏览量

    4900
收藏 人收藏

    评论

    相关推荐

    如何使用Python实现PID控制

    PID控制(比例-积分-微分控制)是一种常见的反馈控制算法,广泛应用于工业控制系统中。在Python中实现PID控制,我们可以遵循以下步骤: 1. 理解PID控制原理 PID控制器有三
    的头像 发表于 11-14 09:09 735次阅读

    基于PID控制的温度调节系统

    温度调节系统在工业生产和科学研究中扮演着重要角色。基于PID控制的温度调节系统因其简单、高效和可靠性而受到青睐。 1. 引言 在许多工业过程中,维持恒定的温度是至关重要的。温度的波动不仅影响产品质量
    的头像 发表于 11-13 14:39 2390次阅读

    如何选择合适的PID控制器

    在工业自动化领域,PID控制器因其简单、高效和广泛应用而备受青睐。PID代表比例(Proportional)、积分(Integral)和微分(Derivative)三个控制作用,它们共同作用于系统
    的头像 发表于 11-13 14:34 689次阅读

    如何调节PID参数 PID控制器的调试方法

    在现代工业自动化控制系统中,PID控制器因其简单、高效而被广泛使用。PID控制器的三个参数——比例(P)、积分(I)和微分(D)——共同决定了系统的动态响应和稳定性。 PID控制器原理
    的头像 发表于 11-13 14:31 4959次阅读

    什么是PID控制与传统控制的区别

    在自动化控制系统中,PID控制(比例-积分-微分控制)是一种广泛应用的控制算法。它以其简单、鲁棒和易于实现的特点,在工业和工程领域中占据了重要地位。然而,随着技术的发展,传统控制方法已经不能完全满足
    的头像 发表于 11-06 10:34 743次阅读

    PID控制的优缺点分析 PID参数调节的常见方法

    PID控制,即比例-积分-微分控制,是一种广泛应用于工业控制系统中的控制算法。它通过比例(P)、积分(I)和微分(D)三个参数的调整来实现对系统输出的精确控制。 PID控制的优点 简单易行 :
    的头像 发表于 11-06 10:33 2873次阅读

    如何使用PID进行温度控制

    PID(比例-积分-微分)控制器在温度控制系统中扮演着至关重要的角色。以下是使用PID进行温度控制的基本步骤和原理: 一、PID控制原理 PID控制器的核心思想是根据系统当前的状态(即
    的头像 发表于 11-06 10:31 3872次阅读

    PID算法的基本原理介绍

    在现代工业自动化和控制系统中,PID控制器因其简单、鲁棒和高效而成为最广泛使用的控制算法之一。PID代表比例(Proportional)、积分(Integral)和微分(Derivative
    的头像 发表于 11-06 10:28 664次阅读

    pid内环和外环怎么确定

    在控制系统中,PID控制器是一种常见的控制策略,它通过将两个PID控制器串联起来,实现对系统的精确控制。
    的头像 发表于 08-23 09:17 2163次阅读

    控制pid参数怎么调节

    PID(比例-积分-微分)控制器是常用的控制算法。本文将介绍控制PID参数的调节方法。 1.
    的头像 发表于 08-23 09:13 2415次阅读

    控制系统副回路为什么不选用PID控制

    控制系统副回路不常选用PID控制的原因,主要基于以下几个方面: 1. 控制要求差异 控制系统的主要目的是为了高精度地稳定主变量,对主
    的头像 发表于 08-23 09:11 675次阅读

    PID控制的原理与作用

    在工业自动化和过程控制中,PID(比例-积分-微分)控制是一种广泛应用的控制策略。PID控制凭借其原理简单、鲁棒性强和实用面广等优点,已成为技术成熟、应用最为广泛的控制系统之一。本文将详细介绍
    的头像 发表于 06-12 11:45 4127次阅读

    PID在工业控制领域的应用

    在工业控制领域,PID(比例-积分-微分)控制算法以其简单实用、鲁棒性好、应用范围广等特点,成为了工程师们实现稳定、高效控制的首选方案。PID控制算法通过调整比例、积分和微分三个参数,对系统的偏差
    的头像 发表于 06-11 14:47 1385次阅读

    位置式PID与增量式PID的区别

    PID(比例-积分-微分)控制器作为工业自动化领域中的核心控制算法,广泛应用于各种需要精确控制的系统中。在PID控制器的实现中,有两种主要的控制模式:位置式PID和增量式PID。虽然两
    的头像 发表于 06-05 16:23 7526次阅读

    什么是PIDPID各个参数有什么作用?

    PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。 PID已经有107年的历史了,它并不是什么很神圣的东西,大家一定都见过PID的实际应用。
    发表于 03-18 11:24 1.3w次阅读
    什么是<b class='flag-5'>PID</b>?<b class='flag-5'>PID</b>各个参数有什么作用?