中国指挥与控制学会

会员登录 会员注册
 

关注

 

关注

聊聊控制器的实现

发布时间:2020年2月24日

先拿上古时期的瓦特蒸汽机来开头,虽然也是个被用烂了的例子。。电机调速大家都是非常熟悉了,那么在蒸汽机诞生之初,该是怎么调速的呢?它的调速装置主要就是靠一对飞锤。下面是一张从网上扒来的图,看左边那个“调速机构”,如果蒸汽机的转速变快,这一对飞锤张开的角度就会变大,根据动力学,它的惯量会变大,带动调节阀门开度,从而使得转速下降,这样就使得蒸汽机的转速能比较好的稳定在一定的转速上。看看,上古时期的自动控制装置,这控制律还是非线性的呢。。

其实说起来如何实现控制器,不仅仅是只有模拟运放电路和单片机PLC,还有很多机械机构,比如大家说烂了的指南车,抽水马桶。。。其实早期的导弹也都是类似于这种机械结构的控制系统的,v2导弹是明确的使用了机械陀螺仪来调整位姿的,可惜详细资料看不到。猜想起来,也应该是陀螺仪的输出是个机械杆之类的,带动着导弹的尾翼吧。

要说到现在大家常用的,还是放大器搭的模拟电路的放大器,还有数字控制器比较常见。从Franklin的Feedback Control of Dynamic Systems拔下来的两张图,超前和滞后控制器的放大器实现。

为啥大家现在很少见模拟的控制器了呢?还在用模拟控制器的场合往往比较low,大家意识不到他们的存在。。。再就是用我一个老师的话说:“你们这代学生基本功都不行,就会偷懒用单片机实现各种逻辑,我们那个年代只能用模拟电路,甚至继电器来做各种逻辑。”的确你要实现个if or and什么的,再来个加减乘除,用模拟电路来,反正我是不行,得回去补课。

调侃完了说正事,模拟控制器被数字控制器大量替代是有原因的:

(1)模拟电路复杂逻辑和运算实现困难。加法器,减法器,比较器。。。可不是编程里面那样写几行就行的。

(2)模拟电路抗干扰能力差。用示波器看模拟电路的输出,往往是夹杂着很多毛刺的,也就是噪声。如何设计一个低噪声,高可靠的模拟电路,是十分有挑战性的。而数字电路由于使用高低电平,对于噪声抑制有着天生的优势。模拟电路对于温漂是十分敏感的,而数字电路就好得多。

不过模拟实现也有着其优势,那就是

1.模拟电路的速度快,带宽高。适合高速,但是控制逻辑又比较简单的场合,asic和传感器里面多有使用。

2.便宜,简单。很多简单的场合,几块电路一搭就行了。

那么数字实现都有哪些常见的途径呢?

1.不一定是控制系统中用的最多的,但一定是诸位见过的最多的,PC机。不一定是个人电脑那样的,有很多是可靠性更高的工控机。

优点是运算能力强,能进行开发的群体大,门槛低(没看见知乎有多少程序员,以及喊着CS无敌,一定要转专业去CS的么)。常用于对空间不敏感,成本不敏感,功耗不敏感,计算量需求大,人机界面交互复杂的控制系统。比如视觉控制的机器人,化工厂过程控制的中控系统等。

除了空间成本功耗的缺点之外,PC机的另一个问题就是实时性。win和linux都是非实时系统,如果控制频率很高的话是很难实现的,这时候就往往需要额外的实时板卡来帮忙。再就是PC机的外设接口现在一般只有串口,并口,USB,而传感/执行设备往往是五花八门的接口,这时候就需要额外的转接设备,不论是硬件复杂度还是软件开发难度,往往都会增加。

2.PLC。化工人的最爱,皮实耐用可靠。可以使用梯形图来开发逻辑,降低了开发复杂度,使得很多计算机编程能力、电子电路知识不太足的人,可以依靠着众多有着标准接口的自动化设备和仪表,来搭建一个控制系统。缺点就是略贵,空间和功耗也要求高。

3.单片机。每一个自动化系的学生,都应该有一款自己心爱的单片机,咳咳。。。

单片机到了今天,真的是已经体积又小,功耗又低,开发门槛对于众多的科班生不是问题(绝大部分支持c语言甚至c++,甚至c#,而且大部分厂家提供了library),性能够强(100MHz主频轻轻松松),外设接口灵活(AD,DA,CAN,SPI,I2C等),真的是搞控制杀人越货的利器啊。。

想十年之前,单片机普遍只有10MHz出头的主频,2-8K的内存(开个60乘60的char数组就要占用3.6k内存,内存告急!),操作硬件还需要自己算地址,给地址上赋的值都是2进制或者16进制的数,具体什么数需要看手册,现在开发单片机真是幸福。

单片机的做控制器的问题在于,人机交互不太友好,单片机上挂个屏幕,用按钮操作之类的,简单界面还行,复杂了开发起来比较费劲。这时候往往会用电脑做个“上位机程序”和其配合。再就是单片机的计算能力虽然已经很强了,但是对于越来越复杂的先进算法也是有点力不从心。对于大吞吐量的数据,比如图像,算起来也比较困难。

4. DSP。我并没用过DSP,了解的比较浅。这个东西有点像单片机,但是更适合算浮点数,外设相对没那么丰富,再往前几年,手持的多媒体设备用的很多,据我了解,控制器里用dsp的多的时候,主要还是在单片机计算能力严重不足的时候,还希望懂行的给指正。

5.FPGA。这里我首先要说的一家公司,就是NI。为啥呢?我看过的控制的论文,使用fpga实现的,清一色的是用的NI的盒子!

这玩意儿,外围是高速AD,DA,逻辑芯片是FPGA,用labview画好功能框图,就会自动将其逻辑功能部署到这个盒子的fpga芯片里面去,一股熟悉的PLC的味道啊!怪不得知乎上有人问PLC和FPGA的区别呢。但是我的心里fpga绝不是这个百盒子,而是

用有数百万逻辑门的,带宽以G来论的可编程数字逻辑芯片。NI对其易用性和性能做了折中,而其性能的潜力还没有被学界给挖掘出来。

使用fpga的一大优势就是,其描述好的数字逻辑,可以送去IC加工厂流片,做成ASIC,做出来实用的,小型低功耗的控制器。

作者:李崇