99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

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

基于滑模觀測器的FOC電機驅動算法實現---源碼

永磁同步電機采用FOC算法實現電機控制,FOC算法的控制框圖如下:

軟件實現,ADC采樣觸發實現算法的軟件流程圖如下:

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__

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

// 定義系統參數

R = 1.0;   // 電機內阻

L = 0.1;   // 電機電感

Ke = 0.01;   // 電機電動勢常數

Kt = 0.02 ;   // 電機轉矩常數

/ /定義控制器參數

Kp = 0.5 ;   //比例增益

Ki = 0.1 ;   // 積分增益

// 定義變量

theta_hat = 0.0;   // 轉子位置估計值

theta_dot_hat = 0.0 ;   // 轉子速度估計值

theta_ref = 0.0 ;   //目標轉子位置

theta_dot_ref = 0.0 ;   // 目標轉子速度

u = 0.0 ;   // 控制輸入

e_int = 0.0 ;   // 積分誤差

//定義滑模觀測器參數

lambda1 = 1.0;

lambda2 = 1.0;

#define SMO_MACRO(v) \
\

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

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;\ //更新狀態估計

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

#endif // __SMO_H__

申明:由于本人水平一般,分享的知識有誤,或者采用的方案不夠好的,歡迎各路大神指正批評,給大家帶來的不便,敬請諒解,本文觀點僅供參考。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 4
關注 171
成為作者 賺取收益
全部留言
0/200
  • hello-boy 2023-12-06 17:04
    本文只是對IPARK、PARK、CLARKE變換以及SMO滑模觀測器的算法實現進行說明,實際的FOC算法遠比這段偽代碼復雜,其中還包括了磁場定向、PI控制器等內容,但是電流采樣部分,以及控制器的輸出量和PWM的占空比如何聯系起來的等等。
    回復 1條回復
主站蜘蛛池模板: 国产激情视频一区二区 | 97视频在线 | 中文字幕一区二区日韩精品绯色 | 久久婷婷人人澡人人爽人人爱 | 伊人久久精品欧洲综合网 | 欧美孕妇变态重口另类 | 国产尺码和欧洲尺码表2022 | 亚洲国产精品一区二区久久亚洲午夜 | 一级黄色片免费看 | 偷拍呻吟高潮91 | 少妇大胆瓣开下部自慰 | 精品国产乱码久久久久久久 | 久久久久久久免费视频 | 午夜a级 | 亚洲精品久久无码AV片亚洲有色 | 国产成人精品日本亚洲第一区 | 国产精品男人影院在线播放 | 日日夜夜精品网站 | 狠狠操网址 | 国产午夜精品理论片a级探花 | 精品国产乱码久久久久久久 | 久久久久久国产精品免费播放 | 深夜看国产毛片在线视频香蕉 | 亚洲欧美日韩国产专区一区 | 国内外精品激情刺激在线 | 成人在线播放网站 | 国产91一区二区在线观看 | 在线观看欧美日韩国产 | 亚洲第一福利在线观看 | 两女女百合互慰AV赤裸无遮挡 | 日韩久草视频 | 欧美视频国产 | 久久不卡视频 | 国产AV国片偷人妻麻豆 | 久热精品视频在线观看 | 色AV综合AV综合无码网站 | 国产蜜月AⅤ网站 | 国产大片中文字幕在线观看 | 亚洲AⅤ人片在线观看无 | 国产精品黑人 | 全黄h全肉短篇禁乱np慕浅浅 |