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

📄 ddj.c

📁 电动机保护测量程序,用的是DSP2407,
💻 C
📖 第 1 页 / 共 5 页
字号:
    soe_month[i]=0;
    soe_year[i]=0;    
   }
  ADC=0;
//////////////////////////////////////////////// 
//保护的变量初值   
  SdQiDong_flag=0;
  YSdQiDong_flag=0;
  DSdQiDong_flag=0;
  fsx_flag=0;
  fsxQD_flag=0;
  LXSdQiDong_flag=0;
  LXYSdQiDong_flag=0;
  LXDSdQiDong_flag=0;
  ChzQiDong_YunXu=0;
  ChzQiDong_flag =0;
  ChzHz_flag=0;
  ChzBiSuo_flag=0;
  GZTZ_flag=0;
  fsxI0Dsd_flag=0;
  FHZShuChu_MaiKuan=50;
  baohu_flag=0;
      
  CKMaiKuantimer=0;
  Fzhz=0;
  HjsYouXiao_time=0;
//////////////////////////////////////////////// 
//定值的变量初值
  temp_pt= &YAOTIAO_SH0UDIZHI;
  for (i=0;i<0x1000;i++)
    {
	*temp_pt = 0;
	temp_pt++;
     }
  for(i=0;i<6;i++)
    {
     DingZhiXiuGai_flag[i]=0;
    } 
//////////////////////////////////////////////// 
//AD采样的变量初值
  temp_pt = &ADDRAM_SHOUDIZHI;            
  for( i=0; i<ADDRAMBUF_SIZE; i++ )
    {
     *temp_pt = 0;
     temp_pt++;
     }              
   temp_pt = &AD0BHRAM_SHOUDIZHI;  
   for( i=0; i<ADDBHRAMBUF_SIZE; i++ )
    {
     *temp_pt = 0;
     temp_pt++;
     }  
    Iar=0;
    Ibr=0;
    Icr=0;
    Uar=0;
    Ubr=0;
    Ucr=0;
    Iai=0;
    Ibi=0;
    Ici=0;
    Uai=0;
    Ubi=0;
    Uci=0;
   
    ADD1ramDiZhi_pt[0] = &AD0DRAM_MODIZHI;
    ADD1ramDiZhi_pt[1] = &AD1DRAM_MODIZHI;
    ADD1ramDiZhi_pt[2] = &AD2DRAM_MODIZHI;
    ADD1ramDiZhi_pt[3] = &AD3DRAM_MODIZHI;
    ADD1ramDiZhi_pt[4] = &AD4DRAM_MODIZHI;
    ADD1ramDiZhi_pt[5] = &AD5DRAM_MODIZHI;
    ADD1ramDiZhi_pt[6] = &AD6DRAM_MODIZHI;
    ADD1ramDiZhi_pt[7] = &AD7DRAM_MODIZHI;
    ADD1ramDiZhi_pt[8] = &AD8DRAM_MODIZHI;
    ADD1ramDiZhi_pt[9] = &AD9DRAM_MODIZHI;
    ADD1ramDiZhi_pt[10] = &AD10DRAM_MODIZHI;
 
    ADDramDiZhi_pt[0] = &AD0DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[1] = &AD1DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[2] = &AD2DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[3] = &AD3DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[4] = &AD4DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[5] = &AD5DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[6] = &AD6DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[7] = &AD7DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[8] = &AD8DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[9] = &AD9DRAM_SHOUDIZHI;
    ADDramDiZhi_pt[10] = &AD10DRAM_SHOUDIZHI;   
    
    ADD2ramDiZhi_pt[0] = &AD0DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[1] = &AD1DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[2] = &AD2DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[3] = &AD3DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[4] = &AD4DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[5] = &AD5DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[6] = &AD6DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[7] = &AD7DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[8] = &AD8DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[9] = &AD9DRAM_SHOUDIZHI;
    ADD2ramDiZhi_pt[10] = &AD10DRAM_SHOUDIZHI; 
    /* 
     ADDLBramDiZhi_pt[0] = &AD0LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[1] = &AD1LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[2] = &AD2LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[3] = &AD3LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[4] = &AD4LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[5] = &AD5LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[6] = &AD6LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[7] = &AD7LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[8] = &AD8LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[9] = &AD9LBRAM_SHOUDIZHI;
    ADDLBramDiZhi_pt[10] = &AD10LBRAM_SHOUDIZHI;  */
    
     ADDBHramDiZhi_pt[0] = &AD0BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[1] = &AD1BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[2] = &AD2BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[3] = &AD3BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[4] = &AD4BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[5] = &AD5BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[6] = &AD6BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[7] = &AD7BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[8] = &AD8BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[9] = &AD9BHRAM_SHOUDIZHI;
    ADDBHramDiZhi_pt[10] = &AD10BHRAM_SHOUDIZHI;

