AGVPID调试小结.docx
- 文档编号:27624856
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:10
- 大小:139.59KB
AGVPID调试小结.docx
《AGVPID调试小结.docx》由会员分享,可在线阅读,更多相关《AGVPID调试小结.docx(10页珍藏版)》请在冰豆网上搜索。
AGVPID调试小结
AGV-PID调试小结
AGVPID调试
在AGV控制算法中,PID算法是最基础也是最重要的一环。
PID算法运用起来其实非常简单,几行代码就能实现,困难的地方就是参数整定了,需要不断的尝试找到最佳参数。
一.PID控制算法的基本思想
PID算法是一种具有预见性的控制算法,其核心思想是:
1)PID算法不但考虑控制对象的当前状态值(现在状态),而且还考虑控制对象过去一段时间的状态值(历史状态)和最近一段时间的状态值变化(预期),由这3方面共同决定当前的输出控制信号;
2)PID控制算法的运算结果是一个数,利用这个数来控制被控对象在多种工作状态(比如加热器的多种功率,阀门的多种开度等)工作,一般输出形式为PWM,基本上满足了按需输出控制信号,根据情况随时改变输出的目的。
PID控制算法的基本思想大致如上,但要针对不同的场景做出相应调整。
比如针对AGV的方向控制,我们就需要着重考虑AGV的当前状态--位置偏差值和角度偏差值(比例调节),预期状态辅助调控(微分调节),对于历史状态则不用考虑(积分调节)。
在实际调控中会发现,一般情况下只要比例控制得当,车体本身运行就很平稳了,加入微分调节是为了处理AGV受到外力撞击时的突发情况。
这里不考虑积分调节是因为,AGV方向控制是实时动态调控的,历史误差在次情况下没有太多意义。
二.PID算法分析:
PID算法从其字面理解是:
P-比例控制、I-积分控制和D-微分控制。
下面根据T3实际调试过程注解下:
1、比例控制
设某控制系统:
用户设定值为SV(也就是希望通过PID控制算法使被控制对象的状态值保持在SV的附件)。
1>从系统投入运行开始,控制算法每隔一段时间对被控制对象的状态值进行采样。
由此,可得到开机以来由各个采样时间点被控制对象的状态值所形成的数据序列:
X1,X2,X3,X4,....Xk-2,Xk-1,Xk
说明:
X1:
开机以来的第一次采样值
Xk:
目前的采样值(最近一次的采样值)
2>从这个采样值序列中提取出三方面信息:
①当前采样值Xk与用户设定值SV之间的差值:
Ek
Ek=Sv-Xk
分析Ek:
>0:
说明当前状态值未达标
Ek=0:
说明当前控制状态值正好满足要求
<0:
说明当前状态值已经超标
结论:
Ek反应了控制对象当前值与设定值的偏差程度,可以根据Ek的大小对输出信号OUT进行调整:
偏差程度大OUT增大,偏差程度小OUT减小。
即输出信号的强弱与当前偏差程度的大小成比例,所以根据Ek的大小来给出控制信号OUT的当前值的算法称为比例控制(Proportion)。
用数学模型可以表示为:
POUT=(Kp*Ek)+Out0
Kp:
一般称之为比例系数,可以理解为硬件上的放大器(或衰减器),适当选取Kp将当前误差值Ek
按一定的增益放大或缩小,以提高控制算法的相应速度。
E1:
开机的第一个采样点与设定值的偏差
E1=SV-X1;
E2=SV-X2;
......
EK-2=SV-XK-2;
EK-1=SV-XK-1;
Ek:
当前的采样值与设定值的偏差
EK=SV-XK
分析开机以来的误差序列:
每个偏差值可能有:
>0,<0,=0这三种可能的值,因为从开机到现在,控制算法不断输出控制信号对被控对象进行控制,导致了过去这段时间有时候超标(Ex<0),有些时候未达标(Ex>0),有时候正好满足要求(Ex=0);如果将这些偏差值进行累加求代数和得到Sk,即:
Sk=E1+E2+E3+.........+Ek-2+Ek-1+Ek
分析Sk:
>0:
过去大多数时候未达标
Sk=0:
过去控制效果较理想
<0:
过去大多数时候已经超标
结论:
1.通过对Sk的分析,可以对控制算法过去的控制效果进行综合评估。
体现了控制算法按照原来的方式输出的控制信号导致了现在的控制结果,所以应该利用这个值来对当前要输出的控制信号OUT进行修正,以确保控制对象会在将来的一小段时间尽快达到用户设定的值。
2.Sk实际上是过去每个时间点的误差相加,与数学上的定积分运算类似,因此根据Sk对输出信号进行调节的算法称积分(integral)算法。
所以积分控制的数学模型为:
IOUT=(kp*((1/Ti)Exdt))+Out0
Kp是一常数,其目的类似硬件上的放大器,用于将Sk放大或衰减;
Out0是一常数,为了在历史积分偏差值为0时确保系统有一个输出值,避免失控;
Ti是积分时间常数,取值越大会导致输出量OUT会越小,可理解为历史上已经很久的误差值都影响了当前的输出信号。
取值越小,输出OUT会越强烈,可理解为积分只考虑了最近一段时间的误差。
实际中,如果系统已经运行“很长”一段时间了,那些早期采样的偏差值可以忽略他们对当前控制的影响,所以应该根据情况选择合理的Ti值方能得到良好的控制效果。
公式IOUT=(kp*((1/Ti)Exdt))+Out0太繁琐,实际使用中简化为以下三步几步:
Ek=Sv-Pv;//Sv设定值,Pv当前值
SEk+=Ek;//SEk累计误差
Iout=KI*SEk+Out0
调整KI完成积分控制,但在实际调试过程中,加上积分控制后,AGV的循线效果变差,反复修改KI值依然如此。
考虑到陀螺仪本身就存在一定的漂移,这会对积分控制产生影响,所以最后未使用积分控制。
3、微分控制
最近两次的偏差之差Dk:
Dk=Ek-Ek-1
说明:
Ek:
当前的偏差
Ek-1:
基于当前的前一个采样时刻的偏差值(即上一次的偏差值);
分析Dk:
>0:
说明从上一采样时刻到当前误差有增大趋势
Dk=0:
说明从上一采样时刻到当前误差平稳
<0:
说明从上一采样时刻到当前误差有减小趋势
结论:
1.Dk能够说明从上次采样到当前采样的这段时间被控制对象的状态变化趋势,这种变化的趋势很可能会在一定程度上延续到下一个采样时间点,所以可以根据这个变化趋势(Dk的值)对输出信号OUT进行调整,达到提前控制的目的。
2.Dk形如数学上的微分运算,反应了控制对象在一段时间内的变化趋势及变化量,所以利用Dk对控制器输出信号进行调节的算法称为微分(differential)算法。
可以用数学模型表达为:
Dout=Kp*(Td(de/dt))+Out0
在实际使用中上述公式可简化为:
DelEk=Ek-Ek_1;//最近两次偏差之差
Dout=Kd*DelEk;//微分输出
三、PID算法形成
1比例、积分、微分三种算法的优缺点分析:
POUT=(Kp*Ek)+Out0--比例算法
IOUT=kp*((1/Ti)Exdt)+Out0--积分算法
DOUT=Kp*(Td(de/dt))+Out0--微分算法
比例算法:
只考虑控制对象当前误差,当前有误差才输出控制信号,当前没有误差就不输出控制信号,也就是说只要偏差已经产生了比例算法才采取措施进行调整,所以单独的比例算法不可能将控制对象的状态值控制在设定值上,始终在设定值上下波动;但是比例控制反应灵敏,有误差马上就反应到输出。
积分算法:
考虑了被控制对象的历史误差情况,过去的误差状况参与了当前的输出控制,但是在系统还没有达到目标期间,往往会因为这些历史的误差对当前的控制产生了干扰(即拖后腿),使用不当反而搅乱当前的输出。
但是在系统进入稳定状态后,特别是当前值与设定值没有偏差时,积分算法可以根据过去的偏差值输出一个相对稳定的控制信号,以防止产生偏离目标,起到打预防针的效果。
微分算法:
单纯的考虑了近期的变化率,当系统的偏差趋近于某一个固定值时(变化率为0),微分算法不输出信号对其偏差进行调整,所以微分算法不能单独使用,它只关心偏差的变化速度,不考虑是否有偏差(偏差变化率为0时偏差不一定是0).但是微分算法能获得控制对象近期的变化趋势,它可以协助输出信号尽早的抑制控制对象的变化。
可以理解为将要有剧烈变化时就大幅度调整输出信号进行抑制,避免了控制对象的大幅度变化。
以上三种算法综合起来产生一个当前的控制量对控制对象进行控制,它们的优缺点互补,即形成经典的PID算法。
2.PID算法数学模型
OUT=Pout+Iout+Dout
即:
OUT=((Kp*Ek)+Out0)+(kp*((1/Ti)Exdt)+Out0)+(Kp*(Td(de/dt))+Out0)
整理该式子得到:
将各项的Out0归并为OUT0。
OUT=kp(Ek+((1/Ti)Exdt))+(Td(de/dt)))+OUT0
程序实现为:
OUT=Kp*Ek+Ki*SEk+Kd*DelEk
以上便是我对PID算法的理解。
附录是PID程序源码
附录一:
PID.c
附录二:
PID.h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AGVPID 调试 小结