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

📄 ddj.c

📁 电动机保护测量程序,用的是DSP2407,
💻 C
📖 第 1 页 / 共 5 页
字号:
      }
      *p_temp=X5643_read((DZTAOHAO-1)*0x80+30);
      if (DINGZHI_SUM==*p_temp)
      {
      	DingZhiXiuGai();
      }
}




void delaythree(void)
{
	while(acc<15); 
}


/************************************************
SPI初始化

功能: SPI初始化, 波特率设置, 中断使能
*************************************************/
void SPIInit(void) 
{
  SPICCR=0x0007;				/*置准备初始化标志位SPI_SW_RESET , 位6=0表示上升沿OUT*/
  SPICTL=0x0007;				/* f SPI 主工作方式允许,中断允许*/
  SPIPRI=0x0040;				/*置SPI为高优先级中断,收发独立于仿真器*/  
  //SPIBRR=0x7f;                                /*SPI波特率=3.47M*/
  SPIBRR=0x23;                                  /*SPI波特率=0.98M*/
  
  SPICCR=0x0087;				/*c初始化完成,码长8*/
  SPISTS=0;    
  //PCDATDIR= PCDATDIR|0x2000;
  //PCDATDIR = PCDATDIR&0xE301;                  /*复位AT7022*/
}

void SCIInit()
{          
  SCICTL1 = 0x13;
  SCICCR = 0x67; 
  SCICTL2 = 0x03;
  SCIHBAUD=0x07;
  SCILBAUD = 0x7f;/*波特率2400*/
  SCIPRI = 0x60;   /*低优先级*/
  SCICTL1 = 0x33;
} 

void BaohuSuanFaLJ() 
{  
    if (GLSD_YaBan==0x01) // 速断保护
      {   
         if ((IamVal>=DLSDHDingZhi2)||(IbmVal>=DLSDHDingZhi2)||(IcmVal>=DLSDHDingZhi2))
           {
            SdQiDong_flag=1;
           }
         else if ((IamVal<DLSDHFanHuiZhi)&&(IbmVal<DLSDHFanHuiZhi)&&(IcmVal<DLSDHFanHuiZhi))
           {
            SdQiDong_flag=0;
           }
      }
   if (GLYSD_YaBan==0x01) // 延时速断保护
     {
      if ((IamVal>=DLYSDHDingZhi2)||(IbmVal>=DLYSDHDingZhi2)||(IcmVal>=DLYSDHDingZhi2))
        {
         if (YSdQiDong_flag==0)
          {
           YSdQiDong_flag=1;
           YSdYanShi_time=DLYSDSDingZhi;
          }
        }
      else if ((IamVal<DLYSDHFanHuiZhi)&&(IbmVal<DLYSDHFanHuiZhi)&&(IcmVal<DLYSDHFanHuiZhi))
        {
         YSdQiDong_flag=0;
        }         
     }
   if (GLYSD_YaBan==0x01)  //过流三段压板
     {
       if (DLIIDFYS_YaBan==1) //选择定时限
       {
         if ((IamVal>=DLDSDHDingZhi2)||(IbmVal>=DLDSDHDingZhi2)||(IcmVal>=DLDSDHDingZhi2))
           {
            if (DSdQiDong_flag==0)
             { 
              DSdQiDong_flag=1;
              DSdYanShi_time=DLSDSDingZhi;
             }
           }
         else if ((IamVal<DLDSDHFanHuiZhi)&&(IbmVal<DLDSDHFanHuiZhi)&&(IcmVal<DLDSDHFanHuiZhi))
           {
            DSdQiDong_flag=0;
           }        	     
       }
       else //选择反时限
       {
         FSXBaoHu(0);
       }
     }
}

