MATLAB数值仿真FOC矢量控制

本文通过数值仿真加深对FOC矢量控制的理解。状态空间方程本质上是微分方程,本文的核心之处利用四阶龙格库塔方法求解PMSM状态空间方程。在建模的过程中,整个模型中,忽略了逆变器建模,电机状态方程选择了旋转轴系的状态方程,因此省去了unti-park环节。仿真模型分为三个子模块,电机状态方程求解模块(PMSM模块)、控制环路模块、坐标变换模块,代码基本通过MATLAB-Function模块实现。

Simulink整体截图

PMSM模块1

function [id_now,iq_now,n_now,theta_now,d] = rungekutta_PMSM(uq,ud)
% id_now = id_last+Ts*(ud-R*id_last+omega_e*Ld*iq_last)/Ld;
% iq_now = iq_last+Ts*(uq-R*iq_last-omega_e*Ld*id_last-omega_e*psi_f)/Lq;
persistent iq_last id_last omega_last theta_last j
if isempty(iq_last)iq_last = 0;id_last = 0;omega_last = 0;theta_last = 2;j = 5000;
end
% Ld = 0.0028;
% Lq = 0.0028;
% Pn = 4;
% psi_f = 0.109;
% J = 0.000245;
% R = 1.86;Ld = 0.0068;
Lq = 0.0152;
Pn = 3;
psi_f = 0.24;
J = 0.001;
R = 0.98;
if j<2load = 2;
elseload = 0;
endTs = 0.0001;
% h = Ts/2;
h = Ts;
k=zeros(4,4);
id_last_initial = id_last;
iq_last_initial = iq_last;
omega_last_initial = omega_last;for i=1:1:3k(i,1) = (ud-R*id_last+omega_last*Ld*iq_last)/Ld;k(i,2) = (uq-R*iq_last-omega_last*Ld*id_last-omega_last*psi_f)/Lq;Te = 1.5*Pn*iq_last*psi_f;k(i,3) = (Te-load)/J/Pn;%k(i,4) = omega_last;id_last = id_last+h;iq_last = iq_last+h;omega_last = omega_last+h;
end
id_now = id_last_initial+(k(1,1)+2*k(2,1)+2*k(3,1)+k(4,1))*h/6;
iq_now = iq_last_initial+(k(1,2)+2*k(2,2)+2*k(3,2)+k(4,2))*h/6;
omega_now = omega_last_initial+(k(1,3)+2*k(2,3)+2*k(3,3)+k(4,3))*h/6;
n_now = omega_now*60/2/pi/Pn;
theta_now = theta_last+omega_now*Ts;id_last = id_now;
iq_last = iq_now;
omega_last = omega_now;
theta_last = theta_now;
j=j-1;
d = j;

控制环路模块2

此模块又分三个子模块,1个速度环和2个电流环模块。

function y = speed_loop(iq_ref,iq_fdb)persistent error_1 Ui
if isempty(error_1)
error_1=0;
Ui=0;
endLq = 0.0152;
R = 0.98;
a = 3000;
Kp = 0.06;
Ki = 0.04*20;
Ts = 0.0001;error = iq_ref-iq_fdb;
Up = Kp*error;
Ui = Ki*Ts*error+Ui;
y = Up + Ui;%限幅
max = 2.4;
min = -max;
if y > max
y = max;
elseif y < min
y =min;
else
y = y;
end
function uq = current_loop_iq(iq_ref,iq_fdb)
persistent error_1 Ui
if isempty(error_1)
error_1=0;
Ui=0;
endLq = 0.0152;
R = 0.98;
a = 3000;
Kp = Lq*a;
Ki = R*a;
Ts = 0.0001;error = iq_ref-iq_fdb;
Up = Kp*error;
Ui = Ki*Ts*error+Ui;
uq = Up + Ui;Vdc = 60;
max = 0.9*Vdc*sqrt(1/3);
min = -max;
if uq > max
uq = max;
elseif uq < min
uq = min;
else
uq = uq;
end
function ud = current_loop_id(id_ref,id_fdb)persistent error_1 Ui
if isempty(error_1)
error_1=0;
Ui=0;
endLd = 0.0068;
R = 0.98;
a = 3000;
Kp = Ld*a;
Ki = R*a;
Ts = 0.0001;error = id_ref-id_fdb;
Up = Kp*error;
Ui = Ki*Ts*error+Ui;
ud = Up + Ui;Vdc = 60;
max = 0.9*Vdc*sqrt(1/3);
min = -max;
if ud > max
ud = max;
elseif ud < min
ud =min;
else
ud = ud;
end

坐标变换模块3

可以观察两相静止轴系、三相静止轴系的电流信息

function [alpha,beta] = anti_park(d,q,theta)
alpha = d*cos(theta)-q*sin(theta);
beta = d*sin(theta)+q*cos(theta);
function [a,b,c] = anti_clarke(alpha,beta)
a = alpha;
b = -1/2*alpha+sqrt(3)/2*beta;
c = -1/2*alpha-sqrt(3)/2*beta;

参考文献


  1. https://blog.csdn.net/qq_50632468/article/details/121179827 ↩︎

  2. https://blog.csdn.net/qq_50632468/article/details/115936457 ↩︎

  3. 袁雷. 现代永磁同步电机控制原理及 MATLAB 仿真[M]. 北京航空航天大学出版社, 2016. ↩︎

