Итерационный процесс для моделирования двигателя постоянного тока + пропеллер - PullRequest
0 голосов
/ 16 июня 2019

В настоящее время я пытаюсь смоделировать двигатель постоянного тока, который подключен к винту.Поэтому я создал модель для винта, батареи и двигателя постоянного тока (в соответствии с эквивалентной схемой).

Пропеллер: ВХОДЫ: pitchInches, DiameterInches, об / мин, rho, Pprop, Тяга ВЫХОДЫ: Ct и Cp

Батарея: эта модель основана на представленной здесь модели https://www.mathworks.com/help/physmod/sps/powersys/ref/battery.html#bry4req-2 Единственный необходимый физический вход - это IBattery.Необходимые константы были получены в результате экспериментов.

Двигатель постоянного тока: основные уравнения для выбранной мной модели: w_em = (VI * Ra) * Kv |T_em = (I-I0) / KV

Я предполагаю, что w_em равно w_prop

Моя проблема в уравнении w_em = (VI * Ra) * Kv!Я пытаюсь численно воссоздать экспериментальную установку.В этом тесте настройка дроссельной заслонки ЭМ была изменена с 10% до 100%, и были зарегистрированы частота вращения, крутящий момент, ток и напряжение.Питание осуществляется от батарей.

Теперь моя проблема: -> когда я увеличиваю дроссель с течением времени, напряжение батареи падает, а ток увеличивается (результаты эксперимента) -> но в соответствии с этой формулой, когда напряжение уменьшается иток увеличивается, обороты должны уменьшаться, что неправильно!Я должен интерпретировать некоторые переменные в формуле неправильно.Кто-нибудь может мне помочь ?

while deltaRPM >=20 
if ~exist('rpmEff','var')
load('Eff_curve.mat');
end 
noIteration = noIteration + 1;
if noIteration >= 1000      
    disp('There was a problem with convergence! Check code!');
    break;
end 
if ~exist('Ct','var')
    Ct = 0.105 ;                                                         
if ~exist ('Cp','var')
    Cp=0.022;
end 
n = rpm / 60;
dia = propData(1) * 0.0254;
Pprop = Thrust * n * dia / (Ct / Cp);
[Pabs,torque,Cp,Ct] = EXP_prop_curves(pitchInches, diameterInches, rpm, 
 Velocity, rho, Pprop, Thrust);
 Pprop = Thrust * n * dia / (Ct / Cp);
 TorqueProp = Pprop / ( 2*pi/60 * rpm);
 mu = Effrpm.setup(rpm);
 TorqueEm = TorqueProp * 1/ mu;
 Ibattery = TorqueEm * motorData(1) * 2 * pi / 60 + motorData(2);
 [Vbattery, ChargePcntNew, ~, ~, batteryVolume, emissions, ~] = 
  batteryModel( Ibattery, ChargePcnt, Capacity, cells_series, 
 timeStep,'batteryType', 'lipo');
 rpmNew              = ( Vbattery - Ibattery * motorData(3)) * 
 motorData(1);
 estimatedEnd        = ChargePcnt/100*Capacity/Ibattery*60;
 %% ERROR COMPUTATION 
 deltaRPM = abs(rpm - rpmNew);
 rpm =  rpmNew;
 end

Расчет rpmNew полностью неверен.

...