/*    ADLvBoShuJu0_pt[0] = &AD0XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[1] = &AD1XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[2] = &AD2XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[3] = &AD3XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[4] = &AD4XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[5] = &AD5XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[6] = &AD6XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[7] = &AD7XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[8] = &AD8XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[9] = &AD9XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[10] = &AD10XRAM_CHUSHIDIZHI;
    ADLvBoShuJu0_pt[11] = &AD11XRAM_CHUSHIDIZHI;*/
   /* 
    ADLvBoShuJu1_pt[0] = &AD0XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[1] = &AD1XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[2] = &AD2XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[3] = &AD3XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[4] = &AD4XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[5] = &AD5XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[6] = &AD6XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[7] = &AD7XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[8] = &AD8XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[9] = &AD9XDRAM_SHOUDIZHI;
    ADLvBoShuJu1_pt[10] = &AD10XDRAM_SHOUDIZHI;   */
    
    IaZengYi=2140.0/4098.0;
    IbZengYi=2147.0/4098.0;
    IcZengYi=2147.0/4098.0;
    UaZengYi=7;
    UbZengYi=7;
    UcZengYi=7;
    
}                 
void WriteBHDingZhi(void)/*往EEPROM中写保护定值*/
{
  unsigned int I,i,DINGZHI_SUM;
  int J,J1;
  int *p_temp;
  
  
  if(DingZhiXiuGai_flag[0]==1)
   {  
    p_temp=&YAOTIAO_SH0UDIZHI; 
    for (I=0;I<20;I++)        /*写遥调数值到E2prom中的第1模块1-128页*/
     {  
      p_temp=&YAOTIAO_SH0UDIZHI+I;
      X5643_write(I,*p_temp);
      ys(7000);     
     }  
    for (I=0;I<20;I++) 
    {  
      p_temp=&DUDINGZHI_TEMP+I;
      *p_temp=X5643_read(I);
      //readI2C(0xa8,J,16,p_temp);
      ys(7000);
    }
   p_temp=&DUDINGZHI_TEMP;
   DINGZHI_SUM=0;
   for(i=0;i<20;i++)
    {
      DINGZHI_SUM=DINGZHI_SUM+*p_temp;
      p_temp++;
    }
   DINGZHI_SUM=DINGZHI_SUM&0x00ff;
   if(DINGZHI_SUM!=*p_temp)
    { 
     YaoTiaoDZValid_flag=0;
    }
   else
    {
     YaoTiaoDZValid_flag=1;
    }    
   } 
   
   
  if(DingZhiXiuGai_flag[1]==1)
   {
    for (I=0;I<32;I++)     /*写第一组保护定值E2prom的第2模块1-128页*/
     {  
      p_temp=&BAOHU0_SH0UDIZHI+I;
      X5643_write(0x80+I,*p_temp);
      ys(7000);
     } 
    for (I=0;I<32;I++) 
     {  
      p_temp=&DUDINGZHI_TEMP+I;
      //readI2C(0xaa,J,16,p_temp);
      *p_temp=X5643_read(0x80+I);
      ys(7000);
     }
    p_temp=&DUDINGZHI_TEMP;
    DINGZHI_SUM=0;
    for(i=0;i<32;i++)
     {
      DINGZHI_SUM=DINGZHI_SUM+*p_temp;
      p_temp++;
     }
    DINGZHI_SUM=DINGZHI_SUM&0x00ff;
    if(DINGZHI_SUM!=*p_temp)
     {
      DingZhiValid_flag1=0;
     }
    else
     {
      DingZhiValid_flag1=1;
     }
    
   }
   

 if(DingZhiXiuGai_flag[2]==1)
   { 
    J1=0;       
    for (I=128;I<133;I++)     /*写第二组保护定值E2prom的第2模块129-256页*/
     {  
      J=I*16;
      p_temp=&BAOHU1_SH0UDIZHI+J1;
      writeI2C(0xaa,J,16,p_temp );    
      ys(7000);
     J1=J1+16;
     }
    J1=0;
    for (I=128;I<133;I++) 
     {  
      J=16*I;
      p_temp=&DUDINGZHI_TEMP+J1;
      readI2C(0xaa,J,16,p_temp);
      ys(7000);
      J1=J1+16;
     }
    p_temp=&DUDINGZHI_TEMP;
    DINGZHI_SUM=0;
    for(i=0;i<72;i++)
     {
      DINGZHI_SUM=DINGZHI_SUM+*p_temp;
      p_temp++;
     }
    DINGZHI_SUM=DINGZHI_SUM&0x00ff;
    if(DINGZHI_SUM!=*p_temp)
      {
       DingZhiValid_flag2=0;
      }
    else
      {
       DingZhiValid_flag2=1;
      }
   } 
   

 if(DingZhiXiuGai_flag[3]==1)
  {
   for (I=0;I<5;I++)    /*写第三组保护定值E2prom的第3模块1 -128页*/
    {  
     J=I*0x10;
     p_temp=&BAOHU2_SH0UDIZHI+J;
     writeI2C(0xac,J,16,p_temp );
     ys(7000);
    }
   for (I=0;I<5;I++) 
    {  
     J=16*I;
     p_temp=&DUDINGZHI_TEMP+J;
     readI2C(0xac,I*16,16,p_temp);
     ys(7000);
    }
   p_temp=&DUDINGZHI_TEMP;
   DINGZHI_SUM=0;
   for(i=0;i<72;i++)
    {
     DINGZHI_SUM=DINGZHI_SUM+*p_temp;
     p_temp++;
    }
   DINGZHI_SUM=DINGZHI_SUM&0x00ff;
   if(DINGZHI_SUM!=*p_temp)
    {
     DingZhiValid_flag3=0;
    }
   else
    {
     DingZhiValid_flag3=1;
    }
   }
   
  
 if(DingZhiXiuGai_flag[4]==1)  
  {    
  J1=0;
   for (I=128;I<133;I++)    /*写第四组保护定值E2prom的第3模块129-256页*/
    {  
     J=I*16;
     p_temp=&BAOHU3_SH0UDIZHI+J1;
     writeI2C(0xac,J,16,p_temp );    
     ys(7000);
     J1=J1+16;
    }
  J1=0;
   for (I=128;I<133;I++) 
    {  
     J=16*I;
     p_temp=&DUDINGZHI_TEMP+J1;
     readI2C(0xac,J,16,p_temp);
     ys(7000);
     J1=J1+16;
    }
   p_temp=&DUDINGZHI_TEMP;
   DINGZHI_SUM=0;
   for(i=0;i<72;i++)
    {
     DINGZHI_SUM=DINGZHI_SUM+*p_temp;
     p_temp++;
    }
   DINGZHI_SUM=DINGZHI_SUM&0x00ff;
   if(DINGZHI_SUM!=*p_temp)
    {
     DingZhiValid_flag4=0;
    }
   else
    {
     DingZhiValid_flag4=1;
    }
  }
  
 
 if(DingZhiXiuGai_flag[5]==1)
  {  
   for (I=0;I<5;I++)    /*写第五组保护定值E2prom的第4模块1 -128页*/
    {  
     J=I*16;
     p_temp=&BAOHU4_SH0UDIZHI+J;
     J=I*16;
     writeI2C(0xae,J,16,p_temp );
     ys(7000);
    } 
   for (I=0;I<5;I++) 
    {  
     J=16*I;
     p_temp=&DUDINGZHI_TEMP+J;
     readI2C(0xae,I*16,16,p_temp);
     ys(7000);
    }
   p_temp=&DUDINGZHI_TEMP;
   DINGZHI_SUM=0;
   for(i=0;i<72;i++)
    {
     DINGZHI_SUM=DINGZHI_SUM+*p_temp;
     p_temp++;
    }
   DINGZHI_SUM=DINGZHI_SUM&0x00ff;
   if(DINGZHI_SUM!=*p_temp)
    {
     DingZhiValid_flag5=0;
    }
   else
    {
     DingZhiValid_flag5=1;
    }
  }
}
void YouXiaoZhiJS(void) /* 有效值计算 */
{
  /* 
   电压计算结果为有效值的平方 
   电流计算结果为有效值*100的平方
  */
     long int tempr,tempi;
     long int temp;
     unsigned long int tempIr,tempIi;
     
     tempr=Iar;
     tempi=Iai;  
     tempIr=((tempr>>10)*(tempr>>10));
     tempIi=((tempi>>10)*(tempi>>10)); 
     IamVal=tempr*tempIr+tempIi;

     tempr=Ibr;
     tempi=Ibi;
     tempIr=((tempr>>10)*(tempr>>10));
     tempIi=((tempi>>10)*(tempi>>10));
     IbmVal=tempIr+tempIi;
    
     tempr=Icr;
     tempi=Ici;
     tempIr=((tempr>>10)*(tempr>>10));
     tempIi=((tempi>>10)*(tempi>>10));
     IcmVal=tempIr+tempIi;
   
     tempr=Uar;
     tempi=Uai;
     tempIr=((tempr>>10)*(tempr>>10));
     tempIi=((tempi>>10)*(tempi>>10));
     UamVal=tempIr+tempIi;

     tempr=Ubr;
     tempi=Ubi;
     tempIr=((tempr>>10)*(tempr>>10));
     tempIi=((tempi>>10)*(tempi>>10));
     UbmVal=tempIr+tempIi;
     
     //Ub1mVal=2;
     tempr=Ucr;
     tempi=Uci;
     tempIr=((tempr>>10)*(tempr>>10));
     tempIi=((tempi>>10)*(tempi>>10));
     UcmVal=(tempr*tempr+tempi*tempi);

}

