前面已经介绍完直流电机的电流,速度和位置控制,下面使用simulink进行仿真。

首先搭建直流电机的数学模型:

python control 仿真电机加前馈_matlab


python control 仿真电机加前馈_算法_02

电机参数如下:

python control 仿真电机加前馈_自适应_03

为了更加贴合实际项目,我们使用S-Function模块来模拟数字处理器,用量化模块+限幅模块+噪音模块来模拟真实的电流电压传感器。

传感器建模如下:

python control 仿真电机加前馈_阶跃响应_04


python control 仿真电机加前馈_硬件_05


其中,相位信息是不带有噪音的,因为编码器没有噪音。

下面再介绍一下S-Function模块。

这个模块等于是一个处理器,你可以设置它的工作频率,然后使用C语言或是别的什么语言进行编程。另外提一嘴,想要使用它,需要安装matlab版的gcc编译器,可以直接从库里搜索gcc,安装第一个即可。

然后简单使用mex命令编译所有.c文件就好了。格式如下:

mex aaa.c bbb.c ccc.c ddd.c ……

这玩意儿有一大堆函数进行初始设置,不过上手之后还是非常好用的,尤其是数字控制系统仿真更是离不开它,有了它之后,我们的仿真就是一个非常逼近现实的状态。

当然还有我们的SPWM模块:

python control 仿真电机加前馈_matlab_06


整个仿真总体就是这样了:

python control 仿真电机加前馈_自适应_07

好了,仿真搭建完毕,处理速度设置为10KHz,直接开整。

先来看看电流的阶跃响应:

python control 仿真电机加前馈_自适应_08


然后是转速控制,目标设为100rpm:

python control 仿真电机加前馈_硬件_09

第一行是电流,第二行是转速。

最后是位置控制,我们让电机转一圈,也就是2*pi:

python control 仿真电机加前馈_算法_10

第一行是参考值,第二行是实际位置。也可以来看看这个过程中电流和速度的状态:

python control 仿真电机加前馈_matlab_11


有一个很明显的加速再减速的过程。

当然,对于更高难度的控制,比如说转100圈,普通的pid就不够看了,我们需要进行改进,例如抗饱和,例如参数自适应等等。

也可以试试全状态反馈,自适应,滑膜等高级控制器。

总之,有了s-function这个模块,我们可以很轻松的更改控制代码,来尝试各种不同的控制器。以上就是直流电机的仿真。

在后续文章中,我们就可以进入交流电机的世界。

不得不说,交流电机比直流电机难得不是一点半点了。