/* ********************************************************************************************************* * 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 #include #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;iBuffer[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;kBuffer[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;jChannelData[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;kChannelData[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;iClsDwnBit = 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