智能车制作

标题: 关于位置式pid里面的疑惑 [打印本页]

作者: motianlun1111    时间: 2015-12-21 12:04
标题: 关于位置式pid里面的疑惑
本帖最后由 motianlun1111 于 2015-12-21 12:07 编辑

小弟这里实现电机定位控制,之前采用的是增量式pid控制算法,感觉增量式并不太好,积分项截断误差比较多,我看了我操作的是电机的力矩,实际我用增量式pid最后还是把输出量加到力矩的值上来控制的,感觉本质还是位置式的pid,而且还弱化了积分项,等等,感觉就是增量式pid不适合我这个系统,我想试试位置式pid,但是有个疑问了,位置式pid里面那个sumError这个误差和,也就是积分项,要怎么处理,要是溢出怎么办,我现在的pid是5khz,32位的数int类型,有效位31bit,感觉我这个分分钟就有可能sumError溢出啊,对于溢出这个问题,大神们是怎么去处理的,我其实打算的是用位置式pid外加分段,也就是有个误差阀值,大于阀值采用p或者pd控制,只有进入阀值了,才使用pid控制,但是对于误差和这个问题,犯难了,
问题1:误差和前面打算乘以一个系数,系数为0和1,当误差进入小阀值范围内时候,系数为1,在阀值外系数为0,那么误差和是一直在累积,也就是在阀值外的时候积分项的积分和也在加呢,只是系数为0,然后在小误差阀值内的时候,才一下子把系数变成1?这样感觉是不是有很大的冲击吗,?还是说sumError,之前记录的是误差的积分值乘以那个系数之后的值,也就是误差在阀值以外时候,误差和sumError是0,误差进入了阀值内,sumError才开始有数?
问题2:要是sumError一直累积,然后溢出了怎么办,毕竟我这个是5khz的频率,感觉加数很容易溢出啊,怎么处理溢出,或者什么机制保障了其实不会溢出?

作者: luckner    时间: 2015-12-21 14:10
进去前先把error尖笑一下吧




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2