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

📄 commujk1f.c

📁 电力系统中的保护装置全部代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*************************************************************************/
/*                                                                       */
/*        Copyright (c) 2001-2001 XJ electric corporation.               */
/*                                                                       */
/* PROPRIETARY RIGHTS of XJ Group are involved in the                    */
/* subject matter of this material.  All manufacturing, reproduction,    */
/* use, and sales rights pertaining to this subject matter are governed  */
/* by the license agreement.  The recipient of this software implicitly  */
/* accepts the terms of the license.                                     */
/*                                                                       */
/*************************************************************************/

/*************************************************************************/
/*                                                                       */
/* FILE NAME                                            VERSION          */
/*                                                                       */
/*      commuJK1.c                                         ver1.0        */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/*      Rchar16c554 - Receive char of 16C554                             */
/*      Tchar16c554 - Transmit char of 16C554                            */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This file contains the Tms32 processor dependent Receive char    */
/*      routines and data structure.                                     */
/*      This file contains the Tms32 processor dependent transmit char   */
/*      routines and data.                                               */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*      GauTransFar, XJ electric corporation.                            */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*      Receive buffer of A channel, Serio0Addr of 16c554A               */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
/*      Rchar16c554                     Receive char                     */
/*      Tchar16c554                     transmit char                    */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*      Initial16C554A                  initial a6c554 A channel         */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*         NAME            DATE                    REMARKS               */
/*      GauTransFar       2001-8-22      complete Rchar16c554 and        */
/*                                       Tchar16c554 Function            */
/*                                                                       */
/*************************************************************************/
#include  "nucleus.h"
#include  "comm.h" 
#include  "menu_task.h"
#include  "BaseVariable.h"
#include	"math.h" 

extern   JUMPER   OC_I_jumper[];
extern   JUMPER   OC_II_jumper[];
//extern   JUMPER   OC_III_jumper[]; 
extern   JUMPER   LF_jumper[];
extern   JUMPER   Reclose_jumper[];  
extern   JUMPER   Over_Load_jumper[]; 
extern   JUMPER   Zero1_jumper[]; 
extern   JUMPER   OC_ACC_jumper[];
extern   PROTECT  protect_Reclose; 
extern   char      *deversion; 
extern   unsigned  CRC_Code;
extern   UNSIGNED  Charge_Time;                       
/*First define remote receive/transmit frame buffer*/  

#pragma 	DATA_SECTION(ReceUpBuffRemJK1,".sysm8"); 
#pragma 	DATA_SECTION(TransUpBuffRemJK1,".sysm8");

unsigned char 	ReceUpBuffRemJK1[512];   /*remote receive buffer of A_channel*/
unsigned char 	TransUpBuffRemJK1[512];  /*remote Transmit buffer of A_channel*/
#pragma 	DATA_SECTION(CommErrBuffRemJK1,".sysm8");
unsigned char 	CommErrBuffRemJK1[256];  



unsigned char   ReceFrameFlagJK1;      /*sure that receive  FixFrame or InFixFrame*/
unsigned char   TransmitflagJK1;       /*declare to be retransmit/Fix/InFix Frame*/
unsigned char   ImageCtrCodeJK1;       /*image of FCB_ControlCode of a frame*/ 
unsigned int    MsgTransUpFlagJK1=0x00000006;
unsigned char   TimeCopyJK1[8];
unsigned char   ACD_CtrCodeJK1;         
unsigned char   Self_Insp_ErrorJK1; 
unsigned char   MeasuredValueFlag;

unsigned int    Warning_Signal_Flag;   /*used for ASDU1*/  
unsigned int    Image_Warning_Sign;    /*used for ASDU1*/

 
unsigned int	*DinputAsm1 = (unsigned int*)0x810000;
unsigned int	*DinputAsm2 = (unsigned int*)0x811000;
unsigned int    Image_DinputAsm[2];


extern UNSIGNED		CtrlPortBuf;
extern REPORT	*pReportIN;    
extern UNSIGNED	PulseCounter[PULSENUM];      
REPORT	*pReportOUT_COM = ReportRAM; 

