对于一些比较简单的系统,这当然没有问题:跑马灯或者蜂鸣器永远不需要关心后台的控制器在做神马;但是对于一些需要高性能处理能力的测试、控制系统,需要我们注意或者说可以改进的地方还是挺多的,这里就说一下数字控制系统中的延时问题。
首先,一个高性能的数字控制系统是需要有反馈的,例如在电机的控制里面,就需要电机电流、转速等信息。电流、电压等是模拟量,需要把传感器的输出信号经过A/D转换送到控制器中,这就产生了第一类的延时问题,即采样-保持延时。这个延时并不是值A/D转换器本身的S/H窗口的时间和转换时间,因为在大多数情况下,这个时间都是ns级别的,相对于几十到几百us的控制周期是微不足道的。这个采样-保持延时是数字控制技术本身导致的,因为数字控制技术一般使用定时的采样,在每次采样的时候,采集到的数据和实际数据是一致的,但是在下一次采样时刻到来之前,系统只能使用本次采样时刻采集到的数据,这就相当于控制中使用的都是“旧”的数据,系统在两次采样时刻直接,也相当于运行在某种开环状态下。这种延时平均算下来是半个采样时间,减小这种延迟的方法自然是提高采样频率了,这需要更快的A/D。
转速的信息则使用编码器或者观测器估算。观测器的暂且不管,因为设计到更复杂的计算方法;就速度这物理量本身而言,显然在一个孤立的采样点上是无法计算速度的,至少要有两个点并且知道了两点间的时间差才能计算,这个时间差同时也造成了一种相位上的滞后,其滞后就是这个时间差,利用数值分析技术中的逆梯形微分可以较好地消除这种延时。
最后一种我们很少会提起的延时就是计算延时,貌似在控制教材里很少提起过,因为它们都太专注于数学运算了,实质性的东西反而没多少。这种延迟的具体时间是不确定的,取决于很多因素,例如算法的复杂程度,越复杂则计算所花的时间越长,这个延时有时候是无法避免的,除非使用更高性能的处理器,或者使用协处理器专门完成复杂任务;编程的技巧,越冗余、粗糙的代码计算所花的时间也越长,仔细地修饰代码可以减小这种延时;离散方法的问题,例如同样的一个积分环节,使用双线性变化法和前向欧拉法就存在一个采样周期的延时差别,这个延时的减小需要在设计离散化算法时特别注意。
以上的三种延时加在一起,就构成了数字控制系统中的计算延时;再把那些数字滤波器神马的延时都加在一起,整个系统的稳定裕度也剩余不多了,当总相位延时为180度,反馈增益又为1的时候,系统就崩溃了。
在模拟控制系统中,因为没有定时采样这些概念,信号的变化都是实时的、连续的,所以其性能在某些场合仍是数字系统不能完全比拟的,这也就能解释为什么在国外一些大公司的产品设计中,某些关键的控制系统仍然在使用模拟控制系统。当然,随着数字控制系统性能的不断提升,这些延时造成的稳定裕度下降也许有天可以达到忽略不计的水平。