app合作开发,福州seo推广服务,亚马逊网站推广怎么做,内容营销是一种什么模式注#xff1a;#xff08;我这个是用simulink仿真做的SimpleFOC#xff0c;因此代码是m语言的#xff0c;在stm32可以改成C的#xff0c;这两种基本差不多#xff0c;搭建的SimpleFOC仿真下载链接#xff1a;https://download.csdn.net/download/qq_35239859/88642607?… 注我这个是用simulink仿真做的SimpleFOC因此代码是m语言的在stm32可以改成C的这两种基本差不多搭建的SimpleFOC仿真下载链接https://download.csdn.net/download/qq_35239859/88642607?spm1001.2014.3001.5501
SimpleFOC核心代码如下
function [Ta,Tb,Tc] fcn(Uq,Ud,angle_el)Ta0;Tb0;Tc0;PI_2 pi/2;PI_3 pi/3;voltage_power_supply24;angle_el mod(angle_el,2*pi); % U_alphaUd*cos(angle_el)-Uq*sin(angle_el); % U_betaUd*sin(angle_el)Uq*cos(angle_el);if UdUrefsqrt(Uq*Uq Ud*Ud) / voltage_power_supply;angle_el mod(angle_elatan2(Uq,Ud),2*pi);elseUrefabs(Uq) / voltage_power_supply;if Uq0 angle_el mod(angle_elPI_2,2*pi);elseangle_el mod(angle_el-PI_2,2*pi);endendif Uref 0.577 Uref 0.577;endif Uref-0.577 Uref-0.577; enddisp(Uref);sector floor(angle_el / PI_3) 1; T1 sqrt(3)*sin(sector*PI_3 - angle_el) * Uref; T2 sqrt(3)*sin(angle_el - (sector-1.0)*PI_3) * Uref;T0 1 - T1 - T2; switch(sector) case 1Ta T1 T2 T0/2;Tb T2 T0/2;Tc T0/2;case 2Ta T1 T0/2;Tb T1 T2 T0/2;Tc T0/2;case 3Ta T0/2;Tb T1 T2 T0/2;Tc T2 T0/2;case 4Ta T0/2;Tb T1 T0/2;Tc T1 T2 T0/2;case 5Ta T2 T0/2;Tb T0/2;Tc T1 T2 T0/2;case 6Ta T1 T2 T0/2;Tb T0/2;Tc T1 T0/2;end 网上很多Stm32移植SimpleFOC的程序都是做FOC开环的所以将很多重要的东西都删了因此要想用SimpleFOC做电流闭环不能将网上或者视频里的代码直接移植使用还要注意Ud和Uq电压在核心代码中是怎么处理的也就是以下几句 % U_alphaUd*cos(angle_el)-Uq*sin(angle_el); % U_betaUd*sin(angle_el)Uq*cos(angle_el);if UdUrefsqrt(Uq*Uq Ud*Ud) / voltage_power_supply;angle_el mod(angle_elatan2(Uq,Ud),2*pi);elseUrefabs(Uq) / voltage_power_supply;if Uq0 angle_el mod(angle_elPI_2,2*pi);elseangle_el mod(angle_el-PI_2,2*pi);endend 这一部分代码这是根据Ud和Uq算磁场方向的网上很多教程包括P站很多都写错了将这部分代码写成如下方式 U_alphaUd*cos(angle_el)-Uq*sin(angle_el); U_betaUd*sin(angle_el)Uq*cos(angle_el);Urefsqrt(U_alpha*U_alpha U_beta*U_beta) / voltage_power_supply;if Uq0 angle_el mod(angle_elPI_2,2*pi);elseangle_el mod(angle_el-PI_2,2*pi); 这种方式如果你只是想用开环做FOC控制的话没有问题如果要做Id和Iq的闭环就不行了这种写法Ud电压无论正负都只是给Uref电压增加了幅值做不到磁场矢量根据Uq和Ud的动态调整因此无法将Id控成0。这也是我在做电流闭环时候排查很久的坑如果你也遇到了给定Ud电压正负都一样的效果看一下程序是不是也是这样写的。