int		Gen_Insp_IndexJK1;
int		Inspect_NumberJK1;

unsigned char     ASDU64_DCO_CPU_JK1;  
unsigned char     ASDU65_DCO_CPU_JK1;
unsigned char     ASDU61_DCO_CPU_JK1;
unsigned char     ASDU20_DCO_CPU_JK1; 
unsigned char     ASDU88_DCO_CPU_JK1;

unsigned char		Identity_NumberJK1;
unsigned char		Common_Addr_JK1;

unsigned char 	ASDU88_Message_JK1;  
unsigned char 	ASDU20_Message_JK1; 
unsigned char 	ASDU64_Message_JK1; 
unsigned char 	ASDU65_Message_JK1; 
unsigned char 	ASDU61_Message_JK1; 

unsigned char	*COM_PORT;                   
                    
extern unsigned subAddress_backup; 
 	  
volatile int ProtocolFlag	=  XJ103Protocol;
int 	ASDU_50_FlagJK1 = 0;   
int 	ASDU_9_FlagJK1 = 0;
int 	iStartNumber;
UNSIGNED	timecountJK1;
volatile int	timecount1=0;   

//about setting     
int		iSetNumber;   
INT	 	iLONC_SetZoneNum;
#define TEMPSAVESETSBUFLENGTH 200				
 	
float	SetsBuf[TEMPSAVESETSBUFLENGTH];
int		int_SetsBuf[TEMPSAVESETSBUFLENGTH]; 
	
extern PROTECT *PRO_Created_Protect_List;
extern UNSIGNED PRO_Total_Protect;
INT Set_Query(INT iSetZone); 
INT Set_Change(VOID);
INT Set_executive(INT iSetZone);
INT Modify_SSS(void);  
VOID Fill_Single_Frame_Setting(INT iSetNumber, INT iStartNumber, VOID *buffer);


             
/*--------The functions about communication task loop--------------*/
int 	Communication_1_task(void);           
int 	TransferFun103JK1(unsigned char* ReceUpBuffRemJK1,
                          unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT);

int 	TransmitOneFrameJK1( unsigned char* TransUpBuffRemJK1,int Length1,
                             unsigned char *COM_PORT);       
                             
void 	ReceiveFrame_JK1   (   unsigned char* Buffer,unsigned char *COM_PORT);                   
int 	ReTransmitFrameJK1 (   unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT);   
int 	FrameTransmitUnFixJK1( unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT);  
int 	FrameTransmitFixJK1(   unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT);  

/*--------The functions about  replying message --------------*/ 
int  	Rest_FCB_MsgJK1	 (void);     
int  	Rest_CU_MsgJK1	 (void);
int  	Rest_Device_MsgJK1 (void); 
int  	Rest_Version_MsgJK1 (void);
int  	Sure_MsgJK1	 (void);
int  	NoMessag_ReplyJK1 (void); 
int  	LSDU_Status_ReplyJK1 (void);
int  	LSDU_MsgJK1	 (void); 
int 	ASDU_20_Sure(void); 
int 	ASDU_20_Return(void); 
int		Receive_ASDU_ERROR(void);
int		Trans_ASDU_ERROR(void);

