我想在 c 代碼(對于 stm32)中實作來自 matlab 的通量觀察器(https://de.mathworks.com/help/mcb/ref/fluxobserver.html)。為此,我需要計算通量計算的積分。但是,由于我是一個業余愛好者,我不知道如何在源代碼中實作這一點(也不知道如何手動計算)。
ψα= ∫?(Vα?IαR)dt? (Ls?Iα)
這就是我所說的術語。強烈建議提供有關此主題的任何幫助。
謝謝
編輯:這就是我嘗試過的:
if(TimerFlag)
{
TimerFlag = 0;
ClarkTransformation(&ialpha, &ibeta, cur_c, cur_b);
ClarkTransformation(&valpha, &vbeta, vol_c, vol_b);
dt = TimeElapsedS - TimeElapsedSOld;
TimeElapsedSOld = TimeElapsedS;
fluxalpha = ((valpha-ialpha*R)*dt - (Ls*ialpha));
fluxbeta = ((vbeta-ibeta*R)*dt - (Ls*ibeta));
fluxrotor = sqrtf((fluxalpha*fluxalpha) (fluxbeta*fluxbeta));
torquemotor = (3.0f / 2.0f) * PoleNumber * (fluxalpha*ibeta - fluxbeta*ialpha);
anglemotor = arctan(fluxbeta/fluxalpha);
}
uj5u.com熱心網友回復:
離散積分只是求和(矩形規則),所以你只需像你一樣將每個樣本的東西相加但是你也有常數項,不能多次添加......我看到它是這樣的:
// some globals and or init
float fluxalpha= -Ls*ialpha;
float fluxbeta = -Ls*ibeta;
// this is in your timer ISR or whatever
void some_timer_event()
{
float dt = elapsed_time();
fluxalpha = (valpha-ialpha*R)*dt;
fluxbeta = (vbeta-ibeta*R)*dt;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512729.html
標籤:C数学
上一篇:根據輸入生成隨機6個字符
