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

📄 commujk1f.c

📁 电力系统中的保护装置全部代码
💻 C
📖 第 1 页 / 共 5 页
字号:
               	    	for(i=1; i<=char2; i++)        //calculate crc         
                   		{	
                   			char3= char3 + (0xff&(*pTRxdBuffer++));    
               	        }
               	    	char3 = 0xff&char3;      
               	    	if(char3 != (*pTRxdBuffer&0xff))
                  	 	{  
                      		flag2 = Again_AllReceive;
                   	   		*(ReceBuff.pOutBuffer) = *(ReceBuff.pInBuffer); 
                   	   		break;
                   	 	}										
               
               	    	if( ((*++pTRxdBuffer)&0xff) != End_Code)     
                   	 	{
                    		flag2 = Again_AllReceive;
                    		*(ReceBuff.pOutBuffer) = *(ReceBuff.pInBuffer);
                    		break;
                   	 	}										
               
               	    	ReceFrameFlagJK1 = FrameunFix;
               	    	return;
               	    }
             	   
             		else
                    {
                    	flag2 = Again_OneReceive; 
                    	break;
                    }
                              
       	    	default:     
                	flag2 = Again_OneReceive;   
             		break;     
            }             
 	 	}      
	//-----------------_continue to receive one character------------------------*/  
    	if(flag2 == Again_OneReceive)
     	{                                     
     		pTRxdBuffer = Buffer+5;
      		Rchar16c554JK1(char1,COM_PORT);
      		if(char1[1] == 0x00)              	//receive char_ reliable
         	{
          		*pTRxdBuffer = char1[0];
          		ptr=pTRxdBuffer = Buffer;       //transmit char_ to frame buffer
          		for(i=1; i<=5; i++)
        		{	
        			*pTRxdBuffer++ = *++ptr;   
                }
          		flag2 = Check_Receive; 
          	}
      		else  
          	{
          		flag2 = Again_AllReceive;  
       	    }
       	}                            
    }         	  
}      		             
    
/* This function has been inspected.GauTsunFar 2001-12-22

函数功能: transmit one frame of characters; 

输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1; 
          length of transmit frame----------------- Length1;
          commu port--------------------------------COM_PORT;
          
输出参数: no;
         
返回数值: no need mention;

修改记录:

*/ 

int TransmitOneFrameJK1(unsigned char* TransUpBuffRemJK1,int Length1,unsigned char *COM_PORT) 
{
int	i,flag; 
unsigned char 	*pTRxdBuffer; 
volatile unsigned char *address1,*address2;  
int 	timecount; 
OPTION          old_preempt;
//----------------------------------------------------------------        
	     	
    address1 = COM_PORT+5;                         /* LineSR */
 	address2 = COM_PORT+0;                         /* TransmitBR */
 	
 	pTRxdBuffer = TransUpBuffRemJK1;
 	
 //U_Sleep(5);
 	if(COM_PORT == Com_Port3) 
 	{	
 		
//        CtrlPortBuf  |= _485_OE1;  		/*485OE1 Selected*/
// 		*RDY_OE = CtrlPortBuf;
     enable485();
 	}
 	if(COM_PORT == Com_Port4) 
 	{
// 		CtrlPortBuf |= _485_OE1;           /*485OE2 selected*/ 
// 		*RDY_OE = CtrlPortBuf;
     enable485();
 	}         
 	        
 	NU_Sleep(5);
 	
 	for(i=1; i<=Length1; i++)
    {
       Tchar16c554JK1(COM_PORT,*pTRxdBuffer++);    
    }
        
    flag = *address1; 
    old_preempt = NU_Change_Preemption(NU_NO_PREEMPT);
   	while(!((flag&TransReady_) && (HoldRegEmpty_&flag))) 
   	{
   		flag = *address1; 
    }
   	
//  	NU_Sleep(5);   
  	
    if(COM_PORT==Com_Port3)        
 	{	
 	 
// 		CtrlPortBuf  &= (~_485_OE1);  /*485OE1 unSelected*/ 
// 	    *RDY_OE = CtrlPortBuf; 
         disable485()
 	}
 	if(COM_PORT==Com_Port4)        
 	{
// 		CtrlPortBuf &= (~_485_OE1);   /*485OE2 unSelected*/ 
//      *RDY_OE = CtrlPortBuf; 
        disable485()
    }
    NU_Change_Preemption(old_preempt);
 	return(1);                   

}                     

