📄 commujk1f.c
字号:
/*************************************************************************/
/* */
/* 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 + -