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

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调参的技巧可以参考以下几点。首先,可以通过逐渐增大P值来找到系统的震荡点,然后根据震荡点的情况来调整P值的大小,使曲线出现静态。\[2\]其次,可以将I值设为0,然后逐渐增大P值,观察系统的响应情况,找到合适的P值。\[2\]此外,可以根据实际情况来确定积分参数的大小,一般经验是ki=kp/200,但具体情况还需要根据实际情况进行调整。\[1\]最后,采用位置方式的PID算法控制流程,通过比较实际转速与目标转速的偏差值,代入PID计算公式得到调整量,不断调节处理,直至电机转速稳定在一个小范围上下波动。\[3\] #### 引用[.reference_title] - *1* *2* [PID调参过程详解(包括增量式和位移式)](https://blog.csdn.net/lihe4151021/article/details/123788291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [为什么采用PID算法?增量式PID定位方式参数如何整定?](https://blog.csdn.net/weixin_45540638/article/details/123619399)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值