/* This function has been inspected.GauTsunFar 2001-12-22

函数功能: retransmit a frame; 

输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;  
          commu port--------------------------------COM_PORT;
                    
输出参数: no;
         
返回数值: no need mention;

修改记录:

*/ 
int ReTransmitFrameJK1(unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
int  Length1; 
//----------------------------------------------------------------  
	if((0xff&TransUpBuffRemJK1[0]) == 0x10)
    {
    	Length1	= 5; 
 	}
 	else if((0xff&TransUpBuffRemJK1[0]) == 0x68)   
    {
    	Length1	= (0xff & TransUpBuffRemJK1[1])+6;
 	}                                                     
 	else
 	{
 		return(0);
 	}
 	TransmitOneFrameJK1(TransUpBuffRemJK1,Length1,COM_PORT) ;
 	return(1);
}                       

/* This function has been inspected.GauTsunFar 2001-12-22

函数功能: transmit a frame of Unfix Frame; 

输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;   
          commu port--------------------------------COM_PORT;
                    
输出参数: no;
         
返回数值: no need mention;

修改记录:	

*/ 
 
int FrameTransmitUnFixJK1(unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
int  Length1,i;
unsigned char AccountNumber = 0;
unsigned char *pTRxdBuffer;
//---------------------------------------------------------------- 
 	pTRxdBuffer = TransUpBuffRemJK1+4;
 	TransUpBuffRemJK1[0] = TransUpBuffRemJK1[3] = 0x68; 
 	TransUpBuffRemJK1[5] = subAddress_backup;
 	Length1=(TransUpBuffRemJK1[1] & 0xff); 
 	
 	if(Length1 <= 2)return(0);
 	for(i=1; i<=Length1; i++)
    {
    	AccountNumber = AccountNumber + *pTRxdBuffer++; 
 	}
 	*pTRxdBuffer++ = AccountNumber; 
 	*pTRxdBuffer = 0x16;
 	Length1 = (TransUpBuffRemJK1[1]&0xff)+4+2;
 	TransmitOneFrameJK1(TransUpBuffRemJK1,Length1,COM_PORT) ;
 	return(1);  
}   
   
/* This function has been inspected.GauTsunFar 2001-12-22

函数功能: transmit a frame of fix Frame; 

输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;   
          commu port--------------------------------COM_PORT;
                    
输出参数: no;
         
返回数值: no need mention;

修改记录:	

*/  
 
int FrameTransmitFixJK1(unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
int  Length1=5;
//---------------------------------------------------------------- 
 	TransmitOneFrameJK1(TransUpBuffRemJK1,Length1,COM_PORT) ;
 	return(1);  
}


/* This function has been inspected.GauTsunFar 2001-12-22

函数功能:1. compare reveive Frame and transfer corresponding function.
         2. transmit the corresponding data to buffer of transmiting frame; 

输入参数: buffer address of receive frame--------- ReceUpBuffRemJK1;
          commu port-------------------------------COM_PORT; 
                    
输出参数: buffer address of transmit frame-------- TransUpBuffRemJK1;
         
返回数值: no need mention;

修改记录:		

*/            