MATLAB数值仿真FOC矢量控制相关推荐

  1. FOC矢量控制及仿真

    文章目录 前言 一.FOC矢量控制原理 1. FOC矢量控制概念 2.电机相关知识简介 3.FOC控制 二.FOC矢量控制仿真 1.模块介绍 2.simulink仿真 3.仿真结果 总结 前言 一.F ...

  2. 多智能体系统MASs,编队控制,自适应理论,基于干扰观测器的控制DOBC,Matlab数值仿真实验

    61.多智能体系统MASs,编队控制,自适应理论,基于干扰观测器的控制DOBC,Matlab数值仿真实验 ID:561999679279244881

  3. 【2022年马上开课了】手撕永磁同步电机FOC矢量控制培训讲座

    课程大纲: FOC需要复杂的数学算法,这对于普通的设计人员来说可能并不熟悉,所以在过去,设计师们通常依赖于复杂的数字讯号处理芯片来实现控制. 并且,目前关于FOC技术而言,虽然有多家厂商开发了专用于电 ...

  4. 双方博弈复制动态方程(y-z,z=0.3,z=0.5,z=0.7)与matlab数值仿真——matlab2016a版本

    双方博弈复制动态方程(y-z,z=0.3,z=0.5,z=0.7)与matlab数值仿真--matlab2016a版本 注明:源于对<基于演化博弈的装配式建筑应用研究>-金倩-4.4.1. ...

  5. 两相步进电机FOC矢量控制Simulink仿真模型 采用针对两相步进电机的SVPWM控制算法,实现FOC矢量控制,DQ轴解耦控制

    两相步进电机FOC矢量控制Simulink仿真模型 1.采用针对两相步进电机的SVPWM控制算法,实现FOC矢量控制,DQ轴解耦控制- 2.转速电流双闭环控制,电流环采用PI控制,转速环分别采用PI和 ...

  6. 两相步进电机FOC矢量控制Simulink仿真模型

    两相步进电机FOC矢量控制Simulink仿真模型 1.采用针对两相步进电机的SVPWM控制算法,实现FOC矢量控制,DQ轴解耦控制- 2.转速电流双闭环控制,电流环采用PI控制,转速环分别采用PI和 ...

  7. 【STM32-HAL库】一步步搭建出FOC矢量控制(附C代码)

    说明 本文为无刷电机或PMSM电机驱动的简易代码,旨在分享一些个人调试过程的小心得,提供一个demo文件,程序仍有许多不完善的地方,建立起个人的FOC底层驱动,可以帮助快速熟悉FOC算法原理与使用方法 ...

  8. Field-Oriented Control (FOC) 矢量控制 磁场定向控制

    永磁同步电机(PMSM, Permanent Magnet Synchronous Motor)由于它噪声小.高效节能的显著优势,广泛被用于新能源汽车.机器人伺服和家电等领域. 上图是一个 PMSM ...

  9. 永磁同步电机simulink仿真——PMSM矢量控制

    学了一年多的PMSM了,用最快的方法在simulink里搭建一个基础的矢量控制模型,不熟悉的话可以参考下,有空更新每个步骤细节和其他实现方法,创作不宜,记得点赞收藏. 1 矢量控制系统框图 话不多说, ...

最新文章

  1. Go远超Python,机器学习人才极度稀缺,全球16,655位程序员告诉你这些真相
  2. JPA学习(6)JPQL
  3. 这便是有三AI一年的底蕴,那些5000粉丝1000阅读量的AI技术干货
  4. cocos2d - CCSprite各种动画
  5. oracle 子表数据变化时主表也会更新_亿信ABI版本重大更新,新增60余个实用新功能,还有一项黑科技...
  6. 视觉设计师跟平面设计_使设计具有视觉吸引力
  7. 领域模型架构 eShopOnWeb项目分析 上
  8. React、PHP送书中奖名单,快看有你么!
  9. 【车道线检测与寻迹】2月13日 CV导论+数字图像处理与opencv实践+canny边缘检测
  10. Redis核心知识点总结(一万五千字,请耐心读完)
  11. 视频监控安防平台-国标35114(GB35114)A级检测内容
  12. 计算机组成原理cs表示,计算机组成原理第四讲(科大罗克露)
  13. 自动写诗APP项目、基于python+Android实现(技术:LSTM+Fasttext分类+word2vec+Flask+mysql)第四节
  14. 人类的终极目标是什么?
  15. mysql连接泄露 定位_数据库连接泄漏
  16. Neural Transducer, MoCha模型总结
  17. 使用Jmeter输出错误响应结果到日志
  18. HTML实现图片点击放大效果
  19. 如何在SQL中实现排序间接
  20. Windows 利用Anaconda创建pytorch等环境

热门文章

  1. SAP FICO - 外币交易(汇率类型/货币交换汇率)
  2. w7无法訪问计算机上硬盘分区,惠普笔记本win7系统无法调整硬盘分区的解决方法...
  3. activetcl与spin的安装
  4. Pyinstaller打包selenium去除chromedriver黑框问题解决!!!
  5. java毕业设计宠物之家Mybatis+系统+数据库+调试部署
  6. 戴维营第五天上课总结
  7. 游戏五子棋(c语言)
  8. 报错previous declaration invalid use of incomplete type
  9. 微信小程序之轮播图swiper组件自定义指示点样式
  10. 补充 sealtalk 群组分析