µ±Ç°Î»ÖãºÊ×Ò³ > ǶÈëʽÅàѵ > ǶÈëʽѧϰ > ½²Ê¦²©ÎÄ > PIDËã·¨µÄC³ÌÐòʵÏÖ·½Ê½£¬´óÉñ´øÄãÈëÃÅ
Ò»¡¢PIDËã·¨¼ò½é
ÔÚˮοØÖÆÄ£ÐÍ¡¢ÖÇÄܳµ±ÈÈü¡¢ËÄÖá·ÉÐÐÆ÷Îȶ¨£¬Æ½ºâ³µËٶȵȿØÖÆÊµÏÖʱ£¬ÒòΪԤÉèÖµÓëʵ¼Ê¿ØÖÆÐ§¹ûÖ®¼ä´æÔÚÒ»¶¨µÄÆ«²î¡¢Êµ¼ÊÊä³öÓëÊý¾Ý·´À¡Ö®¼ä´æÔÚÒ»¶¨µÄÑÓʱ£¬ÍùÍù²»Äܵõ½ÀíÏëµÄ¿ØÖÆÐ§¹û¡£PID×÷ΪӦÓÃΪ¹ã·ºµÄÒ»ÖÖ×Ô¶¯¿ØÖÆÆ÷£¬ÔÚʵ¼Ê¿ØÖÆÖмÓÈëPIDËã·¨½«Äܴﵽϵͳ²»¶ÏÁé»î±ä»¯µÄЧ¹û¡£
ÉÏÃæµÄÌáµ½µÄ¼¸ÖÖʵÀý¶¼¿ÉÒÔ³ÆÎª¶èÐÔϵͳ(¹ý³Ì¿ØÖƶÔÏó¾ßÓГһ½éÖͺó+´¿Öͺó”Óë“¶þ½éÖͺó+´¿Öͺó ”ÌØµã,˵°×Á˾ÍÊÇÏìÓ¦ÑÓ³Ù+·´À¡ÑÓʱ)£¬PID¿ØÖÆÆ÷ÊÇÒ»ÖÖ×îÓÅ¿ØÖÆÆ÷¡£
¹ËÃû˼Ò壬PÖ¸ÊDZÈÀý(Proportion)£¬IÖ¸ÊÇ»ý·Ö(Integral)£¬Dָ΢·Ö(Differential)¡£ÔÚµç»úµ÷ËÙϵͳÖУ¬ÊäÈëÐźÅΪÕý£¬ÒªÇóµç»úÕýתʱ£¬·´À¡ÐźÅҲΪÕý(PIDË㷨ʱ£¬Îó²î=ÊäÈë-·´À¡)£¬Í¬Ê±µç»úתËÙÔ½¸ß£¬·´À¡ÐźÅÔ½´ó¡£ÒªÏë¸ã¶®PIDËã·¨µÄÔÀí£¬Ê×ÏȱØÐëÏÈÃ÷°×P,I,D¸÷×Եĺ¬Òå¼°¿ØÖƹæÂÉ£º
1.1±ÈÀýP
Proportion(±ÈÀý)£¬¾ÍÊÇÊäÈëÆ«²î³ËÒÔÒ»¸ö³£Êý¡£
±ÈÀýµ÷½ÚÆ÷·½³ÌΪ£º
y=Kp*e(t)
µ÷½ÚÆ÷µÄÊä³öÓëÊäÈëÆ«²î³ÉÕý±È¡£±ÈÀýÏ·ÖÆäʵ¾ÍÊǶÔÔ¤ÉèÖµºÍ·´À¡Öµ²îÖµµÄ·Å´ó±¶Êý¡£
ͼʾ
ͼ1 ±ÈÀý·Å´óʾÒâͼ
¿ØÖƶÔÏóΪµç»úʱ£¬±ÈÀýKpÔ½´óʱ£¬µç»úתËٻع鵽ÊäÈëÖµµÄËٶȽ«¸ü¿ì£¬¼°µ÷½ÚÁéÃô¶È¾ÍÔ½¸ß¡£´Ó¶ø£¬¼ÓKpÖµ£¬¿ÉÒÔ¼õÉÙ´Ó·ÇÎÈ̬µ½ÎÈ̬µÄʱ¼ä¡£µ«ÊÇͬʱҲ¿ÉÄÜÔì³Éµç»úתËÙÔÚÔ¤ÉèÖµ¸½½üÕñµ´µÄÇéÐΣ¬¼´ÓÃÁ¦¹ýÃÍ£¬µ÷Õû¿ç¶ÈÌ«´ó£¬Èç¹ûÊǶæ»úתÏòϵͳ£¬»á³öÏÖÖÇÄܳµÒ¡°ÚSÐÍǰ½ø£¬Õâ¾ÍÊÇKp¹ý´óÔì³ÉµÄ£¬ËùÒÔÓÖÒýÈë»ý·ÖI½â¾ö´ËÎÊÌâ¡£
1.2 »ý·ÖI
Integral(»ý·Ö)£¬»ý·Ö×÷ÓÃÊÇÖ¸µ÷½ÚÆ÷µÄÊä³öÓëÊäÈëÆ«²îµÄ»ý·Ö³É±ÈÀýµÄ×÷Óá£
»ý·Ö·½³ÌΪ£º
TiÊÇ»ý·Öʱ¼ä³£Êý£¬Ëü±íʾ»ý·ÖËٶȵĴóС£¬TiÔ½´ó£¬»ý·ÖËÙ¶ÈÔ½Âý£¬»ý·Ö×÷ÓÃÔ½Èõ¡£
ͼʾ
ͼ2 »ý·Öµ÷½ÚʾÒâͼ
»ý·Ö»·½ÚµÄµ÷½Ú×÷ÓÃËäÈ»»áÏû³ý¾²Ì¬Îó²î£¬µ«Ò²»á½µµÍϵͳµÄÏìÓ¦ËÙ¶È£¬Ò²¾ÍÊÇ»ý·ÖÏîµÄµ÷½Ú´æÔÚÃ÷ÏÔµÄÖͺó£¬ÒòΪTi´ú±íµÄÊÇʱ¼ä³£Êý£¬TiÖµÔ½´ó£¬Ê±¼äÔ½³¤£¬ÖͺóЧ¹ûÔ½Ã÷ÏÔ£¬Ôö¼ÓϵͳµÄ³¬µ÷Á¿¡£»ý·Ö³£ÊýT I Ô½´ó£¬»ý·ÖµÄ»ýÀÛ×÷ÓÃÔ½Èõ¡£Ôö´ó»ý·Ö³£ÊýT I »á¼õÂý¾²Ì¬Îó²îµÄÏû³ý¹ý³Ì£¬µ«¿ÉÒÔ¼õÉÙ³¬µ÷Á¿£¬Ìá¸ßϵͳµÄÎȶ¨ÐÔ¡£ËùÒÔ£¬±ØÐë¸ù¾Ýʵ¼Ê¿ØÖƵľßÌåÒªÇóÀ´È·¶¨TI ¡£±ÈÈ磺µ±²îÖµ²»ÊǺܴóʱ£¬¿ÉÒÔ¼õС¿ØÖÆÐ§¹û£¬Î¬³ÖÔϵͳµÄÊä³öÖµ¡£µ«ÊÇ»¹ÊÇÒª½«Æ«²î½øÐмӷ¨»ýÀÛ¡£µ±Õâ¸öºÍÀÛ¼Ó³¬¹ýÔ¤¶¨ÖµÊ±£¬ÔÙÒ»´ÎÐÔ½øÐд¦Àí¡£´Ó¶ø±ÜÃâÁËÆµ·±¿ØÖƶø³öÏÖÕñµ´ÏÖÏó¡£
1.3 ΢·ÖD
Derivative(΢·Ö)£¬Î¢·ÖÏ·ÖÆäʵ¾ÍÊÇÇóµç»úתËٵı仯ÂÊ¡£Ò²¾ÍÊÇǰºóÁ½´Î²îÖµµÄ²î¡£
΢·Öµ÷½ÚÆ÷µÄ΢·Ö·½³ÌΪ
ͼʾ
ͼ3 ΢·Ö¿ØÖÆÆ÷ÇúÏß
΢·Ö·´Ó¦ÁËÆ«²îÐźŵı仯¹æÂÉ£¬»òÕß˵ÊDZ仯Ç÷ÊÆ£¬Æ«²îµÄ΢·Öʵ¼ÊÆ«²îµÄ±ä»¯ËÙÂÊ£¬±ä»¯Ô½¿ì£¬Æä΢·Ö¾ø¶ÔÖµÔ½´ó¡£Æ«²îÔö´óʱ£¬Æä΢·ÖΪÕý;Æ«²î¼õСʱ£¬Æä΢·ÖΪ¸º¡£¿ØÖÆÆ÷Êä³öÁ¿µÄ΢·Ö²¿·ÖÓëÎó²îµÄ΢·Ö³ÉÕý±È£¬·´Ó³Á˱»¿ØÁ¿±ä»¯µÄÇ÷ÊÆ¡£¸ù¾ÝÆ«²îÐźŵı仯Ç÷ÊÆÀ´½øÐг¬Ç°µ÷½Ú£¬´Ó¶øÔö¼ÓÁËϵͳµÄ¿ìËÙÐÔ¡£TdÖµÔ½´ó£¬³¬Ç°¿ØÖÆ×÷ÓþͻáÔ½Ã÷ÏÔ£¬¿ÉÒÔÔÚ×öµ½Ìáǰ¿ØÖÆ¡£±ÈÀý½ö½öÊÇÆ«²îµÄ·Å´óÔö·ù£¬±íʾµ±Ç°µ÷½Ú²ÎÊý£¬Î¢·ÖÊÇÔ¤²âÆ«²îµÄ±ä»¯£¬Ï൱ÓÚÌáǰ¼ÓÈëÁË¿ØÖÆÊý¾Ý¡£ÔÚ±ÈÀý΢·Öµ÷½ÚÆ÷ÖУ¬Äܹ»Ìáǰ¿ØÖÆÆ«²î£¬Ò²ÓпÉÄܳöÏÖ¸ºÖµ£¬±ÜÃâÁ˶èÐÔϵͳµÄ³¬µ÷ÏÖÏó¡£
Ò»¡¢PIDËã·¨ÄÚÈÝ
2.1 PIDË㷨ѡÔñ
PIDËã·¨ÖÐÓбÈÀý»ý·Öµ÷½Ú(PI)£¬±ÈÀý΢·Öµ÷½ÚÆ÷(PD)£¬¿É¸ù¾ÝϵͳҪÇó½øÐÐÑ¡Ôñ£¬Í¨³£ÎªÁ˸ÄÉÆµ÷½ÚÆ·ÖÊ£¬ÍùÍù°Ñ±ÈÀý¡¢»ý·Ö¡¢Î¢·ÖÈýÖÖ×÷ÓÃ×éºÏÆðÀ´£¬ÐγÉPIDµ÷½ÚÆ÷¡£ÀíÏëµÄPID΢·Ö·½³ÌΪ£º
ÆäÖÐu(t) µ÷½ÚÆ÷µÄÊä³öÐźÅ;
e(t) µ÷½ÚÆ÷µÄÆ«²îÐźţ¬ËüµÈÓÚ¸ø¶¨ÖµÓë²âÁ¿ÖµÖ®²î
Kp Ϊ±ÈÀýÔöÒæ;
T i »ý·Öʱ¼ä
T d ΢·Öʱ¼ä
KP /T I »ý·ÖϵÊý
KP / T D ΢·ÖϵÊý
2.2 PIDËã·¨ÒªÇó
PIDÐèÒªÔÚÒ»¸ö±Õ»·ÏµÍ³ÀïÃæ(Çźڰå)¡£±Õ»·ÏµÍ³¼´ÔÚ¿ØÖÆÏµÍ³ÖУ¬ÓÐÖ´Ðд¦Àíµ¥Ôª£¬Í¬Ê±±ØÐëÓÐÊäÈë·´À¡µ¥Ôª£¬µç»úϵͳÖУ¬±ØÐëÓбàÂëÆ÷¡¢²âËÙµç»úµÈ²âËÙÉ豸¡£¿ØÖÆÏµÍ³ÔÀíͼÈçÏ£º
ͼ4 ±Õ»·PID¿ØÖÆÏµÍ³
2.3 PID²ÎÊý³£ÓÃС¿Ú¾÷£º
Õû¶¨²ÎÊýѰ×î¼Ñ,´ÓСµ½´óÖð²½²é;
Ïȵ÷±ÈÀýºó»ý·Ö,΢·Ö×÷ÓÃ×îºó¼Ó;
ÇúÏßÕðµ´ºÜÆµ·±,±ÈÀý¿Ì¶ÈÒª·Å´ó;
ÇúÏ߯¯¸¡²¨¶¯´ó,±ÈÀý¿Ì¶ÈÒªÀС;
ÇúÏ߯«Àë»Ø¸´Âý,»ý·Öʱ¼äÍùС½µ;
ÇúÏß²¨¶¯ÖÜÆÚ³¤,»ý·Öʱ¼äÒª¼Ó³¤;
ÇúÏßÕðµ´¶¯×÷·±,΢·Öʱ¼äÒª¼Ó³¤¡£
Ò»¡¢C´úÂëʵÏÖ
ÓÉÓÚ¼ÆËã»ú¿ØÖÆÊÇÒ»ÖÖ²ÉÑù¿ØÖÆ£¬ËüÖ»Äܸù¾Ý²ÉÑùÐí¿ÉµÄÆ«²î¼ÆËã¿ØÖÆÁ¿£¬¶ø²»ÄÜÏóÄ£Äâ¿ØÖÆÄÇÑùÁ¬ÐøÊä³ö¿ØÖÆÁ¿£¬½øÐÐÁ¬Ðø¿ØÖÆ¡£ÄÇôÉÏÃæµÄPID¹«Ê½²»ÄÜÖ±½ÓʹÓ㬱ØÐë½øÐÐÀëÉ¢»¯´¦Àí
¼ÙÉè²ÉÑùʱ¼ä¼ä¸ôΪT£¬ÔòÔÚkʱ¿Ì£º
Æ«²îΪe(k);
»ý·ÖΪe(k)+e(k-1)+e(k-2)+...+e(0);
΢·ÖΪ(e(k)-e(k-1))/T;
´Ó¶ø¹«Ê½ÀëÉ¢»¯ºóÈçÏ£º
k ²ÉÑùÐźţ¬k=0,1,2,…
u k µÚk ´Î²ÉÑùʱ¿ÌµÄ¼ÆËã»úÊä³öÖµ
e k µÚk ´Î²ÉÑùʱ¿ÌÊäÈëµÄÆ«²îÖµ
e k −1 µÚk-1 ´Î²ÉÑùʱ¿ÌÊäÈëµÄÆ«²îÖµ¡£
ʵ¼ÊÉÏÃæµÄ¹«Ê½ÎªÎ»ÖÃʽPID£¬ÔËËã½Ï¶à£¬Õ¼Óõ¥Æ¬»ú×ÊÔ´£¬»¹¿ÉÒÔÍÆ³öÔöÁ¿Ê½PID:
U(k) = P *e(k) + I *[e(k)+e(k-1)+...+e(0)]+ D *[e(k)-e(k-1)]¡£
¼ò»¯ºó¿ÉÒÔÔÚCÓïÑÔÖÐд³É£º
u(k) = u(k)-u(k-1) = Kp(e(k) - e(k-1)) + Ki *e(k) + Kd(e(k)) - 2e(k-1) + e(k-2))
ÉÏÃæµÄ±í´ïʽ¾ÍÊÇÔöÁ¿Ê½±í´ïÐÎʽ£¬u(k)Óë×îºóÈý´Î¼ÆËãÆ«²îÓйء£
CÓïÑÔÀí½â´úÂë:
//´´½¨±äÁ¿½á¹¹Ìå
struct pid_type{
float Kp; //PIµ÷½ÚµÄ±ÈÀý³£Êý
float Ti; //PIµ÷½ÚµÄ»ý·Ö³£Êý
float T; //²ÉÑùÖÜÆÚ
float Ki;
float ek; //Æ«²îe[k]
float ek1; //Æ«²îe[k-1]
float ek2; //Æ«²îe[k-2]
float uk; //u[k]
signed int uk1; //¶Ôu[k]ËÄÉáÎåÈëÈ¡Õû
signed int adjust; //µ÷½ÚÆ÷Êä³öµ÷ÕûÁ¿
}pid;
//±äÁ¿³õʼ
void Pid_Init(void)
{
pid.Kp=4;
pid.Ti=0.005;
pid.T=0.001;
pid.Ki=0.6; //΢·ÖϵÊýKd=KpTd/T¡£¸ù¾Ýʵ¼Êµ÷½Ú
pid.ek=0;
pid.ek1=0;
pid.ek2=0;
pid.uk=0;
pid.uk1=0;
pid.adjust=0;
}
int PIDadjust(float ek) //PIµ÷½ÚËã·¨
{
if( gabs(ek)<0.1 )
{
pid.adjust=0;
}
else
{
pid.uk=pid.Kp*(pid.ek-pid.ek1)+pid.Ki*pid.ek; //¼ÆËã¿ØÖÆÔöÁ¿
pid.ek1=pid.ek;
pid.uk1=(signed int)pid.uk;
if(pid.uk>0)
{
if(piduk-piduk1>=0.5)
{
pi.uk1=pid.uk1+1;
}
}
if(piduk<0)
{
if(pid.uk1-pid.uk>=0.5)
{
pid.uk1=pid.uk1-1;
}
}
adjust=pid.uk1;
}
return adjust;
}
Ò»¡¢Ð¡½á
Ôö´ó±ÈÀýϵÊýPÒ»°ã½«¼Ó¿ìϵͳµÄÏìÓ¦£¬ÔÚÓо²²îµÄÇé¿öÏÂÓÐÀûÓÚ¼õС¾²²î£¬µ«Êǹý´óµÄ±ÈÀýϵÊý»áʹϵͳÓбȽϴóµÄ³¬µ÷£¬²¢²úÉúÕñµ´£¬Ê¹Îȶ¨ÐԱ仵¡£
Ôö´ó»ý·Öʱ¼äIÓÐÀûÓÚ¼õС³¬µ÷£¬¼õСÕñµ´£¬Ê¹ÏµÍ³µÄÎȶ¨ÐÔÔö¼Ó£¬µ«ÊÇϵͳ¾²²îÏû³ýʱ¼ä±ä³¤¡£
Ôö´ó΢·Öʱ¼äDÓÐÀûÓÚ¼Ó¿ìϵͳµÄÏìÓ¦ËÙ¶È£¬Ê¹ÏµÍ³³¬µ÷Á¿¼õС£¬Îȶ¨ÐÔÔö¼Ó£¬µ«ÏµÍ³¶ÔÈŶ¯µÄÒÖÖÆÄÜÁ¦¼õÈõ¡£
Ò²¿ÉÒÔ˵±ÈÀýϵÊýP´ú±í×ÅÏÖÔÚ,±íÃ÷ÏÖÔÚÔ¤ÉèÖµÓëʵ¼ÊµÄÆ«²î£¬»ý·Ö´ú±í׏ýÈ¥£¬ÊǹýÈ¥Tiʱ¼äÄ򵀮«²î»ýÀÛ£¬¿ÉÒÔ¼õÉÙÕðµ´£¬Î¢·ÖD´ú±í×ÅδÀ´£¬·´Ó¦ÁËÆ«²î±ä»¯ÂÊ£¬¿ÉÒÔ³¬Ç°Ô¤²â²¢Ìá³ö¿ØÖÆ¡£
ÕâÀïÓйØPID×ÊÁϵĽ²µÄ·Ç³£ºÃ£¬ÍƼö¸ø´ó¼Ò£º
1. https://blog.csdn.net/u010312937/article/details/53363831#t3¡¶PID¿ØÖÆËã·¨µÄCÓïÑÔʵÏÖ<ÍêÕû°æ>¡·
2. https://blog.csdn.net/qq229596421/article/details/51419813
3. https://blog.csdn.net/msdnwolaile/article/details/51038196
×£¾ýˬ!!