int  	Modify_Time_MsgJK1(void);
int  	Sets_Parameter_MsgJK1(void);
int  	Trans_DIN_Status_ChangeJK1(void); 
int  	Trans_DIN_StatusJK1(void);
int		Modify_TimeJK1(void);
int  	Trans_Gen_Inspect_End(void); 
int  	Trans_Gen_Inspect_Events(void);  
int  	Trans_Coulometer_Freeze(void) ;  
int  	Trans_Coulometer_Count(void);
int  	Trans_Object	(void); 
int  	Trans_Exec_Tap_Obj(void); 
int  	Trans_Select_Tap_Obj(void);
int  	Trans_Esc_Tap_Obj(void); 
int  	Trans_Exec_CB_Obj(void); 
int  	Trans_Select_CB_Obj(void);
int  	Trans_Esc_CB_Obj(void);   
int  	Trans_Tap_Chger_Status(void);
int  	Trans_Tap_Chger_Change(void);
int  	Measure_Value	(void);                                
int  	Trans_Self_Inspection(void);
int  	Trans_Self_Insp_ErrorJK1(void); 
int		JK1_Timer(void);    
int		Receive_ASDU_65(void);  
int		Receive_ASDU_64(void); 
int		Receive_ASDU_88(void);
int		Receive_ASDU_20(void);
int		Receive_ASDU_61(void);
int		Transmit_ASDU61(void);   
int     Trans_Coulometer_End(void); 
int     Trans_Coulometer_No(void); 
/*---------------------------------------------------------*/
extern int 		Initial_16c554JK1(unsigned char *COM_PORT);   
extern int 		Construct_StructJK1 (unsigned char *COM_PORT);
extern int 		Rchar16c554JK1(unsigned char char2[2],unsigned char *COM_PORT);
extern void		Tchar16c554JK1(unsigned char *COM_PORT,unsigned char char1); 
extern VOID	READ_DEC_TIME(UNSIGNED *p);
extern struct	Buffer_Struct ReceBuff;

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

函数功能:Communication task loop; 

输入参数: no

输出参数: no
         
返回数值: no need mention;

修改记录: 	

*/
int Communication_1_task(void)
{
int	timecount;
//------------------------------------------------
  
    timecount = TMD_System_Clock; 
//    timecount1 = 0;
    
//    CtrlPortBuf &= (~_485_OE1);   /*485OE2 unSelected*/ 
//    *RDY_OE = CtrlPortBuf;
       disable485()
    Self_Insp_ErrorJK1 = 0;
    Warning_Signal_Flag = 0;
    Image_Warning_Sign = 0; 
        
  	while(1) 
   	{
   					 				/* com1- Com_Port1; com2- Com_Port2;
                	           	    com3- Com_Port3; com4- Com_Port4; 	*/
   		COM_PORT = Com_Port3; 

   	    JK1_Timer();
   	   		
   		if(Warning_Signal_Flag != Image_Warning_Sign)
   		{
       		MsgTransUpFlagJK1 |= WarningSignals;
       		Self_Insp_ErrorJK1 = Warning_Signal_Flag ^ Image_Warning_Sign; 
       		Image_Warning_Sign = Warning_Signal_Flag; 
   		}    

   		if(ProtocolFlag == XJ103Protocol)          			      
       	{
        	ReceiveFrame_JK1(ReceUpBuffRemJK1,COM_PORT);                  
        
        	TransferFun103JK1(ReceUpBuffRemJK1,TransUpBuffRemJK1,COM_PORT); 
        
        	if(TransmitflagJK1 == ReTransmit)
        	{
        		ReTransmitFrameJK1(TransUpBuffRemJK1,COM_PORT);      
           	}
        	
        	if(TransmitflagJK1 == FrameFix)  
            {
           		FrameTransmitFixJK1(TransUpBuffRemJK1,COM_PORT);      
            }
        	
        	if(TransmitflagJK1 == FrameunFix)
            {
           		FrameTransmitUnFixJK1(TransUpBuffRemJK1,COM_PORT);    
            }
        }
        NU_Relinquish();
    }	 
   
}   

/* 

函数功能:  

输入参数:  
                    
输出参数: 
         
返回数值: 

修改记录:		

*/   
int	JK1_Timer(void)
{       
unsigned char temp_char;
//---------------------------------------------

	if((TMD_System_Clock - timecountJK1)>2000)
    {
		        	            
     	timecountJK1 = TMD_System_Clock;
        ASDU_50_FlagJK1 |= _Data_Request;  /*2 seconds transmit one 2nd data*/    
	    timecount1++;  
        if(timecount1>2)            /*5 seconds transmit one 2nd data*/
       	{           
            ASDU_9_FlagJK1 |= _Data_Request9; 
            timecount1 = 0;  	        
         }             	    	
	}    
   	return(1);	
}



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

