💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
进行离线数据的传感器仿真可以通过使用仿真软件(如MATLAB/Simulink、PSCAD等)来模拟永磁同步电机(PMSM)的工作。在研究无传感器滑模观测器时,您可以使用仿真软件建立PMSM的数学模型,并在其中集成无传感器滑模观测器。通过这样的仿真,您可以模拟PMSM在不同工况下的运行情况,观察无传感器滑模观测器对PMSM速度和位置的估计性能。
在进行离线数据的传感器仿真时,您需要考虑以下几个方面:
1. 建立PMSM的数学模型:包括电机的电气特性、机械特性和控制策略等。
2. 集成无传感器滑模观测器:设计并集成无传感器滑模观测器到PMSM的控制系统中。
3. 运行仿真并记录数据:通过对PMSM进行不同工况下的仿真运行,并记录PMSM的速度、位置等数据。
4. 评估无传感器滑模观测器性能:分析仿真数据,评估无传感器滑模观测器对PMSM速度和位置的估计性能。
在永磁同步电机领域,无传感器滑模观测器研究是一项重要的课题。通过分析和实验,我们可以深入了解无传感器滑模观测器在永磁同步电机控制中的应用,以及它在提高电机性能和降低成本方面的潜力。这项研究将有助于推动永磁同步电机技术的发展,并为未来的工业应用提供更加可靠和高效的解决方案。
通过以上步骤,您可以进行离线数据的传感器仿真,并研究无传感器滑模观测器在PMSM控制中的应用效果。
📚2 运行结果
主函数代码:
clear all
%%Set motor parameter
ls = 0.0085;
rs = 2.875;
rated_flux = 0.175;
Pole_pair = 4;
%%Run PMSM control model
SampingTime = 0.000001;
sim('pmsm_ideal/pmsm_ideal.slx');
DataLength = length(V);
%%Sliding Mode Observer Parameter
I_hat=[0;0];
I_Gradient_hat=[0;0];
k = 200;
%%Log Data
BackEMFCommandLog(1:DataLength,1:2) = 0;
BackEMFAfterLPFLog(1:DataLength,1:2) = 0;
EstimateTheata(1:DataLength) = 0;
EstimateW(1:DataLength) = 0;
EstimateWAfterLPF(1:DataLength) = 0;
EstimateTheataAfterCompensate(1:DataLength) = 0;
RealAngle(1:DataLength) = 0;
for i=1:DataLength
%%Sliding Mode Obsevvation
I_hat = I_hat + SampingTime * I_Gradient_hat;
%k*sign(I_hat-I(i,:)') >= Max(ea,eb)
u = k*sign(I_hat-I(i,:)');
I_Gradient_hat = V(i,:)' / ls - I_hat * (rs/ls) - u /ls;
BackEMFCommandLog(i,1:2) = u;
if (i == 1)
continue;
end
%%Get Back-EMF on Clarke axis
%First order butterworth filter, cut-off Freq=50hz
BackEMFAfterLPFLog(i,:) = 0.00015705*BackEMFCommandLog(i,:)'+0.00015705*BackEMFCommandLog(i-1,:)' + 0.99968*BackEMFAfterLPFLog(i-1,:)';
%%Get Estimate Electrical Angle
EstimateTheata(i) = atan2(-BackEMFAfterLPFLog(i,1),BackEMFAfterLPFLog(i,2));
%Shift(-pi to pi)
if(EstimateTheata(i) < 0)
EstimateTheata(i) = 2*pi+EstimateTheata(i);
end
%%Get Estimate Electrical Speed
EstimateW(i) = (EstimateTheata(i) - EstimateTheata(i-1));
%Compensate phase change
if( EstimateW(i) > pi)
EstimateW(i) = 2*pi-EstimateW(i);
elseif ( EstimateW(i) < -pi)
EstimateW(i) = 2*pi+EstimateW(i);
end
EstimateW(i) = EstimateW(i) / SampingTime;
%First order butterworth filter, cut-off Freq=50hz
EstimateWAfterLPF(i) = 0.00015705*EstimateW(i)+0.00015705*EstimateW(i-1) + 0.99968*EstimateWAfterLPF(i-1);
%%Compensate Estimate Electrical Angle phse shift
EstimateTheataAfterCompensate(i) = EstimateTheata(i) + atan(EstimateWAfterLPF(i)/(100*pi));
if(EstimateTheataAfterCompensate(i) > 2*pi)
EstimateTheataAfterCompensate(i) = EstimateTheataAfterCompensate(i) - 2 * pi;
end
%%Get Real Electrical Angle
RealAngle(i) = atan2(sin(theata(i)),cos(theata(i)));
%Shift(-pi to pi)
if(RealAngle(i) < 0)
RealAngle(i) = 2*pi+RealAngle(i);
end
end
T = [0:SampingTime:SampingTime*(DataLength-1)];
%%Plot Estimate Angle and Speed
figure('Name','SMO Data');
subplot(2,1,1);
plot(T,EstimateTheata);
title('SMO Estimate Electrical Theata');
xlabel('time')
ylabel('');
subplot(2,1,2);
plot(T,EstimateWAfterLPF)
title('SMO Estimate Electrical Speed');
ylabel('W');
xlabel('time')
%%Real Angle and SMO Angle
figure('Name','Real Angle and SMO Angle');
plot(T,RealAngle);
hold on
plot(T,EstimateTheataAfterCompensate,'--');
hold off
xlabel('time')
ylabel('');
legend('RealAngle','Senserless Angle')
仿真见第4部分。
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]刘计龙,肖飞,沈洋,等.永磁同步电机无位置传感器控制技术研究综述[J].电工技术学报, 2017, 32(16):13.DOI:10.19595/j.cnki.1000-6753.tces.160741.
[2]王辉,王长松,钟黎萍,等.基于滑模观测器的永磁同步电机低速下无传感器转子位置检测的研究[J].微电机, 2011, 44(1):61-64.DOI:10.3969/j.issn.1001-6848.2011.01.017.
[3]王悍枭,刘凌,吴华伟.改进型滑模观测器的永磁同步电机无传感器控制策略[J].西安交通大学学报, 2016, 50(6):6.DOI:10.7652/xjtuxb201606016.