|
|
@@ -860,14 +860,15 @@ const TSETTABLE tSwSetTable[] = // min max default
|
|
|
{SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0x501A, FLOAT_R, "过流Ⅱ段时间"},
|
|
|
{SETTYPE_F, SET_A, 0, 100.0, 100.0, 0, 0, GROUP_SET_BHDZ, 0x0000, FLOAT_R, "过流Ⅲ段定值"},
|
|
|
{SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0x0000, FLOAT_R, "过流Ⅲ段时间"},
|
|
|
- {SETTYPE_F, SET_A, 0, 100.0, 100.0, 0, 0, GROUP_SET_BHDZ, 0x501B, FLOAT_R, "零序过流Ⅰ段定值"},
|
|
|
- {SETTYPE_F, SET_S, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0x501C, FLOAT_R, "零序过流Ⅰ段时间"},
|
|
|
- {SETTYPE_F, SET_A, 0, 100.0, 100.0, 0, 0, GROUP_SET_BHDZ, 0x501D, FLOAT_R, "零序过流Ⅱ段定值"},
|
|
|
- {SETTYPE_F, SET_S, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0x501E, FLOAT_R, "零序过流Ⅱ段时间"},
|
|
|
- {SETTYPE_F, SET_A, 0, 100.0, 100.0, 0, 0, GROUP_SET_BHDZ, 0x0000, FLOAT_R, "零序过流Ⅲ段定值"},
|
|
|
- {SETTYPE_F, SET_S, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0x0000, FLOAT_R, "零序过流Ⅲ段时间"},
|
|
|
+ {SETTYPE_F, SET_A, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0x501B, FLOAT_R, "零序过流Ⅰ段定值"},
|
|
|
+ {SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0x501C, FLOAT_R, "零序过流Ⅰ段时间"},
|
|
|
+ {SETTYPE_F, SET_A, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0x501D, FLOAT_R, "零序过流Ⅱ段定值"},
|
|
|
+ {SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0x501E, FLOAT_R, "零序过流Ⅱ段时间"},
|
|
|
+ {SETTYPE_F, SET_A, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0x0000, FLOAT_R, "零序过流Ⅲ段定值"},
|
|
|
+ {SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0x0000, FLOAT_R, "零序过流Ⅲ段时间"},
|
|
|
{SETTYPE_F, SET_U, 0, 100.0, 100.0, 0, 0, GROUP_SET_BHDZ, 0, FLOAT_R, "零序过电压保护定值"},
|
|
|
{SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0, FLOAT_R, "零序过电压保护时间"},
|
|
|
+ {SETTYPE_F, SET_S, 0, 600.0, 600.0, 0, 0, GROUP_SET_BHDZ, 0, FLOAT_R, "加速段保护开放时间"},
|
|
|
{SETTYPE_F, SET_A, 0, 50.0, 50.0, 0, 0, GROUP_SET_BHDZ, 0, FLOAT_R, "后加速过流保护定值"},
|
|
|
{SETTYPE_F, SET_S, 0, 99.0, 99.0, 0, 0, GROUP_SET_BHDZ, 0, FLOAT_R, "后加速过流保护时间"},
|
|
|
{SETTYPE_F, SET_A, 0, 100.0, 100.0, 0, 0, GROUP_SET_BHDZ, 0, FLOAT_R, "后加速零序电流保护定值"},
|
|
|
@@ -901,7 +902,7 @@ const TSETTABLE tSwSetTable[] = // min max default
|
|
|
{SETTYPE_F, SET_S, 0, 199.0, 199.0, 0, 0, GROUP_SET_CHZDZ, 0x0000, FLOAT_R, "三次重合闸时间"},
|
|
|
#endif
|
|
|
#ifdef DISP_CHZOKCHR_2_SW
|
|
|
- {SETTYPE_F, SET_S, 0, 199.0, 199.0, 0, 0, GROUP_SET_CHZDZ, 0x0000, FLOAT_R, "重合充电时间"},
|
|
|
+ {SETTYPE_F, SET_S, 0, 199.0, 199.0, 0, 0, GROUP_SET_CHZDZ, 0x0000, FLOAT_R, "tou多次重合充电时间"},
|
|
|
{SETTYPE_F, SET_S, 0, 199.0, 199.0, 0, 0, GROUP_SET_CHZDZ, 0x0000, FLOAT_R, "重合闸确认时间"},
|
|
|
#endif
|
|
|
{SETTYPE_F, SET_A, 0, 100.0, 100.0, 0, 0, GROUP_SET_CHZDZ, 0x501F, FLOAT_R, "大电流闭锁重合闸定值"},
|
|
|
@@ -2292,8 +2293,6 @@ void check_shmdata_change(void)
|
|
|
static uint8_t suc_freq_track = 0xff;
|
|
|
struct t_shmdata_cvalue t_cvale = {0};
|
|
|
|
|
|
- printf("check_shmdata_change\r\n");
|
|
|
-
|
|
|
if (suc_freq_track != pRunSet->bTT_FREQ)
|
|
|
{
|
|
|
t_cvale.uc_freq_track = pRunSet->bTT_FREQ;
|
|
|
@@ -2472,7 +2471,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
|
|
|
// 瞬压检出
|
|
|
ptSet->bTT_SY_Board = ((WORD)psetbuf[CSTSET_SYBOARD_TT].ff == 1) ? true : false; // 零压闭锁零流
|
|
|
- // ptSet->dT_XCY = GetSetTIME(0.05); //残压检出时间默认50毫秒
|
|
|
+ // ptSet->dT_XCY = GetSetTIME(0.05); //残压检出时间默认50毫秒
|
|
|
#ifdef GD_AREA_ECZD_2020 // 25V/30ms
|
|
|
ptSet->dT_XCY = GetSetTIME(0.02); // 残压检出时间默认20毫秒
|
|
|
#else
|
|
|
@@ -2817,7 +2816,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
|
|
|
|
|
|
poc = &ptSet->tSwSet[sw].toc[BH_GL2]; // 过流2段
|
|
|
- poc->bTz = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
+ poc->bTz = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
poc->bGj = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true);
|
|
|
poc->bDir = (((WORD)psetbuf[SET_GL2_DIR + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
poc->dT = GetSetTIME(psetbuf[SET_GL2_T + sw * SW_SET_NUMBER].ff);
|
|
|
@@ -2825,7 +2824,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
|
|
|
|
|
|
poc = &ptSet->tSwSet[sw].toc[BH_GL3]; // 过流3段
|
|
|
- poc->bTz = (((WORD)psetbuf[SET_GL3_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
+ poc->bTz = (((WORD)psetbuf[SET_GL3_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
poc->bGj = (((WORD)psetbuf[SET_GL3_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true);
|
|
|
poc->bDir = (((WORD)psetbuf[SET_GL3_DIR + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
poc->dT = GetSetTIME(psetbuf[SET_GL3_T + sw * SW_SET_NUMBER].ff);
|
|
|
@@ -2833,7 +2832,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
|
|
|
|
|
|
poc = &ptSet->tSwSet[sw].toc[BH_LX1]; // 零序1段
|
|
|
- poc->bTz = (((WORD)psetbuf[SET_LX1_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
+ poc->bTz = (((WORD)psetbuf[SET_LX1_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
poc->bGj = (((WORD)psetbuf[SET_LX1_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true);
|
|
|
poc->bDir = false;
|
|
|
poc->dT = GetSetTIME(psetbuf[SET_LX1_T + sw * SW_SET_NUMBER].ff);
|
|
|
@@ -2841,7 +2840,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
|
|
|
|
|
|
poc = &ptSet->tSwSet[sw].toc[BH_LX2]; // 零序2段
|
|
|
- poc->bTz = (((WORD)psetbuf[SET_LX2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
+ poc->bTz = (((WORD)psetbuf[SET_LX2_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
poc->bGj = (((WORD)psetbuf[SET_LX2_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true);
|
|
|
poc->bDir = false;
|
|
|
poc->dT = GetSetTIME(psetbuf[SET_LX2_T + sw * SW_SET_NUMBER].ff);
|
|
|
@@ -2849,7 +2848,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
|
|
|
|
|
|
poc = &ptSet->tSwSet[sw].toc[BH_LX3]; // 零序3段
|
|
|
- poc->bTz = (((WORD)psetbuf[SET_LX3_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
+ poc->bTz = (((WORD)psetbuf[SET_LX3_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
poc->bGj = (((WORD)psetbuf[SET_LX3_TT + sw * SW_SET_NUMBER].ff == 0) ? true : false);
|
|
|
poc->bDir = false;
|
|
|
poc->dT = GetSetTIME(psetbuf[SET_LX3_T + sw * SW_SET_NUMBER].ff);
|
|
|
@@ -2872,6 +2871,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
else
|
|
|
poc->dI = GetSetSQR(psetbuf[SET_GL1_I + sw * SW_SET_NUMBER].ff, fKI);
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
|
|
|
+ ptSet->tSwSet[sw].dT_SpeedUp_Open = GetSetTIME(psetbuf[SET_JSOPEN_T + sw * SW_SET_NUMBER].ff);; // 加速段保护开放时间
|
|
|
|
|
|
poc = &ptSet->tSwSet[sw].toc[BH_LXJS]; // 零序加速段
|
|
|
poc->bTz = (((WORD)psetbuf[SET_GLJS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
@@ -2917,6 +2917,15 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
|
|
|
}
|
|
|
|
|
|
+ // 零序过电压投入
|
|
|
+ {
|
|
|
+ ptSet->tSwSet[sw].bTT_3U0Tz = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
+ ptSet->tSwSet[sw].bTT_3U0Gj = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true);
|
|
|
+ ptSet->tSwSet[sw].dBHOverU0 = GetSetSQR(psetbuf[SET_U0_U + sw * SW_SET_NUMBER].ff, fKU[PUB_AC_U01]);
|
|
|
+ ptSet->tSwSet[sw].dBHOverU0_fh = _Mul_Div_U(ptSet->tSwSet[sw].dBHOverU0, 96, 100); // 0.96=0.98*0.98
|
|
|
+ ptSet->tSwSet[sw].dBHTOverU0 = GetSetTIME(psetbuf[SET_U0_T + sw * SW_SET_NUMBER].ff);
|
|
|
+ }
|
|
|
+
|
|
|
// 智能分布式定值
|
|
|
{
|
|
|
GOC_SET *poc = &ptSet->tSwSet[sw].tGocSet;
|
|
|
@@ -2960,8 +2969,8 @@ bool MakeRunSet(bool bFirst)
|
|
|
|
|
|
poc->bTT_ll = (((WORD)psetbuf[SET_GOOSE_LL_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 联络合闸
|
|
|
poc->dTll = GetSetTIME(psetbuf[SET_GOOSET_LL_T + sw * SW_SET_NUMBER].ff); // 联络合闸时间
|
|
|
- // poc->bTT_DIR = (((WORD)psetbuf[SET_GOOSET_DIR_TT+sw*SW_SET_NUMBER ].ff == 1 )?true:false); // 合环运行
|
|
|
- // poc->bTT_mxTfz = (((WORD)psetbuf[SET_GOOSET_MXTFZ_TT+sw*SW_SET_NUMBER ].ff == 1 )?true:false); // 母线故障跳分支
|
|
|
+ // poc->bTT_DIR = (((WORD)psetbuf[SET_GOOSET_DIR_TT+sw*SW_SET_NUMBER ].ff == 1 )?true:false); // 合环运行
|
|
|
+ // poc->bTT_mxTfz = (((WORD)psetbuf[SET_GOOSET_MXTFZ_TT+sw*SW_SET_NUMBER ].ff == 1 )?true:false); // 母线故障跳分支
|
|
|
|
|
|
#else
|
|
|
poc->bTT_gooseFA = (((WORD)psetbuf[SET_GOOSE_FA_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 智能分布式投退
|
|
|
@@ -3034,12 +3043,18 @@ bool MakeRunSet(bool bFirst)
|
|
|
#ifdef DISP_CHZOKCHR_2_SW
|
|
|
ptSet->tSwSet[sw].dT_chz_cd = GetSetTIME(psetbuf[SET_CHZCD_2 + sw * SW_SET_NUMBER].ff);
|
|
|
ptSet->tSwSet[sw].dT_chz_ok = GetSetTIME(psetbuf[SET_CHZ_OK + sw * SW_SET_NUMBER].ff);
|
|
|
-#else
|
|
|
+#else /* DISP_CHZOKCHR_2_SW */
|
|
|
+#ifdef FUNC_CHZ_CHARGE_TIME
|
|
|
ptSet->tSwSet[sw].dT_chz_cd = GetSetTIME(psetbuf[SET_CHZCD + sw * SW_SET_NUMBER].ff); // 重合闸充电时间
|
|
|
-#endif
|
|
|
+#else /* FUNC_CHZ_CHARGE_TIME */
|
|
|
+ ptSet->tSwSet[sw].dT_chz_cd = (bch2 || bch3) ? ptSet->dT_chzcd_2 : T_1s * 15; // 投一次重合闸,充电时间15秒,投二次重合闸,充电180秒
|
|
|
+#endif /* FUNC_CHZ_CHARGE_TIME */
|
|
|
+#endif /* DISP_CHZOKCHR_2_SW */
|
|
|
|
|
|
ptSet->tSwSet[sw].dT_chz_bs = GetSetTIME(psetbuf[SET_CHBS_T + sw * SW_SET_NUMBER].ff);
|
|
|
ptSet->tSwSet[sw].dT_chz_ok = (bch2 || bch3) ? ptSet->tSwSet[sw].dT_chz_ok : T_1s * 15; // 只投一次重合闸的时候,重合闸确认时间强制为15S 2020-7-25
|
|
|
+ dp_info_nt_rt("ptSet->tSwSet[sw].dT_chz_cd = %d", ptSet->tSwSet[sw].dT_chz_cd);
|
|
|
+ dp_info_nt_rt("ptSet->tSwSet[sw].dT_chz_ok = %d", ptSet->tSwSet[sw].dT_chz_ok);
|
|
|
if (bch3)
|
|
|
ptSet->tSwSet[sw].d_chz_times = 3;
|
|
|
else if (bch2)
|
|
|
@@ -3196,7 +3211,7 @@ bool MakeRunSet(bool bFirst)
|
|
|
ptSet->tSwSet[sw].bTT_fa_cybs = ((DWORD)psetbuf[SET_CYBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
|
|
|
ptSet->tSwSet[sw].bTT_fa_xbbs = ((DWORD)psetbuf[SET_FA_XBBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
|
|
|
ptSet->tSwSet[sw].bTT_fa_U0Tz = ((DWORD)psetbuf[SET_U0TZ_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false;
|
|
|
- ptSet->tSwSet[sw].bTT_fa_U0Gj = ((DWORD)psetbuf[SET_U0TZ_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
|
|
|
+ ptSet->tSwSet[sw].bTT_fa_U0Gj = ((DWORD)psetbuf[SET_U0TZ_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true;
|
|
|
ptSet->tSwSet[sw].bTT_fa_ptdx = ((DWORD)psetbuf[SET_FA_PTDX + sw * SW_SET_NUMBER].ff == 1) ? true : false;
|
|
|
ptSet->tSwSet[sw].bTT_hzbs = (((DWORD)psetbuf[SET_HZBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
ptSet->tSwSet[sw].dU_fa_YY = GetSetSQR(psetbuf[SET_FA_YY_U + sw * SW_SET_NUMBER].ff * fUn / 100, fKU[PUB_AC_UAB1]); // 0.4 倍的额定值
|
|
|
@@ -3350,25 +3365,6 @@ bool MakeRunSet(bool bFirst)
|
|
|
poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
|
|
|
}
|
|
|
|
|
|
- // 零序过电压投入
|
|
|
- {
|
|
|
-#if defined GD_AREA_ECZD_2020 // be modified by Jack.Liu on 2020/07/23--14:4:47
|
|
|
-#if defined GD_AREA_ECZD_YUNFU_2021_2021
|
|
|
- ptSet->tSwSet[sw].bTT_3U0Tz = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
- ptSet->tSwSet[sw].bTT_3U0Gj = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
-#else
|
|
|
- ptSet->tSwSet[sw].bTT_3U0Tz = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
- ptSet->tSwSet[sw].bTT_3U0Gj = 0;
|
|
|
-#endif
|
|
|
-#else
|
|
|
- ptSet->tSwSet[sw].bTT_3U0Tz = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
|
|
|
- ptSet->tSwSet[sw].bTT_3U0Gj = (((WORD)psetbuf[SET_3U0_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
|
|
|
-#endif
|
|
|
- ptSet->tSwSet[sw].dBHOverU0 = GetSetSQR(psetbuf[SET_U0_U + sw * SW_SET_NUMBER].ff, fKU[PUB_AC_U01]);
|
|
|
- ptSet->tSwSet[sw].dBHOverU0_fh = _Mul_Div_U(ptSet->tSwSet[sw].dBHOverU0, 96, 100); // 0.96=0.98*0.98
|
|
|
- ptSet->tSwSet[sw].dBHTOverU0 = GetSetTIME(psetbuf[SET_U0_T + sw * SW_SET_NUMBER].ff);
|
|
|
- }
|
|
|
-
|
|
|
#ifdef GD_AREA_ZHONGSHAN_2020 // 中山智能分布式手合故障处理
|
|
|
ptSet->tSwSet[sw].tGocSet.tOc[FAG_GL1] = ptSet->tSwSet[sw].toc[FA_GL]; // 使用相间故障1段定值
|
|
|
ptSet->tSwSet[sw].tGocSet.tOc[FAG_GL2] = ptSet->tSwSet[sw].toc[FA_GL2]; // 使用相间故障2段定值
|