您现在所在的是:

运动控制

回帖:6个,阅读:2506 [上一页] [1] [下一页]
607
draxteru
文章数:2
年度积分:50
历史总积分:607
注册时间:2014/7/27
发站内信
发表于:2014/7/27 10:07:37
#0楼
第一次接触PID控制。
试着做了个上位机配置了一个下位机看具体的图形来理解PID.
控制的具体对象是直流电机,结果却和对PID的理解不同。
因为之前没用过PID可能会有错误,下面放上问题,请各位了解的帮忙解答下。谢谢啦~

首先是程序部分

/*******************电机PID算法函数*********************/
void MACH_PID1(void)
{


 ERROR0 = Motor_Aim - Pulse_amount;                           //计算当前的偏差量

 if ((i < Deviation)                                        //在浮动范围内误差为0,
     && (Deviation < i))                                     //不需对电机进行调整
 {
     ERROR0 = 0;
 }
 else
 {
     i = Motor_Ki * ERROR0 + Motor_Kp*(ERROR0-ERROR1)
         + Motor_Kd*(ERROR0+ERROR2-2*ERROR1);
     PWM_temp = PWM_temp + i;

     if (PWM_temp > 20)
     {
       PWM_temp = 20;
     }
     if (PWM_temp < 0)
     {
       PWM_temp = 0;                                                                //防止PID超出
     }


 }

 ////////////////////对电机进行调整////////////////////
 Motor_forward(PWM_temp);


 ////////////////////保存覆盖误差数据//////////////////////
 ERROR2 = ERROR1;
 ERROR1 = ERROR0;
}



这里我直接反馈到占空比了,然后用占空比控制电机转速。

之后实际图形,设置电机最终转速130/10ms..(这个终值都变进行对比)
不同的P的之后电机控制滞后程度不同,稳定性也不同。(有的参数最后就不稳定了)
最后选了个最接近的数值P=10,I=D=0,
附件 QQ图片20140727095107.jpg

然后换重点了,因为我之前的失误。不小心把P的值和I的值位置换错了。也就是直接用I进行参数的调整
没用到P.结果出来竟然比只用P调节效果好很多。囧rz
参数P = 0, I = 10,D = 0;
附件 QQ图片20140727095530.jpg
从图像中可以看出稳态误差比只用P小很多。特别是P在其他数值时。根本稳不太下来
并且到达稳态的时间也比只用P小很多。

不是大家都说用电机最好不用I这个参数么?因为电机有之后特性。但我实测结果为什么差这么多??????
只用一个I参数就可以直接稳定电机??并且加上PD参数的影响和这个也差不多,有的还没这个好。连电机的滞后特性也看不出来


能解释下以上问题吗?好困惑啊表情
[此贴子已经被作者于2014/7/27 10:08:28编辑过]
49211
kdrjl 版主
文章数:24262
年度积分:50
历史总积分:49211
注册时间:2004/2/17
发站内信
2018论坛优秀版主
2017论坛优秀版主
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
我秀我做2014
2013论坛优秀版主
秀秀我的办公桌
晒晒工控小礼品
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2014/7/27 10:46:45
#1楼
哇,你这是瞎猫撞死耗子的参数设置和调试呢?传动控制:

第一,首先要确定电机的机械时间常数,何为机械时间常数?那就是系统的惯性时间常数;

第二,建立闭环控制系统传递函数,这个教科书里有例程;

第三,设计调节器PI参数值,用教科书里的公式和方法计算即可。典型的是采用对称法计算;

第四,就是上机测试,把理论值和实际效果做比对,然后手动微调PI参数,获取最佳效果。

楼主上面的问题,我认为D参数可以省略(D用于转速反馈通道可抑制系统发散),在调节器运算上只采用PI调节。从波形看,有积分最好,可以消除静差,但速度实际值的噪声太高了,要增加滤波,才能获得稳态时直线的效果。
我是你的朋友
607
draxteru
文章数:2
年度积分:50
历史总积分:607
注册时间:2014/7/27
发站内信
发表于:2014/7/27 13:00:45
#2楼
回复 #1楼 kdrjl
不大明白表情
不过PS一下,这些数据都已经是电机带恒定的负载出来的速度了。所以都是实际值。
1.电机的机械时间常数测出来之后具体可以作为PID那些参数的参考呢?如何参考?
2.图形中如何看出噪声太大?电机想获得稳态的直线不太可能吧?
3.上面第2个图是单独只有P参数和单独只有I参数的图合在一个图上进行对比(抱歉没按颜色分出来)
 这里附上单独I参数图:参数都基本不变


附件 QQ图片20140727130027.jpg
49211
kdrjl 版主
文章数:24262
年度积分:50
历史总积分:49211
注册时间:2004/2/17
发站内信
2018论坛优秀版主
2017论坛优秀版主
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
我秀我做2014
2013论坛优秀版主
秀秀我的办公桌
晒晒工控小礼品
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2014/7/27 16:25:41
#3楼
机械特性的惯性时常,与PI参数的关系,看书呀,那东西讲起来也离不开教科书的定义和计算公式的;

再有你的曲线横坐标是时间吧?单位呢?是秒?还是毫秒?那震荡周期是多少?能局部展开看看吗?完全可以变成一条直线的。他也体现调节器的性能和水平呀。

你做这个实验,难道不需要理论支持吗?如果没有闭环控制的理论支撑,单是这么实验,就很盲目了。完全是看着办,靠经验决定效果?
我是你的朋友
1207
king_king2
文章数:43
年度积分:50
历史总积分:1207
注册时间:2014/6/9
发站内信
发表于:2014/7/27 17:05:26
#4楼
回复 #3楼 kdrjl
挖草,感觉这贴里的都是大神呐。。。
18266
ZHTOK
文章数:11585
年度积分:-16
历史总积分:18266
注册时间:2004/3/11
发站内信
2014相约国庆
发表于:2014/7/27 17:30:42
#5楼
     不同的P的之后电机控制滞后程度不同,稳定性也不同。(有的参数最后就不稳定了)
      P过大,振荡;P过小,响应慢,适时性差,都是基本知识.
3338
lihai010
文章数:780
年度积分:50
历史总积分:3338
注册时间:2006/2/14
发站内信
发表于:2014/7/27 21:58:05
#6楼
以下是引用kdrjl2014/7/27 10:46:45的发言:
哇,你这是瞎猫撞死耗子的参数设置和调试呢?传动控制:

第一,首先要确定电机的机械时间常数,何为机械时间常数?那就是系统的惯性时间常数;

第二,建立闭环控制系统传递函数,这个教科书里有例程;

第三,设计调节器PI参数值,用教科书里的公式和方法计算即可。典型的是采用对称法计算;

第四,就是上机测试,把理论值和实际效果做比对,然后手动微调PI参数,获取最佳效果。

楼主上面的问题,我认为D参数可以省略(D用于转速反馈通道可抑制系统发散),在调节器运算上只采用PI调节。从波形看,有积分最好,可以消除静差,但速度实际值的噪声太高了,要增加滤波,才能获得稳态时直线的效果。
楼主的专业杠杠的,佩服

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004