什么是控制算法
链接:https://www.zhihu.com/question/26944678/answer/44687208
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本人大学和研究生学的控制,大学做的飞思卡尔智能车,毕业后做的风电上的变频器控制,现在在计算机系当老师。
先回答问题,我所看到的,最惊艳的控制算法就是PI控制器,没有之一,简约极致之美。
下面慢慢展开:
据我所看到的,工业上大规模应用的,不管是运动控制还是过程控制,几乎都是PID控制器,其中大多数又是PI控制器,为啥不加微分D,因为会带来不稳定,啥叫不稳定,就要讲反馈这个东西了。
1.先随便聊一些八卦
谈到控制算法,有人说路径规划,有人说机器人运动学,还有人说卡尔曼滤波器,神经网络,蚁群算法,或者粒子群优化算法。我擦,这哪是控制算法,完全不是一个层面的东西,至少不属于狭义上的控制算法。
那上面那些东西属于啥,搞控制的喜欢对系统分层,一般分为决策优化层和控制层。
路径规划,机器人运动学都属于决策优化层的东西,在这一层进行全局的规划和优化,最后生成控制指令,传给控制层,控制层通过闭环反馈实现对指令的跟踪。
卡尔曼滤波器是滤波器,不是控制器,滤波器说到底是把干扰滤除,卡尔曼滤波器的不同是它构建了系统的一个动态跟踪学习模型,可以无时延地得到被测量的信号,一般对时间性要求非常高的实时控制系统会用,其他一般用FIR或者IIR滤波器就能够搞定了。
神经网络是构建非线性模型的方法,可以用来设计控制器,但更多的是做模式识别,模式分类,数据分析之类的工作,在控制上,主要是学术灌水来用,工业上几乎从未看到过,因为奶奶的,太复杂。
蚁群算法,粒子群算法,进化算法,微分进化算法,鱼群算法,*****各种XX智能优化算法,这个东西说到底就是构建了一个迭代优化学习模型,它的目的是优化,不是建模,所以我们可以用它来优化我们控制器参数,或者优化神经网络参数,或者其他一切参数,但是不能用它来构建模型,所以根本不是控制算法。
2.切入正题
说了那么多废话,那啥玩意是真正的控制算法呢?!
首先要从信号和系统,以及反馈思想开始讲起,其实,控制,通信和计算机本就是一家,国内非要分为三个学院,奶奶的,真够坑爹的。
控制算法,控制的是信号,信号是连续量,比如电压,电流,转速,功率,温度,等等,说到底信号就是一个物理量在一个域(时间或者空间)上展开。系统是啥,系统就是信号到信号的变换,比如最普通的直流电机,我加一个电压信号给电机,然后电机的转速信号慢慢升到一个固定值,这里电机就是一个系统,它实现了电压信号到转速信号的变换,改变电压,转速信号也会随着改变。
那反馈是啥东西呢?!
还是拿电机作为例子,比如空转时,我加5V电压,电机转速1000rpm,这时候我一给电机加载,转速就下降了,完蛋啦,老子就想要1000rpm,为啥变为了800,有的人说,那你把电压提高到6V不就搞定啦,当你提高到6V时候,妈的,负载又变回原来的啦,转速飙到了1200rpm,于是你不得不又把电压调回5V,其实这里面这个人就在做反馈,转速低了,加电压,转速高了,降电压,说到底就是基于偏差的控制。
反馈最早应用在放大电路的设计中,后来被维纳提升到控制论层面,泛华到一切动态系统中,包括运动控制学,社会学,经济学等等。具体可以看维纳的《控制论》,看不懂的,可以看金观涛的《控制论与科学方法论》。
信号,系统,反馈就构成控制的基本概念,控制算法的最终就是设计一个控制系统。
说到怎么样设计控制系统,必须接着从信号开始讲起,这里数学分析范畴,但是工程师不是数学家,他们不站在时间轴上去分析信号,而是站在频率轴上分析信号,为啥这样做,废话,当然是为了俩字,“简化”,但是这个简化有两个前提。
第一个前提是傅里叶老爷爷给弄出来的,任何复杂的周期性信号都可以分解为正弦信号的无穷累加和,正是有了这个东西,我们工程师才有勇气站在频率轴上去看这个世界上的形形色色的信号,这也是我们大学数学微积分的精髓,但是奶奶的,那些高数老师推了两年公式,也没有跟你说过这样一句话,简直废柴呀。
还有一个前提,就是系统必须是线性时不变系统。为啥要加这个前提,线性对应叠加定理,时不变对应卷积定理
啥玩意叫叠加定理,啥玩意又叫卷积定理,大家可以看《实用数字信号处理》这本书,或者奥本海默的《信号与系统》。
经过上面这样一说,估计有人糊涂了,这哪里是要设计控制器,简直是在烧脑子。
你理解了频率,就要进入频域世界了,也成为了一名入门控制工程师了。
现在开始继续深入,如果我们可以把复杂信号看成各种频率信号的叠加,那么我们就可以设计拆解这些信号的东东啦,这就是滤波器,低通滤波器可以滤除高频信号,其他的也可以类推。滤波器在控制器里是必须加的,因为反馈通道上,有高频干扰,必须通过滤波器把这些高频干扰滤除,这里还要看反馈通道上的信号是模拟信号还是数字信号,模拟信号进ADC之前必须加抗混叠滤波器,否则会很惨的。
3.控制器设计方法(控制算法)
下面看控制器的具体设计
经典控制设计方法,都是针对单输入单输出系统的频域设计方法
简单的系统,用根轨迹法,分析控制参数变化对系统性能的影响。
复杂的系统,用波特图法,去看相频裕度和幅频裕度的大小,以及带宽。
现代控制系统设计方法,是针对多输入多输出的系统
建立在状态方程之上的,这方面研究的不多,不敢妄加评论。
由于PID应用的太广,所以形成了自己独特的整定方法
PID就是针对单输入单输出系统的,站在频域角度去设计的,有一些经典的参数整定方法,比如ZN等,还有好多好多,
为啥应用这么广,因为简单实用。