⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 data_save.c

📁 永磁同步电机驱动控制
💻 C
字号:
/***********************************************************************************
*  FILE:TYPEDEFS.H                                                                 *
*  TMS320LF2407A TEST BED CODE                                                     *
*  ZHEJIANG TIANHUANG TECHNOLOGY INDUSTRIAL CO.,Ltd                                *
*  07/28/2006  Vesion 1.0                                                          *
*  Jzming                                                                          *
***********************************************************************************/

#include "TYPEDEFS.H"
#include "F2407_c.H"
#include "CONSTANT.H"
#include "self_define.h"
#include <stdio.h> 
#include <math.h> 

/* ==================================================================  */
void var_query_dram (void);
void var_set_dram(void);
void Double_ram_ini(void);

int parameter_set_flag=0;
extern int n_feed,ia,ib;
extern int  adc_vdc; 
extern int  temp_h,temp_l;
extern int  n_ref,speed_kp,speed_ki,speed_kd;
extern int  current_kp,current_ki,current_kd;
extern int SPEED_TEMP,init_phase_flag;

/* ================================================================== */
void var_query_dram (void)
{
   
   temp_h = (n_feed>>8) & 0xff;
   temp_l = (n_feed) & 0xff;
   OUTMAC(0f002h,temp_h);
   OUTMAC(0f001h,temp_l);
     
   temp_h = (ia >>8) & 0xff;
   temp_l = ia & 0xff;
   OUTMAC(0f004h,temp_h);
   OUTMAC(0f003h,temp_l);
   
   temp_h = (ib >>8) & 0xff;
   temp_l = ib & 0xff;
   OUTMAC(0f006h,temp_h);
   OUTMAC(0f005h,temp_l);
   
   temp_h =(adc_vdc >>8) & 0xff;
   temp_l = adc_vdc & 0xff;
   OUTMAC(0f008h,temp_h);
   OUTMAC(0f007h,temp_l);

     
}
/* =================================================================== */
void var_set_dram(void)
{
   INMAC(0f020h,temp_l);
   parameter_set_flag=temp_l & 0xff;  
      
   if(parameter_set_flag!=0)
   {     

      temp_l = 0;         
      OUTMAC(0f020h,temp_l);      //该地址清0
      switch(parameter_set_flag)
      {  
         case 1:
            INMAC(0f00ah,temp_h);
            INMAC(0f00bh,temp_l);
            n_ref = (temp_h & 0xff)*100 +(temp_l & 0xff);
            SPEED_TEMP=n_ref;      //速度值暂存寄存器
            //init_phase_flag=1;
            if(n_ref>6000)  n_ref=6000;
            if(n_ref<-6000) n_ref=-6000;
            break;
            
         case 8:
            INMAC(0f00ah,temp_h);
            INMAC(0f00bh,temp_l);
            n_ref =0xffff-( (temp_h & 0xff)*100 +(temp_l & 0xff));
            if(abs(n_ref)>6000)  n_ref=6000;
            if(abs(n_ref)<-6000) n_ref=-6000; 
            break;           
         
         case 2:
            INMAC(0f00ch,temp_h);
            INMAC(0f00dh,temp_l);
            speed_kp=(temp_h & 0xff)*100 +(temp_l & 0xff); 
            if(speed_kp<20) speed_kp=20;
            if(speed_kp>500) speed_kp=500; 
            break;
         case 3:
            INMAC(0f00eh,temp_l);
            current_kp=temp_l & 0xff;
            if(current_kp<2)  current_kp=2;
            if(current_kp>50) current_kp=50; 
            break;
         
         case 4:
            INMAC(0f00fh,temp_l);
            speed_ki=temp_l & 0xff;
            if(speed_ki<10) speed_ki=10;
            if(speed_ki>80) speed_ki=80; 
            break;
          
         case 5:
            INMAC(0f010h,temp_l);
            current_ki=temp_l & 0xff; 
            if(current_ki<1)  current_ki=1;
            if(current_ki>10) current_ki=10; 
            break;
         
         case 6:
            INMAC(0f011h,temp_l);
            speed_kd=temp_l & 0xff;
            break;
         
         case 7:
            INMAC(0f012h,temp_l);
            current_kd=temp_l & 0xff; 
            break;                 
      }             
   }        
}
/* ======================================================================== */
   
void Double_ram_ini(void)   
{
   temp_h = (n_ref>>8) & 0xff;
   temp_l = (n_ref) & 0xff;
   OUTMAC(0f00ah,temp_h);
   OUTMAC(0f00bh,temp_l);
   
   temp_h = (speed_kp>>8) & 0xff;
   temp_l = (speed_kp) & 0xff;
   OUTMAC(0f00ch,temp_h);
   OUTMAC(0f00dh,temp_l);
   
   temp_l = current_kp & 0xff;
   OUTMAC(0f00eh,temp_l);
   
   temp_l =speed_ki & 0xff;
   OUTMAC(0f00fh,temp_l);

   temp_l =current_ki & 0xff;
   OUTMAC(0f010h,temp_l);

   temp_l =speed_kd & 0xff;
   OUTMAC(0f011h,temp_l);

   temp_l =current_kd & 0xff;
   OUTMAC(0f012h,temp_l);
  
}
   
   
   
   
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -