<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
      中華工控網首頁
        P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
        D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
        電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
      基于TMS320F2812的永磁同步電動機控制
      萬國機械
      收藏本文     查看收藏

      第7章  基于TMS320F2812的永磁同步電動機控制

      例1、空間矢量算法實現

       

      SVGEN_DQ對象結構體定義

      typedef struct {

      _iq Ualpha;      // 輸入: 軸參考電壓

      _iq Ubeta;        // 輸入: 軸參考電壓

      _iq Ta;             // 輸出:參考相位a開關函數

      _iq Tb;             // 輸出:參考相位b開關函數

      _iq Tc;             // 輸出:參考相位c開關函數

      void (*calc)(); //        函數指針

      } SVGENDQ;

      typedef SVGENDQ *SVGENDQ_handle;

      SVGEN_DQ模塊調用方法:

      main()

      {

      }

      void interrupt periodic_interrupt_isr()

      {

      svgen_dq1.Ualpha = Ualpha1;          // 提供輸入參數:svgen_dq1

      svgen_dq1.Ubeta = Ubeta1;              // 提供輸入參數:svgen_dq1

      svgen_dq2.Ualpha = Ualpha2;          // 提供輸入參數:vgen_dq2

      svgen_dq2.Ubeta = Ubeta2;              // 提供輸入參數:svgen_dq2

      svgen_dq1.calc(&svgen_dq1);          // 調用函數模塊svgen_dq1

      svgen_dq2.calc(&svgen_dq2);          // 調用函數模塊svgen_dq2

      Ta1 = svgen_dq1.Ta;                        // 訪問運算結果svgen_dq1

      Tb1 = svgen_dq1.Tb;                        // 訪問運算結果svgen_dq1

      Tc1 = svgen_dq1.Tc;                        // 訪問運算結果svgen_dq1

      Ta2 = svgen_dq2.Ta;                        // 訪問運算結果svgen_dq2

      Tb2 = svgen_dq2.Tb;                        // 訪問運算結果 svgen_dq2

      Tc2 = svgen_dq2.Tc;                        // 訪問運算結果svgen_dq2

      }

      為進一步了解空間矢量算法的基本原理,下面給出空間矢量模塊的源代碼:

      void svgendq_calc(SVGENDQ *v)

      {

       

         _iq Va,Vb,Vc,t1,t2;

         _iq sector = 0;  /*設相位置(sector)等于Q0   */

      /*逆clarke變換 */

          Va = v->Ubeta;

          Vb = _IQmpy(_IQ(-0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualfa);  /* 0.8660254 = sqrt(3)/2 */

          Vc = _IQmpy(_IQ(-0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualfa);   /* 0.8660254 = sqrt(3)/2 */

       

      /* 60度sector的確定*/

          if (Va>_IQ(0))

             sector = 1;

          if (Vb>_IQ(0))

             sector = sector + 2;

          if (Vc>_IQ(0)) 

             sector = sector + 4;

           

      /* X,Y,Z (Va,Vb,Vc)的計算  */

          Va = v->Ubeta;                                                  /* X = Va */

          Vb = _IQmpy(_IQ(0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualfa);   /* Y = Vb */

          Vc = _IQmpy(_IQ(0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualfa);   /* Z = Vc */

           

          if (sector==1)  /* sector 1: t1=Z and t2=Y (abc ---> Tb,Ta,Tc) */

          {

             t1 = Vc;

             t2 = Vb;

             v->Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tbon = (1-t1-t2)/2 */

             v->Ta = v->Tb+t1;           /* taon = tbon+t1 */

             v->Tc = v->Ta+t2;           /* tcon = taon+t2 */

          }

          else if (sector==2)  /* sector 2: t1=Y and t2=-X (abc ---> Ta,Tc,Tb) */

          {

             t1 = Vb;

             t2 = -Va;

             v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* taon = (1-t1-t2)/2 */

             v->Tc = v->Ta+t1;           /* tcon = taon+t1 */

             v->Tb = v->Tc+t2;           /* tbon = tcon+t2 */

          }    

          else if (sector==3)  /* sector 3: t1=-Z and t2=X (abc ---> Ta,Tb,Tc) */

          {

             t1 = -Vc;

             t2 = Va;

             v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* taon = (1-t1-t2)/2 */

             v->Tb = v->Ta+t1;           /* tbon = taon+t1 */

             v->Tc = v->Tb+t2;           /* tcon = tbon+t2 */

          } 

          else if (sector==4)  /* sector 4: t1=-X and t2=Z (abc ---> Tc,Tb,Ta) */

          {

             t1 = -Va;

             t2 = Vc;

             v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tcon = (1-t1-t2)/2 */

             v->Tb = v->Tc+t1;           /* tbon = tcon+t1 */

             v->Ta = v->Tb+t2;           /* taon = tbon+t2 */

          } 

          else if (sector==5)  /* sector 5: t1=X and t2=-Y (abc ---> Tb,Tc,Ta) */

          {

             t1 = Va;

             t2 = -Vb;

             v->Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tbon = (1-t1-t2)/2 */

             v->Tc = v->Tb+t1;           /* tcon = tbon+t1 */

             v->Ta = v->Tc+t2;           /* taon = tcon+t2 */

          } 

          else if (sector==6)  /* sector 6: t1=-Y and t2=-Z (abc ---> Tc,Ta,Tb) */

          {

             t1 = -Vb;

             t2 = -Vc;

             v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tcon = (1-t1-t2)/2 */

             v->Ta = v->Tc+t1;           /* taon = tcon+t1 */

             v->Tb = v->Ta+t2;           /* tbon = taon+t2 */

          }

           

          v->Ta = _IQmpy(_IQ(2),(v->Ta-_IQ(0.5)));

          v->Tb = _IQmpy(_IQ(2),(v->Tb-_IQ(0.5)));

          v->Tc = _IQmpy(_IQ(2),(v->Tc-_IQ(0.5)));      

      }

      在相位置(sector)3中的一個矢量的例子:

      圖  相位置(sector)PWM 實例及其占空比

      例2、事件管理器配置

       

      EvaRegs.T1PR = p->n_period;                                      /* SYSTEM_FREQUENCY*1000000*T/2     */

                               /*初始化Timer 1周期寄存器                         */

      /* 預定標器X1 (T1),ISR周期= T x 1         */

      EvaRegs.T1CON.all = PWM_INIT_STATE;          /* 對稱操作模式                                     */

      EvaRegs.DBTCONA.all = DBTCON_INIT_STATE;

      EvaRegs.ACTRA.all = ACTR_INIT_STATE;

      EvaRegs.COMCONA.all = 0xA200;

      EvaRegs.CMPR1 = p->n_period;

      EvaRegs.CMPR2 = p->n_period;

      EvaRegs.CMPR3 = p->n_period;

      EALLOW;

      GpioMuxRegs.GPAMUX.all |= 0x003F;

       

      例3、TMS320F2812電流及DC母線電壓檢測

      //******************************************************************************

      //    TMS320F2812電流及DC母線電壓檢測

      //    文件名稱:F28XILEG_VDC.C

      //******************************************************************************

      #include "DSP28_Device.h"

      #include "f28xileg_vdc.h"

      #include "f28xbmsk.h"

      #define CPU_CLOCK_SPEED      6.6667L   //  CPU時鐘速度150MHz

      #define ADC_usDELAY 5000L

      #define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L)

      / (long double)CPU_CLOCK_SPEED) - 9.0L) / 5.0L)

      extern void DSP28x_usDelay(unsigned long Count);

      void F28X_ileg2_dcbus_drv_init(ILEG2DCBUSMEAS *p)

      {

          DELAY_US(ADC_usDELAY);      

          AdcRegs.ADCTRL1.all = ADC_RESET_FLAG;        /*復位ADC模塊                 */

            asm(" NOP ");

            asm(" NOP ");  

          AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;            /* 為bandgap和參考電路供電*/

            DELAY_US(ADC_usDELAY);                                  /*為ADC其他單元上電前延時 */

        

          AdcRegs.ADCTRL3.bit.ADCPWDN = 1;                  /*為ADC其他單元上電     */

          AdcRegs.ADCTRL3.bit.ADCCLKPS = 3;               /* 設置ADCTRL3寄存器  */

      DELAY_US(ADC_usDELAY);      

       

          AdcRegs.ADCTRL1.all = ADCTRL1_INIT_STATE;           /*設置ADCTRL1寄存器 */

          AdcRegs.ADCTRL2.all = ADCTRL2_INIT_STATE;            /*設置ADCTRL2寄存器    */

      AdcRegs.ADCMAXCONV.bit.MAX_CONV = 2;                      /* 確定3個轉換                  */

          AdcRegs.ADCCHSELSEQ1.all = p->Ch_sel;                 /* 配置通道選擇                  */

       

      EvaRegs.GPTCONA.bit.T1TOADC = 1;                /*設置采用Timer1 UF觸發ADC轉換 */

      }

       

      void F28X_ileg2_dcbus_drv_read(ILEG2DCBUSMEAS *p)

      {

             int dat_q15;

             long tmp;

              /* 等待ADC轉換結束*/

              while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)

              {};

       

              dat_q15 = AdcRegs.ADCRESULT0^0x8000;     /*將轉換結果變成Q15格式雙極性數據*/

              tmp = (long)(p->Imeas_a_gain*dat_q15);

              p->Imeas_a = (int)(tmp>>13);

              p->Imeas_a += p->Imeas_a_offset;

              p->Imeas_a *= -1;                                /*正向,電流流向電動機*/

              

              dat_q15 = AdcRegs.ADCRESULT1^0x8000;   /*將轉換結果變成Q15格式雙極性數據*/

              tmp = (long)(p->Imeas_b_gain*dat_q15);

              p->Imeas_b = (int)(tmp>>13);

              p->Imeas_b += p->Imeas_b_offset;

              p->Imeas_b *= -1;                                /*正向,電流流向電動機*/

       

              dat_q15 = (AdcRegs.ADCRESULT2>>1)&0x7FFF;   /*將轉換結果變成Q15格式雙極性數據*/

              tmp = (long)(p->Vdc_meas_gain*dat_q15);

              p->Vdc_meas = (int)(tmp>>13);

              p->Vdc_meas += p->Vdc_meas_offset;

       

              p->Imeas_c = -(p->Imeas_a + p->Imeas_b);

       

              AdcRegs.ADCTRL2.all |= 0x4040;                 /* 復位排序器                                        */

       

      }

       

       

      例4、電動機位置檢測

      /******************************************************************************

      //    TMS320F2812電動機位置檢測  QEP電路初始化及應用

      //    文件名稱:F28XQEP.C

      //******************************************************************************

      #include "DSP28_Device.h"

      #include "f28xqep.h"

      #include "f28xbmsk.h"

       

      void  F28X_EV1_QEP_Init(QEP *p)

      {

       

                EvaRegs.CAPCON.all = QEP_CAP_INIT_STATE;     /*設置捕捉單元 */

                EvaRegs.T2CON.all = QEP_TIMER_INIT_STATE;    /*設置捕捉定時器*/

                EvaRegs.T2PR = 0xFFFF;

                EvaRegs.EVAIFRC.bit.CAP3INT = 1;                         /*清除CAP3標志*/

                EvaRegs.EVAIMRC.bit.CAP3INT = 1;                        /*使能CAP3中斷*/

                GpioMuxRegs.GPAMUX.all |= 0x0700;                       /*配置捕捉單元的引腳*/

      }  

       

       

      void F28X_EV1_QEP_Calc(QEP *p)

      {

           long tmp;

       

           p->dir_QEP = 0x4000&EvaRegs.GPTCONA.all;

           p->dir_QEP = p->dir_QEP>>14;

         

           p->theta_raw = EvaRegs.T2CNT + p->cal_angle;

         

           tmp = (long)(p->theta_raw*p->mech_scaler);                   /* Q0*Q26 = Q26 */

           tmp &= 0x03FFF000;

           p->theta_mech = (int)(tmp>>11);                               /* Q26 -> Q15 */

           p->theta_mech &= 0x7FFF;

                  

           p->theta_elec = p->pole_pairs*p->theta_mech;                 /* Q0*Q15 = Q15 */

           p->theta_elec &= 0x7FFF;

         

      }

       

      void F28X_EV1_QEP_Isr(QEP *p)

      {

       

           p->QEP_cnt_idx = EvaRegs.T2CNT;

           EvaRegs.T2CNT = 0;

           p->index_sync_flag = 0x00F0;

       

      }

       

      //******************************************************************************

      //    TMS320F2812電動機位置檢測  QEP電路初始化參數及函數定義

      //    文件名稱:F28XQEP.H

      //******************************************************************************

      #ifndef __F28X_QEP_H__

      #define __F28X_QEP_H__

       

      #include "f28xbmsk.h"

      /*               初始化T2CON和CAPCON                */

      #define QEP_CAP_INIT_STATE    0x9004

      #define QEP_TIMER_INIT_STATE (FREE_RUN_FLAG +          \

                                TIMER_DIR_UPDN +         \

                                TIMER_CLK_PRESCALE_X_1 + \

                                TIMER_ENABLE_BY_OWN +    \

                                TIMER_ENABLE +           \

                                TIMER_CLOCK_SRC_QEP +    \

                                TIMER_COMPARE_LD_ON_ZERO)

       

      /*  定義QEP (正交編碼電路) 驅動的對象 */

      typedef struct {int theta_elec;               /* 輸出: 電動機電角度(Q15)                                                   */

                      int theta_mech;      /* 輸出: 電動機機械角度(Q15)                                                        */

                      int dir_QEP;      /* 輸出: 電動機轉動方向 (Q0)                                                 */

                      int QEP_cnt_idx;     /* 變量: 編碼器計數(Q0)                                                         */

                      int theta_raw;       /* 變量: 定時器2得出的角度(Q0)                              */

                      int mech_scaler;     /* 參數: 0.9999/計數最大值,計數最大值 = 4000 (Q26)       */

                      int pole_pairs;       /* 參數: 極對數(Q0)                                                                 */

                      int cal_angle;        /* 參數: 編碼器和相之間的角度偏移量 (Q0)                         */

                      int index_sync_flag; /* 輸出: Index sync status (Q0)                                                      */

                      void (*init)();       /* 初始化函數指針                                                             */

                      void (*calc)();     /* 計算函數指針                                                                   */

                      void (*isr)();      /* 中斷程序指針                                                                       */

                      }  QEP;

       

      /*                定義一個QEP_handle                            */

      typedef QEP *QEP_handle;

      #define QEP_DEFAULTS { 0x0, 0x0,0x0,0x0,0x0,16776,2,-2365,0x0,  \

                      (void (*)(long))F28X_EV1_QEP_Init,            \

                      (void (*)(long))F28X_EV1_QEP_Calc,                   \

                      (void (*)(long))F28X_EV1_QEP_Isr }

      void F28X_EV1_QEP_Init(QEP_handle);

      void F28X_EV1_QEP_Calc(QEP_handle);

      void F28X_EV1_QEP_Isr(QEP_handle);

       

      #endif /*  __F28X_QEP_H__ */

      例5、TMS320F2812實現三相永磁同步電動機的磁場定向控制

      //******************************************************************************

      //    采用TMS320F2812實現三相永磁同步電動機的磁場定向控制

      //    文件名稱:PMSM3_1.C

      //******************************************************************************

       

      #include "IQmathLib.h"         /* 包含IQmath庫函數的頭文件 */

      #include "DSP28_Device.h"

      #include "pmsm3_1.h"

      #include "parameter.h"

      #include "build.h"

       

      //   函數聲明

      interrupt void EvaTimer1(void);

      interrupt void EvaTimer2(void);

       

      // 全局變量定義

      float Vd_testing = 0;                     /* Vd testing (pu) */

      float Vq_testing = 0.25;                   /* Vq testing (pu) */

      float Id_ref = 0;                        /* Id reference (pu) */

      float Iq_ref = 0.4;                       /* Iq reference (pu) */

      float speed_ref = 0.2;                     /* Speed reference (pu) */

      float T = 0.001/ISR_FREQUENCY;   /* Samping period (sec), see parameter.h */

       

      int isr_ticker = 0;

       

      int pwmdac_ch1=0;

      int pwmdac_ch2=0;

      int pwmdac_ch3=0;

       

      volatile int enable_flg=0;

      int lockrtr_flg=1;

       

      int speed_loop_ps = 10;             // 速度環定標器

      int speed_loop_count = 1;           // 速度環計數器

       

      CLARKE clarke1 = CLARKE_DEFAULTS;

      PARK park1 = PARK_DEFAULTS;

      IPARK ipark1 = IPARK_DEFAULTS;

       

      PIDREG3 pid1_id = PIDREG3_DEFAULTS;

      PIDREG3 pid1_iq = PIDREG3_DEFAULTS;

      PIDREG3 pid1_spd = PIDREG3_DEFAULTS;

       

      PWMGEN pwm1 = PWMGEN_DEFAULTS;

      PWMDAC pwmdac1 = PWMDAC_DEFAULTS;

       

      SVGENDQ svgen_dq1 = SVGENDQ_DEFAULTS;

      QEP qep1 = QEP_DEFAULTS;

      SPEED_MEAS_QEP speed1 = SPEED_MEAS_QEP_DEFAULTS;

      DRIVE drv1 = DRIVE_DEFAULTS;

       

      RMPCNTL rc1 = RMPCNTL_DEFAULTS;

      RAMPGEN rg1 = RAMPGEN_DEFAULTS;

       

      ILEG2DCBUSMEAS ilg2_vdc1 = ILEG2DCBUSMEAS_DEFAULTS;

       

      //  主函數

      void main(void)

      {

       

      //   系統初始化

               InitSysCtrl();

       

      //  HISPCP 設置

          EALLOW; 

          SysCtrlRegs.HISPCP.all = 0x0000;     /* SYSCLKOUT/1  */

          EDIS; 

       

      // 禁止并清除所有CPU中斷:

               DINT;

               IER = 0x0000;

               IFR = 0x0000;

       

      // 初始化Pie到默認狀態

               InitPieCtrl();

       

      // 初始化PIE相量表

               InitPieVectTable();      

             

      // 初始化EVA  定時器1:

          //設置定時器1寄存器 (EV A)

          EvaRegs.GPTCONA.all = 0;

         //等待使能標志位

         while (enable_flg==0)

          {

      // 使能定時器1的下溢中斷

          EvaRegs.EVAIMRA.bit.T1UFINT = 1;

          EvaRegs.EVAIFRA.bit.T1UFINT = 1;

       

      // 使能CAP3中斷(定時器2)

          EvaRegs.EVAIMRC.bit.CAP3INT = 1;

          EvaRegs.EVAIMRC.bit.CAP3INT = 1;

          };

       

      // 重新分配中斷向量

               EALLOW;

               PieVectTable.T1UFINT = &EvaTimer1;

               PieVectTable.CAPINT3 = &EvaTimer2;

               EDIS; 

       

      // 使能PIE組2的中斷6(T1UFINT)

          PieCtrlRegs.PIEIER2.all = M_INT6;

       

      // 使能PIE組3的中斷7(CAPINT3)

          PieCtrlRegs.PIEIER3.all = M_INT7;

       

      // 使能CPU INT2(T1UFINT)和INT3(CAPINT3):

               IER |= (M_INT2 | M_INT3);

       

      // 使能全局中斷和最高優先級適時調試事件管理器功能:

             

               EINT;      //使能全局中斷INTM

               ERTM;       // 使能適時調試中斷DBGM

       

      /*      模塊初始化        */

          pwm1.n_period = SYSTEM_FREQUENCY*1000000*T/2;  /* 預定標器X1 (T1), ISR周期 = T x 1 */

               pwm1.init(&pwm1);

       

          pwmdac1.pwmdac_period = 2500;  /* PWM頻率 = 30 kHz */

          pwmdac1.PWM_DAC_IPTR0 = &pwmdac_ch1;

          pwmdac1.PWM_DAC_IPTR1 = &pwmdac_ch2;

          pwmdac1.PWM_DAC_IPTR2 = &pwmdac_ch3;

               pwmdac1.init(&pwmdac1);

       

          qep1.init(&qep1);

       

          drv1.init(&drv1);

       

          ilg2_vdc1.init(&ilg2_vdc1);

       

      /* 初始化SPEED_FRQ模塊 */

          speed1.K1 = _IQ21(1/(BASE_FREQ*T));

          speed1.K2 = _IQ(1/(1+T*2*PI*30));  /* 低通截至頻率 = 30 Hz */

          speed1.K3 = _IQ(1)-speed1.K2;

          speed1.rpm_max = 120*BASE_FREQ/P;

       

      /*初始化RAMPGEN模塊 */

          rg1.step_angle_max = _IQ(BASE_FREQ*T);

       

      /* 初始化PID_REG3  Id調節模塊 */

               pid1_id.Kp_reg3 = _IQ(0.75);

               pid1_id.Ki_reg3 = _IQ(T/0.0005);                                  

               pid1_id.Kd_reg3 = _IQ(0/T);                                                     

               pid1_id.Kc_reg3 = _IQ(0.2);

          pid1_id.pid_out_max = _IQ(0.30);

          pid1_id.pid_out_min = _IQ(-0.30);  

       

      /* 初始化PID_REG3  Iq調節模塊 */

               pid1_iq.Kp_reg3 = _IQ(0.75);

               pid1_iq.Ki_reg3 = _IQ(T/0.0005);

               pid1_iq.Kd_reg3 = _IQ(0/T);

               pid1_iq.Kc_reg3 = _IQ(0.2);

          pid1_iq.pid_out_max = _IQ(0.95);

          pid1_iq.pid_out_min = _IQ(-0.95);

       

      /*初始化PID_REG3  速度調節模塊 */

           pid1_spd.Kp_reg3 = _IQ(1);

               pid1_spd.Ki_reg3 = _IQ(T*speed_loop_ps/0.1);

               pid1_spd.Kd_reg3 = _IQ(0/(T*speed_loop_ps));    

              pid1_spd.Kc_reg3 = _IQ(0.2);

          pid1_spd.pid_out_max = _IQ(1);

          pid1_spd.pid_out_min = _IQ(-1);

       

      // 循環等待

               for(;;);

       

      }    

       

      interrupt void EvaTimer1(void)

      {

       

          isr_ticker++;

       

          if (speed_loop_count==speed_loop_ps)

           {

                   pid1_spd.pid_ref_reg3 = _IQ(speed_ref);

                   pid1_spd.pid_fdb_reg3 = speed1.speed_frq;

                      pid1_spd.calc(&pid1_spd);

                   speed_loop_count=1;

           }

          else speed_loop_count++;

       

                     pid1_iq.pid_ref_reg3 = pid1_spd.pid_out_reg3;

                        pid1_iq.pid_fdb_reg3 = park1.qe;

                        pid1_iq.calc(&pid1_iq);

       

                     pid1_id.pid_ref_reg3 = _IQ(Id_ref);

                        pid1_id.pid_fdb_reg3 = park1.de;

                        pid1_id.calc(&pid1_id);

       

                     ipark1.de = pid1_id.pid_out_reg3;

                     ipark1.qe = pid1_iq.pid_out_reg3;

                     ipark1.ang = speed1.theta_elec;

                     ipark1.calc(&ipark1);

       

             svgen_dq1.Ualfa = ipark1.ds;

                       svgen_dq1.Ubeta = ipark1.qs;

                      svgen_dq1.calc(&svgen_dq1);

       

          pwm1.Mfunc_c1 = (int)_IQtoIQ15(svgen_dq1.Ta); /* Mfunc_c1 is in Q15 */

                     pwm1.Mfunc_c2 = (int)_IQtoIQ15(svgen_dq1.Tb); /* Mfunc_c2 is in Q15 */

          pwm1.Mfunc_c3 = (int)_IQtoIQ15(svgen_dq1.Tc); /* Mfunc_c3 is in Q15 */

                        pwm1.update(&pwm1);

             

      ilg2_vdc1.read(&ilg2_vdc1);

             

              clarke1.as = _IQ15toIQ((long)ilg2_vdc1.Imeas_a);

                      clarke1.bs = _IQ15toIQ((long)ilg2_vdc1.Imeas_b);

                        clarke1.calc(&clarke1);

             

                     park1.ds = clarke1.ds;

                     park1.qs = clarke1.qs;

                     park1.ang = speed1.theta_elec;

                     park1.calc(&park1);

       

                     qep1.calc(&qep1);

       

                     speed1.theta_elec = _IQ15toIQ((long)qep1.theta_elec);

                     speed1.dir_QEP = (long)(qep1.dir_QEP);

                     speed1.calc(&speed1);

       

                     pwmdac_ch1 = (int)_IQtoIQ15(svgen_dq1.Ta);

                     pwmdac_ch2 = (int)_IQtoIQ15(clarke1.as);  

                     pwmdac_ch3 = (int)_IQtoIQ15(speed1.theta_elec);  

       

                     drv1.enable_flg = enable_flg;

                     drv1.update(&drv1);

       

                        pwmdac1.update(&pwmdac1);

       

      // 使能定時器中斷

                        EvaRegs.EVAIMRA.bit.T1UFINT = 1;

                        EvaRegs.EVAIFRA.all = BIT9;

                        PieCtrlRegs.PIEACK.all |= PIEACK_GROUP2;

      }

       

      interrupt void EvaTimer2(void)

      {

           qep1.isr(&qep1);

               EvaRegs.EVAIMRC.bit.CAP3INT = 1;

               EvaRegs.EVAIFRC.all = BIT2;

               PieCtrlRegs.PIEACK.all |= PIEACK_GROUP3;

        }

       


       

      狀 態: 離線

      會員簡介

      會員代號: citi
      聯 系 人: 張高
      電  話: 020-326585
      傳  真:
      地  址: 偌還餓16號
      郵  編: 523620
      主  頁:
       
      該廠商相關技術文摘:
      基于TMS320F2812的永磁同步電動機控制
      更多文摘...
      立即發送詢問信息在線聯系該技術文摘廠商:
      用戶名: 密碼: 免費注冊為中華工控網會員
      請留下您的有效聯系方式,以方便我們及時與您聯絡

      關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
      工控網客服熱線:0755-86369299
      版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

      主站蜘蛛池模板: 亚洲avav天堂av在线网爱情| 亚洲开心婷婷中文字幕| 亚洲VA欧美VA国产综合| 国产精品日日摸夜夜添夜夜添2021 | 美乳丰满人妻无码视频| 91精品人妻中文字幕色| 日韩一本不卡一区二区三区| 国产短视频精品一区二区| 97人妻精品一区二区三区| 久久久久久久久久久久中文字幕| 亚洲精品日本久久一区二区三区| 欧美综合人人做人人爱| 菠萝菠萝蜜午夜视频在线播放观看 | 亚洲鸥美日韩精品久久| 无码人妻丝袜在线视频| 亚洲欧美色综合影院| 亚洲色拍拍噜噜噜最新网站| 久热这里只有精品视频3| 真人性囗交视频| 又爽又黄又无遮挡的激情视频 | 日本美女性亚洲精品黄色| 亚洲最大天堂在线看视频| 国产精品久久久天天影视香蕉 | 国产美女免费永久无遮挡| 国产毛片精品av一区二区| 久久亚洲人成网站| 国产精品户外野外| 伊人成人在线视频免费| 亚洲中文字幕无码av永久| 99中文字幕精品国产| 成人午夜在线播放| 中文日韩在线一区二区| 久久精品国产99久久6| 久久99国内精品自在现线| 国产成人免费高清激情视频| 成 人色 网 站 欧美大片| 国产成人无码免费网站| 国产明星精品无码AV换脸| 免费无码成人AV片在线| 久久人人爽人人爽人人av| 欧美成人精品手机在线|