📄 zkgzcl.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 + -