控制在百度百科中所给出的解释是:掌握住对象不使任意活动或超出范围;或使其按控制者的意愿活动。
根据这个解释,可以看出我们之前所实现的控制功能都是最简单、最基本的控制:固定响应式控制。
固定是说功能固定,按下这个按钮,灯就开了,松开灯就灭了,无论我们重复多少次,只要系统正常工作,都是这个功能,也不管当时是不是白天、需不需要开灯。而响应则说明我们的系统是一种被动应激反应型的工作模式:接收到一个信号,按照预先设计好的应对策略根据当前系统的状态来响应这个信号。
这么一说,大家可能会觉得:哦,好low啊:(
不过只要我们设计的好,这样的控制系统也是最有效的,而目前绝大多数的如安防、智能家居、工控、自控、机电控制等领域也都是由这样的系统所组成的。我们的设计过程,其实就是把我们对系统的认识、系统的分析嵌入到系统的执行过程中。
但这样的控制需要我们对整个系统的工作机制认识的非常清楚,否则我们就无法设计出合理的控制过程,也就是无法画出相应的状态机的状态跃迁图,那自然就无法编程来实现控制功能了。
比如,我们最常见的空调控制,室内太冷了,打开加热器,但加热器的加热效果和当前的室内温度有关系,而室内温度又和外界温度、通风情况、屋内窗户/墙壁的隔热性质都有关系,所以整个室内温度的控制机制是非常复杂的,如果按我们之前的思路根本就无法解决这个问题。
但实际上我们都知道解决这个室内温度控制其实是非常简单的:水多了加面、面多了加水呗。即,设置一个室内温度计,低于设定温度就加热,高于设定温度就停止加热不就好了嘛!
这种和我们以前的控制思路不同的控制思想就是:反馈控制。
一个系统一般有三种变量:
环境变量:系统之外对系统运行有影响的变量,如窗户/门的开关情况、外界温度、窗户/墙壁的隔热性质等
控制变量:系统中调节系统行为的变量,如加热器的功率、热转换效率、出风量、出风位置等,这些变量中有些无法或难以控制的,我们将之视为环境干扰量,而只关注那些我们容易控制的变量
观测变量:测量系统当前状态的变量,如温度变送器所测得的室内温度
控制其实就是调节控制变量来克服环境变量的影响,使得测量变量达到设定范围。我们之前的固定响应式控制其实就是不考虑环境变量、也不关心观测变量,而只按既定规程来调节控制变量。这是由于我们在设计这样的控制系统时,已经充分考虑了系统所处的环境,通过精心设计将环境变量的变化情况都进行了应对(识别为不同的事件)的结果。
象固定响应式控制这样的控制系统,由于我们对整个系统的工作机制认识的非常清楚,在需要进行控制的时候,直接调节控制变量就能达到预期效果的控制方式就叫做前馈控制。前馈控制是基于当前的状况来预测后一个时刻的情况而进行控制,所以要求充分理解系统的工作机制,预测要准,这样的系统控制速度快、效果好、效率高。但如果预测的不准,则根本无法工作。
而对室内温度控制这样,我们根据当前室内温度和预期控制效果之间的偏差进行控制的方式就叫做反馈控制。反馈控制是根据当前结果和目标的误差进行反向调节,也就是我们前面说到水多了加面、面多了加水:)
反馈控制的好处就是我们不需要对整个系统的工作机制认识的非常清楚,只需要简单的测量一下观测变量就能做出正确的控制。而且反馈控制还具有自稳定能力,即当环境变量发生扰动(而这又是很常见的事情),使得系统状态出现了偏离,反馈控制能自动纠正这种偏离。所以反馈控制是现代控制系统的基础,基本上,所有的现代控制系统都是反馈型的控制系统。
之前的固定响应式控制在设计时其实也是把相应的控制变量的影响都纳入到整个系统中进行了分析与设计,只是在最终固化系统时单独把控制部分独立了出来而已
反馈控制的缺点是由于控制决策是根据结果偏差做出的,所以反馈控制的速度比较慢。同时,系统的控制效果是围绕着预期目标进行波动,控制精度取决于测量和执行设备的精度,如果控制精度要求和两设备不匹配,则系统动作频繁却收敛较慢。比如我们的小车控制,由于树莓派的CPU能力低下,我们用的又是java,所以PythonPi每1.5秒才能识别一次,而由于小车的车轮摩擦力也比较大,所以小车还不能速度太慢,否则它根本不动,因此在视频中我们就会看到小车前后反复挪动,还很容易驶出摄像头的视野范围。
当然小车前后反复挪动还有一个原因,就是小车没办法左右直接移动,只能通过前后移动过程中两车轮的差速来实现左右的移动
====================================================================================================
关注我的公众号及时获取推送的最新文章