2431 lines
96 KiB
C
2431 lines
96 KiB
C
/*
|
||
*********************************************************************************************************
|
||
* Copyright (c) 2014,JD-YD
|
||
* All Rights Reserved
|
||
*
|
||
*
|
||
* File : init_atbh.c
|
||
* Author : luoyang
|
||
* Version : 1.0
|
||
* Date :
|
||
* Descriptiong : atbh初始化
|
||
* Function List:
|
||
* History :
|
||
1. Date:
|
||
Author:luoyang
|
||
Modification:build this modle
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#include "..\h\predefine.h"
|
||
#ifdef _atbh_c_
|
||
|
||
#include <math.h>
|
||
#include <stdio.h>
|
||
|
||
#include ".\inc\atbh.h"
|
||
#include "..\h\lib.h"
|
||
#include "..\h\variable.h"
|
||
#include ".\inc\parameter_atbh.h"
|
||
#include ".\inc\analog_atbh.h"
|
||
#include ".\inc\inout_atbh.h"
|
||
|
||
#include "..\digit_protect\inc\digit_protect_inoutcode.h"
|
||
void atbh_breaker_err_param_init();
|
||
void Reset_Init(void);
|
||
unsigned int CheckUserSetting(unsigned char *Address);
|
||
unsigned int CheckSysSetting(unsigned char *Address);
|
||
|
||
unsigned int ScaleAnalogChannel(unsigned char Number,float Parameter); //刻度校正
|
||
float checkUIScale(float Parameter,unsigned char ChNo);
|
||
|
||
void InitProtectItem(void);
|
||
void InitAnalogChannel(void);
|
||
void InitOutStatus(void);
|
||
unsigned int GetSysSetting(void);
|
||
unsigned int GetUserSetting(unsigned int Number);
|
||
void InitRemoteObject(void);
|
||
|
||
void yaoXinSetInitial();//程序内部固定硬遥信配置
|
||
void DoubleYaoXinDelayTimeInit();
|
||
|
||
unsigned int usrSetValueCheckSum();//计算用户定值校验和
|
||
unsigned int sysSetValueCheckSum();//计算系统定值校验和
|
||
void atbh_itemClsDwnManageInit();
|
||
|
||
extern int CheckYBStatus(unsigned int YaoXinNo,unsigned int YBStatus);
|
||
extern void AninChannalCoeffInit();
|
||
extern float UIScaleCheck(float Parameter, unsigned char ChNo);
|
||
extern void AninChannallCoeff_SV_init();
|
||
void InitSoftStrapCtrlObject(void);
|
||
|
||
/****************************************************
|
||
* void InitProtectItem(void)
|
||
* 描述:初始化保护元件
|
||
* 历史: 对元件头部闭锁标志初始化
|
||
****************************************************/
|
||
void InitProtectItem(void)
|
||
{
|
||
unsigned int temp;
|
||
static int rebootip = 0;
|
||
|
||
//差动速断
|
||
ATBH_CDSDYJ.ClsDwnIP = 0;
|
||
ATBH_CDSDYJ.TouRuIP=ATBH_CDSDTouRu; //保护元件投入标志
|
||
ATBH_CDSDYJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_CDSDYJ.SetValue=ATBH_CDSDSet; //整定值
|
||
ATBH_CDSDYJ.SetTime=ATBH_CDTimeSet; //整定值
|
||
ATBH_CDSDYJ.MeasureValue=&ChaDongValue.CDI; //测量值
|
||
ATBH_CDSDYJ.QiDongBit=ATBH_CDSD_BIT; //元件启动位
|
||
ATBH_CDSDYJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_CDSDYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_CDSDYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_CDSDYJ.QiDongCode=ATBH_CDSD_QD; //元件启动事件代码
|
||
ATBH_CDSDYJ.ChuKouCode=ATBH_CDSD_CK; //元件出口事件代码
|
||
ATBH_CDSDYJ.FanHuiCode=ATBH_CDSD_FH; //元件返回事件代码
|
||
ATBH_CDSDYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_CDSDYJ.YaoXinNumber=ATBH_YAOXIN_CDSD; //对应的软遥信号
|
||
|
||
//比率差动
|
||
ATBH_CDYJ.ClsDwnIP = 0;
|
||
ATBH_CDYJ.TouRuIP=ATBH_CDTouRu; //保护元件投入标志
|
||
ATBH_CDYJ.CDSetValue=ATBH_CDSet; //差动整定值
|
||
ATBH_CDYJ.ZD1SetValue=ATBH_ZD1Set; //制动电流1整定值
|
||
ATBH_CDYJ.ZD2SetValue=ATBH_ZD2Set; //制动电流2整定值
|
||
ATBH_CDYJ.K1SetValue=ATBH_ZDXS1Set; //制动比率1
|
||
ATBH_CDYJ.K2SetValue=ATBH_ZDXS2Set; //制动比率2
|
||
ATBH_CDYJ.SetTime=ATBH_CDTimeSet; //整定时间
|
||
ATBH_CDYJ.MeasureValue=&ChaDongValue; //测量值
|
||
ATBH_CDYJ.QiDongBit=ATBH_CD_BIT; //元件启动位
|
||
ATBH_CDYJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_CDYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_CDYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_CDYJ.QiDongCode=ATBH_CD_QD; //元件启动事件代码
|
||
ATBH_CDYJ.ChuKouCode=ATBH_CD_CK; //元件出口事件代码
|
||
ATBH_CDYJ.FanHuiCode=ATBH_CD_FH; //元件返回事件代码
|
||
ATBH_CDYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_CDYJ.YaoXinNumber=ATBH_YAOXIN_CD; //对应的软遥信号
|
||
|
||
//差流越限告警元件
|
||
ATBH_CLYXYJ.ClsDwnIP = 0;
|
||
ATBH_CLYXYJ.TouRuIP=ATBH_CDTouRu; //保护元件投入标志
|
||
ATBH_CLYXYJ.CDSetValue=ATBH_CDSet * ATBH_CLYXSet; //差动整定值
|
||
ATBH_CLYXYJ.ZD1SetValue=ATBH_ZD1Set;// * ATBH_CLYXSet; //制动电流1整定值
|
||
ATBH_CLYXYJ.ZD2SetValue=ATBH_ZD2Set;// * ATBH_CLYXSet; //制动电流2整定值
|
||
ATBH_CLYXYJ.K1SetValue=ATBH_ZDXS1Set;// * ATBH_CLYXSet; //制动比率1
|
||
ATBH_CLYXYJ.K2SetValue=ATBH_ZDXS2Set;// * ATBH_CLYXSet; //制动比率2
|
||
ATBH_CLYXYJ.SetTime=1000; //整定时间
|
||
ATBH_CLYXYJ.MeasureValue=&ChaDongValue; //测量值
|
||
ATBH_CLYXYJ.QiDongBit=ATBH_CLYX_BIT; //元件启动位
|
||
ATBH_CLYXYJ.IPAddress=&TempQiDongIP; //启动标志字地址
|
||
ATBH_CLYXYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_CLYXYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_CLYXYJ.QiDongCode=ATBH_CL_QJ; //元件启动事件代码
|
||
ATBH_CLYXYJ.ChuKouCode=ATBH_CL_QJ; //元件出口事件代码
|
||
ATBH_CLYXYJ.FanHuiCode=ATBH_CL_FH; //元件返回事件代码
|
||
ATBH_CLYXYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_CLYXYJ.YaoXinNumber=ATBH_YAOXIN_CLYX; //对应的软遥信号
|
||
ATBH_CLYXYJ.SoeParam.paramset[0] = &ChaDongValue;
|
||
ATBH_CLYXYJ.SoeParam.paramset[1] = &ChannelValue[CH_ATBH_BH_I].YouXiaoZhi[JiBo].Analog;
|
||
ATBH_CLYXYJ.SoeParam.paramset[2] = &ChannelValue[CH_ATBH_BH_IF].YouXiaoZhi[JiBo].Analog;
|
||
ATBH_CLYXYJ.SoeParam.paramset[3] = &ChannelValue[CH_ATBH_CD_IT].YouXiaoZhi[JiBo].Analog;
|
||
ATBH_CLYXYJ.SoeParam.paramset[4] = &ChannelValue[CH_ATBH_CD_IF].YouXiaoZhi[JiBo].Analog;
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
ATBH_CLYXYJ.SoeParam.paramnum = 3;
|
||
}
|
||
else
|
||
{
|
||
ATBH_CLYXYJ.SoeParam.paramnum = 5;
|
||
}
|
||
|
||
|
||
//PT断线告警元件
|
||
ATBH_TPTDXYJ.ClsDwnIP = 0;
|
||
ATBH_TPTDXYJ.TouRuIP=ATBH_PTDXTouRu; //保护元件投入标志
|
||
ATBH_TPTDXYJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_TPTDXYJ.SetValue = ATBH_PTDXSet; //整定值
|
||
ATBH_TPTDXYJ.SetTime = 2000; //整定时间
|
||
ATBH_TPTDXYJ.MeasureValue = &ChannelValue[CH_ATBH_UT].YouXiaoZhi[JiBo].Analog;
|
||
ATBH_TPTDXYJ.QiDongBit= ATBH_TPTDX_BIT; //元件启动位
|
||
ATBH_TPTDXYJ.IPAddress = &TempQiDongIP; //启动标志字地址
|
||
ATBH_TPTDXYJ.SoeRecordIP=TEST_START; //Soe事件记录标志,只记录返回事件,不记录启动事件
|
||
ATBH_TPTDXYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_TPTDXYJ.QiDongCode=ATBH_TPTDX_GJ; //元件启动事件代码
|
||
ATBH_TPTDXYJ.ChuKouCode=ATBH_TPTDX_GJ; //元件出口事件代码
|
||
ATBH_TPTDXYJ.FanHuiCode=ATBH_TPTDX_FH; //元件返回事件代码
|
||
ATBH_TPTDXYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_TPTDXYJ.YaoXinNumber=ATBH_YAOXIN_TPTDX; //对应的软遥信号
|
||
|
||
//PT断线告警元件
|
||
ATBH_FPTDXYJ.ClsDwnIP = 0;
|
||
ATBH_FPTDXYJ.TouRuIP=ATBH_PTDXTouRu; //保护元件投入标志
|
||
ATBH_FPTDXYJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_FPTDXYJ.SetValue = ATBH_PTDXSet; //整定值
|
||
ATBH_FPTDXYJ.SetTime = 2000; //整定时间
|
||
ATBH_FPTDXYJ.MeasureValue = &ChannelValue[CH_ATBH_UF].YouXiaoZhi[JiBo].Analog;
|
||
ATBH_FPTDXYJ.QiDongBit= ATBH_FPTDX_BIT; //元件启动位
|
||
ATBH_FPTDXYJ.IPAddress = &TempQiDongIP; //启动标志字地址
|
||
ATBH_FPTDXYJ.SoeRecordIP=TEST_START; //Soe事件记录标志,只记录返回事件,不记录启动事件
|
||
ATBH_FPTDXYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_FPTDXYJ.QiDongCode=ATBH_FPTDX_GJ; //元件启动事件代码
|
||
ATBH_FPTDXYJ.ChuKouCode=ATBH_FPTDX_GJ; //元件出口事件代码
|
||
ATBH_FPTDXYJ.FanHuiCode=ATBH_FPTDX_FH; //元件返回事件代码
|
||
ATBH_FPTDXYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_FPTDXYJ.YaoXinNumber=ATBH_YAOXIN_FPTDX; //对应的软遥信号
|
||
|
||
//过负荷告警
|
||
ATBH_FIYJ.ClsDwnIP = 0;
|
||
ATBH_FIYJ.TouRuIP=ATBH_FI1TouRu; //保护元件投入标志
|
||
ATBH_FIYJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_FIYJ.SetValue = ATBH_FI1Set.SetValue1; //整定值
|
||
ATBH_FIYJ.SetTime = ATBH_FI1Set.Time1; //整定时间
|
||
ATBH_FIYJ.MeasureValue = &ATBH_BaoHu_IT;
|
||
ATBH_FIYJ.QiDongBit= ATBH_FI1_BIT; //元件启动位
|
||
ATBH_FIYJ.IPAddress = &TempQiDongIP; //启动标志字地址
|
||
ATBH_FIYJ.SoeRecordIP=TEST_START; //Soe事件记录标志,只记录返回事件,不记录启动事件
|
||
ATBH_FIYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_FIYJ.QiDongCode=ATBH_FI1_CK; //元件启动事件代码
|
||
ATBH_FIYJ.ChuKouCode=ATBH_FI1_CK; //元件出口事件代码
|
||
ATBH_FIYJ.FanHuiCode=ATBH_FI1_FH; //元件返回事件代码
|
||
ATBH_FIYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_FIYJ.YaoXinNumber=ATBH_YAOXIN_FI1; //对应的软遥信号
|
||
ATBH_FIYJ.SoeParam.paramnum = 1;
|
||
ATBH_FIYJ.SoeParam.paramset[0] = &ATBH_BaoHu_IT;
|
||
|
||
//T线二次谐波闭锁元件(差动)
|
||
ATBH_XieBo2CDIYJ.ClsDwnIP = 0;
|
||
ATBH_XieBo2CDIYJ.TouRuIP=ATBH_XieBoCDI2TouRu; //保护元件投入标志
|
||
ATBH_XieBo2CDIYJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_XieBo2CDIYJ.SetValue=ATBH_XieBo_2; //整定值
|
||
ATBH_XieBo2CDIYJ.SetTime=1; //整定时间
|
||
ATBH_XieBo2CDIYJ.MeasureValue=&ATBH_ChaDong_I2; //该参数无效
|
||
ATBH_XieBo2CDIYJ.QiDongBit=ATBH_XieBoCDI2_BIT; //元件启动位
|
||
ATBH_XieBo2CDIYJ.IPAddress=&TempQiDongIP; //启动标志字地址
|
||
ATBH_XieBo2CDIYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_XieBo2CDIYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_XieBo2CDIYJ.QiDongCode=ATBH_XBBS_K2_CD; //元件启动事件代码
|
||
ATBH_XieBo2CDIYJ.ChuKouCode=ATBH_XBBS_K2_CD; //元件出口事件代码
|
||
ATBH_XieBo2CDIYJ.FanHuiCode=ATBH_XBBSJC_K2_CD; //元件返回事件代码
|
||
ATBH_XieBo2CDIYJ.TimeValue=0; //保护元件计时器
|
||
|
||
//失压元件
|
||
ATBH_SYYJ.ClsDwnIP = 0;
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
ATBH_SYYJ.TouRuIP = ATBH_SYTouRu; //保护元件投入标志
|
||
}
|
||
else
|
||
{
|
||
//隔离开关接入方式下无失压保护
|
||
ATBH_SYYJ.TouRuIP = BH_STOP; //保护元件投入标志
|
||
}
|
||
ATBH_SYYJ.Type=QL_TYPE; //保护元件类型
|
||
ATBH_SYYJ.SetValue=ATBH_SYSet.SetValue; //整定值
|
||
ATBH_SYYJ.SetTime=ATBH_SYSet.Time; //整定时间
|
||
ATBH_SYYJ.MeasureValue=&ATBH_Baohu_UMax;
|
||
ATBH_SYYJ.QiDongBit=ATBH_SY_BIT; //元件启动位
|
||
ATBH_SYYJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_SYYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_SYYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_SYYJ.QiDongCode=ATBH_SY_QD; //元件启动事件代码
|
||
ATBH_SYYJ.ChuKouCode=ATBH_SY_CK; //元件出口事件代码
|
||
ATBH_SYYJ.FanHuiCode=ATBH_SY_FH; //元件返回事件代码
|
||
ATBH_SYYJ.TimeValue=0; //保护元件计时器
|
||
ATBH_SYYJ.YaoXinNumber=ATBH_YAOXIN_SY; //对应的软遥信号
|
||
ATBH_SYYJ.SoeParam.paramnum = 2;
|
||
ATBH_SYYJ.SoeParam.paramset[0] = &ChannelValue[CH_ATBH_UT].YouXiaoZhi[JiBo].Analog;
|
||
ATBH_SYYJ.SoeParam.paramset[1] = &ChannelValue[CH_ATBH_UF].YouXiaoZhi[JiBo].Analog;
|
||
|
||
//A相增量差动元件
|
||
ATBH_DLLDIFFAYJ.ClsDwnIP = 0;
|
||
ATBH_DLLDIFFAYJ.TouRuIP = ATBH_DLLDIFFTouRu; //保护元件投入标志
|
||
ATBH_DLLDIFFAYJ.CDSetValue = ATBH_DllDiffSet * ATBH_CDSet; //差动整定值
|
||
ATBH_DLLDIFFAYJ.ZD1SetValue = ATBH_DllDiffSet * ATBH_ZD1Set; //制动电流1整定值
|
||
ATBH_DLLDIFFAYJ.ZD2SetValue = 0; //制动电流2整定值
|
||
ATBH_DLLDIFFAYJ.K1SetValue = 0.8; //制动比率1
|
||
ATBH_DLLDIFFAYJ.K2SetValue = 0.8; //制动比率2
|
||
ATBH_DLLDIFFAYJ.SetTime = 0; //整定时间
|
||
ATBH_DLLDIFFAYJ.MeasureValue = &DLLDiffValue; //测量值
|
||
ATBH_DLLDIFFAYJ.QiDongBit = ATBH_DLLDIFF_BIT; //元件启动位
|
||
ATBH_DLLDIFFAYJ.IPAddress = &BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_DLLDIFFAYJ.SoeRecordIP = TEST_START; //Soe事件记录标志
|
||
ATBH_DLLDIFFAYJ.ChuKouRecordIP = TEST_START; //保护元件出口事件记录标志
|
||
ATBH_DLLDIFFAYJ.QiDongCode = ATBH_DLLDIFF_QD; //元件启动事件代码
|
||
ATBH_DLLDIFFAYJ.ChuKouCode = ATBH_DLLDIFF_CK; //元件出口事件代码
|
||
ATBH_DLLDIFFAYJ.FanHuiCode = ATBH_DLLDIFF_FH; //元件返回事件代码
|
||
ATBH_DLLDIFFAYJ.TimeValue = 0; //保护元件计时器
|
||
ATBH_DLLDIFFAYJ.YaoXinNumber = ATBH_YAOXIN_DLLDIFF; //对应的软遥信号
|
||
|
||
//初始化非电量保护
|
||
if(0 == rebootip)
|
||
{
|
||
rebootip = 1;
|
||
//重瓦斯元件
|
||
ATBH_ZWSYJ.ClsDwnIP = 0;
|
||
ATBH_ZWSYJ.InNo=ATBH_ZWS_KR; //对应的开入号
|
||
ATBH_ZWSYJ.QiDongBit=ATBH_ZWS_BIT; //元件启动位
|
||
ATBH_ZWSYJ.OldStatus=OFF;
|
||
ATBH_ZWSYJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_ZWSYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_ZWSYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_ZWSYJ.QiDongCode=ATBH_ZWS_CK; //元件启动事件代码
|
||
ATBH_ZWSYJ.ChuKouCode=ATBH_ZWS_CK; //元件出口事件代码
|
||
ATBH_ZWSYJ.FanHuiCode=ATBH_ZWS_FH; //元件返回事件代码
|
||
ATBH_ZWSYJ.YaoXinRecordIP=TEST_START; //软遥信记录标志
|
||
//温度Ⅱ段元件
|
||
ATBH_WD2YJ.ClsDwnIP = 0;
|
||
ATBH_WD2YJ.InNo=ATBH_WD2_KR; //对应的开入号
|
||
ATBH_WD2YJ.OldStatus=OFF;
|
||
ATBH_WD2YJ.QiDongBit=ATBH_WD2_BIT; //元件启动位
|
||
ATBH_WD2YJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_WD2YJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_WD2YJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_WD2YJ.QiDongCode=ATBH_WD2_CK; //元件启动事件代码
|
||
ATBH_WD2YJ.ChuKouCode=ATBH_WD2_CK; //元件出口事件代码
|
||
ATBH_WD2YJ.FanHuiCode=ATBH_WD2_FH; //元件返回事件代码
|
||
ATBH_WD2YJ.YaoXinRecordIP=TEST_START; //软遥信记录标志
|
||
//压力释放元件
|
||
ATBH_YLSFYJ.ClsDwnIP = 0;
|
||
ATBH_YLSFYJ.InNo=ATBH_YLSF_KR; //对应的开入号
|
||
ATBH_YLSFYJ.OldStatus=OFF;
|
||
ATBH_YLSFYJ.QiDongBit=ATBH_YLSF_BIT; //元件启动位
|
||
ATBH_YLSFYJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_YLSFYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_YLSFYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_YLSFYJ.QiDongCode=ATBH_YLSF_CK; //元件启动事件代码
|
||
ATBH_YLSFYJ.ChuKouCode=ATBH_YLSF_CK; //元件出口事件代码
|
||
ATBH_YLSFYJ.FanHuiCode=ATBH_YLSF_FH; //元件返回事件代码
|
||
ATBH_YLSFYJ.YaoXinRecordIP=TEST_START; //软遥信记录标志
|
||
|
||
//备用信号元件
|
||
ATBH_BYXHYJ.ClsDwnIP = 0;
|
||
ATBH_BYXHYJ.InNo=ATBH_BYXH_KR; //对应的开入号
|
||
ATBH_BYXHYJ.OldStatus=OFF;
|
||
ATBH_BYXHYJ.QiDongBit=ATBH_BAK_BIT; //元件启动位
|
||
ATBH_BYXHYJ.IPAddress=&BaoHuQiDongIP; //启动标志字地址
|
||
ATBH_BYXHYJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_BYXHYJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_BYXHYJ.QiDongCode=ATBH_BYXH_CK; //元件启动事件代码
|
||
ATBH_BYXHYJ.ChuKouCode=ATBH_BYXH_CK; //元件出口事件代码
|
||
ATBH_BYXHYJ.FanHuiCode=ATBH_BYXH_FH; //元件返回事件代码
|
||
ATBH_BYXHYJ.YaoXinRecordIP=TEST_START; //软遥信记录标志
|
||
}
|
||
|
||
#ifdef TEMPERATURE_ENABLE
|
||
//温度告警1元件
|
||
ATBH_CWWD1YJ.ClsDwnIP = 0;
|
||
ATBH_CWWD1YJ.TouRuIP=ATBH_CWWD1TouRu; //保护元件投入标志
|
||
ATBH_CWWD1YJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_CWWD1YJ.SetValue=ATBH_WD1Set.SetValue; //整定值
|
||
ATBH_CWWD1YJ.SetTime=ATBH_WD1Set.Time; //整定时间
|
||
ATBH_CWWD1YJ.MeasureValue=&ChannelValue[CH_ATBH_WD1].YouXiaoZhi[JiBo].Analog; //测量值
|
||
ATBH_CWWD1YJ.QiDongBit=ATBH_CWWD1_BIT; //元件启动位
|
||
ATBH_CWWD1YJ.IPAddress=&TempQiDongIP; //启动标志字地址
|
||
ATBH_CWWD1YJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_CWWD1YJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_CWWD1YJ.QiDongCode=ATBH_CW_WD1_CK; //元件启动事件代码
|
||
ATBH_CWWD1YJ.ChuKouCode=ATBH_CW_WD1_CK; //元件出口事件代码
|
||
ATBH_CWWD1YJ.FanHuiCode=ATBH_CW_WD1_FH; //元件返回事件代码
|
||
ATBH_CWWD1YJ.TimeValue=0; //保护元件计时器
|
||
ATBH_CWWD1YJ.YaoXinNumber=ATBH_YAOXIN_CWWD1; //对应的软遥信号
|
||
//温度告警2元件
|
||
ATBH_CWWD2YJ.ClsDwnIP = 0;
|
||
ATBH_CWWD2YJ.TouRuIP=ATBH_CWWD2TouRu; //保护元件投入标志
|
||
ATBH_CWWD2YJ.Type=GL_TYPE; //保护元件类型
|
||
ATBH_CWWD2YJ.SetValue=ATBH_WD2Set.SetValue; //整定值
|
||
ATBH_CWWD2YJ.SetTime=ATBH_WD2Set.Time; //整定时间
|
||
ATBH_CWWD2YJ.MeasureValue=&ChannelValue[CH_ATBH_WD2].YouXiaoZhi[JiBo].Analog; //测量值
|
||
ATBH_CWWD2YJ.QiDongBit=ATBH_CWWD2_BIT; //元件启动位
|
||
ATBH_CWWD2YJ.IPAddress=&TempQiDongIP; //启动标志字地址
|
||
ATBH_CWWD2YJ.SoeRecordIP=TEST_START; //Soe事件记录标志
|
||
ATBH_CWWD2YJ.ChuKouRecordIP=TEST_START; //保护元件出口事件记录标志
|
||
ATBH_CWWD2YJ.QiDongCode=ATBH_CW_WD1_CK; //元件启动事件代码
|
||
ATBH_CWWD2YJ.ChuKouCode=ATBH_CW_WD2_CK; //元件出口事件代码
|
||
ATBH_CWWD2YJ.FanHuiCode=ATBH_CW_WD2_FH; //元件返回事件代码
|
||
ATBH_CWWD2YJ.TimeValue=0; //保护元件计时器
|
||
ATBH_CWWD2YJ.YaoXinNumber=ATBH_YAOXIN_CWWD2; //对应的软遥信号
|
||
#endif
|
||
|
||
}
|
||
|
||
|
||
//公共对象定义 20210221
|
||
void commobjectinit()
|
||
{
|
||
g_comm_object_ied.do_comm.led_run = LED_RUN_DO; //运行灯
|
||
g_comm_object_ied.do_comm.led_alarm = LED_ALARM_DO; //告警灯
|
||
//g_comm_object_ied.do_comm.led_com = ATBH_TX_LED_KC; //通信灯
|
||
g_comm_object_ied.do_comm.led_check = LED_TEST_DO; //检修灯
|
||
g_comm_object_ied.do_comm.led_trip = ATBH_TZ_LED_KC; //跳闸灯
|
||
g_comm_object_ied.do_comm.led_rcls_act = ATBH_CHZDZ_LED_KC; //重合闸动作灯
|
||
//g_comm_object_ied.do_comm.led_timesyn = ATBH_GPS_LED_KC; //时钟同步
|
||
|
||
g_comm_object_ied.do_comm.prtcalarm = ATBH_GJ_KC; //保护告警
|
||
g_comm_object_ied.param_com.prtcalarm_mask = ATBH_TPTDX_BIT | ATBH_FPTDX_BIT | ATBH_CLYX_BIT | ATBH_FI1_BIT | ATBH_QWS_BIT | ATBH_WD1_BIT | ATBH_YWD_BIT | ATBH_YWG_BIT | ATBH_YCFZ_BIT;
|
||
g_comm_object_ied.relaytype = RELAY_TYPE_PROTECT; //保护装置
|
||
|
||
#ifdef DEVICE_TYPE_DIGITAL
|
||
g_comm_object_ied.ver_comm.ver = VERSION_L_DIGTAL; //版本号
|
||
g_comm_object_ied.rmtsgnl_coomm.rmtsgnl_check = ATBH_YAOXIN_JX; //检修遥信
|
||
#else
|
||
g_comm_object_ied.rmtsgnl_coomm.rmtsgnl_check = ATBH_YAOXIN_STRIP_TEST; //检修遥信
|
||
g_comm_object_ied.ver_comm.ver = VERSION_L; //版本号
|
||
g_comm_object_ied.ver_comm.ver_build = VERSION_BUILD; //内部版本号
|
||
#endif
|
||
|
||
//IO插件类型
|
||
//io插件1
|
||
set_io_type(IO_NO_BOARD1,IO_TYPE_IN31_OUT0);
|
||
//io插件2
|
||
//set_io_type(IO_NO_BOARD2,IO_TYPE_INT0_OUT20);
|
||
//io插件3
|
||
set_io_type(IO_NO_BOARD3,IO_TYPE_INT0_OUT20);
|
||
//电源插件
|
||
set_io_type(IO_NO_BOARD5,IO_TYPE_INT15_OUT0);
|
||
//IO1关联了保护逻辑判断
|
||
set_prtclogic_related_io(IO_NO_BOARD1);
|
||
}
|
||
|
||
|
||
/****************************************************
|
||
* void InitAnalogChannel(void)
|
||
* 描述:初始化模拟量通道
|
||
* 历史:
|
||
****************************************************/
|
||
void InitAnalogChannel(void)
|
||
{
|
||
int i,number;
|
||
|
||
unsigned char analogtype[][3] = {
|
||
{CH_ATBH_BH_I,ATBH_IT_TYPE,ATBH_IT_BC_TYPE}, //3//T线保护绕组电流
|
||
{CH_ATBH_BH_IF,ATBH_IF_TYPE,ATBH_IF_BC_TYPE}, //4//F线保护绕组电流
|
||
{CH_ATBH_CD_IT,ATBH_UNUSE_TYPE,ATBH_IT_DC_TYPE}, //5//对侧T线绕组电流
|
||
{CH_ATBH_CD_IF,ATBH_UNUSE_TYPE,ATBH_IF_DC_TYPE}, //6//对侧F线绕组电流
|
||
{CH_ATBH_CL_I,ATBH_ITM_TYPE,ATBH_UNUSE_TYPE}, //7T线测量绕组电流
|
||
{CH_ATBH_CL_IF,ATBH_IFM_TYPE,ATBH_UNUSE_TYPE}, //F线测量绕组电流
|
||
{CH_ATBH_UT,ATBH_UT_TYPE,ATBH_UT_TYPE}, //9//T线电压
|
||
{CH_ATBH_UF,ATBH_UF_TYPE,ATBH_UF_TYPE}, //10F线电压
|
||
{CH_ATBH_DIFF,ATBH_IDIFF_TYPE,ATBH_IDIFF_TYPE}, //差动电流,计算量,录波会用到
|
||
};
|
||
|
||
number = sizeof(analogtype) / sizeof(analogtype[0]);
|
||
//初始化采样通道
|
||
for(i = 0; i < number; i++)
|
||
{
|
||
//断路器接入方式
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
ChannelValue[analogtype[i][0]].YouXiaoZhi[JiBo].Analog.Type = analogtype[i][1];
|
||
}
|
||
else
|
||
{
|
||
//非AT供电
|
||
ChannelValue[analogtype[i][0]].YouXiaoZhi[JiBo].Analog.Type = analogtype[i][2];
|
||
}
|
||
//保护电流计算2次谐波
|
||
if(ANIN_TYPE_BH_I == ChannelValue[analogtype[i][0]].Type)
|
||
{
|
||
ChannelValue[analogtype[i][0]].FS_IP = JiBoBit | XieBo2Bit;
|
||
}
|
||
else
|
||
{
|
||
ChannelValue[analogtype[i][0]].FS_IP = JiBoBit;
|
||
}
|
||
ChannelValue[analogtype[i][0]].YouXiaoZhi[JiBo].Analog.Mode = DisplayMode; //锟斤拷示模式
|
||
}
|
||
|
||
|
||
//初始化刻度校正通道
|
||
unsigned int analogadjuset[][3] = {
|
||
{ATBH_UT,CH_ATBH_UT,&ATBH_VKSet}, //T线电压
|
||
{ATBH_UF,CH_ATBH_UF,&ATBH_VFKSet}, //F线电压
|
||
{ATBH_BH_IT,CH_ATBH_BH_I,&ATBH_BaoHuIKSet}, //T线保护绕组电流
|
||
{ATBH_DC_IT,CH_ATBH_CD_IT,&ATBH_ChaDongIKSet}, //对侧T线保护绕组电流
|
||
{ATBH_CL_IT,CH_ATBH_CL_I,&ATBH_CeLiangIKSet}, //T线测量绕组电流
|
||
{ATBH_BH_IF,CH_ATBH_BH_IF,&ATBH_BaoHuFIKSet}, //F线保护绕组电流
|
||
{ATBH_DC_IF,CH_ATBH_CD_IF,&ATBH_ChaDongFIKSet}, //对侧F线差动绕组电流
|
||
{ATBH_CL_IF,CH_ATBH_CL_IF,&ATBH_CeLiangFIKSet}, //F线测量绕组电流
|
||
};
|
||
|
||
number = sizeof(analogadjuset) / sizeof(analogadjuset[0]);
|
||
KDXZValue.Number = ATBH_ANALOGADJUST_NUMBER;
|
||
for(i = 0; i < number; i++)
|
||
{
|
||
KDXZValue.Table[analogadjuset[i][0]].ChannelNo = analogadjuset[i][1];
|
||
|
||
KDXZValue.Table[analogadjuset[i][0]].SetValueAdd = analogadjuset[i][2];
|
||
}
|
||
|
||
}
|
||
|
||
/******************************************************************************
|
||
* Function: AninChannalTypeInit
|
||
* Description:通道类型初始化
|
||
* Calls: none
|
||
* Called By:
|
||
* Input:
|
||
* Ouput:
|
||
* Return:
|
||
* others:
|
||
* History:
|
||
* 1.luoyang created
|
||
*
|
||
*******************************************************************************/
|
||
void AninChannalTypeInit()
|
||
{
|
||
//通道类型
|
||
|
||
ChannelValue[CH_ATBH_UT].Type= ANIN_TYPE_BH_U; //T线电压
|
||
ChannelValue[CH_ATBH_UF].Type = ANIN_TYPE_BH_U; //F线电压
|
||
ChannelValue[CH_ATBH_BH_I].Type = ANIN_TYPE_BH_I; //T线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_I].Type = ANIN_TYPE_CL_I; //T线测量绕组电流
|
||
ChannelValue[CH_ATBH_BH_IF].Type = ANIN_TYPE_BH_I; //F线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_IF].Type = ANIN_TYPE_CL_I; //F线测量绕组电流
|
||
ChannelValue[CH_ATBH_CD_IT].Type = ANIN_TYPE_BH_I; //T线差动绕组电流
|
||
ChannelValue[CH_ATBH_CD_IF].Type = ANIN_TYPE_BH_I; //F线差动绕组电流
|
||
ChannelValue[CH_ATBH_WD1].Type = ANIN_TYPE_BH_W; //T线差动绕组电流
|
||
ChannelValue[CH_ATBH_WD2].Type = ANIN_TYPE_BH_W; //F线差动绕组电流
|
||
ChannelValue[CH_ATBH_AD1].Type = ANIN_TYPE_ZJ; //AD1自检
|
||
ChannelValue[CH_ATBH_AD2].Type = ANIN_TYPE_ZJ; //AD2自检
|
||
ChannelValue[CH_ATBH_AD3].Type = ANIN_TYPE_ZJ; //AD2自检
|
||
ChannelValue[CH_ATBH_DIFF].Type = ANIN_TYPE_BH_I; //差动电流
|
||
|
||
ChannelValue[CH_ATBH_UT].StYaoXinNo= ATBH_YAOXIN_ANIN_ST_UT; //T线电压
|
||
ChannelValue[CH_ATBH_UF].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_UF; //F线电压
|
||
ChannelValue[CH_ATBH_BH_I].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_BHIT; //T线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_I].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_CLIT; //T线测量绕组电流
|
||
ChannelValue[CH_ATBH_BH_IF].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_BHIF; //F线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_IF].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_CLIF; //F线测量绕组电流
|
||
ChannelValue[CH_ATBH_CD_IT].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_ITCD; //T线差动绕组电流
|
||
ChannelValue[CH_ATBH_CD_IF].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_IFCD; //F线差动绕组电流
|
||
ChannelValue[CH_ATBH_WD1].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_WD1; //温度1
|
||
ChannelValue[CH_ATBH_WD2].StYaoXinNo = ATBH_YAOXIN_ANIN_ST_WD2; //温度2
|
||
|
||
AninChannallCoeff_SV_init();
|
||
}
|
||
|
||
/******************************************************************************
|
||
* Function: AninParameterInit
|
||
* Description:通道参数初始化
|
||
* Calls: none
|
||
* Called By:
|
||
* Input:
|
||
* Ouput:
|
||
* Return:
|
||
* others:
|
||
* History:
|
||
* 1.luoyang created
|
||
*
|
||
*******************************************************************************/
|
||
|
||
void AninParameterInit()
|
||
{
|
||
|
||
//一次额定
|
||
ChannelValue[CH_ATBH_UT].RatioValue1= ATBH_PTRated1; //T线电压
|
||
ChannelValue[CH_ATBH_UF].RatioValue1 = ATBH_PTRated1; //F线电压
|
||
ChannelValue[CH_ATBH_BH_I].RatioValue1 = ATBH_CTRated1; //T线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_I].RatioValue1 = ATBH_CTRated1; //T线测量绕组电流
|
||
ChannelValue[CH_ATBH_BH_IF].RatioValue1 = ATBH_CTRated1; //F线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_IF].RatioValue1 = ATBH_CTRated1; //F线测量绕组电流
|
||
//ChannelValue[CH_ATBH_JDI].RatioValue1 = ATBH_CTRated1; //接地电流
|
||
ChannelValue[CH_ATBH_CD_IT].RatioValue1 = ATBH_CTRated1; //T线差动绕组电流
|
||
ChannelValue[CH_ATBH_CD_IF].RatioValue1 = ATBH_CTRated1; //F线差动绕组电流
|
||
ChannelValue[CH_ATBH_DIFF].RatioValue1 = ATBH_CTRated1; //差动电流
|
||
|
||
//一次额定
|
||
ChannelValue[CH_ATBH_UT].RatioValue2 = RATED_VOLTAGE_275_2; //T线电压
|
||
ChannelValue[CH_ATBH_UF].RatioValue2 = RATED_VOLTAGE_275_2; //F线电压
|
||
ChannelValue[CH_ATBH_BH_I].RatioValue2 = ATBH_CTRated2; //T线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_I].RatioValue2 = ATBH_CTRated2; //T线测量绕组电流
|
||
ChannelValue[CH_ATBH_BH_IF].RatioValue2 = ATBH_CTRated2; //F线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_IF].RatioValue2 = ATBH_CTRated2; //F线测量绕组电流
|
||
//ChannelValue[CH_ATBH_JDI].RatioValue2 = ATBH_CTRated2; //接地电流
|
||
ChannelValue[CH_ATBH_CD_IT].RatioValue2 = ATBH_CTRated2; //T线差动绕组电流
|
||
ChannelValue[CH_ATBH_CD_IF].RatioValue2 = ATBH_CTRated2; //F线差动绕组电流
|
||
|
||
ChannelValue[CH_ATBH_DIFF].RatioValue2 = ATBH_CTRated2; //差动电流
|
||
|
||
//微调系数
|
||
ChannelValue[CH_ATBH_UT].VKSet = ATBH_VKSet; //T线电压
|
||
ChannelValue[CH_ATBH_UF].VKSet = ATBH_VFKSet; //F线电压
|
||
ChannelValue[CH_ATBH_BH_I].VKSet = ATBH_BaoHuIKSet; //T线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_I].VKSet = ATBH_CeLiangIKSet; //T线测量绕组电流
|
||
ChannelValue[CH_ATBH_BH_IF].VKSet = ATBH_BaoHuFIKSet; //F线保护绕组电流
|
||
ChannelValue[CH_ATBH_CL_IF].VKSet = ATBH_CeLiangFIKSet; //F线测量绕组电流
|
||
//ChannelValue[CH_ATBH_JDI].VKSet = ATBH_IJDKSet; //接地电流
|
||
ChannelValue[CH_ATBH_CD_IT].VKSet = ATBH_ChaDongIKSet; //T线差动绕组电流
|
||
ChannelValue[CH_ATBH_CD_IF].VKSet = ATBH_ChaDongFIKSet; //F线差动绕组电流
|
||
ChannelValue[CH_ATBH_DIFF].VKSet = ATBH_BaoHuIKSet; //差动电流
|
||
|
||
|
||
}
|
||
|
||
void InitOutStatus(void)
|
||
{
|
||
//功能说明:根据不同的装置类型初始化结构变量OutStatus中的相关参数
|
||
//输入参数:无。
|
||
//输出参数:无。
|
||
//该程序由初始化程序调用
|
||
unsigned int i,j;
|
||
/*
|
||
for(i = 0; i < OUTPUT_NUM; i++) //传动初始化
|
||
{
|
||
OutStatus.ChuanDongObjectSet[i] = 0xff;
|
||
OutStatus.ObjectKcType[i] = 0xff;
|
||
OutStatus.ObjectKcBit[i] = 0xff;
|
||
OutStatus.BlockYaoXinNo[i] = 0xff;
|
||
OutStatus.CurrStatus[i] = 0;
|
||
OutStatus.AllowKcIP[i]=TEST_START;
|
||
OutStatus.ChuanDongObjectType[i] = 0xFF;
|
||
}
|
||
*/
|
||
//初始化闭锁遥信
|
||
|
||
OutStatus.BlockYaoXinNo[ATBH_QF_TZ_KC] = ATBH_YAOXIN_BS_QF_FZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_QF_HZ_KC] = ATBH_YAOXIN_BS_QF_HZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_1QS_TZ_KC] = ATBH_YAOXIN_BS_1QS_FZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_1QS_HZ_KC] = ATBH_YAOXIN_BS_1QS_HZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_2QS_TZ_KC] = ATBH_YAOXIN_BS_2QS_FZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_2QS_HZ_KC] = ATBH_YAOXIN_BS_2QS_HZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_3QS_TZ_KC] = ATBH_YAOXIN_BS_3QS_FZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_3QS_HZ_KC] = ATBH_YAOXIN_BS_3QS_HZ;
|
||
|
||
/*
|
||
//初始化相关传动试验对象对应的开出
|
||
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_AMD_LED] = ATBH_AM_LED_KC; //告警灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_TZ_LED] = ATBH_TZ_LED_KC; //跳闸灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_ZTTR_LED]= ATBH_ZTTR_LED_KC; //自投投入灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_ZTDZ_LED]= ATBH_ZTDZ_LED_KC; //自投动作灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_JX_LED] = ATBH_JX_LED_KC; //检修灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_QF_HWD] = ATBH_QF_HWD_KC; //断路器合位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_QF_FWD] = ATBH_QF_FWD_KC; //断路器分位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_1QS_HWD] = ATBH_1QS_HWD_KC; //隔开1合位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_1QS_FWD] = ATBH_1QS_FWD_KC; //隔开1分位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_2QS_HWD] = ATBH_2QS_HWD_KC; //隔开2合位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_2QS_FWD] = ATBH_2QS_FWD_KC; //隔开2分位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_3QS_HWD] = ATBH_3QS_HWD_KC; //隔开3合位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_3QS_FWD] = ATBH_3QS_FWD_KC; //隔开3分位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_BCJ] = ATBH_BCJQ_KC; //保护跳闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_QF_TZ] = ATBH_QF_TZ_KC; //控制分闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_QF_HZ] = ATBH_QF_HZ_KC; //控制合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_1QS_TZ] = ATBH_1QS_TZ_KC; //隔开1分闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_1QS_HZ] = ATBH_1QS_HZ_KC; //隔开1合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_2QS_TZ] = ATBH_2QS_TZ_KC; //隔开2分闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_2QS_HZ] = ATBH_2QS_HZ_KC; //隔开2合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_3QS_TZ] = ATBH_3QS_TZ_KC; //隔开2分闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_3QS_HZ] = ATBH_3QS_HZ_KC; //隔开2合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_BHQD] = ATBH_BHQD_KC; //保护启动
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_ZTQD] = ATBH_CDJQ_KC; //启动自投
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_SL] = ATBH_SL_KC; //断路器失灵
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_HCJ] = ATBH_HCJ_KC; //保护合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_GPS_LED] = ATBH_GPS_LED_KC; //GPS信号灯
|
||
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_QF_FZ_BS] = ATBH_1QF_FZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_QF_HZ_BS] = ATBH_1QF_HZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_1QS_FZ_BS] = ATBH_1QS_FZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_1QS_HZ_BS] = ATBH_1QS_HZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_2QS_FZ_BS] = ATBH_2QS_FZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_2QS_HZ_BS] = ATBH_2QS_HZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_3QS_FZ_BS] = ATBH_3QS_FZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_3QS_HZ_BS] = ATBH_3QS_HZ_BS_KC;
|
||
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_BY1] = ATBH_BY1_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_BY2] = ATBH_BY2_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_BY3] = ATBH_BY3_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_BY4] = ATBH_BY4_KC;
|
||
|
||
OutStatus.BlockYaoXinNo[ATBH_4QS_TZ_KC] = ATBH_YAOXIN_BS_4QS_FZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_4QS_HZ_KC] = ATBH_YAOXIN_BS_4QS_HZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_5QS_TZ_KC] = ATBH_YAOXIN_BS_5QS_FZ;
|
||
OutStatus.BlockYaoXinNo[ATBH_5QS_HZ_KC] = ATBH_YAOXIN_BS_5QS_HZ;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_4QS_HWD] = ATBH_4QS_HWD_KC; //隔开4合位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_4QS_FWD] = ATBH_4QS_FWD_KC; //隔开4分位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_5QS_HWD] = ATBH_5QS_HWD_KC; //隔开5合位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_5QS_FWD] = ATBH_5QS_FWD_KC; //隔开5分位灯
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_4QS_TZ] = ATBH_4QS_TZ_KC; //隔开4分闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_4QS_HZ] = ATBH_4QS_HZ_KC; //隔开4合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_5QS_TZ] = ATBH_5QS_TZ_KC; //隔开5分闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_5QS_HZ] = ATBH_5QS_HZ_KC; //隔开5合闸
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_4QS_FZ_BS] = ATBH_4QS_FZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_4QS_HZ_BS] = ATBH_4QS_HZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_5QS_FZ_BS] = ATBH_5QS_FZ_BS_KC;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_5QS_HZ_BS] = ATBH_5QS_HZ_BS_KC;
|
||
|
||
//类型初始化,仅特殊处理复归和自投投退
|
||
OutStatus.ChuanDongObjectType[ATBH_CDTEST_FGJ] = FG_TYPE;
|
||
//OutStatus.ChuanDongObjectType[ATBH_CDTEST_ZTTT] = TT_TYPE;
|
||
*/
|
||
|
||
/*
|
||
//CRCC认证添加
|
||
OutStatus.ChuanDongObjectType[ATBH_CDTEST_CHECK] = SOFT_STRIP_TYPE;
|
||
OutStatus.ChuanDongObjectType[ATBH_CDTEST_SECDDISPLAY] = SOFT_STRIP_TYPE;
|
||
OutStatus.ChuanDongObjectType[ATBH_CDTEST_RECLS] = SOFT_STRIP_TYPE;
|
||
OutStatus.ChuanDongObjectType[ATBH_CDTEST_ATSWITCH] = SOFT_STRIP_TYPE;
|
||
OutStatus.ChuanDongObjectType[ATBH_CDTEST_INTERLOCK] = SOFT_STRIP_TYPE;
|
||
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_CHECK] = ATBH_SOFTSTRAP_OBJECT_CHECK;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_SECDDISPLAY] = ATBH_SOFTSTRAP_OBJECT_SECDDISPLAY;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_RECLS] = ATBH_SOFTSTRAP_OBJECT_RECLS;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_ATSWITCH] = ATBH_SOFTSTRAP_OBJECT_ATSWITCH;
|
||
OutStatus.ChuanDongObjectSet[ATBH_CDTEST_INTERLOCK] = ATBH_SOFTSTRAP_OBJECT_INTERLOCK;
|
||
*/
|
||
//OutStatus.ChuanDongObjectSet[ATBH_CDTEST_CHZTR_LED] = ATBH_CHZTR_LED_KC;
|
||
for(i = ATBH_CDTEST_CHECK,j = 0; j < ATBH_SOFTSTRAP_OBJECT_NUMBER; i++, j++)
|
||
{
|
||
OutStatus.ChuanDongObjectSet[i] = ATBH_SOFTSTRAP_OBJECT_CHECK + j;
|
||
}
|
||
|
||
|
||
//需记录状态
|
||
OutStatus.ObjectKcType[ATBH_CHZDZ_LED_KC] = DRIVE_RECD_FAULT_KC_TYPE;
|
||
OutStatus.ObjectKcType[ATBH_TZ_LED_KC] = DRIVE_RECD_FAULT_KC_TYPE;
|
||
OutStatus.ObjectKcType[ATBH_ZTDZ_LED_KC] = DRIVE_RECD_FAULT_KC_TYPE;
|
||
OutStatus.ObjectKcType[ATBH_BTGZ_KC] = DRIVE_RECD_FAULT_KC_TYPE;
|
||
|
||
//OutStatus.ObjectKcType[ATBH_BCJQ_KC] = DRIVE_BHTZ_KC_TYPE; //保护跳闸开出将驱动跳闸灯
|
||
OutStatus.ObjectKcType[ATBH_HCJ_KC] = DRIVE_CHZ_KC_TYPE; //保护合闸
|
||
|
||
//OutStatus.ObjectKcBit[ATBH_RUN_LED_KC] = 0; //运行灯
|
||
//OutStatus.ObjectKcBit[ATBH_AM_LED_KC] = 1; //告警灯
|
||
//OutStatus.ObjectKcBit[ATBH_TZ_LED_KC] = 3; //跳闸灯
|
||
//OutStatus.ObjectKcBit[ATBH_ZTTR_LED_KC] = 4; //自投投入灯
|
||
//OutStatus.ObjectKcBit[ATBH_ZTDZ_LED_KC] = 5; //自投动作灯
|
||
//OutStatus.ObjectKcBit[ATBH_CHZTR_LED_KC] = 6; //重合闸投入
|
||
//OutStatus.ObjectKcBit[ATBH_JX_LED_KC] = 7; //检修灯
|
||
//OutStatus.ObjectKcBit[ATBH_CHZDZ_LED_KC] = 8; //重合闸动作
|
||
//OutStatus.ObjectKcBit[ATBH_CHZCD_LED_KC] = 9; //重合闸充电
|
||
//OutStatus.ObjectKcBit[ATBH_GPS_LED_KC] = 10; //GPS信号灯
|
||
|
||
|
||
//初始化传动试验相关标志
|
||
/*
|
||
ChuanDongTest.TestIP=TEST_CLOSE; //设置传动试验标志为“关闭”状态
|
||
ChuanDongTest.TestDelay=0; //置传动试验计时器为0
|
||
ChuanDongTest.TestNo=0xFF; //上次传动试验对象号初始为无效值
|
||
ChuanDongTest.TestProperty=0xFF; //上次传动试验属性初始为无效值
|
||
ChuanDongTest.TestNo_OLD=0xFF; //上次传动试验对象号初始为无效值
|
||
ChuanDongTest.TestProperty_OLD=0xFF; //上次传动试验属性初始为无效值
|
||
*/
|
||
//初始化遥控相关参数
|
||
RemoteValue.ModeChannelNo=ATBH_YAOXIN_YK; //遥控方式开入通道号
|
||
RemoteValue.OperationTime=ATBH_OperationTime;//QFDelayTime; //断路器动作时间
|
||
RemoteValue.QSOperationTime=ATBH_QSOperationTime;//QSDelayTime; //隔离开关动作时间
|
||
//RemoteValue.QFDelayTime = QFDelayTime; //断路器操作延时
|
||
//RemoteValue.QFDelayTime = QSDelayTime; //隔离开关操作延时
|
||
//RemoteValue.DelayTime=0; //遥控计时器
|
||
}
|
||
|
||
|
||
/*******************************************************************
|
||
* void InitData(void)
|
||
* 描述:初始化全局变量
|
||
* 历史:创建日期不详
|
||
*
|
||
******************************************************************/
|
||
void InitData(void)
|
||
{
|
||
|
||
int i,j,k,m,number;
|
||
unsigned char ChannelNo;
|
||
|
||
FaultReportType *FaultReport = MemPtrSet.pFaultReport;
|
||
WaveType *LoadWaveBuffer = MemPtrSet.pWave;
|
||
int trip,sw1,sw2,sw3;
|
||
|
||
//保护绕组电流
|
||
//ATBH_BaoHu_I.Type = I_TYPE;
|
||
//ATBH_BaoHu_I.Mode=ChannelValue[CH_ATBH_BH_I].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
//ATBH_BaoHu_I.Value=0;
|
||
//保护绕组2次谐波电流
|
||
//ATBH_BaoHu_I2.Type=ATBH_BaoHu_I.Type; //模拟量类型
|
||
//ATBH_BaoHu_I2.Mode=ATBH_BaoHu_I.Mode;
|
||
//ATBH_BaoHu_I2.Value=0; //模拟量值
|
||
//保护绕组综合谐波电流
|
||
//ATBH_BaoHu_IE.Type=ATBH_BaoHu_I.Type; //模拟量类型
|
||
//ATBH_BaoHu_IE.Mode=ATBH_BaoHu_I.Mode;
|
||
//ATBH_BaoHu_IE.Value=0; //模拟量值
|
||
|
||
ATBH_BaoHu_IT.Type = ATBH_IT_TYPE;
|
||
ATBH_BaoHu_IT.Mode = DisplayMode;
|
||
ATBH_BaoHu_IT.Value = 0;
|
||
|
||
//差动2次谐波电流含量
|
||
ATBH_ChaDong_I2.Type=ATBH_IDIFF2_TYPE;
|
||
ATBH_ChaDong_I2.Mode=ChannelValue[CH_ATBH_BH_I].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
ATBH_ChaDong_I2.Value=0;
|
||
//差动电流和制动电流
|
||
ChaDongValue.CDI.Type=ATBH_IDIFF_TYPE; //模拟量类型
|
||
ChaDongValue.CDI.Mode=DisplayMode; //显示模式
|
||
ChaDongValue.CDI.Value=0; //模拟量值
|
||
ChaDongValue.ZDI.Type=ATBH_IREST_TYPE; //模拟量类型
|
||
ChaDongValue.ZDI.Mode=DisplayMode; //显示模式
|
||
ChaDongValue.ZDI.Value=0; //模拟量值
|
||
|
||
DLLDiffValue.CDI.Type = ATBH_DELTADIFF_TYPE; //模拟量类型
|
||
DLLDiffValue.CDI.Mode = DisplayMode; //显示模式
|
||
DLLDiffValue.CDI.Value = 0; //模拟量值
|
||
DLLDiffValue.ZDI.Type = ATBH_IREST_TYPE; //模拟量类型
|
||
DLLDiffValue.ZDI.Mode = DisplayMode; //显示模式
|
||
DLLDiffValue.ZDI.Value = 0; //模拟量值
|
||
|
||
//初始化故障参数
|
||
//故障电流(T线保护绕组)
|
||
ATBH_Fault_IT.Type=ChannelValue[CH_ATBH_BH_I].YouXiaoZhi[JiBo].Analog.Type; //模拟量类型
|
||
ATBH_Fault_IT.Mode=ChannelValue[CH_ATBH_BH_I].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
//故障电流(F线保护绕组)
|
||
ATBH_Fault_IF.Type=ChannelValue[CH_ATBH_BH_IF].YouXiaoZhi[JiBo].Analog.Type; //模拟量类型
|
||
ATBH_Fault_IF.Mode=ChannelValue[CH_ATBH_BH_IF].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
//故障电流(T线差动绕组)
|
||
ATBH_Fault_CDIT.Type=ChannelValue[CH_ATBH_CD_IT].YouXiaoZhi[JiBo].Analog.Type; //模拟量类型
|
||
ATBH_Fault_CDIT.Mode=ChannelValue[CH_ATBH_CD_IT].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
//故障电流(F线差动绕组)
|
||
ATBH_Fault_CDIF.Type=ChannelValue[CH_ATBH_CD_IF].YouXiaoZhi[JiBo].Analog.Type; //模拟量类型
|
||
ATBH_Fault_CDIF.Mode=ChannelValue[CH_ATBH_CD_IF].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
|
||
//故障电压(T线电压)
|
||
ATBH_Fault_UT.Type=ChannelValue[CH_ATBH_UT].YouXiaoZhi[JiBo].Analog.Type; //模拟量类型
|
||
ATBH_Fault_UT.Mode=ChannelValue[CH_ATBH_UT].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
//故障电压(F线电压)
|
||
ATBH_Fault_UF.Type=ChannelValue[CH_ATBH_UF].YouXiaoZhi[JiBo].Analog.Type; //模拟量类型
|
||
ATBH_Fault_UF.Mode=ChannelValue[CH_ATBH_UF].YouXiaoZhi[JiBo].Analog.Mode; //显示模式
|
||
//故障电流(差动电流)
|
||
ATBH_Fault_ICD.Type=ChaDongValue.CDI.Type; //模拟量类型
|
||
ATBH_Fault_ICD.Mode=ChaDongValue.CDI.Mode; //显示模式
|
||
//故障电流(制动电流)
|
||
ATBH_Fault_IZD.Type=ChaDongValue.ZDI.Type; //模拟量类型
|
||
ATBH_Fault_IZD.Mode=ChaDongValue.ZDI.Mode; //显示模式
|
||
//故障量 (差动电流二次谐波含量)
|
||
ATBH_Fault_XB2ICD.Type=ATBH_ChaDong_I2.Type; //模拟量类型
|
||
ATBH_Fault_XB2ICD.Mode=ATBH_ChaDong_I2.Mode; //显示模式
|
||
|
||
//录波通道设置
|
||
WaveChannelSet[ATBH_UT_WAVE]=CH_ATBH_UT; //T线电压
|
||
WaveChannelSet[ATBH_UF_WAVE]=CH_ATBH_UF; //F线电压
|
||
WaveChannelSet[ATBH_BH_I_WAVE]=CH_ATBH_BH_I; //T线保护绕组电流
|
||
WaveChannelSet[ATBH_BH_IF_WAVE]=CH_ATBH_BH_IF; //F线保护绕组电流
|
||
WaveChannelSet[ATBH_DC_IT_WAVE]=CH_ATBH_CD_IT; //对侧T线绕组电流
|
||
WaveChannelSet[ATBH_DC_IF_WAVE]=CH_ATBH_CD_IF; //对侧F线绕组电流
|
||
WaveChannelSet[ATBH_IDIFF_WAVE]=CH_ATBH_DIFF; //差动电流
|
||
WaveChannelSet[ATBH_CL_I_WAVE]=CH_ATBH_CL_I; //T线测量绕组电流
|
||
WaveChannelSet[ATBH_CL_IF_WAVE]=CH_ATBH_CL_IF; //F线测量绕组电流
|
||
|
||
|
||
//数字量录波
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
trip = ATBH_BCJQ_KC;
|
||
sw1 = ATBH_YAOXIN_QF;
|
||
sw2 = ATBH_YAOXIN_1QS;
|
||
sw3 = ATBH_YAOXIN_2QS;
|
||
}
|
||
else
|
||
{
|
||
trip = ATBH_1QS_BHTZ_KC;
|
||
sw1 = ATBH_YAOXIN_1QS;
|
||
sw2 = ATBH_YAOXIN_1QSDD_1QF;
|
||
sw3 = ATBH_YAOXIN_2QSDD_2QF;
|
||
}
|
||
unsigned int DigitalWaveSet[][3] = {
|
||
{ATBH_QF_DIGITALWAVE,sw1,WAVE_CHANNEL_RMTSIGNAL}, //位置1
|
||
{ATBH_QS1_DIGITALWAVE,sw2,WAVE_CHANNEL_RMTSIGNAL}, //位置2
|
||
{ATBH_QS2_DIGITALWAVE,sw3,WAVE_CHANNEL_RMTSIGNAL}, //位置3
|
||
{ATBH_TRIP1_DIGITALWAVE,trip,WAVE_CHANNEL_DO}, //跳闸1
|
||
{ATBH_TRIP2_DIGITALWAVE,ATBH_1QS_DD_1QF_TZ_KC,WAVE_CHANNEL_DO}, //跳闸2
|
||
{ATBH_TRIP3_DIGITALWAVE,ATBH_2QS_DD_2QF_TZ_KC,WAVE_CHANNEL_DO}, //跳闸3
|
||
{ATBH_RCLS_DIGITALWAVE,ATBH_HCJ_KC,WAVE_CHANNEL_DO}, //重合闸
|
||
{ATBH_DIFFI_SD_DIGITALWAVE,ATBH_CDSD_BIT,WAVE_CHANNEL_PRTC_START}, //差动速断
|
||
{ATBH_DIFFI_BL_DIGITALWAVE,ATBH_CD_BIT,WAVE_CHANNEL_PRTC_START}, //比率差动
|
||
{ATBH_SY_DIGITALWAVE,ATBH_SY_BIT,WAVE_CHANNEL_PRTC_START}, //失压
|
||
{ATBH_ZWS_DIGITALWAVE,ATBH_ZWS_BIT,WAVE_CHANNEL_PRTC_START}, //重瓦斯
|
||
{ATBH_WD2_DIGITALWAVE,ATBH_WD2_BIT,WAVE_CHANNEL_PRTC_START}, //温度2段
|
||
{ATBH_YLSF_DIGITALWAVE,ATBH_YLSF_BIT,WAVE_CHANNEL_PRTC_START}, //压力释放
|
||
{ATBH_BAK_DIGITALWAVE,ATBH_BAK_BIT,WAVE_CHANNEL_PRTC_START}, //备用信号
|
||
{ATBH_HI2_DIGITALWAVE,ATBH_XieBoCDI2_BIT,WAVE_CHANNEL_PRTC_ASST}, //差动二次谐波闭锁
|
||
{ATBH_DIFF_ALARM_DIGITALWAVE,ATBH_CLYX_BIT,WAVE_CHANNEL_PRTC_ASST}, //差流越限告警
|
||
{ATBH_FI_DIGITALWAVE,ATBH_FI1_BIT,WAVE_CHANNEL_PRTC_ASST}, //过负荷
|
||
{ATBH_TPTDX_DIGITALWAVE,ATBH_TPTDX_BIT,WAVE_CHANNEL_PRTC_ASST}, //T线PT断线
|
||
{ATBH_FPTDX_DIGITALWAVE,ATBH_FPTDX_BIT,WAVE_CHANNEL_PRTC_ASST}, //F线PT断线
|
||
{ATBH_DLLDIFF_DIGITALWAVE,ATBH_DLLDIFF_BIT,WAVE_CHANNEL_PRTC_START}, //增量差动
|
||
|
||
|
||
};
|
||
number = sizeof(DigitalWaveSet) / sizeof(DigitalWaveSet[0]);
|
||
DigitalWaveChannelInit(DigitalWaveSet,number);
|
||
DigitalWaveChannelSet.Number = number;
|
||
|
||
|
||
//初始化故障报告缓冲区
|
||
for(i=0;i<FAULT_NUM;i++){
|
||
FaultReport->Buffer[i].DeviceType=DEV_ATBH; //装置类型为:AT保护装置
|
||
FaultReport->Buffer[i].DongZuoIP=0; //动作标志清零
|
||
|
||
m = 0;
|
||
//参数1:T线电压
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_UT.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_UT.Mode; //显示模式
|
||
//参数2:F线电压
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_UF.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_UF.Mode; //显示模式
|
||
//参数3:T线保护绕组
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_IT.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_IT.Mode; //显示模式
|
||
//参数4:F线保护绕组
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_IF.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_IF.Mode; //显示模式
|
||
if(ISOLATOR_TYPE == ATBH_ATMode)
|
||
{
|
||
//参数5:T线差动绕组
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_CDIT.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_CDIT.Mode; //显示模式
|
||
//参数6:F线差动绕组
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_CDIF.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_CDIF.Mode; //显示模式
|
||
}
|
||
//参数8:差动电流
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_ICD.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_ICD.Mode; //显示模式
|
||
//参数9:制动电流
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_IZD.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_IZD.Mode; //显示模式
|
||
//参数10:保护电流二次谐波含量
|
||
//FaultReport->Buffer[i].DataBuffer[m].Type=IXB2_TYPE;//模拟量类型
|
||
//FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_XB2I.Mode; //显示模式
|
||
//参数11:差动电流二次谐波含量
|
||
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_XB2ICD.Type; //模拟量类型
|
||
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_XB2ICD.Mode; //显示模式
|
||
|
||
FaultReport->Buffer[i].ParameterNumber = m; //参数个数为:11个模拟量参数
|
||
|
||
FaultReport->Buffer[i].HasWave=0; //无波形
|
||
FaultReport->Buffer[i].SoeNumber=0; //无事件
|
||
//初始化故障波形缓冲区
|
||
FaultReport->Buffer[i].WaveValue.DeviceType=DEV_ATBH; //AT保护测控装置
|
||
FaultReport->Buffer[i].WaveValue.ChannelNum = ATBH_WAVE_PROTECT_NUMBER; //录波通道数为10
|
||
for(j=0;j < ATBH_WAVE_PROTECT_NUMBER;j++)
|
||
{
|
||
ChannelNo=WaveChannelSet[j]; //取该路波形对应的模拟量通道号
|
||
//类型为0时该通道不上送
|
||
//if(ANALOG_UNDEFINE == ChannelValue[ChannelNo].YouXiaoZhi[JiBo].Analog.Type)
|
||
//{
|
||
//continue;
|
||
//}
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].Type=ChannelValue[ChannelNo].YouXiaoZhi[JiBo].Analog.Type;
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].Mode=SETVALUE_MODE_2;
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].XiShu=ChannelValue[ChannelNo].CoeffiWave2;//ChannelValue[ChannelNo].XiShu;
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].RatioValue1 = ChannelValue[ChannelNo].RatioValue2 * ChannelValue[ChannelNo].BianBi;
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].RatioValue2 = ChannelValue[ChannelNo].RatioValue2;
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].SampleNumber=SAMPLE_NUM; //采样频率,用每周波采样点数来表示
|
||
FaultReport->Buffer[i].WaveValue.ChannelData[j].Length=0;
|
||
FaultReport->Buffer[i].WaveValue.DigitalData.Number = DigitalWaveChannelSet.Number;
|
||
for (k=0;k<FAULT_WAVE_LEN;k++) FaultReport->Buffer[i].WaveValue.ChannelData[j].Data[k]=0; //初始化波形数据为0
|
||
}
|
||
|
||
//数字量录波
|
||
//MemPtrSet.pDigitalFaultWave->Buffer[i].Number = DigitalWaveChannelSet.Number;
|
||
}//endfor
|
||
|
||
//初始化负荷录波缓冲区
|
||
LoadWaveBuffer->DeviceType=DEV_ATBH; //AT保护测控装置
|
||
//录波通道数为10
|
||
for(j=0;j<ATBH_WAVE_NUMBER;j++){
|
||
ChannelNo=WaveChannelSet[j]; //取该路波形对应的模拟量通道号
|
||
LoadWaveBuffer->ChannelData[j].Type=ChannelValue[ChannelNo].YouXiaoZhi[JiBo].Analog.Type;
|
||
LoadWaveBuffer->ChannelData[j].Mode=SETVALUE_MODE_2;
|
||
LoadWaveBuffer->ChannelData[j].XiShu=ChannelValue[ChannelNo].CoeffiWave2;//ChannelValue[ChannelNo].XiShu;
|
||
LoadWaveBuffer->ChannelData[j].RatioValue1 = ChannelValue[ChannelNo].RatioValue2 * ChannelValue[ChannelNo].BianBi;
|
||
LoadWaveBuffer->ChannelData[j].RatioValue2 = ChannelValue[ChannelNo].RatioValue2;
|
||
LoadWaveBuffer->ChannelData[j].SampleNumber=SAMPLE_NUM; //采样频率,用每周波采样点数来表示
|
||
LoadWaveBuffer->ChannelData[j].Length=0;
|
||
for (k=0;k<FAULT_WAVE_LEN;k++) LoadWaveBuffer->ChannelData[j].Data[k]=0; //初始化波形数据为0
|
||
}
|
||
LoadWaveBuffer->ChannelData[ATBH_IDIFF_WAVE].Type = ATBH_UNUSE_TYPE;
|
||
LoadWaveBuffer->ChannelNum = j;
|
||
|
||
//数字量录波
|
||
//MemPtrSet.pDigitalLoadWave->Number = DigitalWaveChannelSet.Number;
|
||
LoadWaveBuffer->DigitalData.Number = DigitalWaveChannelSet.Number;
|
||
|
||
//MemPtrSet.pDigitalLoadWave->Number = 0;
|
||
|
||
//初始化测量值缓冲区
|
||
MeasureValue.DeviceType=DEV_ATBH; //装置类型
|
||
|
||
MeasureValue.Number = ATBH_MX_NUMBER * 2;
|
||
unsigned char measureparam[][4] =
|
||
{
|
||
{ATBH_MX_UTM,CH_ATBH_UT,ATBH_UTM_TYPE,ATBH_UTM_TYPE}, //T线测量电压
|
||
{ATBH_MX_UFM,CH_ATBH_UF,ATBH_UFM_TYPE,ATBH_UFM_TYPE}, //F线测量电压
|
||
{ATBH_MX_ITM,CH_ATBH_CL_I,ATBH_ITM_TYPE,ATBH_UNUSE_TYPE}, //T线测量电流
|
||
{ATBH_MX_IFM,CH_ATBH_CL_IF,ATBH_IFM_TYPE,ATBH_UNUSE_TYPE}, //F线测量电流
|
||
{ATBH_MX_Fre,ANALOG_UNDEFINE,ATBH_FRE_TYPE,ATBH_FRE_TYPE}, //频率
|
||
|
||
{ATBH_MX_UT,CH_ATBH_UT,ATBH_UT_TYPE,ATBH_UT_TYPE}, //T线保护电压
|
||
{ATBH_MX_Q_UT,CH_ATBH_UT,ATBH_Q_UT_TYPE,ATBH_Q_UT_TYPE}, //T线保护电压角度
|
||
{ATBH_MX_UF,CH_ATBH_UF,ATBH_UF_TYPE,ATBH_UF_TYPE}, //F线保护电压
|
||
{ATBH_MX_Q_UF,CH_ATBH_UF,ATBH_Q_UF_TYPE,ATBH_Q_UF_TYPE}, //F线保护电压角度
|
||
{ATBH_MX_IT,CH_ATBH_BH_I,ATBH_IT_TYPE,ATBH_IT_BC_TYPE}, //T线保护电流
|
||
{ATBH_MX_Q_IT,CH_ATBH_BH_I,ATBH_Q_IT_TYPE,ATBH_Q_IT_BC_TYPE}, //T线保护电流角度
|
||
{ATBH_MX_IF,CH_ATBH_BH_IF,ATBH_IF_TYPE,ATBH_IF_BC_TYPE}, //F线保护电流
|
||
{ATBH_MX_Q_IF,CH_ATBH_BH_IF,ATBH_Q_IF_TYPE,ATBH_Q_IF_BC_TYPE}, //F线保护电流角度
|
||
|
||
{ATBH_MX_IT_DC,CH_ATBH_CD_IT,ATBH_UNUSE_TYPE,ATBH_IT_DC_TYPE}, //对侧T线保护电流
|
||
{ATBH_MX_Q_IT_DC,CH_ATBH_CD_IT,ATBH_UNUSE_TYPE,ATBH_Q_IT_DC_TYPE}, //对侧T线保护电流角度
|
||
{ATBH_MX_IF_DC,CH_ATBH_CD_IF,ATBH_UNUSE_TYPE,ATBH_IF_DC_TYPE}, //对侧T线保护电流
|
||
{ATBH_MX_Q_IF_DC,CH_ATBH_CD_IF,ATBH_UNUSE_TYPE,ATBH_Q_IF_DC_TYPE}, //对侧T线保护电流角度
|
||
|
||
{ATBH_MX_IDIFF,ANALOG_UNDEFINE,ATBH_IDIFF_TYPE, ATBH_IDIFF_TYPE}, //差动电流
|
||
{ATBH_MX_IREST,ANALOG_UNDEFINE,ATBH_IREST_TYPE, ATBH_IREST_TYPE}, //制动动电流
|
||
|
||
{ATBH_MX_Id2,ANALOG_UNDEFINE,ATBH_IDIFF2_TYPE,ATBH_IDIFF2_TYPE}, //差动二次谐波含量
|
||
#ifdef TEMPERATURE_ENABLE
|
||
{ATBH_MX_WD1,CH_ATBH_WD1,ATBH_WD1_TYPE,ATBH_WD1_TYPE}, //温度1
|
||
{ATBH_MX_WD2,CH_ATBH_WD2,ATBH_WD2_TYPE,ATBH_WD2_TYPE}, //温度2
|
||
#endif
|
||
|
||
};
|
||
|
||
number = sizeof(measureparam)/sizeof(measureparam[0]);
|
||
for(i = 0; i < number; i++)
|
||
{
|
||
k = measureparam[i][0];
|
||
m = k + ATBH_MX_NUMBER;
|
||
MeasureValue.Buffer[k].Value = 0; //母锟竭碉拷压
|
||
MeasureValue.Buffer[k].Mode = SETVALUE_MODE_1;
|
||
measure_param[k].smpchannel = measureparam[i][1];
|
||
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
MeasureValue.Buffer[k].Type = measureparam[i][2];
|
||
}
|
||
else
|
||
{
|
||
MeasureValue.Buffer[k].Type = measureparam[i][3];
|
||
}
|
||
//二次参数
|
||
MeasureValue.Buffer[m].Value = 0;
|
||
MeasureValue.Buffer[m].Mode = SETVALUE_MODE_2;
|
||
MeasureValue.Buffer[m].Type = MeasureValue.Buffer[k].Type;
|
||
|
||
if(k < MX_MEASURE_NUMBER)
|
||
{
|
||
measure_param[k].type = ANALOG_MEASURE_TYPE;
|
||
}
|
||
else
|
||
{
|
||
measure_param[k].type = ANALOG_PROTECT_TYPE;
|
||
}
|
||
|
||
}
|
||
|
||
//偷跳监视参数初始化
|
||
dl_open_innormal_param_set(&ATBH_dl_open_innormal_param,ATBH_YAOXIN_QF,ATBH_DL_BTYF_KR,ATBH_DL_FZJS_KR,ATBH_DL_FZJS_KR,ATBH_YAOXIN_DL_YCFZ,ATBH_DL_FZ_YC,ATBH_dl_innormal_open_alarm);
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
dl_open_innormal_param_init(&ATBH_dl_open_innormal_param);
|
||
}
|
||
//重合闸变量初始化
|
||
CHZValue.Status = CHZ_CLOSE;
|
||
CHZValue.ChongDianTime = 0;
|
||
CHZValue.CHZTime = 0;
|
||
CHZValue.DelayCount = 0;
|
||
CHZValue.ChongDianOK = FAIL;
|
||
|
||
//跳闸变量初始化
|
||
TZValue.Status=TZ_CLOSE; //跳闸状态
|
||
//TZValue.IP=SUCCESS; //跳闸失灵标志,SUCCESS:跳闸成功;FAIL:跳闸失灵 // LW modi 20240723 移至上电初始化
|
||
|
||
TZValue.DelayCount=0; //跳闸延时计时器
|
||
TZValue.FaultProcessEndIP=FAULT_REPORT_SENDED; //故障处理结束标志
|
||
|
||
//非电量起动自投投入
|
||
if(BH_RUN == ATBH_FDLQDZT)
|
||
{
|
||
ATBH_QDZT_Mask = ATBH_FDL_BIT|ATBH_CDSD_BIT|ATBH_CD_BIT|ATBH_DLLDIFF_BIT;
|
||
}
|
||
else
|
||
{
|
||
ATBH_QDZT_Mask = ATBH_CDSD_BIT|ATBH_CD_BIT|ATBH_DLLDIFF_BIT;
|
||
}
|
||
|
||
if(DisplayMode==SETVALUE_MODE_1)
|
||
{
|
||
//按一次值整定
|
||
ATBH_JD_I=0.03*ATBH_CTRated1;
|
||
}
|
||
else
|
||
{
|
||
//按二次值整定
|
||
ATBH_JD_I=0.03*ATBH_CTRated2;
|
||
}
|
||
|
||
//ZTDongZuoIP=TEST_CLOSE; //自投动作标志
|
||
TiaoZhaIP=TEST_CLOSE;
|
||
|
||
}
|
||
|
||
void settingtype_init()
|
||
{
|
||
int i = 0,j = 0;
|
||
//CT额定
|
||
for(j = 0,i = 0; j < 2; j++)
|
||
{
|
||
UserDzType[i++] = FLOAT_TYPE;
|
||
}
|
||
//AT接入方式
|
||
UserDzType[i++] = INTEGER_TYPE;
|
||
//差动速断-差流越限电流
|
||
for(j = 0; j < 8; j++)
|
||
{
|
||
UserDzType[i++] = FLOAT_TYPE;
|
||
}
|
||
//失压检测电压
|
||
UserDzType[i++] = INTEGER_TYPE;
|
||
//失压保护动作电压-PT断线
|
||
for(j = 0; j < 8; j++)
|
||
{
|
||
UserDzType[i++] = FLOAT_TYPE;
|
||
}
|
||
#ifdef TEMPERATURE_ENABLE
|
||
for(j = 0; j < 2; j++)
|
||
{
|
||
UserDzType[i++] = FLOAT_TYPE;
|
||
}
|
||
#endif
|
||
//自定义
|
||
for(j = 0; j < 5; j++)
|
||
{
|
||
UserDzType[i++] = FLOAT_TYPE;
|
||
}
|
||
//控制字 + 4 自定义
|
||
for(j = 0; j < 8; j++)
|
||
{
|
||
UserDzType[i++] = INTEGER_TYPE;
|
||
}
|
||
|
||
USER_SET_LEN = sizeof(tagUserSetting_atbh);
|
||
|
||
//微调系数
|
||
i = 0;
|
||
for(j = 0; j < 8; j++)
|
||
{
|
||
SysDZType[i++] = FLOAT_TYPE;
|
||
}
|
||
SysDZType[i++] = FLOAT_TYPE;
|
||
SysDZType[i++] = FLOAT_TYPE;
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
for(j = 0; j < 4; j++)
|
||
{
|
||
SysDZType[i++] = FLOAT_TYPE;
|
||
}
|
||
SysDZType[i++] = INTEGER_TYPE; //断路器异常分闸告警
|
||
SysDZType[i++] = INTEGER_TYPE; //增量差动 20230810 add
|
||
SysDZType[i++] = FLOAT_TYPE;
|
||
SysDZType[i++] = FLOAT_TYPE; //比率差动下限定值系数
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
#ifdef TEMPERATURE_ENABLE
|
||
for(j = 0; j < 2; j++)
|
||
{
|
||
SysDZType[i++] = INTEGER_TYPE;
|
||
}
|
||
#endif
|
||
//预留
|
||
for(j = 0; j < 8; j++)
|
||
{
|
||
SysDZType[i++] = FLOAT_TYPE;
|
||
}
|
||
|
||
SYS_SET_LEN = sizeof(tagSysSetting_atbh);
|
||
}
|
||
unsigned int CheckSysSetting(unsigned char *pAddress)
|
||
{
|
||
//功能说明:检测系统整定参数是否超范围
|
||
tagSysSetting_atbh *pSysSetting,syssetting;
|
||
float *ptr;
|
||
|
||
memcpy(&syssetting,pAddress,sizeof(syssetting));
|
||
pSysSetting = &syssetting;
|
||
|
||
ptr = &pSysSetting->adjustcoeffi.VK;
|
||
|
||
//校验微调系数
|
||
for(;ptr <= &pSysSetting->adjustcoeffi.IFMK; ptr++)
|
||
{
|
||
if(*ptr < -5 || *ptr > 5)
|
||
{
|
||
SYS_RETURN_FAIL;
|
||
}
|
||
}
|
||
|
||
//校正电流角度修正值
|
||
if(pSysSetting->angle_adjust_val_curr < 0 || pSysSetting->angle_adjust_val_curr > 360.0)
|
||
{
|
||
SYS_RETURN_FAIL;
|
||
}
|
||
|
||
//电压一次额定值
|
||
if(pSysSetting->pt_rated1 < 1 || pSysSetting->pt_rated1 > 100)
|
||
{
|
||
SYS_RETURN_FAIL;
|
||
}
|
||
ptr = &pSysSetting->optime.t_qf;
|
||
for(;ptr < &pSysSetting->optime.t_delay_qs; ptr++)
|
||
{
|
||
if(*ptr < 0 || *ptr > 60)
|
||
{
|
||
return FAIL;
|
||
}
|
||
}
|
||
|
||
//遥控脉宽
|
||
if(pSysSetting->optime.t_delay_qf > pSysSetting->optime.t_qf)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(pSysSetting->optime.t_delay_qs > pSysSetting->optime.t_qs)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//增量差动
|
||
if(0 > pSysSetting->dll_diff || 1 < pSysSetting->dll_diff)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//增量差动电流系数
|
||
if(0.3 > pSysSetting->dll_diff_coeffi || 1 < pSysSetting->dll_diff_coeffi)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
//差流定值下限系数
|
||
if(syssetting.coeffi_ratio_I < 0.029999 || syssetting.coeffi_ratio_I > 0.100001)
|
||
{
|
||
SYS_RETURN_FAIL;
|
||
}
|
||
if(0 > pSysSetting->diffprtc_notime || 1 < pSysSetting->diffprtc_notime)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(0 > pSysSetting->ih_diff_alram_block || 1 < pSysSetting->ih_diff_alram_block)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(0 > pSysSetting->nonui_prtc_trip || 1 < pSysSetting->nonui_prtc_trip)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//非电量起动备自投
|
||
if(0 > pSysSetting->nonui_startup_switch_in || 1 < pSysSetting->nonui_startup_switch_in)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//断路器异常分闸告警
|
||
if(pSysSetting->dl_innormal_open_alarm < 0 || pSysSetting->dl_innormal_open_alarm > 1)
|
||
{
|
||
SYS_RETURN_FAIL;
|
||
}
|
||
if(0 > pSysSetting->dl_innormal_open_antorcls || 1 < pSysSetting->dl_innormal_open_antorcls)
|
||
{
|
||
return FAIL;
|
||
}
|
||
#ifdef TEMPERATURE_ENABLE
|
||
if(0 > pSysSetting->tmp_alarm.T1_enable || 1 < pSysSetting->tmp_alarm.T1_enable)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(0 > pSysSetting->tmp_alarm.T2_enable || 1 < pSysSetting->tmp_alarm.T2_enable)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
#endif
|
||
return SUCCESS;
|
||
|
||
}
|
||
|
||
|
||
void ReadSysSetValue(unsigned char *pAddress)
|
||
{
|
||
tagSysSetting_atbh *pSysSetting,syssetting;
|
||
|
||
memcpy(&syssetting,pAddress,sizeof(syssetting));
|
||
|
||
ATBH_VKSet = syssetting.adjustcoeffi.VK; //T线电压微调系数,4字节
|
||
ATBH_VFKSet = syssetting.adjustcoeffi.VFK; //F线电压微调系数,4字节
|
||
ATBH_BaoHuIKSet = syssetting.adjustcoeffi.ITK; //T线保护绕组电流微调系数,4字节
|
||
ATBH_ChaDongIKSet = syssetting.adjustcoeffi.ITK_DC; //T线差动绕组电流微调系数,4字节
|
||
ATBH_CeLiangIKSet = syssetting.adjustcoeffi.ITMK; //T线测量绕组电流微调系数,4字节
|
||
ATBH_BaoHuFIKSet = syssetting.adjustcoeffi.IFK; //F线保护绕组电流微调系数,4字节
|
||
ATBH_ChaDongFIKSet = syssetting.adjustcoeffi.IFK_DC; //F线差动绕组电流微调系数,4字节
|
||
ATBH_CeLiangFIKSet = syssetting.adjustcoeffi.IFMK; //F线测量绕组电流微调系数,4字节
|
||
|
||
//ATBH_IJDKSet = syssetting.adjustcoeffi.IJDK; //接地电流微调系数,4字节
|
||
//ATBH_WD1TSet = syssetting.adjustcoeffi.T1T; //温度1温度基准值
|
||
//ATBH_WD1ISet = syssetting.adjustcoeffi.T1I; //温度1电流基准值
|
||
//ATBH_WD1KSet = syssetting.adjustcoeffi.T1K; //温度1曲线斜率
|
||
//ATBH_WD2TSet = syssetting.adjustcoeffi.T2T; //温度2温度基准值
|
||
//ATBH_WD2ISet = syssetting.adjustcoeffi.T2I; //温度2电流基准值
|
||
//ATBH_WD2KSet = syssetting.adjustcoeffi.T2K; //温度2曲线斜率
|
||
|
||
angle_amend_value = syssetting.angle_adjust_val_curr * -1; //电流角度修正值
|
||
ATBH_PTRated1 = syssetting.pt_rated1;
|
||
ATBH_DLQNo = syssetting.atno; //at号
|
||
ATBH_OperationTime = syssetting.optime.t_qf * S_TO_MS_COEFFI; //断路器动作时间
|
||
ATBH_QSOperationTime = syssetting.optime.t_qs * S_TO_MS_COEFFI; //隔离开关动作时间
|
||
QFDelayTime = syssetting.optime.t_delay_qf * S_TO_MS_COEFFI; //断路器操作延时
|
||
QSDelayTime = syssetting.optime.t_delay_qs * S_TO_MS_COEFFI; //隔离开关操作延时
|
||
|
||
if(BH_RUN == syssetting.diffprtc_notime)
|
||
{
|
||
ATBH_CDTimeSet = 0;
|
||
}
|
||
else
|
||
{
|
||
ATBH_CDTimeSet = 3;
|
||
}
|
||
ih_diff_alram_block = syssetting.ih_diff_alram_block;
|
||
//非电量是否出口
|
||
if(PRTC_TRIP == syssetting.nonui_prtc_trip)
|
||
{
|
||
ATBH_nonui_prtc_trip = BH_RUN;
|
||
}
|
||
else
|
||
{
|
||
ATBH_nonui_prtc_trip = BH_STOP;
|
||
}
|
||
|
||
//非电量启动自投
|
||
ATBH_FDLQDZT = syssetting.nonui_startup_switch_in;
|
||
//增量差动
|
||
ATBH_DLLDIFFTouRu = syssetting.dll_diff;
|
||
ATBH_DllDiffSet = syssetting.dll_diff_coeffi;
|
||
|
||
ATBH_CDI_MIN_XS = syssetting.coeffi_ratio_I;
|
||
//ATBH_DLLDIFFTouRu = BH_RUN;
|
||
//20221226屏蔽该功能,需要时开放
|
||
//ATBH_YCFZ_CHZ_TuoRu = syssetting.dl_innormal_open_antorcls;
|
||
|
||
//断路器异常分闸告警
|
||
ATBH_dl_innormal_open_alarm = syssetting.dl_innormal_open_alarm;
|
||
ATBH_YCFZ_CHZ_TuoRu = BH_STOP;
|
||
//温度告警
|
||
#ifdef TEMPERATURE_ENABLE
|
||
ATBH_CWWD1TouRu = syssetting.tmp_alarm.T1_enable;
|
||
ATBH_CWWD2TouRu = syssetting.tmp_alarm.T2_enable; //温度2告警压板,4字节
|
||
#else
|
||
ATBH_CWWD1TouRu = BH_STOP;
|
||
ATBH_CWWD2TouRu = BH_STOP; //温度2告警压板,4字节
|
||
#endif
|
||
}
|
||
|
||
|
||
void ChangeSysSetValue(void)
|
||
{
|
||
//功能说明:转换系统整定参数
|
||
DLQNo = ATBH_DLQNo;
|
||
}
|
||
|
||
/*
|
||
unsigned int GetSysSetting(void)
|
||
{
|
||
//功能说明:从文件中读取系统参数
|
||
//输出参数:SUCCESS->成功,FAIL->失败
|
||
|
||
unsigned int Len;
|
||
|
||
Len=0;
|
||
if(ReadSysSetValueFromFile(SYSSET_FILE_PATH,&Len)!=SUCCESS){ //从文件中读取系统整定值,保存在SetValueBuffer中
|
||
CheckValue|=SYSTEM_SET_ERROR_BIT; //设置系统整定参数不良标志
|
||
DEBUG_SELFCHECK_OUT("CheckValue = %x",SYSTEM_SET_ERROR_BIT)//
|
||
SelfCheckRecord(SYSSET_ERROR); //自检记录,系统整定参数不良
|
||
RecordSoftYaoXinV2(DEV_YAOXIN_SYSSET_ERROR, ON);
|
||
return FAIL; //定值文件长度错误
|
||
}
|
||
RecordSoftYaoXinV2(DEV_YAOXIN_SYSSET_ERROR, OFF);
|
||
if(CheckSetValueBuffer(SetValueBuffer,Len)!=SUCCESS) {
|
||
CheckValue|=SYSTEM_SET_ERROR_BIT; //设置系统整定参数不良标志
|
||
DEBUG_SELFCHECK_OUT("CheckValue = %x",SYSTEM_SET_ERROR_BIT)//
|
||
SelfCheckRecord(SysSetValueCheckError); //自检记录,系统整定参数校验错
|
||
RecordSoftYaoXinV2(DEV_YAOXIN_SysSetValueCheckError, ON);
|
||
return FAIL; //定值文件校验错
|
||
}
|
||
RecordSoftYaoXinV2(DEV_YAOXIN_SysSetValueCheckError, OFF);
|
||
//检测定值范围
|
||
if(CheckSysSetting(SetValueBuffer)!=SUCCESS){
|
||
//定值超范围
|
||
CheckValue|=SYSTEM_SET_ERROR_BIT; //设置系统整定参数不良标志
|
||
DEBUG_SELFCHECK_OUT("CheckValue = %x",SYSTEM_SET_ERROR_BIT)//
|
||
SelfCheckRecord(SysSetValueOutError); //自检记录,系统整定参数超范围
|
||
RecordSoftYaoXinV2(DEV_YAOXIN_SysSetValueOutError, ON);
|
||
return FAIL; //定值文件校验错
|
||
}
|
||
RecordSoftYaoXinV2(DEV_YAOXIN_SysSetValueOutError, OFF);
|
||
CheckValue&=~SYSTEM_SET_ERROR_BIT; //清除系统整定参数不良标志
|
||
//修改系统整定参数
|
||
ReadSysSetValue(SetValueBuffer);
|
||
ChangeSysSetValue();
|
||
|
||
//计算校验码
|
||
CanShuCheckSum=0;
|
||
CanShuCheckSum=sysSetValueCheckSum();
|
||
|
||
return SUCCESS;
|
||
}
|
||
|
||
*/
|
||
/**********************************************************
|
||
* unsigned int CheckUserSetting(unsigned char *Address)
|
||
* 描述:检测用户整定值是否超范围
|
||
* 历史:创建日期不详
|
||
* 电压电流定值范围可配置
|
||
***********************************************************/
|
||
unsigned int CheckUserSetting(unsigned char *pAddress)
|
||
{
|
||
tagUserSetting_atbh usersetting;
|
||
unsigned int *ptr,i;
|
||
|
||
float IMin,rated2,IMin_cd;
|
||
|
||
memcpy(&usersetting,pAddress,sizeof(usersetting));
|
||
|
||
//校正额定值
|
||
if(usersetting.rated_setting.ct_rated1 < 1.0 || usersetting.rated_setting.ct_rated1 > 9999.0)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(JudgeFloatEqual(usersetting.rated_setting.ct_rated2,1.0) && JudgeFloatEqual(usersetting.rated_setting.ct_rated2,5.0))
|
||
{
|
||
return FAIL;
|
||
}
|
||
rated2 = usersetting.rated_setting.ct_rated2;
|
||
IMin = 0.1 * rated2; //企标是0.1,降低下限,支持非标应用
|
||
IMin_cd = ATBH_CDI_MIN_XS * rated2;
|
||
//at接入方式
|
||
if(usersetting.atmode_setting < 0 || usersetting.atmode_setting > 1)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//差动速断 20240914 修改20-40倍
|
||
if(usersetting.diff_fasttrip_I_setting < IMin || usersetting.diff_fasttrip_I_setting > 40 * rated2)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//比率差动
|
||
if(usersetting.diff_ratio_Setting.I < IMin_cd || usersetting.diff_ratio_Setting.I > 20 * rated2)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.diff_ratio_Setting.I_rest1 < IMin || usersetting.diff_ratio_Setting.I_rest1 > 4 * rated2)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(usersetting.diff_ratio_Setting.I_rest2 < IMin || usersetting.diff_ratio_Setting.I_rest2 > 10 * rated2)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.diff_ratio_Setting.slope1 < 0.099999 || usersetting.diff_ratio_Setting.slope1 > 0.800001)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(usersetting.diff_ratio_Setting.slope2 < 0.099999 || usersetting.diff_ratio_Setting.slope2 > 0.800001)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//二次谐波
|
||
if(usersetting.IH2 < 0.05 || usersetting.IH2 > 0.800001)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
//差流越限
|
||
if(usersetting.diff_overflow_coeffi < 0.1 || usersetting.diff_overflow_coeffi > 1)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//失压保护
|
||
if(usersetting.vabsent_setting.mode < 0 || usersetting.vabsent_setting.mode > 1)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.vabsent_setting.U < 10.0 || usersetting.vabsent_setting.U > 100)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.vabsent_setting.t < 0.099999 || usersetting.vabsent_setting.t > 10)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
//过负荷
|
||
if(usersetting.idmt_setting.I < IMin || usersetting.idmt_setting.I > 20 * rated2)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.idmt_setting.t < 0.099999 || usersetting.idmt_setting.t > 600)
|
||
{
|
||
return FAIL;
|
||
}
|
||
//重合闸
|
||
if(usersetting.recls_setting.u < 50 || usersetting.recls_setting.u > 100)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.recls_setting.t_reset < 5 || usersetting.recls_setting.t_reset > 60)
|
||
{
|
||
return FAIL;
|
||
}
|
||
if(usersetting.recls_setting.t < 1 || usersetting.recls_setting.t > 10)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
//PT断线
|
||
if(usersetting.vts_u_setting < 10 || usersetting.vts_u_setting > 100)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
#ifdef TEMPERATURE_ENABLE
|
||
//温度告警
|
||
if(usersetting.tmp_alarm_setting.T1 < 10 || usersetting.tmp_alarm_setting.T1 > 150)
|
||
{
|
||
return FAIL;
|
||
}
|
||
|
||
if(usersetting.tmp_alarm_setting.T2 < 10 || usersetting.tmp_alarm_setting.T2 > 150)
|
||
{
|
||
return FAIL;
|
||
}
|
||
#endif
|
||
//控制字
|
||
ptr = &usersetting.ctrlword_setting.diff_fasttrip;
|
||
i = sizeof(usersetting.ctrlword_setting) / 4;
|
||
for(; i > 0;i--,ptr++)
|
||
{
|
||
if(*ptr > 1)
|
||
{
|
||
return FAIL;
|
||
}
|
||
}
|
||
|
||
return SUCCESS;
|
||
}
|
||
|
||
/********************************************************
|
||
* void ChangeUserSetValue(void)
|
||
* 描述:转换整定值
|
||
* 历史:创建日期不详
|
||
*
|
||
********************************************************/
|
||
void ChangeUserSetValue(void)
|
||
{
|
||
|
||
DLQNo=ATBH_DLQNo;
|
||
|
||
float ATBH_BaoHuCTSet; //T线保护绕组CT变比,4字节
|
||
float ATBH_ChaDongCTSet; //T线差动绕组CT变比,4字节
|
||
float ATBH_PTSet; //PT变比,4字节
|
||
|
||
|
||
ATBH_BaoHuCTSet = ChannelValue[CH_ATBH_BH_I].BianBi;
|
||
ATBH_ChaDongCTSet = ChannelValue[CH_ATBH_CD_IT].BianBi;
|
||
ATBH_PTSet = ChannelValue[CH_ATBH_UT].BianBi;
|
||
|
||
#ifdef ZERO_DEADLINE_CONPENSATION
|
||
//if(ATBH_SDISet.Time<=3) ATBH_SDISet.Time = 3;
|
||
//if(ATBH_JDISet.Time<=3) ATBH_JDISet.Time = 3;
|
||
if(ATBH_SYSet.Time<=3) ATBH_SYSet.Time = 3;
|
||
if(ATBH_FI1Set.Time1<=3) ATBH_FI1Set.Time1 = 3;
|
||
if(ATBH_FI1Set.Time2<=3) ATBH_FI1Set.Time2 = 3;
|
||
if(ATBH_FI1Set.Time3<=3) ATBH_FI1Set.Time3 = 3;
|
||
//if(ATBH_FI2Set.Time1<=3) ATBH_FI2Set.Time1 = 3;
|
||
//if(ATBH_FI2Set.Time2<=3) ATBH_FI2Set.Time2 = 3;
|
||
//if(ATBH_FI2Set.Time3<=3) ATBH_FI2Set.Time3 = 3;
|
||
#endif
|
||
|
||
//判断本AT处于投入态的遥信号
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
ATBH_rmtsignal_run = ATBH_YAOXIN_QF;
|
||
}
|
||
else
|
||
{
|
||
ATBH_rmtsignal_run = ATBH_YAOXIN_1QS;
|
||
}
|
||
|
||
|
||
if(SetValueMode == DisplayMode) return; //整定方式与显示方式相同,结束
|
||
|
||
if(DisplayMode == SETVALUE_MODE_1)
|
||
{
|
||
//显示方式为1次值,而整定方式为2次值,需转换为1次值
|
||
ATBH_CDSDSet = ATBH_CDSDSet*ATBH_ChaDongCTSet; //差动速断,4字节
|
||
ATBH_CDSet=ATBH_CDSet*ATBH_ChaDongCTSet; //比率差动,4字节
|
||
ATBH_ZD1Set=ATBH_ZD1Set*ATBH_ChaDongCTSet; //制动1电流整定值,4字节
|
||
ATBH_ZD2Set=ATBH_ZD2Set*ATBH_ChaDongCTSet; //制动2电流整定值,4字节
|
||
//ATBH_CLYXSet = ATBH_CLYXSet * ATBH_ChaDongCTSet;
|
||
//ATBH_SDISet.SetValue=ATBH_SDISet.SetValue*ATBH_BaoHuCTSet; //电流速断,8字节
|
||
//ATBH_ISet.SetValue=ATBH_ISet.SetValue*ATBH_BaoHuCTSet; //过电流,8字节
|
||
//ATBH_JDISet.SetValue=ATBH_JDISet.SetValue*ATBH_IJDCTSet; //碰壳保护,8字节
|
||
ATBH_SYSet.SetValue=ATBH_SYSet.SetValue*ATBH_PTSet/1000; //失压,8字节 ,(1次单位为kV)
|
||
ATBH_PTDXSet = ATBH_PTDXSet * ATBH_PTSet/1000;
|
||
ATBH_JYYSet.SetValue = ATBH_JYYSet.SetValue * ATBH_PTSet/1000;
|
||
//ATBH_DYUSet = ATBH_DYUSet*ATBH_PTSet/1000;
|
||
//过负荷Ⅰ段,28字节
|
||
ATBH_FI1Set.SetValue1=ATBH_FI1Set.SetValue1*ATBH_BaoHuCTSet;
|
||
ATBH_FI1Set.SetValue2=ATBH_FI1Set.SetValue2*ATBH_BaoHuCTSet;
|
||
ATBH_FI1Set.SetValue3=ATBH_FI1Set.SetValue3*ATBH_BaoHuCTSet;
|
||
//过负荷Ⅱ段,28字节
|
||
//ATBH_FI2Set.SetValue1=ATBH_FI2Set.SetValue1*ATBH_BaoHuCTSet;
|
||
//ATBH_FI2Set.SetValue2=ATBH_FI2Set.SetValue2*ATBH_BaoHuCTSet;
|
||
//ATBH_FI2Set.SetValue3=ATBH_FI2Set.SetValue3*ATBH_BaoHuCTSet;
|
||
}
|
||
|
||
}
|
||
|
||
void ReadUserSetValue(unsigned char *pAddress)
|
||
{
|
||
//功能说明:从缓冲区中读用户整定参数
|
||
tagUserSetting_atbh usersetting;
|
||
int offset,number;
|
||
|
||
memcpy(&usersetting,pAddress,sizeof(usersetting));
|
||
|
||
//额定值
|
||
ATBH_CTRated1 = usersetting.rated_setting.ct_rated1;
|
||
ATBH_CTRated2 = usersetting.rated_setting.ct_rated2;
|
||
//at接入方式
|
||
ATBH_ATMode = usersetting.atmode_setting;
|
||
//差动速断
|
||
ATBH_CDSDSet = usersetting.diff_fasttrip_I_setting;
|
||
//ATBH_CDSDSet = 0.02;
|
||
//比率差动
|
||
ATBH_CDSet = usersetting.diff_ratio_Setting.I;
|
||
ATBH_ZD1Set = usersetting.diff_ratio_Setting.I_rest1;
|
||
ATBH_ZD2Set = usersetting.diff_ratio_Setting.I_rest2;
|
||
ATBH_ZDXS1Set = usersetting.diff_ratio_Setting.slope1;
|
||
ATBH_ZDXS2Set = usersetting.diff_ratio_Setting.slope2;
|
||
//二次谐波闭锁
|
||
ATBH_XieBo_2 = usersetting.IH2;
|
||
#ifdef IH_PERCENT_UNIT
|
||
ATBH_XieBo_2 *= PERCENT_UNIT_COEFFI;
|
||
#endif
|
||
//差流越限告警
|
||
ATBH_CLYXSet = usersetting.diff_overflow_coeffi; // * ATBH_CDSet;
|
||
//失压
|
||
ATBH_UModeSet = usersetting.vabsent_setting.mode;
|
||
ATBH_SYSet.SetValue = usersetting.vabsent_setting.U;
|
||
ATBH_SYSet.Time = usersetting.vabsent_setting.t * S_TO_MS_COEFFI;
|
||
//过负荷
|
||
ATBH_FI1Set.IP = DEFINITE_TIME;
|
||
ATBH_FI1Set.SetValue1 = usersetting.idmt_setting.I;
|
||
ATBH_FI1Set.Time1 = usersetting.idmt_setting.t * S_TO_MS_COEFFI;
|
||
ATBH_FI1Set.SetValue2 = ATBH_FI1Set.SetValue1;
|
||
ATBH_FI1Set.Time2 = ATBH_FI1Set.Time1;
|
||
ATBH_FI1Set.SetValue3 = ATBH_FI1Set.SetValue1;
|
||
ATBH_FI1Set.Time3 = ATBH_FI1Set.Time1;
|
||
//重合闸
|
||
ATBH_CHZ_ChongDianTime = usersetting.recls_setting.t_reset * S_TO_MS_COEFFI; //重合闸充电时间
|
||
ATBH_CHZ_Time = usersetting.recls_setting.t * S_TO_MS_COEFFI; //重合闸延时
|
||
//重合闸检有压
|
||
ATBH_JYYSet.SetValue = usersetting.recls_setting.u;
|
||
ATBH_JYYSet.Time = 100;
|
||
//PT断线
|
||
ATBH_PTDXSet = usersetting.vts_u_setting;
|
||
|
||
#ifdef TEMPERATURE_ENABLE
|
||
ATBH_WD1Set.SetValue = usersetting.tmp_alarm_setting.T1;
|
||
ATBH_WD1Set.Time = 1000;
|
||
ATBH_WD2Set.SetValue = usersetting.tmp_alarm_setting.T2;
|
||
ATBH_WD2Set.Time = 1000;
|
||
#endif
|
||
|
||
//保护压板
|
||
//差动速断
|
||
ATBH_CDSDTouRu = usersetting.ctrlword_setting.diff_fasttrip;
|
||
//比率差动
|
||
ATBH_CDTouRu = usersetting.ctrlword_setting.diff_ratio;
|
||
//失压
|
||
ATBH_SYTouRu = usersetting.ctrlword_setting.vabsent;
|
||
//过负荷
|
||
ATBH_FI1TouRu = usersetting.ctrlword_setting.idmt;
|
||
|
||
//以下为默认值
|
||
SetValueMode = SETVALUE_MODE_2; //按二次整定
|
||
//ATBH_LS = LS_TC;
|
||
ATBH_LianJieMode = D_BREAKER_CONNECT;
|
||
|
||
//默认控制字
|
||
//ATBH_SDITouRu = BH_STOP;//电流速断保护压板,4字节
|
||
//ATBH_ITouRu = BH_STOP; //过电流保护压板,4字节
|
||
//ATBH_JDITouRu = BH_STOP;//碰壳保护压板,4字节
|
||
//ATBH_FI2TouRu = BH_STOP;//过负荷Ⅰ段压板,4字节
|
||
//ATBH_XieBoI2TouRu = BH_STOP; //过电流二次谐波闭锁压板,4字节
|
||
//ATBH_XieBoSumTouRu=BH_STOP; //综合谐波抑制压板,4字节
|
||
//ATBH_DYTouRu = BH_STOP; //低压启动元件压板,4字节
|
||
ATBH_XieBoCDI2TouRu = ATBH_CDTouRu; //差动二次谐波闭锁压板,4字节
|
||
|
||
//PT断线压板
|
||
if(UMODE_TF == ATBH_UModeSet)
|
||
{
|
||
ATBH_PTDXTouRu = BH_RUN;
|
||
}
|
||
else
|
||
{
|
||
ATBH_PTDXTouRu = BH_STOP;
|
||
}
|
||
|
||
//控制字遥信初始化
|
||
offset = OFFSETOF(tagUserSetting_atbh,ctrlword_setting);
|
||
number = sizeof(usersetting.ctrlword_setting) / 4;
|
||
ctrlwordinit(&usersetting.ctrlword_setting, offset,number,ATBH_YAOXIN_CTRLWD_START);
|
||
|
||
}
|
||
|
||
int checkurelatedtimeset(int channel)
|
||
{
|
||
if(CH_ATBH_UT != channel && CH_ATBH_UF != channel)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
if(BH_RUN == ATBH_SYYJ.TouRuIP && ATBH_SYYJ.SetTime < 20)
|
||
{
|
||
return 1;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
void GetSoftStripSetting()
|
||
{
|
||
tagSoftStripSetting_atbh SoftStripSetting;
|
||
int num;
|
||
|
||
num = sizeof(SoftStripSetting) / sizeof(int);
|
||
//读软压板定值
|
||
ReadSoftStripValueFromFile();
|
||
//
|
||
ReadSoftStripSetting(SetValueBuffer,&SoftStripSetting, ATBH_RMTSIGNAL_SOFTSTRAP_START, num);
|
||
|
||
//检修
|
||
Check = SoftStripSetting.check;
|
||
|
||
//显示方式
|
||
if(BH_STOP == SoftStripSetting.secddisplay)
|
||
{
|
||
DisplayMode = SETVALUE_MODE_1;
|
||
}
|
||
else
|
||
{
|
||
DisplayMode = SETVALUE_MODE_2;
|
||
}
|
||
|
||
//重合闸软压板
|
||
ATBH_SoftStrap_Reclse = SoftStripSetting.reclse;
|
||
//进线自投软压板
|
||
ATBH_SoftStrap_AtSwitch = SoftStripSetting.atswitch;
|
||
//联锁
|
||
#ifdef DEVICE_TYPE_DIGITAL
|
||
if(BH_RUN == SoftStripSetting.interlock)
|
||
{
|
||
ATBH_LS = LS_TR;
|
||
}
|
||
else
|
||
{
|
||
ATBH_LS = LS_TC;
|
||
}
|
||
#else
|
||
ATBH_LS = LS_TC;
|
||
#endif
|
||
}
|
||
|
||
void atbh_breaker_err_param_init()
|
||
{
|
||
int k,i;
|
||
|
||
i = 0;
|
||
ATBH_Breaker_err_param[ATBH_BREAKER_1].value[i++].channel = CH_ATBH_BH_I;
|
||
ATBH_Breaker_err_param[ATBH_BREAKER_1].value[i++].channel = CH_ATBH_BH_IF;
|
||
ATBH_Breaker_err_param[ATBH_BREAKER_1].number = i;
|
||
|
||
i = 0;
|
||
ATBH_Breaker_err_param[ATBH_BREAKER_2].value[i++].channel = CH_ATBH_CD_IT;
|
||
ATBH_Breaker_err_param[ATBH_BREAKER_2].value[i++].channel = CH_ATBH_CD_IF;
|
||
ATBH_Breaker_err_param[ATBH_BREAKER_2].number = i;
|
||
|
||
|
||
for(k = 0; k < ATBH_BREAKER_NUMBER; k++)
|
||
{
|
||
for(i = 0; i < ATBH_Breaker_err_param[k].number; i++)
|
||
{
|
||
if(SETVALUE_MODE_1 == ChannelValue[ATBH_Breaker_err_param[k].value[i].channel].YouXiaoZhi[JiBo].Analog.Mode)
|
||
{
|
||
ATBH_Breaker_err_param[k].value[i].set = BREAKER_ERR_I_COEFFI * ChannelValue[ATBH_Breaker_err_param[k].value[i].channel].RatioValue1;
|
||
}
|
||
else
|
||
{
|
||
ATBH_Breaker_err_param[k].value[i].set = BREAKER_ERR_I_COEFFI * ChannelValue[ATBH_Breaker_err_param[k].value[i].channel].RatioValue2;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/***************************************************
|
||
* void Reset_Init(void)
|
||
* 描述: 初始化相关变量
|
||
****************************************************/
|
||
void Reset_Init(void)
|
||
{
|
||
unsigned int CurrentSetNumber,i;
|
||
Init_IP=TEST_CLOSE;
|
||
//BaoHuQiDongIP = 0;
|
||
/**************InitSample *****************/
|
||
//清除负荷录波相关标志
|
||
LuBoValue.Length=0; //负荷录波长度(采样点数)
|
||
LuBoValue.Count=0; //负荷录波计数器置0
|
||
LuBoValue.LoadCount=0;
|
||
LuBoValue.LB_IP=LB_LOAD_WAVE_CLOSE; //负荷录波标志
|
||
FaultLuBoValue.Length=0; //故障录波长度(采样点数)
|
||
FaultLuBoValue.Count=0; //故障负荷录波计数器置0
|
||
FaultLuBoValue.LoadCount=0;
|
||
FaultLuBoValue.LB_IP=LB_FAULT_WAVE_CLOSE; //故障录波标志
|
||
pBlockEnable = &ATBH_LS;
|
||
// InitSample(); //初始化模拟量通道相关变量
|
||
CurrentSetNumber=GetSetNumber(NULL); //取当前定值区号
|
||
|
||
#if 1
|
||
GetSoftStripSetting();
|
||
if(SUCCESS==GetSysSetting()) sysSV_RoutineSCIP=0;//取系统整定参数
|
||
else sysSV_RoutineSCIP=1;
|
||
if(SUCCESS==GetUserSetting(CurrentSetNumber)) usrSV_RoutineSCIP=0;//取当前用户整定参数
|
||
else usrSV_RoutineSCIP = 1;
|
||
|
||
#endif
|
||
DoubleYaoXinDelayTimeInit();
|
||
InitAnalogChannel(); //初始化傅里叶变换缓冲区
|
||
InitProtectItem(); //初始化保护元件
|
||
InitAnalogChannel(); //初始化傅里叶变换缓冲区
|
||
//AninChannalCoeffInit(); //初始化模拟量通道系数luoyang add
|
||
InitOutStatus(); //初始化开出、传动试验及遥控
|
||
InitRemoteObject(); //初始化遥控对象
|
||
InitSoftStrapCtrlObject(); //初始化软压板对象
|
||
InitData();
|
||
atbh_breaker_err_param_init();
|
||
digit_Anin_Channal_Coeff_init(); //通道系数初始化
|
||
AnalogRmsParamInit(&ZcpSet); //测量值计算参数初始化
|
||
//InitAnLedObject();
|
||
InitBlock();
|
||
atbh_itemClsDwnManageInit();
|
||
itemClsDwnManageInitV2();
|
||
//FourierCounter=0;
|
||
|
||
Init_IP=TEST_START; //设置初始化完成标志
|
||
|
||
}
|
||
|
||
/***************************************************************************
|
||
* unsigned int ScaleAnalogChannel(unsigned char Number,float Parameter)
|
||
* 描述: 刻度校正
|
||
* 历史:
|
||
*
|
||
* luoyang modi
|
||
***************************************************************************/
|
||
unsigned int ScaleAnalogChannel(unsigned char Number,float Parameter)
|
||
{
|
||
unsigned char ChNo;
|
||
float *Address,TempValue,tempParameter;
|
||
float I1,T1,Itemp;
|
||
float I2 = 1.0;
|
||
float T2 = 1.0;
|
||
float K = 0.1;
|
||
unsigned int DestAdd,Len,i,Sum;
|
||
union {
|
||
unsigned char Value1[4];
|
||
// unsigned int Value2;
|
||
float Value2;
|
||
} SetValue;
|
||
float FloatValue = 0;
|
||
|
||
|
||
if(Number>=KDXZValue.Number) return FAIL; //通道号错误,返回
|
||
Address=KDXZValue.Table[Number].SetValueAdd; //电压微调系数地址
|
||
|
||
DestAdd=Number*4;
|
||
|
||
switch(Number){
|
||
//#ifdef DEVICE_TYPE_CONVENTIONAL
|
||
#ifdef 0
|
||
case ATBH_WD1: //温度1校正 luoyang modi
|
||
//20150416 luoyang modi 温度采样点取40点平均值
|
||
//Itemp=(float)ChannelValue[CH_ATBH_WD1].SampleValue_Digit[ChannelValue[CH_ATBH_WD1].FSCount];
|
||
Itemp = SmpValueSet[CH_ATBH_WD1].averageValue;
|
||
if(fabs(ATBH_WD1ISet-Itemp)<500) return FAIL;
|
||
T1=ATBH_WD1TSet;
|
||
I1=ATBH_WD1ISet;
|
||
T2=Parameter;
|
||
I2=Itemp;
|
||
K=(T2-T1)/(I2-I1);
|
||
break;
|
||
case ATBH_WD2: //温度2校正 luoyang modi
|
||
//20150416 luoyang modi 温度采样点取40点平均值
|
||
//Itemp=(float)ChannelValue[CH_ATBH_WD2].SampleValue_Digit[ChannelValue[CH_ATBH_WD1].FSCount];
|
||
Itemp = SmpValueSet[CH_ATBH_WD2].averageValue;
|
||
if(fabs(ATBH_WD2ISet - Itemp)<500) return FAIL;
|
||
DestAdd+=8;
|
||
T1=ATBH_WD2TSet;
|
||
I1=ATBH_WD2ISet;
|
||
T2=Parameter;
|
||
I2=Itemp;
|
||
K=(T2-T1)/(I2-I1);
|
||
break;
|
||
#endif
|
||
default: //电流、电压校正
|
||
ChNo=KDXZValue.Table[Number].ChannelNo; //模拟量通道号
|
||
tempParameter=UIScaleCheck(Parameter,ChNo); // luoyang modi
|
||
if(tempParameter==0) return FAIL;//参数超范围
|
||
TempValue=Parameter/tempParameter;
|
||
if((TempValue<-5)||(TempValue>5)) return FAIL;//参数超范围
|
||
FloatValue=(*((float *)Address))*TempValue;
|
||
break;
|
||
} //endcase
|
||
|
||
//修改系统参数中的值
|
||
|
||
//SetValue.Value2=(unsigned int)(FloatValue*1000); //将浮点数转换为整数
|
||
if(ReadSysSetValueFromFile(NULL,&Len,NULL)!=SUCCESS) return FAIL;
|
||
//读系统整定参数成功,修改系统参数
|
||
|
||
//luoyang modi 更改为小端模式
|
||
//if((Number==ATBH_WD1)||(Number==ATBH_WD2))
|
||
//{
|
||
//温度
|
||
// SetValue.Value2=T2; //将浮点数转换为整数
|
||
// for(i=0;i<4;i++) SetValueBuffer[DestAdd+i]=SetValue.Value1[i]; DestAdd+=4;
|
||
// SetValue.Value2=I2; //将浮点数转换为整数
|
||
// for(i=0;i<4;i++) SetValueBuffer[DestAdd+i]=SetValue.Value1[i]; DestAdd+=4;
|
||
// SetValue.Value2=K; //将浮点数转换为整数
|
||
// for(i=0;i<4;i++) SetValueBuffer[DestAdd+i]=SetValue.Value1[i]; DestAdd+=4;
|
||
//}
|
||
//else
|
||
//{
|
||
//电量
|
||
SetValue.Value2=FloatValue; //将浮点数转换为整数
|
||
for(i=0;i<4;i++) SetValueBuffer[DestAdd+i]=SetValue.Value1[i];//大小端翻转
|
||
//}
|
||
|
||
|
||
//生成校验码
|
||
Sum=0;
|
||
for(i=0;i<Len;i++) Sum+=SetValueBuffer[i];
|
||
|
||
//写系统整定参数
|
||
if(WriteSysSetValueToFile(SetValueBuffer,Len,Sum)!=SUCCESS) return FAIL;
|
||
|
||
Reset_Init(); //初始化系统
|
||
|
||
return SUCCESS;
|
||
}
|
||
|
||
void InitRemoteObject(void)
|
||
{
|
||
|
||
int ykObjectBegin, ykObjectEnd, yxBegin;
|
||
int i,j;
|
||
|
||
//功能说明:初始化遥控对象
|
||
|
||
RemoteObject.Number = ATBH_RMTCTRL_NUMBER; //遥控对象个数
|
||
//复归
|
||
RemoteObject.Object[ATBH_FG].Type=FG_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_FG].Name=0; //对象名,无效
|
||
RemoteObject.Object[ATBH_FG].YaoXinNo=0; //对应的遥信编号,无
|
||
|
||
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
RemoteObject.Object[ATBH_1QS_DD].Type = ISOLATOR_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_2QS_DD].Type = ISOLATOR_TYPE; //对象类型
|
||
}
|
||
else
|
||
{
|
||
RemoteObject.Object[ATBH_1QS_DD].Type = BREAKER_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_2QS_DD].Type = BREAKER_TYPE; //对象类型
|
||
}
|
||
//断路器
|
||
RemoteObject.Object[ATBH_QF].Name=ATBH_DLQNo; //对象名
|
||
RemoteObject.Object[ATBH_QF].Type = BREAKER_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_QF].Out_On_No=ATBH_QF_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_QF].Out_Off_No=ATBH_QF_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_QF].YaoXinNo=ATBH_YAOXIN_QF; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_QF].SoeCodeStart = ATBH_YK_HZ_QF_SUCCESS;
|
||
//隔开1
|
||
RemoteObject.Object[ATBH_1QS].Name=0; //对象名
|
||
RemoteObject.Object[ATBH_1QS].Type = ISOLATOR_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_1QS].Out_On_No = ATBH_1QS_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_1QS].Out_Off_No = ATBH_1QS_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_1QS].YaoXinNo = ATBH_YAOXIN_1QS; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_1QS].SoeCodeStart = ATBH_YK_HZ_1QS_SUCCESS;
|
||
|
||
//隔开1地刀
|
||
RemoteObject.Object[ATBH_1QS_DD].Name=0; //对象名
|
||
RemoteObject.Object[ATBH_1QS_DD].Out_On_No=ATBH_1QS_DD_1QF_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_1QS_DD].Out_Off_No=ATBH_1QS_DD_1QF_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_1QS_DD].YaoXinNo=ATBH_YAOXIN_1QSDD_1QF; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_1QS_DD].SoeCodeStart=ATBH_YK_HZ_1QSDD_SUCCESS; //对应的遥信编号
|
||
|
||
//隔开2
|
||
RemoteObject.Object[ATBH_2QS].Name=0; //对象名
|
||
RemoteObject.Object[ATBH_2QS].Type = ISOLATOR_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_2QS].Out_On_No=ATBH_2QS_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_2QS].Out_Off_No=ATBH_2QS_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_2QS].YaoXinNo=ATBH_YAOXIN_2QS; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_2QS].SoeCodeStart=ATBH_YK_HZ_2QS_SUCCESS; //对应的遥信编号
|
||
|
||
//隔开2地刀
|
||
RemoteObject.Object[ATBH_2QS_DD].Name=0;
|
||
//RemoteObject.Object[ATBH_2QS_DD].Type = ISOLATOR_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_2QS_DD].Out_On_No=ATBH_2QS_DD_2QF_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_2QS_DD].Out_Off_No=ATBH_2QS_DD_2QF_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_2QS_DD].YaoXinNo=ATBH_YAOXIN_2QSDD_2QF; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_2QS_DD].SoeCodeStart=ATBH_YK_HZ_2QSDD_SUCCESS; //对应的遥信编号
|
||
|
||
#ifdef DEVICE_TYPE_DIGITAL
|
||
//隔开3
|
||
RemoteObject.Object[ATBH_3QS].Name=0;
|
||
RemoteObject.Object[ATBH_3QS].Type = ISOLATOR_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_3QS].Out_On_No=ATBH_3QS_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_3QS].Out_Off_No=ATBH_3QS_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_3QS].YaoXinNo=ATBH_YAOXIN_3QS; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_3QS].SoeCodeStart=ATBH_YK_HZ_3QS_SUCCESS; //对应的遥信编号
|
||
#endif
|
||
|
||
//检修软压板
|
||
RemoteObject.Object[ATBH_RMTCTRL_CHEK].Type = SOFT_STRIP_TYPE;
|
||
RemoteObject.Object[ATBH_RMTCTRL_CHEK].Out_On_No = ATBH_SOFTSTRAP_OBJECT_CHECK; //
|
||
//二次值显示软压板
|
||
RemoteObject.Object[ATBH_RMTCTRL_SECDDISPLAY].Type = SOFT_STRIP_TYPE;
|
||
RemoteObject.Object[ATBH_RMTCTRL_SECDDISPLAY].Out_On_No = ATBH_SOFTSTRAP_OBJECT_SECDDISPLAY; //
|
||
//重合闸软压板
|
||
RemoteObject.Object[ATBH_RMTCTRL_RECLS].Type = SOFT_STRIP_TYPE;
|
||
RemoteObject.Object[ATBH_RMTCTRL_RECLS].Out_On_No = ATBH_SOFTSTRAP_OBJECT_RECLS; //
|
||
//AT自投软压板
|
||
RemoteObject.Object[ATBH_RMTCTRL_ATSWITCH].Type = SOFT_STRIP_TYPE;
|
||
RemoteObject.Object[ATBH_RMTCTRL_ATSWITCH].Out_On_No = ATBH_SOFTSTRAP_OBJECT_ATSWITCH; //
|
||
|
||
#ifdef DEVICE_TYPE_DIGITAL
|
||
//联锁软压板
|
||
RemoteObject.Object[ATBH_RMTCTRL_INTERBLOCK].Type = SOFT_STRIP_TYPE;
|
||
RemoteObject.Object[ATBH_RMTCTRL_INTERBLOCK].Out_On_No = ATBH_SOFTSTRAP_OBJECT_INTERLOCK; //
|
||
#endif
|
||
//控制字遥控初始化
|
||
ctrlwordrmtctrlinit(ATBH_CTRLWORD_STRAT,ATBH_CTRLWORD_END,ATBH_YAOXIN_CTRLWD_START,ATBH_CTRLSWORD_SOE_START);
|
||
switchctrl_oper_param_init(QFDelayTime,QSDelayTime);
|
||
|
||
//自投断路器
|
||
RemoteObject.Object[ATBH_ZT_QF].Name=ATBH_DLQNo; //对象名
|
||
RemoteObject.Object[ATBH_ZT_QF].Type = BREAKER_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_ZT_QF].Out_On_No=ATBH_HCJ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_ZT_QF].Out_Off_No=ATBH_BCJQ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_ZT_QF].YaoXinNo=ATBH_YAOXIN_QF; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_ZT_QF].SoeCodeStart = ATBH_YK_HZ_QF_SUCCESS;
|
||
|
||
|
||
//自投隔开
|
||
RemoteObject.Object[ATBH_ZT_QS].Name=0; //对象名
|
||
RemoteObject.Object[ATBH_ZT_QS].Type = ISOLATOR_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_ZT_QS].Out_On_No=ATBH_1QS_BHHZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_ZT_QS].Out_Off_No=ATBH_1QS_BHTZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_ZT_QS].YaoXinNo=ATBH_YAOXIN_1QS; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_ZT_QS].SoeCodeStart = ATBH_YK_HZ_1QS_SUCCESS;
|
||
|
||
//自投1QF
|
||
RemoteObject.Object[ATBH_ZT_1QF].Name=ATBH_DLQNo; //对象名
|
||
RemoteObject.Object[ATBH_ZT_1QF].Type = BREAKER_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_ZT_1QF].Out_On_No=ATBH_1QS_DD_1QF_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_ZT_1QF].Out_Off_No=ATBH_1QS_DD_1QF_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_ZT_1QF].YaoXinNo=ATBH_YAOXIN_1QSDD_1QF; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_ZT_1QF].SoeCodeStart = ATBH_YK_HZ_1QF_SUCCESS;
|
||
|
||
//自投2QF
|
||
RemoteObject.Object[ATBH_ZT_2QF].Name=ATBH_DLQNo; //对象名
|
||
RemoteObject.Object[ATBH_ZT_2QF].Type = BREAKER_TYPE; //对象类型
|
||
RemoteObject.Object[ATBH_ZT_2QF].Out_On_No=ATBH_2QS_DD_2QF_HZ_KC; //对象合开出通道号
|
||
RemoteObject.Object[ATBH_ZT_2QF].Out_Off_No=ATBH_2QS_DD_2QF_TZ_KC; //对象分开出通道号
|
||
RemoteObject.Object[ATBH_ZT_2QF].YaoXinNo=ATBH_YAOXIN_2QSDD_2QF; //对应的遥信编号
|
||
RemoteObject.Object[ATBH_ZT_2QF].SoeCodeStart = ATBH_YK_HZ_2QF_SUCCESS;
|
||
}
|
||
//初始化软压板控制结构
|
||
void InitSoftStrapCtrlObject(void)
|
||
{
|
||
int i,number;
|
||
number = ATBH_SOFTSTRAP_OBJECT_NUMBER;
|
||
|
||
for(i = 0; i < number; i++)
|
||
{
|
||
SoftStrapObject[i].no = i;
|
||
SoftStrapObject[i].opersoecode_rm = ATBH_SOFTSTRAP_SOE_START_RM + i * 4;
|
||
SoftStrapObject[i].opersoecode_lc = ATBH_SOFTSTRAP_SOE_START_LC + i * 4;
|
||
SoftStrapObject[i].rmtsignalno = ATBH_RMTSIGNAL_SOFTSTRAP_START + i;
|
||
}
|
||
//
|
||
SoftStrapCtrlObject.YKStatus = TEST_CLOSE;
|
||
}
|
||
|
||
/****************************************************
|
||
* void yaoXinSetInitial()
|
||
* 描述:程序内部固定硬遥信配置
|
||
* 历史:
|
||
*
|
||
****************************************************/
|
||
void yaoXinSetInitial()
|
||
{
|
||
int i = 0;
|
||
|
||
//断路器位置
|
||
YaoXinSet[i].IP=DOUBLE_POINT;
|
||
YaoXinSet[i].rmtsignalno = ATBH_YAOXIN_QF;
|
||
YaoXinSet[i].HWKaiRuChannelNo=ATBH_QF_HW_KR;
|
||
YaoXinSet[i].FWKaiRuChannelNo=ATBH_QF_FW_KR;
|
||
YaoXinSet[i].HWKcChannelNo=ATBH_QF_HWD_KC;
|
||
YaoXinSet[i].FWKcChannelNo=ATBH_QF_FWD_KC;
|
||
YaoXinSet[i].pDelayTime=&ATBH_OperationTime;
|
||
YaoXinSet[i].Timer=0;
|
||
i++;
|
||
//隔开1位置
|
||
YaoXinSet[i].IP=DOUBLE_POINT;
|
||
YaoXinSet[i].rmtsignalno = ATBH_YAOXIN_1QS;
|
||
YaoXinSet[i].HWKaiRuChannelNo=ATBH_QS1_HW_KR;
|
||
YaoXinSet[i].FWKaiRuChannelNo=ATBH_QS1_FW_KR;
|
||
YaoXinSet[i].HWKcChannelNo=ATBH_1QS_HWD_KC;
|
||
YaoXinSet[i].FWKcChannelNo=ATBH_1QS_FWD_KC;
|
||
YaoXinSet[i].pDelayTime=&ATBH_QSOperationTime;
|
||
YaoXinSet[i].Timer=0;
|
||
i++;
|
||
//隔开1地刀/1QF
|
||
YaoXinSet[i].IP=DOUBLE_POINT;
|
||
YaoXinSet[i].rmtsignalno = ATBH_YAOXIN_1QSDD_1QF;
|
||
YaoXinSet[i].HWKaiRuChannelNo=ATBH_QS1_DD_QF1_HW_KR;
|
||
YaoXinSet[i].FWKaiRuChannelNo=ATBH_QS1_DD_QF1_FW_KR;
|
||
YaoXinSet[i].HWKcChannelNo=ATBH_1QSDD_1QF_HWD_KC;
|
||
YaoXinSet[i].FWKcChannelNo=ATBH_1QSDD_1QF_FWD_KC;
|
||
YaoXinSet[i].pDelayTime=&ATBH_QSOperationTime;
|
||
YaoXinSet[i].Timer=0;
|
||
i++;
|
||
|
||
//隔开2位置
|
||
YaoXinSet[i].IP=DOUBLE_POINT;
|
||
YaoXinSet[i].rmtsignalno = ATBH_YAOXIN_2QS;
|
||
YaoXinSet[i].HWKaiRuChannelNo=ATBH_QS2_HW_KR;
|
||
YaoXinSet[i].FWKaiRuChannelNo=ATBH_QS2_FW_KR;
|
||
YaoXinSet[i].HWKcChannelNo=ATBH_2QS_HWD_KC;
|
||
YaoXinSet[i].FWKcChannelNo=ATBH_2QS_FWD_KC;
|
||
YaoXinSet[i].pDelayTime=&ATBH_QSOperationTime;
|
||
YaoXinSet[i].Timer=0;
|
||
i++;
|
||
|
||
//隔开2地刀/2QF
|
||
YaoXinSet[i].IP=DOUBLE_POINT;
|
||
YaoXinSet[i].rmtsignalno = ATBH_YAOXIN_2QSDD_2QF;
|
||
YaoXinSet[i].HWKaiRuChannelNo=ATBH_QS2_DD_QF2_HW_KR;
|
||
YaoXinSet[i].FWKaiRuChannelNo=ATBH_QS2_DD_QF2_FW_KR;
|
||
YaoXinSet[i].HWKcChannelNo=ATBH_2QSDD_2QF_HWD_KC;
|
||
YaoXinSet[i].FWKcChannelNo=ATBH_2QSDD_2QF_FWD_KC;
|
||
YaoXinSet[i].pDelayTime=&ATBH_QSOperationTime;
|
||
YaoXinSet[i].Timer=0;
|
||
i++;
|
||
//隔开3位置
|
||
YaoXinSet[i].IP=DOUBLE_POINT;
|
||
YaoXinSet[i].rmtsignalno = ATBH_YAOXIN_3QS;
|
||
YaoXinSet[i].HWKaiRuChannelNo=ATBH_QS3_HW_KR;
|
||
YaoXinSet[i].FWKaiRuChannelNo=ATBH_QS3_FW_KR;
|
||
YaoXinSet[i].HWKcChannelNo=ATBH_3QS_HWD_KC;
|
||
YaoXinSet[i].FWKcChannelNo=ATBH_3QS_FWD_KC;
|
||
YaoXinSet[i].pDelayTime=&ATBH_QSOperationTime;
|
||
YaoXinSet[i].Timer=0;
|
||
|
||
|
||
}
|
||
void DoubleYaoXinDelayTimeInit()
|
||
{
|
||
if(ISOLATOR_TYPE == ATBH_ATMode)
|
||
{
|
||
YaoXinSet[2].pDelayTime = &ATBH_OperationTime;
|
||
YaoXinSet[4].pDelayTime = &ATBH_OperationTime;
|
||
}
|
||
else
|
||
{
|
||
YaoXinSet[2].pDelayTime = &ATBH_QSOperationTime;
|
||
YaoXinSet[4].pDelayTime = &ATBH_QSOperationTime;
|
||
}
|
||
}
|
||
|
||
/****************************************************
|
||
* unsigned int usrSetValueCheckSum(void)
|
||
* 描述:用户定值自检
|
||
****************************************************/
|
||
unsigned int usrSetValueCheckSum(void)
|
||
{
|
||
unsigned int sum;
|
||
|
||
sum=0;
|
||
sum+=varCheckSum((unsigned char *)(&SetNumber),4);
|
||
sum+=varCheckSum((unsigned char *)(&SetValueMode),4);
|
||
sum+=varCheckSum((unsigned char *)(&DisplayMode),4);
|
||
//sum+=varCheckSum((unsigned char *)(&RatedI),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CDSDSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CDSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ZD1Set),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ZD2Set),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ZDXS1Set),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ZDXS2Set),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_SDISet),8);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_ISet),8);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_JDISet),8);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_SYSet),8);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_FI1Set),28);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_FI2Set),28);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CHZ_ChongDianTime),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CHZ_Time),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_JYYSet),8);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_XieBo_2),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CLYXSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_PTDXSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD1Set),8);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD2Set),8);
|
||
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_OperationTime),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_QSOperationTime),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_DLQNo),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_LianJieMode),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ATMode),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_LS),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CDSDTouRu),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CDTouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_SDITouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_ITouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_JDITouRu),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_FI1TouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_FI2TouRu),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_SYTouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_DYTouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_XieBoI2TouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_XieBoSumTouRu),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_XieBoCDI2TouRu),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_DLLDIFFTouRu),4);
|
||
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_CWWD1TouRu),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_CWWD2TouRu),4);
|
||
|
||
return sum;
|
||
}
|
||
|
||
/****************************************************
|
||
* unsigned int sysSetValueCheckSum(void)
|
||
* 描述:系统定值自检
|
||
****************************************************/
|
||
unsigned int sysSetValueCheckSum(void)
|
||
{
|
||
unsigned int sum;
|
||
sum=0;
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_VKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_VFKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_BaoHuIKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ChaDongIKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CeLiangIKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_BaoHuFIKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_ChaDongFIKSet),4);
|
||
sum+=varCheckSum((unsigned char *)(&ATBH_CeLiangFIKSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_IJDKSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD1TSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD1ISet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD1KSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD2TSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD2ISet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&ATBH_WD2KSet),4);
|
||
//sum+=varCheckSum((unsigned char *)(&KaiRuDelaySetting),304);
|
||
sum += varCheckSum((unsigned char *)(&QFDelayTime), 4);
|
||
sum += varCheckSum((unsigned char *)(&QSDelayTime), 4);
|
||
sum += varCheckSum((unsigned char *)(&ATBH_OperationTime), 4);
|
||
sum += varCheckSum((unsigned char *)(&ATBH_QSOperationTime), 4);
|
||
sum += varCheckSum((unsigned char *)(&ATBH_DllDiffSet), 4);
|
||
|
||
return sum;
|
||
}
|
||
|
||
/***************************************************
|
||
* void atbh_itemClsDwnManageInit()
|
||
* 描述: AT保护元件闭锁管理结构变量初始化,传统装置
|
||
* 类型,包含AD定义
|
||
* 历史:
|
||
****************************************************/
|
||
void atbh_itemClsDwnManageInit()
|
||
{
|
||
int i;
|
||
ItemClsDwnManageType *pItemClsDwn;
|
||
|
||
//一、初始化AD芯片对应保护通道的对应关系
|
||
//第一片AD对应6路
|
||
ADChipContainAnaChn[0].num = 5;
|
||
ADChipContainAnaChn[0].AnaChnNo[0] = CH_ATBH_CL_I;//T线测量绕组电流
|
||
ADChipContainAnaChn[0].AnaChnNo[1] = CH_ATBH_CL_IF;//F线测量绕组电流
|
||
ADChipContainAnaChn[0].AnaChnNo[2] = CH_ATBH_CD_IF;//F线差动绕组电流
|
||
ADChipContainAnaChn[0].AnaChnNo[3] = CH_ATBH_CD_IT;//T线差动绕组电流
|
||
ADChipContainAnaChn[0].AnaChnNo[4] = CH_ATBH_BH_IF;//F线保护绕组电流
|
||
ADChipContainAnaChn[1].num = 1;
|
||
ADChipContainAnaChn[1].AnaChnNo[0] = CH_ATBH_BH_I;//T线保护绕组电流
|
||
ADChipContainAnaChn[2].num = 2;
|
||
ADChipContainAnaChn[2].AnaChnNo[0] = CH_ATBH_UF; //F线电压
|
||
ADChipContainAnaChn[2].AnaChnNo[1] = CH_ATBH_UT; //T线电压
|
||
|
||
//二、初始化保护通道与元件的对应关系
|
||
for(i=0;i<ANALOG_CHANNEL_NUMBER_MAX;i++) AnaChnCorrCLDManageChn[i] = 0xff;//先设为无效
|
||
|
||
AnaChnCorrCLDManageChn[CH_ATBH_BH_I] = CLSDWN_CH_ATBH_IT; //T线保护绕组电流
|
||
AnaChnCorrCLDManageChn[CH_ATBH_BH_IF] = CLSDWN_CH_ATBH_IF; //F线保护绕组电流
|
||
AnaChnCorrCLDManageChn[CH_ATBH_UT] = CLSDWN_CH_ATBH_UT; //T线电压
|
||
AnaChnCorrCLDManageChn[CH_ATBH_UF] = CLSDWN_CH_ATBH_UF; //F线电压
|
||
|
||
//隔开接入方式
|
||
if(ISOLATOR_TYPE == ATBH_ATMode)
|
||
{
|
||
AnaChnCorrCLDManageChn[CH_ATBH_CD_IT] = CLSDWN_CH_ATBH_IT_DC; //对侧T线保护电流
|
||
AnaChnCorrCLDManageChn[CH_ATBH_CD_IF] = CLSDWN_CH_ATBH_IF_DC; //对侧F线保护电流
|
||
}
|
||
|
||
//三、初始化闭锁管理结构数组元素与保护元件的对应关系
|
||
ItemClsDwnObjNum = BH_ANACHN_NUM;
|
||
|
||
//1、T线保护绕组电流
|
||
pItemClsDwn = &ItemClsDwnManage[CLSDWN_CH_ATBH_IT];
|
||
pItemClsDwn->ClsDwnBit = Bit0;
|
||
pItemClsDwn->counter1 = 0;
|
||
pItemClsDwn->counter2 = 0;
|
||
pItemClsDwn->ERRBIT = SYS_ERR_BLOCK_PRTC_BIT;
|
||
//独立支持的元件
|
||
pItemClsDwn->selfItemNum = 1;
|
||
pItemClsDwn->selfItem[0] = (unsigned int *)(&ATBH_FIYJ.ClsDwnIP);//过负荷元件
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
pItemClsDwn->selfItemNum += 4;
|
||
pItemClsDwn->selfItem[1] = (unsigned int *)(&ATBH_CDSDYJ.ClsDwnIP);//差动速断
|
||
pItemClsDwn->selfItem[2] = (unsigned int *)(&ATBH_CDYJ.ClsDwnIP);//比率差动
|
||
pItemClsDwn->selfItem[3] = (unsigned int *)(&ATBH_XieBo2CDIYJ.ClsDwnIP);//T线二次谐波闭锁元件(差动)
|
||
pItemClsDwn->selfItem[4] = (unsigned int *)(&ATBH_DLLDIFFAYJ.ClsDwnIP);//增量差动
|
||
//联合支持的元件
|
||
pItemClsDwn->comItemNum = 0;
|
||
}
|
||
else
|
||
{
|
||
//隔开接入方式 联合支持的元件
|
||
pItemClsDwn->comItemNum = 4;
|
||
pItemClsDwn->comItem[0] = (unsigned int *)(&ATBH_CDSDYJ.ClsDwnIP);//差动速断
|
||
pItemClsDwn->comItem[1] = (unsigned int *)(&ATBH_CDYJ.ClsDwnIP);//比率差动
|
||
pItemClsDwn->comItem[2] = (unsigned int *)(&ATBH_XieBo2CDIYJ.ClsDwnIP);//T线二次谐波闭锁元件(差动)
|
||
pItemClsDwn->comItem[3] = (unsigned int *)(&ATBH_DLLDIFFAYJ.ClsDwnIP);//增量差动
|
||
}
|
||
|
||
//2、F线保护绕组电流
|
||
pItemClsDwn = &ItemClsDwnManage[CLSDWN_CH_ATBH_IF];
|
||
pItemClsDwn->ClsDwnBit = Bit1;
|
||
pItemClsDwn->counter1 = 0;
|
||
pItemClsDwn->counter2 = 0;
|
||
pItemClsDwn->ERRBIT = SYS_ERR_BLOCK_PRTC_BIT;;
|
||
//独立支持的元件
|
||
pItemClsDwn->selfItemNum = 0;
|
||
if(BREAKER_TYPE == ATBH_ATMode)
|
||
{
|
||
pItemClsDwn->selfItemNum += 4;
|
||
pItemClsDwn->selfItem[0] = (unsigned int *)(&ATBH_CDSDYJ.ClsDwnIP);//差动速断
|
||
pItemClsDwn->selfItem[1] = (unsigned int *)(&ATBH_CDYJ.ClsDwnIP);//比率差动
|
||
pItemClsDwn->selfItem[2] = (unsigned int *)(&ATBH_XieBo2CDIYJ.ClsDwnIP);//T线二次谐波闭锁元件(差动)
|
||
pItemClsDwn->selfItem[3] = (unsigned int *)(&ATBH_DLLDIFFAYJ.ClsDwnIP);//增量差动
|
||
//联合支持的元件
|
||
pItemClsDwn->comItemNum = 0;
|
||
}
|
||
else
|
||
{
|
||
//隔开接入方式 联合支持的元件
|
||
pItemClsDwn->comItemNum = 4;
|
||
pItemClsDwn->comItem[0] = (unsigned int *)(&ATBH_CDSDYJ.ClsDwnIP);//差动速断
|
||
pItemClsDwn->comItem[1] = (unsigned int *)(&ATBH_CDYJ.ClsDwnIP);//比率差动
|
||
pItemClsDwn->comItem[2] = (unsigned int *)(&ATBH_XieBo2CDIYJ.ClsDwnIP);//T线二次谐波闭锁元件(差动)
|
||
pItemClsDwn->comItem[3] = (unsigned int *)(&ATBH_DLLDIFFAYJ.ClsDwnIP);//增量差动
|
||
}
|
||
|
||
//3、2AT T线保护绕组电流
|
||
pItemClsDwn = &ItemClsDwnManage[CLSDWN_CH_ATBH_IT_DC];
|
||
pItemClsDwn->ClsDwnBit = Bit2;
|
||
pItemClsDwn->counter1 = 0;
|
||
pItemClsDwn->counter2 = 0;
|
||
pItemClsDwn->ERRBIT = SYS_ERR_BLOCK_PRTC_BIT;;
|
||
pItemClsDwn->selfItemNum = 0;
|
||
|
||
//联合支持的元件
|
||
pItemClsDwn->comItemNum = 5;
|
||
pItemClsDwn->comItem[0] = (unsigned int *)(&ATBH_CDSDYJ.ClsDwnIP);//差动速断
|
||
pItemClsDwn->comItem[1] = (unsigned int *)(&ATBH_CDYJ.ClsDwnIP);//比率差动
|
||
pItemClsDwn->comItem[2] = (unsigned int *)(&ATBH_XieBo2CDIYJ.ClsDwnIP);//T线二次谐波闭锁元件(差动)
|
||
pItemClsDwn->comItem[3] = (unsigned int *)(&ATBH_FIYJ.ClsDwnIP);//过负荷元件
|
||
pItemClsDwn->comItem[4] = (unsigned int *)(&ATBH_DLLDIFFAYJ.ClsDwnIP);//增量差动
|
||
|
||
//4、2AT F线保护绕组电流
|
||
pItemClsDwn = &ItemClsDwnManage[CLSDWN_CH_ATBH_IF_DC];
|
||
pItemClsDwn->ClsDwnBit = Bit3;
|
||
pItemClsDwn->counter1 = 0;
|
||
pItemClsDwn->counter2 = 0;
|
||
pItemClsDwn->ERRBIT = SYS_ERR_BLOCK_PRTC_BIT;;
|
||
//独立支持的元件
|
||
pItemClsDwn->selfItemNum = 0;
|
||
//联合支持的元件
|
||
pItemClsDwn->comItemNum = 4;
|
||
pItemClsDwn->comItem[0] = (unsigned int *)(&ATBH_CDSDYJ.ClsDwnIP);//差动速断
|
||
pItemClsDwn->comItem[1] = (unsigned int *)(&ATBH_CDYJ.ClsDwnIP);//比率差动
|
||
pItemClsDwn->comItem[2] = (unsigned int *)(&ATBH_XieBo2CDIYJ.ClsDwnIP);//T线二次谐波闭锁元件(差动)
|
||
pItemClsDwn->comItem[3] = (unsigned int *)(&ATBH_DLLDIFFAYJ.ClsDwnIP);//增量差动
|
||
|
||
|
||
//5、T线电压
|
||
pItemClsDwn = &ItemClsDwnManage[CLSDWN_CH_ATBH_UT];
|
||
pItemClsDwn->ClsDwnBit = Bit4;
|
||
pItemClsDwn->counter1 = 0;
|
||
pItemClsDwn->counter2 = 0;
|
||
pItemClsDwn->ERRBIT = SYS_ERR_BLOCK_PRTC_BIT;
|
||
//独立支持的元件
|
||
pItemClsDwn->selfItemNum = 3;
|
||
pItemClsDwn->selfItem[0] = (unsigned int *)(&ATBH_SYYJ.ClsDwnIP);//失压元件
|
||
pItemClsDwn->selfItem[1] = (unsigned int *)(&ATBH_TPTDXYJ.ClsDwnIP); //Tpt断线
|
||
pItemClsDwn->selfItem[2] = (unsigned int *)(&ATBH_FPTDXYJ.ClsDwnIP); //Fpt断线
|
||
pItemClsDwn->comItemNum = 0;
|
||
|
||
//6、F线电压
|
||
pItemClsDwn = &ItemClsDwnManage[CLSDWN_CH_ATBH_UF];
|
||
pItemClsDwn->ClsDwnBit = Bit5;
|
||
pItemClsDwn->counter1 = 0;
|
||
pItemClsDwn->counter2 = 0;
|
||
pItemClsDwn->ERRBIT = SYS_ERR_BLOCK_PRTC_BIT;;
|
||
//独立支持的元件
|
||
pItemClsDwn->selfItemNum = 3;
|
||
pItemClsDwn->selfItem[0] = (unsigned int *)(&ATBH_SYYJ.ClsDwnIP);//失压元件
|
||
pItemClsDwn->selfItem[1] = (unsigned int *)(&ATBH_TPTDXYJ.ClsDwnIP); //Tpt断线
|
||
pItemClsDwn->selfItem[2] = (unsigned int *)(&ATBH_FPTDXYJ.ClsDwnIP); //Fpt断线
|
||
pItemClsDwn->comItemNum = 0;
|
||
|
||
}
|
||
|
||
#endif
|