int 	TransferFun103JK1(unsigned char* ReceUpBuffRemJK1,
                          unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
unsigned char ControlCode;
UNSIGNED Event_flag;  
int i;     
unsigned char temp_char;
//----------------------------------------------------------------  
	//------------------------receive fix frame----------------------*/
  	if(ReceFrameFlagJK1==FrameFix) 
    {
    	ControlCode = (ReceUpBuffRemJK1[1]) & 0xff; 
     
    	if(!(ControlCode&_PRM))
       	{
       		ReceFrameFlagJK1	=	NotPrimaryFrame ;
       		TransmitflagJK1 = NoTransmit; 
       		return(0);   			/*Not primary*/
       	}
     
    	if((ControlCode&_FCV))
       	{
       		if(!((ControlCode&_FCB)^(ImageCtrCodeJK1&_FCB)))
       		{
       			if(!(MsgTransUpFlagJK1&Reset_CU))
           		{                           
           			TransmitflagJK1	= ReTransmit;
           			ImageCtrCodeJK1	= ControlCode;
           			return(1);
           		}   
           	}	        
        }   	
    	ImageCtrCodeJK1	=	ControlCode;   
    	switch(ControlCode&0x0F)
       	{
       		case 0:         			/*reset communication component*/
           		Initial_16c554JK1(COM_PORT);
           		MsgTransUpFlagJK1	= Reset_CU; 
           		MsgTransUpFlagJK1 |= Reset_Device;
           		Sure_MsgJK1();
           		break;     
      		case 7:          			/*reset FCB component*/
           		ImageCtrCodeJK1	&= 0xdf;
            	MsgTransUpFlagJK1 |= Reset_FCB; 
            	Sure_MsgJK1();
            	break; 
         	case  9:  
                				/*链路状态*/
            	LSDU_Status_ReplyJK1();     
            	break;
         	case 10:                    
               
            	if(MsgTransUpFlagJK1&Reset_CU )  
            	{
                	Rest_CU_MsgJK1();
                	break;
                } 
                
                if(MsgTransUpFlagJK1&Reset_FCB) 
                {
                	Rest_FCB_MsgJK1();
                	break;
                }
                
                if(MsgTransUpFlagJK1&Reset_Device) 
                {
                	Rest_Device_MsgJK1();
                	break;
                }
         
               	if(MsgTransUpFlagJK1&Gen_Inspect_Start)
                {
                	Trans_Gen_Inspect_Events();
                	break; 
                } 	 
                
                if(MsgTransUpFlagJK1&ReModify_Time)
                {
                	Modify_Time_MsgJK1();
                	break;
                }  
                       
                if(MsgTransUpFlagJK1&Sets_Parameter)
                {
                	Sets_Parameter_MsgJK1();
                	break;
                }  
                   
                  if(MsgTransUpFlagJK1&ASDU20_Sure)
                {
                	ASDU_20_Sure();
                	break; 
                } 				 	/*有关命令确认*/   
                   
                if(pReportOUT_COM != pReportIN)
                {
                	Trans_DIN_Status_ChangeJK1(); 
                	break;
                }           
                
              
                if(MsgTransUpFlagJK1&ASDU20_Return)
                {
                	ASDU_20_Return();
                	break; 
                }                   
                
                if(MsgTransUpFlagJK1&Setting_COMMAND)
                {
                	Transmit_ASDU61();
                	break; 
                }				   	
               
                if(MsgTransUpFlagJK1&DIN_Status_Change)
                {
                	Trans_DIN_Status_ChangeJK1();
                	break;
                } 	
                
                if(MsgTransUpFlagJK1&Tap_Status_Change)
                {
                	Trans_Tap_Chger_Change();
                	break; 
                }  	
                
                if(MsgTransUpFlagJK1 & WarningSignals) 
                {
                	Trans_Self_Insp_ErrorJK1();
                	break;
                }
                
                if(MsgTransUpFlagJK1&Exec_Tap_Obj)
                {
                	Trans_Exec_Tap_Obj();
                	break; 
                }  		/*有关TAP确认*/
                if(MsgTransUpFlagJK1&Select_Tap_Obj)
                {
                	Trans_Select_Tap_Obj();
                	break; 
                }  		/*有关TAP确认*/
                if(MsgTransUpFlagJK1&Esc_Tap_Obj)
                {
                	Trans_Esc_Tap_Obj();
                	break; 
                }  		/*有关TAP确认*/
               
                if(MsgTransUpFlagJK1&Exec_CB_Obj)
                {
                	Trans_Exec_CB_Obj();
                	break; 
                }  		/*有关CB确认*/
                if(MsgTransUpFlagJK1&Select_CB_Obj)
                {
                	Trans_Select_CB_Obj();
                	break; 
                }  		/*有关CB确认*/
                if(MsgTransUpFlagJK1&Esc_CB_Obj)
                {
                	Trans_Esc_CB_Obj();
                	break; 
                }  		/*有关CB确认*/
                   
                if(MsgTransUpFlagJK1&Coulometer_Freeze)
                {
                	Trans_Coulometer_Freeze();
                	break; 
                }  	/*有关命令确认*/
                      
                if(MsgTransUpFlagJK1&Coulometer_Count)
                {
                	Trans_Coulometer_Count();
                	break; 
                }   	/*有关命令确认*/  
                
                    
                   if(MsgTransUpFlagJK1&Coulometer_End)
                {
                	Trans_Coulometer_End();
                	break; 
                }   	
                   
                   if(MsgTransUpFlagJK1&Coulometer_No)
                {
                	Trans_Coulometer_No();
                	break; 
                }   	  
                if(MsgTransUpFlagJK1&Return_Version)
                {
                	MsgTransUpFlagJK1 &= Return_Version^0xffffffff;
                	Rest_FCB_MsgJK1();
                	TransUpBuffRemJK1[8]=21;
                	TransUpBuffRemJK1[11]=0x06;
                	break;
                }	/*有版本确认*/ 
                if(MsgTransUpFlagJK1 & ERROR_COMMAND)
                {
                	Trans_ASDU_ERROR();    
                	break;  
                }
                          
                NoMessag_ReplyJK1();
                break;            
         	case 11:
            	if(ASDU_50_FlagJK1 & _Data_RDY)

⌨️ 快捷键说明

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