2431 lines
96 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*********************************************************************************************************
* 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;
//参数1T线电压
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_UT.Type; //模拟量类型
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_UT.Mode; //显示模式
//参数2F线电压
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_UF.Type; //模拟量类型
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_UF.Mode; //显示模式
//参数3T线保护绕组
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_IT.Type; //模拟量类型
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_IT.Mode; //显示模式
//参数4F线保护绕组
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)
{
//参数5T线差动绕组
FaultReport->Buffer[i].DataBuffer[m].Type=ATBH_Fault_CDIT.Type; //模拟量类型
FaultReport->Buffer[i].DataBuffer[m++].Mode=ATBH_Fault_CDIT.Mode; //显示模式
//参数6F线差动绕组
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