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

📄 zkgzcl.c

📁 电力系统变压器后被保护的逻辑说明和保护配置
💻 C
字号:
/*************************************************************************/
/*                                                                       */
/*        Copyright (c) 1997-2000 国家电力公司南京电力自动化设备总厂.    */
/*                             新宁公司                                  */
/*************************************************************************/

/*************************************************************************/
/*                                                                       */
/* FILE NAME                                            VERSION          */
/*                                                                       */
/*      ZK .c                                        1.0		 */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/*      ZKGLC    -           故障处理                                    */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*       南京电力自动化设备总厂.					 */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*      None                                                             */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
//*                                                                      */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*         NAME            DATE                    REMARKS               */
/*                                                                       */
/*                    01-01-1999      Created initial version 1.0        */
/*                    06-18-1999      永跳返回后经50mS再整祖复归,       */
/*                                    在ZZFGRelay程序中增加T10,不改框图 */
/*                                                                       */
/*************************************************************************/


	#define G_UWI   (pRunSet->dUn/100)//
	#define ANG_180 (180<<16)
	#define ANG_360 (360<<16)
	
	#ifndef __ZKGZCL_C
	#define __ZKGZCL_C
	#endif

#include "ps620.h"
#include "ps62x.h"
#include "y332c.h"
//#include "main.h"
#ifndef PCTEST
//	#include "main.h"
	#include "FUNC.H"
	#include "main.h"
	#include "GEN.H"
#endif
//#include "gen.h"
#include "relay.h"
#include "set.h"
#include "zkgzcl.h"
//#include "relay.h"
#include "report.h"
#include "irpti0.h"
#include "ctpt.h"
#include "flag.h"

#define A2_IM	 ((long)56756)//sin(120)*65536
#define FreqN    ((long)65536*50)//HZ
#define SETSU1	(pRunSet->dKU58*5)//zy 2004
					


//////////////////////////////////////////////////////
//	子程序					    //
//////////////////////////////////////////////////////
IsNoCurrent()//是否三相无电流
{
	DWORD dG_IWI=G_IWI;
	return tACVal.dIa<dG_IWI &&
		tACVal.dIb<dG_IWI &&
		tACVal.dIc<dG_IWI ;
}

void 
 ResetZkVar()//复位程序的所有变量
{
	_FillMem(&tState,sizeof(struct TSTATE),0);
	_FillMem(&tACVal,sizeof(struct TACVAL),0);
	_FillMem(&tCKFlag,sizeof(struct TCKFLAG),0);

	//bTJRFail=false;

	boolInitRelay=true;

	FYFX1RELAY();
	FYFX2RELAY();
	LXFX1RELAY();
	LXFX2RELAY();
	LXGLRELAY();
	FYGLRELAY();
	IN0RELAY();
//	INGLRELAY();
//	FQXRELAY();
	ZZFGRelay();
	ExecOutput();
}