void ReadBHDingZhip(void)/* 从EEPROM中读保护定值并校验 */
{
      unsigned int J,I,DINGZHI_SUM,i,J1;
      int *p_temp; 

      /*从X5643读系统参数,送相应变量*/
      DINGZHI_SUM=0;
      p_temp=&DUDINGZHI_TEMP;       
      for (I=0;I<18;I++) 
      {  
        p_temp=&DUDINGZHI_TEMP;
        *p_temp=X5643_read(I);
      	DINGZHI_SUM=DINGZHI_SUM+(*p_temp);
      	p_temp++;
      } 
      *p_temp=X5643_read(18);
      WaiWDT;     
      
      DINGZHI_SUM=DINGZHI_SUM&0x00ff;      
      if(DINGZHI_SUM==*p_temp)
      {
         YaoTiaoDingZhiP();
         WaiWDT;
      }
      else
      {
         YiaoTiaoIni();
         WaiWDT;
      }      
      
      
      /*从X5643模块中读保护定值,送相应变量*/  
      WaiWDT; 
      DINGZHI_SUM=0;   
      for (I=0;I<30;I++)
      {
      	p_temp=&DUDINGZHI_TEMP;
      	*p_temp=X5643_read((DZTAOHAO-1)*0x80+I);
      	DINGZHI_SUM=DINGZHI_SUM+(*p_temp);
      	p_temp++;

⌨️ 快捷键说明

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