91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

hello-boy
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
作者動態(tài)
電機驅(qū)動中弱磁控制和MTPA控制的差異
02-26 17:06
分享一個使用C語言實現(xiàn)鎖相環(huán)(PLL)以跟蹤輸入電壓(正弦波)的例程代碼
2024-10-30 17:18
一文讀懂幾種永磁同步電機(PMSM)的區(qū)別
2024-04-10 16:23
SJ/T 11893-2023《便攜式鋰離子電池儲能電源技術(shù)規(guī)范》解讀
2024-01-29 15:44
#征文#基于DSP的無感FOC驅(qū)動嵌入式軟件設(shè)計
2024-01-17 21:15

基于滑模觀測器的FOC電機驅(qū)動算法實現(xiàn)---源碼

永磁同步電機采用FOC算法實現(xiàn)電機控制,F(xiàn)OC算法的控制框圖如下:

軟件實現(xiàn),ADC采樣觸發(fā)實現(xiàn)算法的軟件流程圖如下:

PARK變換模塊宏定義代碼如下:

typedef struct { 
  _iq  Alpha;  // Input: stationary d-axis stator variable 
  _iq  Beta; // Input: stationary q-axis stator variable 
  _iq  Angle; // Input: rotating angle (pu) 
  _iq  Ds; // Output: rotating d-axis stator variable 
  _iq  Qs; // Output: rotating q-axis stator variable
  _iq  Sine;
  _iq  Cosine;  
} PARK;             
/*-----------------------------------------------------------------------------
Default initalizer for the PARK object.
-----------------------------------------------------------------------------*/                     
#define PARK_DEFAULTS {   
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
                }
/*------------------------------------------------------------------------------
PARK Transformation Macro Definition
------------------------------------------------------------------------------*/
#define PARK_MACRO(v) \
\
v.Ds = _IQmpy(v.Alpha,v.Cosine) + _IQmpy(v.Beta,v.Sine); \
    v.Qs = _IQmpy(v.Beta,v.Cosine) - _IQmpy(v.Alpha,v.Sine);
#endif // __PARK_H__
CLARKE變換模塊宏定義代碼如下:
typedef struct { 
  _iq  As;  // Input: phase-a stator variable
  _iq  Bs;// Input: phase-b stator variable
  _iq  Cs;// Input: phase-c stator variable  
  _iq  Alpha;// Output: stationary d-axis stator variable 
  _iq  Beta;// Output: stationary q-axis stator variable
} CLARKE;
/*-----------------------------------------------------------------------------
Default initalizer for the CLARKE object.
-----------------------------------------------------------------------------*/                     
#define CLARKE_DEFAULTS {
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
              } 
/*------------------------------------------------------------------------------
CLARKE Transformation Macro Definition
------------------------------------------------------------------------------*/
#define CLARKE_MACRO(v)\
\
v.Alpha = v.As;\
v.Beta = _IQmpy((v.As +_IQmpy2(v.Bs)),_IQ(0.57735026918963));\
//  1/sqrt(3) = 0.57735026918963
#endif // __CLARKE_H__

IPARK變換模塊宏定義代碼如下:

typedef struct { 

   _iq  Alpha;  // Output: stationary d-axis stator variable

  _iq  Beta; // Output: stationary q-axis stator variable
  _iq  Angle; // Input: rotating angle (pu)
  _iq  Ds; // Input: rotating d-axis stator variable
  _iq  Qs; // Input: rotating q-axis stator variable
  _iq  Sine; // Input: Sine term
  _iq  Cosine; // Input: Cosine term
    } IPARK;             
/*-----------------------------------------------------------------------------
Default initalizer for the IPARK object.
-----------------------------------------------------------------------------*/                     
#define IPARK_DEFAULTS { 
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
                          0, \
                 }


/*------------------------------------------------------------------------------
Inverse PARK Transformation Macro Definition
------------------------------------------------------------------------------*/
#define IPARK_MACRO(v) \
\
v.Alpha = _IQmpy(v.Ds,v.Cosine) - _IQmpy(v.Qs,v.Sine); \
v.Beta  = _IQmpy(v.Qs,v.Cosine) + _IQmpy(v.Ds,v.Sine);
#endif // __IPARK_H__

滑模觀測器參考代碼如下:

// 定義系統(tǒng)參數(shù)

R = 1.0;   // 電機內(nèi)阻

L = 0.1;   // 電機電感

Ke = 0.01;   // 電機電動勢常數(shù)

Kt = 0.02 ;   // 電機轉(zhuǎn)矩常數(shù)

/ /定義控制器參數(shù)

Kp = 0.5 ;   //比例增益

Ki = 0.1 ;   // 積分增益

// 定義變量

theta_hat = 0.0;   // 轉(zhuǎn)子位置估計值

theta_dot_hat = 0.0 ;   // 轉(zhuǎn)子速度估計值

theta_ref = 0.0 ;   //目標(biāo)轉(zhuǎn)子位置

theta_dot_ref = 0.0 ;   // 目標(biāo)轉(zhuǎn)子速度

u = 0.0 ;   // 控制輸入

e_int = 0.0 ;   // 積分誤差

//定義滑模觀測器參數(shù)

lambda1 = 1.0;

lambda2 = 1.0;

#define SMO_MACRO(v) \
\

Te = Kt * (i_a * sin(theta_hat) - i_b * cos(theta_hat));\    //計算電機電磁轉(zhuǎn)矩

s1 = theta_dot_hat - lambda1 * Te;\    // 計算滑模觀測器誤差

s2 = theta_hat - theta_ref;\ 

u = -Kp * s1 - Ki * e_int ;\ // 計算控制器輸出

theta_dot_hat += (R / L) * i_a - (Ke / L) * sin(theta_hat) * u theta_hat += theta_dot_hat;\ //更新狀態(tài)估計

e_int += s2;\ //更新積分誤差

#endif // __SMO_H__

申明:由于本人水平一般,分享的知識有誤,或者采用的方案不夠好的,歡迎各路大神指正批評,給大家?guī)淼牟槐悖凑堈徑猓疚挠^點僅供參考。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 4
關(guān)注 172
成為作者 賺取收益
全部留言
0/200
  • hello-boy 2023-12-06 17:04
    本文只是對IPARK、PARK、CLARKE變換以及SMO滑模觀測器的算法實現(xiàn)進行說明,實際的FOC算法遠(yuǎn)比這段偽代碼復(fù)雜,其中還包括了磁場定向、PI控制器等內(nèi)容,但是電流采樣部分,以及控制器的輸出量和PWM的占空比如何聯(lián)系起來的等等。
    回復(fù) 1條回復(fù)
主站蜘蛛池模板: 晋中市| 岚皋县| 陈巴尔虎旗| 交城县| 鄂温| 平度市| 临夏县| 澎湖县| 台中市| 江西省| 南平市| 松潘县| 文安县| 五常市| 北宁市| 麦盖提县| 常熟市| 沈丘县| 禹州市| 新化县| 凌云县| 湖北省| 永清县| 乌兰浩特市| 吴堡县| 河曲县| 桐城市| 保康县| 平度市| 新晃| 九江县| 油尖旺区| 炎陵县| 牟定县| 荔浦县| 新泰市| 甘洛县| 云霄县| 启东市| 乾安县| 北宁市|