void BaoHuChuKouLJ(void)
{
 long int Umax=0,Imin=0;
 unsigned int temp1=0,temp2=0;
  
 if ((SdQiDong_flag==1)&&(GZTZ_flag==0)) //速断保护跳闸逻辑
   { 
    soe_no++;  
    soe_xuhao[soe_no]=0x0091;
    soe_value[soe_no]=1;
    soe_millisecond[soe_no]=millisecond_get;	
    soe_second[soe_no]=second_get; 
    soe_minute[soe_no]=minute_get;
    soe_hour[soe_no]=hour_get;
    soe_day[soe_no]=day_get;
    soe_month[soe_no]=month_get;
    soe_year[soe_no]=year_get;    
    if (soe_no>16) soe_no=0;
    ADC=1;
    GZTZ_flag=1;
    PCDATDIR&=0xFFFE;
    //PFDATDIR&=0xFFFD;
    PBDATDIR&=0xFFFD;//开关1分闸输出     
   }   
   if (YSdQiDong_flag==1)// 延时速断保护跳闸逻辑	
   {
       if (YSdYanShi_time==0)
       {
	      if (GZTZ_flag==0)
            {
             PCDATDIR&=0xFFFE;
             //PFDATDIR&=0xFFFD;
             PBDATDIR&=0xFFFD;//开关1分闸输出 
             soe_no++; 
             soe_xuhao[soe_no]=0x0092;
             soe_value[soe_no]=1;
             soe_millisecond[soe_no]=millisecond_get;	
             soe_second[soe_no]=second_get; 
             soe_minute[soe_no]=minute_get;
             soe_hour[soe_no]=hour_get;
             soe_day[soe_no]=day_get;
             soe_month[soe_no]=month_get;
             soe_year[soe_no]=year_get;             
             if (soe_no>16) soe_no=0;
             ADC=1;
             GZTZ_flag=1;
	         ChzQiDong_YunXu = 1;
            }                       
       }
       else
       {
      	 YSdYanShi_time--;
       }
   }
      
   if (GLYSD_YaBan==1)// 过流保护跳闸逻辑 
   {     
    if ((DLIIDFYS_YaBan==1)&&(DSdQiDong_flag==1))
    {
         if (DSdYanShi_time==0)
         {
            if (GZTZ_flag==0)	    
              { 
               PCDATDIR&=0xFFFE;
               //PFDATDIR&=0xFFFD;
               PBDATDIR&=0xFFFD;//开关1分闸输出 
               soe_no++; 
               soe_xuhao[soe_no]=0x0093;
               soe_value[soe_no]=1;
               soe_millisecond[soe_no]=millisecond_get;	
               soe_second[soe_no]=second_get; 
               soe_minute[soe_no]=minute_get;
               soe_hour[soe_no]=hour_get;
               soe_day[soe_no]=day_get;
               soe_month[soe_no]=month_get;
               soe_year[soe_no]=year_get;               
               if (soe_no>16) soe_no=0;
               ADC=1;       
               GZTZ_flag=1;
              }	
         }
         else
         {
           DSdYanShi_time--;	
         }
    }
    else 
    {
      if (fsx_flag==1) //反时限         
      { 
          if (FSdYanShi_oldtime!=0)
          {              
             if (FSdYanShi_time<FSdYanShi_oldtime)
             {
                FSdYanShi_oldtime=FSdYanShi_time;
             } 
             FSdYanShi_oldtime--;
          }  
          else
          {
             if (GZTZ_flag==0)
              {
               PCDATDIR&=0xFFFE;
               //PFDATDIR&=0xFFFD;
               PBDATDIR&=0xFFFD;//开关1分闸输出  
               soe_no++; 
               soe_xuhao[soe_no]=0x0094;
               soe_value[soe_no]=1;
               soe_millisecond[soe_no]=millisecond_get;	
               soe_second[soe_no]=second_get; 
               soe_minute[soe_no]=minute_get;
               soe_hour[soe_no]=hour_get;
               soe_day[soe_no]=day_get;
               soe_month[soe_no]=month_get;
               soe_year[soe_no]=year_get;
               if (soe_no>16) soe_no=0;
               ADC=1;
               GZTZ_flag=1;
              } 
          }
      }
    }    
  }
}