void 
 ExecOutput()//开出执行程序
{
	static struct TSTATE tOld;
	static struct TCKFLAG tFOld;
	
	static bool bOldTJRFail;
	
	struct TEVENTPARM eventTemp;//记录动作值200402
	DWORD dImax;//记录动作值200402

	static DWORD dEntryCode=0;

	dEntryCode=RELAY_ENTRY_CODE;

	if(boolInitRelay)
	{
		_FillMem(&tOld,sizeof(tOld),0);
		_FillMem(&tFOld,sizeof(tFOld),0);
		bOldTJRFail=bTJRFail;

		return;
	}

	if(tState.TRIPKEY != tOld.TRIPKEY)//发跳令
	{
		//static bool bExec=false;
		if(dTripPassword!=TRIPPASSWORD)
			ResetCpu();
		//_PutDoY( DO_PASSWORD | tState.TRIPKEY);
		_PutDoX( DO_PASSWORD | tState.TRIPKEY);
		_PutDoY( DO_PASSWORD | tState.TRIPKEY);
		if(dTripPassword!=TRIPPASSWORD)
			ResetCpu();
		//if(!bExec){
		WavRcd(140);   //启动录波记录
		//}
	}
	if(tState.TRIPKEY != tOld.TRIPKEY)
	{
		_RstDoX( DO_PASSWORD | tState.TRIPKEY);
	}

	//**************************************************
	//记录故障类型及动作值  zy 2004-02
	//**************************************************
	//
	eventTemp.byParmType=EVTPARM_I;
	//====记录零序过流=====
	eventTemp.uParmVal.dIf=
		_MulFac2(tACVal.dI0,(long)65536,(long)pRunSet->dKI);
	//
	if(tCKFlag.bLXGL1 &&  !tFOld.bLXGL1)
	{
	//	RecordEvent(EV_LXGL1,0);
		RecordParmEvent(EV_LXGL1,0,&eventTemp);
        nTripType=EV_LXGL1;    //记录跳闸类型
	}
	if(tCKFlag.bLXGL2 &&  !tFOld.bLXGL2)
	{
	//	RecordEvent(EV_LXGL2,0);
		RecordParmEvent(EV_LXGL2,0,&eventTemp);
        nTripType=EV_LXGL2;    //记录跳闸类型
	}
	//
	//====记录零序方向过流=====
	//
	eventTemp.uParmVal.dIf=
		_MulFac2(tACVal.dSI0,(long)65536,(long)pRunSet->dKI);
	//
	if(tCKFlag.bLXFXT1&& !tFOld.bLXFXT1)
	{
	//	RecordEvent(EV_LXFXT1,0);
		RecordParmEvent(EV_LXFXT1,0,&eventTemp);
        nTripType=EV_LXFXT1;    //记录跳闸类型
	}
	if(tCKFlag.bLXFXT2 &&  !tFOld.bLXFXT2)
	{
	//	RecordEvent(EV_LXFXT2,0);
		RecordParmEvent(EV_LXFXT2,0,&eventTemp);
        nTripType=EV_LXFXT2;    //记录跳闸类型
	}
	if(tCKFlag.bLXFXT3 &&  !tFOld.bLXFXT3)
	{
	//	RecordEvent(EV_LXFXT3,0);
		RecordParmEvent(EV_LXFXT3,0,&eventTemp);
        nTripType=EV_LXFXT3;    //记录跳闸类型
	}
	if(tCKFlag.bLXFXT4&& !tFOld.bLXFXT4)
	{
	//	RecordEvent(EV_LXFXT4,0);
		RecordParmEvent(EV_LXFXT4,0,&eventTemp);
        nTripType=EV_LXFXT4;    //记录跳闸类型
	}
	if(tCKFlag.bLXFXT5 &&  !tFOld.bLXFXT5)
	{
	//	RecordEvent(EV_LXFXT5,0);
		RecordParmEvent(EV_LXFXT5,0,&eventTemp);
        nTripType=EV_LXFXT5;    //记录跳闸类型
	}
	if(tCKFlag.bLXFXT6 &&  !tFOld.bLXFXT6)
	{
	//	RecordEvent(EV_LXFXT6,0);
		RecordParmEvent(EV_LXFXT6,0,&eventTemp);
        nTripType=EV_LXFXT6;    //记录跳闸类型
	}
	//
	//====记录复压方向及复压过流=====
	//
		dImax=tACVal.dIa;
	if(dImax<tACVal.dIb) {
		dImax=tACVal.dIb;
	}
	if(dImax<tACVal.dIc) {
		dImax=tACVal.dIc;
	}
	eventTemp.uParmVal.dIf = _MulFac2(dImax,(long)65536,(long)pRunSet->dKI);
	//==================
	//
	if(tCKFlag.bFYGL1 &&  !tFOld.bFYGL1)
	{
	//	RecordEvent(EV_FYGL1,0);
		RecordParmEvent(EV_FYGL1,0,&eventTemp);
        nTripType=EV_FYGL1;    //记录跳闸类型
	}
	if(tCKFlag.bFYGL2 &&  !tFOld.bFYGL2)
	{
	//	RecordEvent(EV_FYGL2,0);
		RecordParmEvent(EV_FYGL2,0,&eventTemp);
        nTripType=EV_FYGL2;    //记录跳闸类型
	}
	if(tCKFlag.bFYFXT1 &&  !tFOld.bFYFXT1)
	{                            
	//	RecordEvent(EV_FYFXT1,0);	
		RecordParmEvent(EV_FYFXT1,0,&eventTemp);
        nTripType=EV_FYFXT1;    //记录跳闸类型

⌨️ 快捷键说明

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