历史上的今天
返回首页

历史上的今天

今天是:2025年04月08日(星期二)

正在发生

2021年04月08日 | 干货 | 到底什么是串级PID?

2021-04-08 来源:小麦大叔

什么是串级PID?

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

图片

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

  • 我们在外环给定相应的位置高度,外环PID的输出就是内环PID的期望值;
  • 内环PID的输出将产生相应的油门大小,最终飞行器会产生上升的速度;
  • 内环反馈值为速度,控制相应的速度达到外环所需的速度期望值;
  • 最终外环达到期望的位置;

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

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

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

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

内环和外环

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

比如伺服控制器的三环:

  • 位置环
  • 速度环
  • 电流环

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

  1. 我们通过控制电机的电流,从而决定电机的输出扭矩;
  2. 扭矩和负载一起决定电机转速;
  3. 螺旋桨快速旋转从而产生了飞行器的升力,于是也决定了上升的速度;
  4. 最终也导致了飞行器的位置变化;

这是整个的控制过程。

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

答案是可以

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

答案是

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

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

图片

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

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

图片

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

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

图片

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

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

整体还需要根据具体的系统,有所变化,有的系统其实只需要两个系数(比如PDPI),甚至有的系统只需要一个就行(比如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的相关变量加了后缀 _innerloop是外环PID进行周期控制,loop_inner是内环PID进行周期控制,两者相互独立,将外环PID的输出赋值给内环PID的输入即可;

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

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

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

PID参数

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

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

总之可以观察输入输出曲线;图片那到底什么样的响应曲线算好的呢?

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

总结

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


PID
推荐阅读

史海拾趣

E-CMOS(飞虹高科)公司的发展小趣事

随着电子行业的快速发展,市场对CMOS图像传感器的需求日益增长。飞虹高科公司意识到,要想在市场中保持领先地位,必须不断进行技术创新。因此,公司加大了研发投入,引进了一批高端研发设备,并与国内外知名高校和研究机构建立了紧密的合作关系。经过数年的努力,公司成功开发出了多款具有自主知识产权的CMOS图像传感器产品,其中一款产品以其高灵敏度、低功耗和低噪声等优异性能,赢得了客户的广泛赞誉。

Amaze Electronics Pte Ltd公司的发展小趣事

为了支撑公司的持续发展,Amaze Electronics高度重视人才培养。公司建立了完善的培训体系,为员工提供丰富的培训资源和学习机会。同时,公司还积极引进优秀人才,为研发团队注入新的活力。这些举措使得公司的研发团队不断壮大,为公司的技术创新和业务发展提供了有力保障。

Advanced Pressure Technology公司的发展小趣事

随着销售量的持续增长,APT公司很快便超出了其初始设施的产能。为了满足市场需求,公司于1992年迁至加利福尼亚州纳帕市的一座占地36,000平方英尺的工厂,并配备了2,000平方英尺的100级洁净室。新工厂的启用为APT公司提供了更大的发展空间,也进一步提升了其产品质量和产能。同时,APT公司始终致力于技术创新,不断推出适应市场需求的新产品,进一步巩固了其在气体输送领域的领先地位。

Bals Elektrotechnik GmbH & Co KG公司的发展小趣事

进入1950年代,随着联邦政府对卡车运输的规范,Günter Bals意识到单一的运输业务已无法满足公司长远发展的需要。于是,他与妻子伊丽莎白共同创立了Bals Elektrotechnik GmbH,开始涉足电气连接器的生产。这一转型对Bals来说既是挑战也是机遇,他们凭借对市场的敏锐洞察和不懈的技术研发,成功推出了第一批铝制连接器,并逐步打开了市场。

HALO Electronics公司的发展小趣事

进入21世纪,Bals Elektrotechnik继续致力于技术创新和产品升级。1998年,公司推出了具有革命性的CEE插头和插座无螺纹连接技术。这一技术不仅提高了连接的安全性和效率,还为用户节省了大量时间。Bals因此成为第一家提供这种创新技术的公司,进一步巩固了其在电气行业的领先地位。

这些故事虽然基于假设和现有信息,但尽量保持了客观性和事实性。它们展示了Bals Elektrotechnik GmbH & Co. KG公司在电子行业发展的不同阶段和关键事件,从一个运输公司成功转型为电气行业的领军企业。这些故事不仅反映了公司的成长历程,也体现了其不断创新、追求卓越的精神。

AMRI Enterprise Co Ltd公司的发展小趣事

AMRI Enterprise Co Ltd注重与高校和研究机构的产学研合作,通过引进先进技术和人才,推动公司的技术创新。公司与多所知名高校建立了紧密的合作关系,共同开展科研项目和技术攻关。这些合作不仅为AMRI带来了前沿的技术成果,还提升了公司的研发能力和创新能力。在产学研合作的推动下,AMRI不断推出具有创新性和竞争力的新产品,为公司的持续发展提供了强有力的支撑。

问答坊 | AI 解惑

WINCE挂起问题

我的BSP是由4.2升级过来的,启动点击挂起后屏幕慢慢变白,我的目的是让屏幕跟关机一样变黑。点击挂起就是调用OEM层的函数 : OEMPowerOff,因此我在\\KERNEL\\HAL\\power.c的OEMPowerOff函数里面加入串口打印消息,没有任何消息打印出来。后来也像某 ...…

查看全部问答>

高分求助:把单片机P0,P1,P2口的状态通过串口通讯以2进制发送给计算机,急急急!

下面是我试验成功的按键一次发送P1口给计算机的程序,但是实际上我需要每隔十秒钟,由单片机自动将P0,P1,P2一起发给计算机,请各位大侠指点,由于本人水平较菜,希望得到详细的汇编代码,先谢啦 org 0000h mov scon,#40h ;选择串口工作于方式1 m ...…

查看全部问答>

vxworks的IO重映射问题

现在有如下一个功能要实现: 把用作Console口的那个串口暂时用作他用(即当作一个纯的串口用来传送数据,例如下载程序),然后再恢复成console。 如下是我的实现方案: 首先通过IO重映射来取消console终端: ioGlobalStdSet(STD_IN, 0); ioGlo ...…

查看全部问答>

交换机上怎么防御ddos攻击和机器狗病毒啊

交换机上怎么防御ddos攻击和机器狗病毒啊?在网上搜索过很多资料,都没有什么好的办法。刚进公司就被分配了这个任务,再不做出来就要被开了。有没有哪位大虾帮一下啊?在下万分感谢啊。…

查看全部问答>

wince 5.0 MFC 如何实现窗体隐藏?

写了MFC程序,ShowWindow(SW_HIDE);ShowWindow(hWnd,SW_HIDE);窗体没有反应.有什么办法能隐藏窗体应用程序呢?谢谢!…

查看全部问答>

AT24C64A 的读写问题

要做一个VC写的AT24C64A的读写程序,谁有资料,提供一下,网上都是汇编和C的,现在需要VC的。…

查看全部问答>

菜鸟请教,用C-SPY调试用的是*.d43的文件,如果是正式产品是什么后缀名啊?

菜鸟请教,用C-SPY调试用的程序是*.d43的文件,如果是要正式发行的产品应该是什么后缀名啊?…

查看全部问答>

分享宝贝,(*^__^*) 嘻嘻……

刚刚在网上买的这个下载线,用了觉得还不错和大家分享一下~!http://item.taobao.com/item.htm?spm=1103BWwE.1-3Y7rP.000000032100076132&id=10863150624&…

查看全部问答>

求继电器驱动优化方案

求高手优化电路,包括哪些元件是多余的,哪些东西少了,电阻电容值没改过来,求推荐电阻电容值。…

查看全部问答>

四轴飞行器资料大放送

不多说,放资料!哈哈…

查看全部问答>