void HeFenCaoZuo(void)
{
 switch (JDQ_HeFen_flag)
  {
   case 100:      
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
                PCDATDIR&=0xFFFE;
                //PFDATDIR&=0xFFFD;
                PBDATDIR&=0xFFFE; //开关1合闸输出              	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
                PCDATDIR|=0x0001;
                //PFDATDIR|=0x0002;
                PBDATDIR|=0x0001; // 开关1合闸返回  
                if (KaiGuan1HZover_flag==0xaa) KaiGuan1HZover_flag=0x55;
                FuncTab[2].status=0x5555;
               }   
            break;            
   case 101:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
	            PCDATDIR&=0xFFFE;
                //PFDATDIR&=0xFFFD;
                PBDATDIR&=0xFFFD;//开关1分闸输出              	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
	        PCDATDIR|=0x0001;
                //PFDATDIR|=0x0002;
                PBDATDIR|=0x0002;//开关1分闸返回 
                if (KaiGuan1FZover_flag==0xaa) KaiGuan1FZover_flag=0x55;
                FuncTab[2].status=0x5555;
               }   
            break; 
   case 200:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
                PCDATDIR&=0xFFFE;
                //PFDATDIR&=0xFFFD;
                PBDATDIR&=0xFFFB;//开关2合闸输出              	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
	        PCDATDIR|=0x0001;
                //PFDATDIR|=0x0002;
                PBDATDIR|=0x0004;//开关2合闸返回  
                FuncTab[2].status=0x5555;
               }   
            break; 
   case 201:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
 	        PCDATDIR&=0xFFFE;
                //PFDATDIR&=0xFFFD;
                PBDATDIR&=0xFFF7;                	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
 	   	PCDATDIR|=0x0001;
                //PFDATDIR|=0x0002;
                PBDATDIR|=0x0008;//开关2分闸输出  
                FuncTab[2].status=0x5555;  
               }   
            break; 
   case 300:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
	        PCDATDIR&=0xFFFE;
                //PFDATDIR&=0xFFFD;
                PBDATDIR&=0xFFEF;             	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
 	        PCDATDIR|=0x0001;
                //PFDATDIR|=0x0002;
                PBDATDIR|=0x0010;//开关3合闸输出 
                FuncTab[2].status=0x5555;
               }   
            break; 
   case 301:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
                PCDATDIR&=0xFFFE;
                //PFDATDIR&=0xFFFD;
                PBDATDIR&=0xFFDF;           	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
	        PCDATDIR|=0x0001;
                //PFDATDIR|=0x0002;
                PBDATDIR|=0x0020;//开关3分闸输出 
                FuncTab[2].status=0x5555;
               }   
            break; 
   case 400:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
	        PBDATDIR&=0xFFBF;            	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
 	        PBDATDIR|=0x0040;//备用1合闸输出 
 	        FuncTab[2].status=0x5555;
               }   
            break; 
   case 500:
            if (MaiKuantimer<FHZShuChu_MaiKuan)
               {
               	JDQ_DONGZUO_flag=0xaaaa;
                PBDATDIR&=0xFF7F;          	
               }            
            else
               {
                JDQ_HeFen_flag=0;
                MaiKuantimer=0;
                JDQ_DONGZUO_flag=0x5555;
                PBDATDIR|=0x0080;//蓄电池放电输出  
                FuncTab[2].status=0x5555;
               }   
            break; 
   default :
   	    JDQ_HeFen_flag=0;
   	    MaiKuantimer=0;
   	    JDQ_DONGZUO_flag=0x5555;
   	    FuncTab[2].status=0x5555;
   	    break;
  }
 
   	
}
void DingZhiXiuGai()
{
   int *p_temp2,i;
   int Mum;     
   unsigned int temp1,temp2;
   p_temp2=&DUDINGZHI_TEMP;
   for (i=0;i<15;i++)
   {
    DingZhi[i]=(*p_temp2)&0x00ff;
    p_temp2++;
    DingZhi[i]=DingZhi[i]+((*p_temp2)<<8);
    DingZhiP[i]=DingZhi[i];
    p_temp2++;           
   }
 //DingZhi[0]  BHYanBan1
 //DingZhi[1]  BHYanBanF1
 //DingZhi[2]  BHYanBan2
 //DingZhi[3]  BHYanBanF2
 //DingZhi[4]  DLSDHDingZhi
 //DingZhi[5]  DLYSDHDingZhi
 //DingZhi[6]  DLDSDHDingZhi
 //DingZhi[7]  DLSDSDingZhi //改为 ChzBiSuo_time
 //DingZhi[8]  DLYSDSDingZhi
 //DingZhi[9]  DLDSDSDingZhi
 //DingZhi[10] XDLYXQDDingZhi
 //DingZhi[11] GLFSXCSDingZhi
 //DingZhi[12] GLFSXJZDingZhi
 //DingZhi[13] GLFSXSJDingZhi //改为 HJSYXSDingZhi
 //DingZhi[14] GLFSXMDingZhi
 //DingZhi[15] HJSTZSDingZhi
 //DingZhi[16] ChzYanShi_DingZhi1
 //DingZhi[17] ChzYanShi_DingZhi2
 //DingZhi[18] ChzYanShi_DingZhi3
 //DingZhi[19] FHZShuChu_MaiKuan
 //DingZhi[20] LXSDHDingZhi
 //DingZhi[21] LXYSDHDingZhi
 //DingZhi[22] LXGSDHDingZhi
 //DingZhi[23] LXSDSDingZhi 
 //DingZhi[24] LXYSDSDingZhi
 //DingZhi[25] LXGSDSDingZhi
 //DingZhi[26] LXFSXCSDingZhi
 //DingZhi[27] LXDLQDDingZhi
 //DingZhi[28] LXFSXSJDingZhi
 //DingZhi[29] LXFSXMDingZhi
 //DingZhi[30] GZGLWYDingZhi
 //DingZhi[31] GZGLYYDingZhi
 //DingZhi[32] GZGLWLDingZhi
 //DingZhi[33] GZGLYanShi_DingZhi1
 //DingZhi[34] GZGLYanShi_DingZhi2
 //DingZhi[35] GZGLYanShi_DingZhi3
 //DingZhi[36] BaoHuDingZhi_sum

     /* DingZhiError_flag 保护定值出错标志 */
    
     temp1=(DingZhi[0]&0x0001);
     temp2=(DingZhi[1]&0x0001);
     if (temp1==temp2)
      {
     	DingZhiError_flag=1;
      }
     else
      {
     	GLSD_YaBan=temp1;           /* 过流I段压板 */
      }

     temp1=(DingZhi[0]&0x0002)>>1;
     temp2=(DingZhi[1]&0x0002)>>1;
     if (temp1==temp2)
      {
     	DingZhiError_flag=1;  
      }
     else
      {
     	GLYSD_YaBan=temp1;          /* 过流II段压板 */   
      }

     temp1=(DingZhi[0]&0x003C)>>2;
     temp2=(DingZhi[1]&0x003C)>>2;
     if (temp1==temp2)
      {
     	DingZhiError_flag=1;  
      }
     else
      {
     	FSXXZ_YaBan=temp1;     /* 反时限曲线选择压板 */   
      }

⌨️ 快捷键说明

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