本文灵感来自于 仪表云 视频:“10分钟了解PID工作流程”,下面附上连接
Sina Visitor Systemweibo.com笔者属于控制入门,文中若有不当之处还请读者指出,欢迎大家讨论!
1.开闭环控制
在讲解PID之前,我不得不先讨论一下开闭环控制
开环控制
如图1:首先看一下开环控制的逻辑图,开环控制系统并不会根据“实际输出量”做对“给定输入量”调整。以电风扇控制为例:对于一个电风扇来说,给定恒定电压V,则其电风扇转速就会在N~M转速之间波动,从而输出一定风量
图 1
开环控制只关注输入,而不关注输出结果精度,输出结果是 不定的(取决于系统元件及校准精度情况),没有目标的。其输出不会反馈回输入参与控制。
闭环控制:
还是以风扇控制来说,这里我们引入人的概念。就是人在吹风扇的时候,会考虑风的大小,而去调节电压。控制方式如图2
图 2
可见由于引入了人的因素,人不仅关注输入也关注输出结果,而且会根据输出结果去调整电压,使得最终结果达到人所希望的目标。人通过反馈信息来调整控制电压。
图2中红色部分表示人作用的结果:人通过风量误差调节电压
闭环控制不只关注输入,更关注输出结果,输出结果是有目标的,实际输出回返回输入参与控制,控制系统会根据实际输出控制输入,从而影响实际输出以达到目标
自动闭环控制:
实际生产生活中,为了提高自动化能力,我们需要使用控制器来把人替换掉。如图3
图 3
图3中我们将人换成了控制器,而最常见的控制器就是PID
2.控制器选择
这里我们利用一个小车沿着路线行驶的转向控制来讲解:
图4中小车向东行驶,车速恒定,其目标是最终沿着目标路径走(有目标,闭环控制),路径有方向,黑色箭头为路径延伸方向
图 4
在此,我们设定小车距离目标路径的实际距离为Cross Track Error ( Ep ),由于目标距离=0;所以 Ep也就是误差;
Ep方向&#xff1a;当小车在目标路径右边&#xff0c;则Ep>0&#xff1b;若小车在目标路径左边&#xff0c;则Ep<0
另外&#xff0c;如果小车想走到目标路径&#xff0c;就必须先拐弯&#xff0c;因此我们设定小车每次的转弯角度为Sa, Sa就是控制输出量
Sa方向&#xff1a;当Sa>0时&#xff0c;小车向左拐&#xff08;小车前进方向的左&#xff09;&#xff1b;当Sa<0时&#xff0c;小车向右拐&#xff08;小车前进方向的右&#xff09;
注&#xff1a;实际距离为Cross Track Error ( Ep )可以通过视觉传感器&#xff0c;GPS定位等手段获取
如图5&#xff0c;可以借此画出小车闭环控制的逻辑图&#xff1a;
图 5
对于上述控制系统&#xff0c;我们已经确认了其闭环控制逻辑的一个重点&#xff1a;即输入输出&#xff08;由上可知&#xff0c;该控制系统的输入是Ep&#xff1b;输出是Sa【Sa受Ep影响&#xff0c;包含Sa的符号】&#xff09;
由于控制系统是一个循环控制&#xff0c;因此我们还需要设定它的控制周期。这里我们设定为1ms控制一次&#xff08;控制周期越小&#xff0c;控制精度越高&#xff09;
OK&#xff0c;万事俱备&#xff0c;只欠东风。下面就到了重头戏&#xff01;控制器的设计
虽然笔者在开闭环控制中讲过&#xff0c;PID是一种常见的控制器&#xff0c;但是为了让读者更好的理解控制器的作用&#xff0c;这里我们先讲一种最简单的控制器&#xff1a;Bang-Bang Control
说起来&#xff0c;Bang-Bang Control控制应该是笔者见到的最傻的控制器了
Bang-Bang Control&#xff1a;
当Ep 不等于 0时&#xff0c;就让|Sa|等于一个定值A°&#xff0c;每个控制周期的|Sa|都等于A°
Sa的符号由Ep决定&#xff0c;当Ep>0&#xff0c;则Sa>0&#xff1b;当Ep<0&#xff0c;则Sa<0
因此有&#xff1a;
其控制逻辑图如图6所示&#xff1a;
图 6
引入Bang-Bang Control的结果如图7所示
从图7中可以看到&#xff0c;当我们将目标路径向北移动后&#xff0c;小车立刻向北跑去&#xff0c;小车很快再次到达目标路径&#xff0c;但是小车始终在目标路径附近震荡
这是由于控制量Sa每次都是定值&#xff0c;当小车达到目标后&#xff0c;会由于Sa固定的缘故导致超调&#xff0c;而导致小车在目标路径处反复震荡&#xff08;这也是笔者说它傻的原因&#xff0c;不会随机应变&#xff09;
注&#xff1a;在BangBang Control中&#xff0c;这里我们设置的控制周期是1ms&#xff0c;虽然我们设定每次控制量为小车转角为A°&#xff0c;但实际上可能由于控制周期的原因&#xff0c;小车还没转到A°&#xff0c;就已经进入了下一个控制周期了&#xff0c;请读者注意控制周期对实际控制结果的影响
OK&#xff0c;相信看到这里&#xff0c;读者已经对自动闭环控制有了初步的了解。也明白了控制器的选择会影响最终的控制结果&#xff0c;既然BangBang Control太傻&#xff0c;那我们就改用一个稍微聪明点的控制器&#xff1a;PID控制器
PID控制器详解请见&#xff1a;PID控制原理 二&#xff08;PID使用详解&#xff09;