编者按:这个推文昨天在使用手机“微小宝”回复问题的时候,不小心误删除了。现在重新给出,便于将来同学们查询。
卓老师,您好。数学系学生刚刚学控制论,就拿电机来说,书本上讲了很多控制方法,也看起来很有效,可是实际上我们却连电机的传递函数都不知道,又该怎样使用这些方法呢?
普通的直流电机
学习的控制理论通常包括有经典控制理论和现代控制理论,此外还包括有鲁棒控制、预测控制、自适应控制、最优控制等等。按照郭朝晖老师在其推文“该不该学习自动化专业”一文中提到,这些理论看起来很完美,但应用的机会却很少。越是高级的控制理论约只是用在“点上”,普遍应用的为经典的PID控制,这些高级算法是知识过剩的。
PID控制算法有比较成熟的控制参数整定过程,对于控制对象的模型要求较少。随着嵌入式计算机性能增强以及控制对象进一步复杂,现在基于模型的控制方法越来越普及。因此前面提问中关于对象数学模型该如何建立呢?
建立控制对象的模型可以分为两大类:
第一类:机理分析方法
这类建模方法是基于对控制对象构成有明确清楚的理解,将其内部相互管理的各个部件按照基本的物理规律描述其相关依赖的数学方程,通过化简最终得到系统的数学模型。可以是输入输出之间的高阶微分方程,或者是基于内部状态变量的一阶微分方程组;
这类方法除了要求具有相关领域的专业知识(力学、电学、生物等),另外还需要能够准确获得系统内各个部件的精确参数。
第二类:系统辨识方法
第二类方法则是通过对控制对象进行是产出施加输入控制信号,通过测量系统的输出,通过数学方法辨识出系统的数学模型。
基于数据驱动的系统辨识方法,既可以对已有的模型辨识其中的系统参数,也可以在一般通用(线性是不变系统)系统模型的基础上,完成系统参数的辨识。
对于直流电机的模型建立,由于它相对比较简单,适用场合比较广泛,所以在很多控制教科书上都会进行比较详细的分析。在智能车竞赛中,车模的前进动力主要就是来自于小型直流电机。
通常情况下,使用H桥电路产生大小和极性可变的电压去控制直流电机的输出转速。其中主要的参数包括有电机电枢的电阻R、电感L 、EMF常数Km、电机力矩常熟Kb、电机转子的转动惯量J以及摩擦系数b。
已知这些参数之后,便可以建立起输入电压V(t)与输出转速omiga(t)之间的微分方程,并进一步可以获得输入输出之间的传递函数。
基于这些模型,便可以借助于MATLAB工具完成控制器的设计与仿真。
那么如何获得上述模型中的各个参数呢?下面给出两个实验。
实验1:电机基本参数测量
电机模型中的参数测量需要借助于专用的工具,下面这个实验只是显示了如何测量其中电信号相关的参数。至于转动惯量、摩擦系数等,由于还需要考虑到与电机输出相连的车模其他机构的 影响,所以需要另外测量。
下面是测量电机基本参数的工具:电源、电压表、电流取样电阻、电流限流电阻等。
下面几个动图显示了测量的步骤:
固定电机
在电机输出轴上增加一个指示胶带,便于测量转速
这个实验显示了使用通用设备测量电机的一般参数,步骤复杂,可以测量的参数有限。现在也有专用电机测量设备,可以自动测量电机的所有电气、机械参数。
这个实验室在MATLAB中联机帮助中的一个系统辨识的例子。通过输入电机的实际输出转速数据,可以对于电机的各个电气和机械参数进行自动辨识。
电机参数自动辨识步骤
上述过程可以在网络上的MATHWORK公司给出一些教学视频中看到,在这里就不进行累述了。
这个实验只需要在系统中使用Simulink建立电机的基本模型,通过实际测量获得电机的输出转速。在开始的时候,输出转速与仿真结果不同,使用MATLAB中的参数辨识工具,便可以通过数据逐步或者最优的电机参数,使得最终的仿真结果与实际数据相符。
对于更一般的情况,还可以通过输入输出之间的数据相关、扫频、单位阶跃响应等方法进行更加一般性的建模。
一旦有了系统准确的数学模型,那么设计满足要求的控制器就可以自动生成,并且通过系统的仿真进行验证。很多先进的控制理论和方法就可以 应用到实际控制当中。
基于控制对象模型进行控制器设计,可以大大节省实际进行参数整定和调试的过程。通过MATLAB仿真过程,可以看出进行系统参数辨识需要进行大量的数学计算,因此进行系统建模还需要进行离线计算,完成参数识别之后,在设计出最优控算法,部署在单片机中。
相信随着未来的MCU的处理能大大增强,这种系统建模算法可以在单片机中完成。这样控制算法的实现便可以自动进行。从而未来的智能车不再是“调”出来的,而是有其自己自动学习出来的,调试车模就会变成训练车模。
希望大家能够将课堂中所学习的内容与比赛中的问题结合起来,在实践能力与理论能力两个方面都能够取得进步。