函数功能: receive a frame of data,and distinct fix frame/in fix frame; 

输入参数: buffer address of receive frame--------------- Buffer; 
          commu port---------------------------------- COM_PORT;
          
输出参数: trans char to receive frame buffer------------ Buffer;
         
返回数值: no need mention;

修改记录:

*/


void ReceiveFrame_JK1(unsigned char* Buffer,unsigned char *COM_PORT) 
{
int  i;
int flag2;
unsigned char *pTRxdBuffer,*ptr;      	             
unsigned char char1[2],char2,char3;  


//-------------------------------------------------------------------
 	Construct_StructJK1 (COM_PORT);
 	flag2 = Again_AllReceive;  	            
        
    while(1)
	{                     
		//-----------------receive five characters------------------------*/         
     	if(flag2 == Again_AllReceive)
   	   	{
	   		pTRxdBuffer	= Buffer;                 
      		flag2 = Check_Receive;
       		for(i=0; i<5; i++)
    		{    
    			Rchar16c554JK1(char1,COM_PORT);
    			if(char1[1] == 0x00)                    
        		{
        	    	*pTRxdBuffer++ = char1[0];
        	    
      	        }
      			else
      	   		{
      	   			flag2 = Again_AllReceive; 
      	   			break;
      	   		}
      		}
   	   	}
		//-----------------to judge whether  fix/unfix frame------------------------*/ 
   	  	if(flag2 == Check_Receive)            
 	    {   
	    	switch(Buffer[0]&0xff)     		
      		{     
	    		case Start_Code1:               //fix frame
       		      
       				if(((Buffer[2]&0xff) == (subAddress_backup&0xff))
       				||((Buffer[2]&0xff) == 0x0ff)) 
           			{                			 
        				if((Buffer[4]&0xff) != End_Code) 
            			{
            				flag2 = Again_OneReceive; 
            				break; 
            			}      
               		  
            			char3 = (Buffer[1]&0xff)+(Buffer[2]&0xff);
               	  		if((Buffer[3]&0xff) != (char3&0xff) )
                     	{
                     		flag2 = Again_OneReceive; 
                     		break; 
                     	} 		//Account number
                          
                  		ReceFrameFlagJK1 = FrameFix;  
                  		return;                   		
                  	}
                	else
                  	{
                  		flag2 = Again_OneReceive; 
                  		break; 
                  	}
                             
 	     		case Start_Code2:                  	
                 
                	if ((Buffer[3]&0xff) != (Start_Code2&0xff)) 
                	{
                		flag2 =	Again_OneReceive; 
                		break; 
                	}
                        
                	if ((Buffer[1]&0xff) != (Buffer[2]&0xff))
                    {
                    	flag2 = Again_OneReceive; 
                    	break; 
                    } 
                     
            		pTRxdBuffer = Buffer+5;
            		Rchar16c554JK1(char1,COM_PORT);
            		if(char1[1] == 0x00)    
                    {
                    	*pTRxdBuffer = char1[0]; 
                    }	
          			else
             	    {
             	    	flag2 = Again_AllReceive; 
             	    	break; 
             	    }
             	         					//try again for_ receiveing 
            		if(((Buffer[5]&0xff) == (subAddress_backup&0xff))||
            		   ((Buffer[5]&0xff) == 0x0ff))  
           	 		{
               	    	char3 = 0;
            	    	char2 = Buffer[1]&0xff; 
             	    	pTRxdBuffer	= Buffer+6; 
             	    				
                    	for(i=1; i<=char2; i++)
                    	{
                   			Rchar16c554JK1(char1,COM_PORT);
                   			if(char1[1] == 0x00)    
                   			{
                   				*pTRxdBuffer++ = char1[0]; 
                   			}
                  			else
            				{
            					flag2 = Again_AllReceive; 
            					break; 
            				}				
                  		}
               	                                
               	        if(flag2 == Again_AllReceive) break;
               	    				
               	    	pTRxdBuffer = Buffer+4;

⌨️ 快捷键说明

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