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

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

3天内不再提示

串级PID的相关概念

FPGA之家 来源:菜刀和小麦 作者:菜刀和小麦 2022-07-03 14:26 次阅读

什么是串级PID?

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

80935934-f41c-11ec-ba43-dac502259ad0.png

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

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

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

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

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

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

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

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

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

内环和外环

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

比如伺服控制器的三环:

位置环

速度环

电流

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

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

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

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

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

这是整个的控制过程。

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

答案是可以

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

答案是

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

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

80a44212-f41c-11ec-ba43-dac502259ad0.png

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

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

80bc9c40-f41c-11ec-ba43-dac502259ad0.png

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

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

80d2b552-f41c-11ec-ba43-dac502259ad0.png

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

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

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

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

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

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

80e216e6-f41c-11ec-ba43-dac502259ad0.png

换句说话说,就是外环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)//等待下一次采用
gotoloop

那么改成串级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)//等待下一次采样
gotoloop

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)//等待下一次采样
gotoloop_inner

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

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

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

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

PID参数

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

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

总之可以观察输入输出曲线;80f115e2-f41c-11ec-ba43-dac502259ad0.gif那到底什么样的响应曲线算好的呢?

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

总结

本文简单介绍了串级PID的相关概念,以四轴飞行器为例,对比了简单PID和串级PID的优劣;作者能力有限,难免存在错误和纰漏,请不吝赐教。

原文标题:到底什么是串级PID?

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

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

    关注

    139

    文章

    8316

    浏览量

    142150
  • 硬件
    +关注

    关注

    11

    文章

    2923

    浏览量

    64823
  • 串级PID
    +关注

    关注

    0

    文章

    3

    浏览量

    2053

原文标题:到底什么是串级PID?

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    simulink仿真PID整定

    各位大神,PID整定先后?发散振荡该如何整定?
    发表于 05-14 10:15

    请问调四轴PID时,内环的输入是什么?

    调四轴PID时,内环的输入是什么?是外环的偏差,还是直接是遥控器的输入。
    发表于 06-17 04:33

    请问minifly的飞控PID程序里面是单PID还是PID

    minifly的飞控PID程序里面是单PID还是PID,求大神指教
    发表于 07-25 23:07

    请问四轴的pid调试调内环候时外环pid参数如何设置?

    四轴的pid调试,在调内环的时候,外环pid的三个参数是怎么设置?遥控器给的控制是给在外环上,那我现在要调节内环的参数,是应把外环pid
    发表于 08-06 03:56

    一文详解PID控制?

    概念控制系统是改善控制质量的有效方法之一,在过程控制中得到了广泛的应用。所谓控制,就是采用两个控制器串联工作,外环控制器的输出
    发表于 10-22 10:11

    实例分析:简单PIDPID的优劣

    和加速度有限制,有的系统一定不能出现超调量等等,有的系统则是响应越快越好。所以还是那句话,我不要你觉得,我要我觉得,合适才是最好的。总结本文简单介绍了PID相关
    发表于 02-27 07:00

    什么是PID

    什么是PID?单环PID的伪算法
    发表于 03-07 08:11

    角度单环PID/PID的原理图

    角度单环PID的原理图PID的原理图
    发表于 03-07 06:42

    PID为什么需要过零处理?如何进行过零处理?

    PID为什么需要过零处理?PID如何进行过零处理?如何判断电机是否过机械零点?
    发表于 06-30 06:48

    基于大疆RM3508电机的PID相关资料推荐

    1.前言最近参加ROBOCON,我负责编写传球机器人,由于传球机构需要一个电机转固定角度来带动球,所以便用大疆3508电机通过PID来实现,不得不说3508电机还是真的强,先看一下效果吧。视频
    发表于 06-30 06:15

    PID控制的原理是什么?如何去实现PID的源码呢

    PID控制的原理是什么?如何去实现PID的源码呢?
    发表于 12-17 06:28

    如何用PID控制来控制电机?

    PID速度控制和PID位置控制是什么?如何用PID控制来控制电机?
    发表于 12-21 06:45

    PID控制来控制电机

    的加减速过程不考虑),该怎么控制呢?那就要将两者结合起来了,即PID控制来控制电机。PID
    发表于 01-10 08:30

    PID比单PID区别在哪里?

    PID比单PID区别在哪里
    发表于 10-16 07:46

    基于PID调节相关的15个基本概念详解

    PID入门读此文,必须熟透于心的15个PID基本概念
    的头像 发表于 01-08 09:14 6458次阅读
    基于<b class='flag-5'>PID</b>调节<b class='flag-5'>相关</b>的15个基本<b class='flag-5'>概念</b>详解