基于motoharw平台的电机控制策略模型simulink仿真实现

Posted fpga和matlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于motoharw平台的电机控制策略模型simulink仿真实现相关的知识,希望对你有一定的参考价值。

目录

一、理论基础

二、核心程序

三、仿真测试结果


一、理论基础

        HCU的控制算法开发是一个极其复杂的过程。其过程包括多个步骤:功能概念定义、算法开发、软件编程、底层操作系统和驱动程序开发、匹配标定及验证、ECU软件灌装等。这些步骤在多数情况下相互关联且反复循环。MotoTron公司的基于产品级ECU的控制策略快速开发平台(包括:MotoHawk算法开发软件,MotoTune刷写及标定软件,产品级ECU硬件)配合ATI公司的VISION标定工具,可为客户提供一套完整的解决方案。

       MotoHawk - Production ECU-based Rapid Prototyping

        MotoHawk是基于MotoTron的ControlCore产品级软件架构和产品级ECU硬件下的策略开发软件,开发人员在Matlab/Simulink/Stateflow/RTW 编译环境下编写基于体系结构的应用软件,其可应用在ECU开发、标定及测试的各个阶段。MotoHawk利用产品级ECU硬件平台,集成了车上常用的传感器接口和执行器驱动,大大缩短了从开发到产品化的周期,降低成本。   

二、核心程序

这个是基于原来那个模型,做了部分简化,然后增加了一个stateflow控制模块,其内部的状态转移结构如下所示:

速度大于2000为状态0,速度小于2000位状态1,如果没有外部输入激励,状态2.

 

clc;
clear;
close all;
warning off;

%加载数据
load train_data.mat

data1    = a(:,2);
data2    = a(:,3);
E        = data1 - data2;
Ec       = diff(E);
E        = E(1:length(Ec));
pstudy1  = E;
pstudy2  = Ec;
trnData1 = pstudy1;
trnData2 = pstudy2;
trnData  = [trnData1,trnData2,data1(1:length(Ec))];

%由训练数据直接生成模糊推理系统
numMFs = 7;%隶属度函数个数
mfType = 'gbellmf';%类型
fisMat = genfis1(trnData,numMFs,mfType);
[x1,mf1] = plotmf(fisMat,'input',1);%初始隶属度函数
[x2,mf2] = plotmf(fisMat,'input',2);%初始隶属度函数
figure;
subplot(121);plot(x1,mf1);title('E-Initial membership functions');
subplot(122);plot(x2,mf2);title('Ec-Initial membership functions');


%使用进行给定数据的神经模糊建模
numEpochs=400;%训练次数
fisMat1=anfis(trnData,fisMat,numEpochs);

%训练后模糊推理系统的隶属函数曲线
[x1,mf1]=plotmf(fisMat1,'input',1);
[x2,mf2]=plotmf(fisMat1,'input',2);
figure;
subplot(121);plot(x1,mf1);title('E  - Fiual Membership Functions');
subplot(122);plot(x2,mf2);title('Ec - Fiual Membership Functions');

% save patient1.mat fisMat
save patient2.mat fisMat1

figure;
plot(data1(1:length(Ec)),'b');hold on
plot(evalfis([E,Ec],fisMat1),'r-o');hold off;

三、仿真测试结果

        为了测试方便,我这里做的简化,主要有如下几个方面:

第一、去掉了原来的模糊控制器,这样仿真速度可以快点,测试简单;

第二、将控制模型简化了,用一个传递函数来表示;

第三、增加了stateflow状态转移控制器。

        仿真结果如下所示:

        基本上信号的输入输出都需要借助工具箱中的CANread和CANsend模块进行输入输出。因为这个涉及到硬件,所以你这边自己需要根据硬件设备对CANread和CANsend做简单的配置。

        然后我仔细看了下硬件设备的接口配置,所以我们需要预留如下接口,作为在环设计的输入和输出接口。

        再整个模型中,首先放如下如下的模块:

       另外,再设置下canread和canwrite就可以了。我提供的第一个文件夹的工程,就是用来给你熟悉设备使用的。

A22-15

 

以上是关于基于motoharw平台的电机控制策略模型simulink仿真实现的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB实战系列(三十一)-基于MATLAB的异步电机调速系统仿真

无刷直流电机模糊PID控制

基于SVPWM的无刷直流电机矢量控制系统研究

基于FPGA的直流电机

直流电机基于matlab Simulink直流电机开环和比例控制闭环仿真含Matlab源码 2365期

MATLAB里做交流异步电动机仿真时,速度信号和转矩信号时结果为啥是负值?