Răsfoiți Sursa

增加 : led资源;

lch 5 luni în urmă
părinte
comite
612d3908ee

+ 1 - 0
README.md

@@ -50,3 +50,4 @@
 03. 修复 : rt_sockioctl接口强制转换导致指针地址截断进而导致虚拟网卡ip获取失败的问题。
 04. 修复 : rt_get_netcard_id_from_socket函数中ip转换处理问题。
 05. 修改 : 直流数据对接;
+06. 增加 : led资源;

+ 92 - 27
app_public/fuxi_public/fuxi_bsp/source/dido.c

@@ -723,6 +723,98 @@ static int _get_di(int slot, u16 di_num, u32 di, struct timespec ts)
 
     return 0;
 }
+
+#if (0) /* TODO 获取开入量 */
+int dido_di_update(uint32_t _value_new, uint8_t _index, struct timespec *ts)
+{
+    static uint8_t init_flag = 0;
+    uint32_t dt;
+    int i, j, is_on;
+
+    if (init_flag == 0)
+    {
+        init_flag = 1;
+
+        // DI数量未超32个,只用第一个元素就够了
+        g_di[g_di_slot].value[0] = _value_new;
+
+        // 更新逻辑模型中的值
+        for (i = 0; i < DIDO_MAX_DI_PER_SLOT; i++)
+        {
+            is_on = (g_di[g_di_slot].value[0] & (1 << i)) ? 1 : 0;
+            sw_di_set(g_di_st[g_di_slot][i].owner,
+                      g_di_st[g_di_slot][i].type,
+                      is_on ? SW_DI_TYPE_ON : SW_DI_TYPE_OFF);
+
+            // 双点的值也需要重新初始化
+            plc_db_init_value(g_di_slot, i, is_on);
+
+            // 遥信时标
+            g_di[g_di_slot].ts_t[i][g_di[g_di_slot].ts_i[i].n] = 0;
+            g_di[g_di_slot].ts_v[i][g_di[g_di_slot].ts_i[i].n] = is_on;
+            g_di[g_di_slot].ts_i[i].n++;
+        }
+
+        g_di[g_di_slot].bInited = RT_TRUE;
+
+        return 0;
+    }
+
+    if (_value_new == 1)
+        g_di[g_di_slot].value[0] |= _value_new << _index;
+    else
+        g_di[g_di_slot].value[0] &= ~((_value_new ^ 1) << _index);
+
+    // clock_gettime(CLOCK_REALTIME, &ts);
+
+    // 记录遥信变位
+    is_on = (g_di[g_di_slot].value[0] & (1 << _index)) ? 1 : 0;
+    soe_record_yx(_index + (g_di_slot << 8), is_on, ts);
+
+    // 更新逻辑模型中的值
+    sw_di_set(g_di_st[g_di_slot][_index].owner,
+              g_di_st[g_di_slot][_index].type,
+              (is_on) ? SW_DI_TYPE_ON : SW_DI_TYPE_OFF);
+
+    // 更新记录
+    // TODO:原DTU此处更新采样点会关中断更新,但考虑到频繁关中断会影响采样,此处不关中断先观察
+    dt = g_adc_dots_count;
+    g_di[g_di_slot].ts_t[_index][g_di[g_di_slot].ts_i[_index].n] = dt;
+    g_di[g_di_slot].ts_v[_index][g_di[g_di_slot].ts_i[_index].n] = is_on;
+    g_di[g_di_slot].ts_i[_index].n++;
+
+    // rt_kprintf("板卡:%d,di[%d]:%d\r\n",g_di_slot,_index,is_on); //test_use
+}
+
+/**
+ * @brief          Get the shm didata object
+ * @author         lch (lch_work@foxmail.com)
+ * @version        1.0
+ * @date           20251219
+ * @return         * int
+ * @retval         none
+ *
+ * @warning        none
+ * @note           none
+ */
+int get_shm_didata(void)
+{
+    int l_read_ret = 0, l_cnt = 0;
+    struct t_shmdata_di shm_data_di = {0};
+
+    l_read_ret = shm_packet_read_v2(SHM_ADDR_W_DI, sizeof(shm_data_di), (uint8_t *)&shm_data_di, sizeof(shm_data_di));
+
+    while (l_read_ret > 0)
+    {
+        if (++l_cnt > 5)
+            break;
+
+        usleep(300);
+    }
+}
+#endif
+
+
 /*------------------------------ 测试函数 -------------------------------------
 一个实体文件必须带一个本模块的测试函数来进行单元测试,如果的确不方便在本模块中
 进行单元测试,必须在此注明实际的测试位置(例如在哪个实体文件中使用哪个测试函数).
@@ -989,33 +1081,6 @@ bool check_board_kc6_close(u8 slot, u8 index)
     return false;
 }
 
-/**
- * @brief          Get the shm didata object
- * @author         lch (lch_work@foxmail.com)
- * @version        1.0
- * @date           20251219
- * @return         * int
- * @retval         none
- *
- * @warning        none
- * @note           none
- */
-int get_shm_didata(void)
-{
-    int l_read_ret = 0, l_cnt = 0;
-    struct t_shmdata_di shm_data_di = {0};
-
-    l_read_ret = shm_packet_read_v2(SHM_ADDR_W_DI, sizeof(shm_data_di), (uint8_t *)&shm_data_di, sizeof(shm_data_di));
-
-    while (l_read_ret > 0)
-    {
-        if (++l_cnt > 5)
-            break;
-
-        usleep(300);
-    }
-}
-
 #define DIGROUP 4
 #define V3_OUT_NUM 5
 int dido_auto_test_for_v3(char *buf, int num)

+ 7 - 146
dtu/dtu_main_t536/app/FA.c

@@ -377,6 +377,7 @@ static bool  fa_check_all_s_bs(int sw)
 static void  fa_ls_led(int sw, bool bFA_L)
 {
 	TSDHZ_T *pSW = &g_tRelay[sw].tSDHZ;
+#if !defined CPU_FUXI
 	if(!bFA_L)
 	{
 		if (pSW->S_Status == S_XTIME)
@@ -432,6 +433,7 @@ static void  fa_ls_led(int sw, bool bFA_L)
 		//else
 		//	led_set_sw(sw,SW_LED_LOCK, LED_OFF);
 	}
+#endif
 }
 
 
@@ -601,8 +603,10 @@ static void fa_uf_clear(int sw, bool bSW_LL)
 ***************************************************************************/
 static void fa_close_led(int sw)
 {
+#if !defined CPU_FUXI
 	led_set_sw(sw,SW_LED_XT, LED_OFF);
 	led_set_sw(sw,SW_LED_YT, LED_OFF);
+#endif
 	led_set_sw(sw,SW_LED_LOCK, LED_OFF);
 	led_set_sw(sw,SW_LED_JD, LED_OFF);
 	led_set_sw(sw,SW_LED_GL, LED_OFF);
@@ -666,9 +670,6 @@ void run_vol_refersh(int sw, DWORD  dStep)
 	DWORD Us1,Us2;
 	int ui_begin;
 
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-	bool  bY4, bY5;
-#endif
 	//用于保存故障断面	
 	ui_begin = UI_SW_INDEX_BEGIN(sw);
 
@@ -693,26 +694,10 @@ void run_vol_refersh(int sw, DWORD  dStep)
 				|| (tPT.uPT1DX.bFlag.bQD && pSW->uSdhz_S.bFlag.bUBCYY)
 				;
 #endif
-	#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-		pSW->uSdhz_S.bFlag.bHzEnable_P = true;
-		
-		if(pSW->uSdhz_S.bFlag.bBsXtime_P)
-			pSW->uSdhz_S.bFlag.bHzEnable_P = false;
-		bY4 = LowRelay(g_sw_pub.m2_max[2], pSet->dU_fa_YY, pSet->dU_fa_YY_fh, pSW->uSdhz_S.bFlag.bUABYY);
-		if(bY4 && pSW->uSdhz_S.bFlag.bBsXtime_P)
-		{
-			pSW->uSdhz_S.bFlag.bHzEnable_P = true;
-			pSW->uSdhz_S.bFlag.bBsXtime_P = false;
-		}
-	#endif
 	}
 	else
 	{
 		bY2 = OverRelay(g_sw_pub.m2_max[2], pSet->dU_fa_YY, pSet->dU_fa_YY_fh, pSW->uSdhz_S.bFlag.bUABYY);
-	#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-		pSW->uSdhz_S.bFlag.bHzEnable_P = true;
-		pSW->uSdhz_S.bFlag.bHzEnable_L = true;
-	#endif
 	}
 	RunTR(&pSW->tUABS25ms, bY2, dStep);	
 	
@@ -734,18 +719,6 @@ void run_vol_refersh(int sw, DWORD  dStep)
 		bY3_n = (((g_sw_pub.m2_min[3] > pSet->dU_fa_WY2) && (g_sw_pub.m2_min[3] < pSet->dU_fa_YY2))?true:false)
 				|| (tPT.uPT2DX.bFlag.bQD && pSW->uSdhz_S.bFlag.bUABYY)
 				;
-#endif
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-		pSW->uSdhz_S.bFlag.bHzEnable_L = true;
-		
-		if(pSW->uSdhz_S.bFlag.bBsXtime_L)
-			pSW->uSdhz_S.bFlag.bHzEnable_L = false;
-		bY5 = LowRelay(g_sw_pub.m2_max[3], pSet->dU_fa_YY2, pSet->dU_fa_YY2_fh, pSW->uSdhz_S.bFlag.bUBCYY);
-		if(bY5 && pSW->uSdhz_S.bFlag.bBsXtime_L)
-		{
-			pSW->uSdhz_S.bFlag.bHzEnable_L = true;
-			pSW->uSdhz_S.bFlag.bBsXtime_L = false;
-		}
 #endif
 	}
 	else
@@ -1637,11 +1610,6 @@ static void fa_s_status_run(int sw, DWORD  dStep)
 	switch(pSW->S_Status)
 	{	
 		case S_INIT:
-
-		#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			pSW->uSdhz_S.bFlag.bBsXtime_P = false;
-			pSW->uSdhz_S.bFlag.bBsXtime_L = false;
-		#endif
 	
 		#ifdef	FA_OC_COUNT
 			if(pSet->bTT_fa_oc_count && pR->tSWST.uSWST.bFlag.bDIHW)
@@ -1956,14 +1924,7 @@ static void fa_s_status_run(int sw, DWORD  dStep)
 			#if 1 //在X计时结束后,仍然双侧有压才判为双电源闭锁
 				if(!pR->tSWST.uSWST.bFlag.bDIHW)
 				{
-				#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-					if (pSW->uSdhz_S.bFlag.bDBYY||(pSW->uSdhz_S.bFlag.bUABYY&&pSW->uSdhz_S.bFlag.bUBCYY)
-						|| (pSW->uSdhz_S.bFlag.bUABYY && soe_check(EV_PT2ERR))
-						|| (pSW->uSdhz_S.bFlag.bUBCYY && soe_check(EV_PT1ERR))
-						)				//如果双侧有压,潮州要求就地FA分段PT断线不闭锁得电合
-				#else
 					if (pSW->uSdhz_S.bFlag.bDBYY||(pSW->uSdhz_S.bFlag.bUABYY&&pSW->uSdhz_S.bFlag.bUBCYY)|| !cheak_pt_ok_ing(sw))				//如果双侧有压
-				#endif
 					{
 					#ifdef FUNC_PRINT_PT_ERR
 						if(!cheak_pt_ok_ing(sw))
@@ -2012,31 +1973,15 @@ static void fa_s_status_run(int sw, DWORD  dStep)
 				pR->tLostVot.uLostVot.bFlag.bSHWY=false;//清手合无压标志
 				fa_s_state_change(sw,S_YTIME);//pSW->S_Status = S_YTIME;						//进入Y计时状态
 			}
-			
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			if(!pSW->uSdhz_S.bFlag.bUABYY && !pSW->uSdhz_S.bFlag.bUBCYY && !pSW->uSdhz_S.bFlag.bPowerZ && pR->tSWST.uSWST.bFlag.bFAWL)
-			{	//双侧有压返回但电压未低于无压值时
-				ResetTR(&pSW->tOnXSTime);
-				fa_s_state_change(sw,S_BSXTIME);
-				pSW->uSdhz_S.bFlag.bUABFlash = false;
-				pSW->uSdhz_S.bFlag.bUBCFlash = false;
-				pSW->uSdhz_S.bFlag.bSNChange=pSW->uSdhz_S.bFlag.bPower;
-			}
-#endif
 		}
 		break;
 
 		case S_BSXTIME:
 			if(pSW->uSdhz_S.bFlag.bPower) 
 			{
-
 				if(soe_check(EV_BS_X_P+sw*EV_SW_NUM)==false)   // x闭锁
 				{
 					soe_record_ev(EV_BS_X_P+sw*EV_SW_NUM, 1, 0,0,0 );
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-					pSW->uSdhz_S.bFlag.bBsXtime_P = true;
-					pSW->uSdhz_S.bFlag.bHzEnable_P = false;
-#endif
 				}
 			}
 			else
@@ -2044,17 +1989,9 @@ static void fa_s_status_run(int sw, DWORD  dStep)
 				if(soe_check(EV_BS_X_L+sw*EV_SW_NUM)==false)   // x闭锁
 				{
 					soe_record_ev(EV_BS_X_L+sw*EV_SW_NUM, 1, 0,0,0 );
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-					pSW->uSdhz_S.bFlag.bBsXtime_L = true;
-					pSW->uSdhz_S.bFlag.bHzEnable_L = false;
-#endif
 				}
 			}
-		#if	defined GD_AREA_ECZD_CHAOZHOU_2022
-			if (pSW->uSdhz_S.bFlag.bPowerYY && ((pSW->uSdhz_S.bFlag.bPowerYY == pSW->uSdhz_S.bFlag.bUABYY)?(pSW->uSdhz_S.bFlag.bHzEnable_P):(pSW->uSdhz_S.bFlag.bHzEnable_L)))					//上电侧掉电再来电
-		#else
 			if (pSW->uSdhz_S.bFlag.bPowerYY)					//上电侧来电
-	#endif
 			{
 	#if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_ECZD_2020	//中山、广东二次指导意见要求X闭锁需经过解锁时间才能解
 				RunTR(&pSW->tOnJSTime, TRUE, dStep);				//js时间计时器
@@ -3066,9 +3003,6 @@ static void fa_l_status_run(int sw, DWORD  dStep)
 					fa_l_state_change(sw,L_YL_TIME);
 				else
 				{
-				#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-					if((!soe_check(EV_PT2ERR) && pSW->uSdhz_L.bFlag.bHzEnable_P) || (!soe_check(EV_PT1ERR) && pSW->uSdhz_L.bFlag.bHzEnable_L))
-				#endif
 					{
 						fa_l_state_change(sw,L_BS_STATE);
 					}
@@ -3103,11 +3037,7 @@ static void fa_l_status_run(int sw, DWORD  dStep)
 		#endif
 		
 		//零序电压不允许解锁 2021-4-27
-		if((pSW->uSdhz_L.bFlag.bOverU0 && (pSet->bTT_fa_U0Tz||pSet->bTT_fa_U0Gj))
-		#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			|| (!soe_check_pt_ok(sw))
-		#endif
-			)
+		if((pSW->uSdhz_L.bFlag.bOverU0 && (pSet->bTT_fa_U0Tz||pSet->bTT_fa_U0Gj)))
 			ResetTR(&pSW->tOnYLTime);
 	#if defined GD_AREA_ECZD_2020
 		if(soe_check(EV_BS_DB+sw*EV_SW_NUM)==false)
@@ -3211,20 +3141,6 @@ static void fa_l_status_run(int sw, DWORD  dStep)
 		break;
 
 		case L_USUAL:
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			if(!cheak_pt_ok_ing(sw))
-			{
-				if(soe_check(EV_PT1ERR))
-				{
-					pSW->uSdhz_L.bFlag.bPtErr_P = true;
-				}
-
-				if(soe_check(EV_PT2ERR))
-				{
-					pSW->uSdhz_L.bFlag.bPtErr_L = true;
-				}
-			}
-#endif
 #ifdef FUNC_YL_FZ_SOE
 			if(soe_check(EV_YL_FZ+sw*EV_SW_NUM))
 			{
@@ -3241,26 +3157,10 @@ static void fa_l_status_run(int sw, DWORD  dStep)
 
 				if((pSW->uSdhz_L.bFlag.bPower&&(!pSet->bTT_fa_lineoff)) //负荷侧失压,负荷侧失压合闸退出
 					|| ((!pSW->uSdhz_L.bFlag.bPower)&&(!pSet->bTT_fa_poweroff)) // 电源侧失压,电源侧侧失压合闸退出
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-					|| (pSW->uSdhz_L.bFlag.bPtErr_P || pSW->uSdhz_L.bFlag.bPtErr_L)
-#endif
 					)
 				{
 					//pSW->L_Status = L_INIT;					//进入初始状态,重新充电
 					fa_l_state_change(sw,L_INIT);
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-					if(!pSW->uSdhz_L.bFlag.bPower && pSW->uSdhz_L.bFlag.bPtErr_P)
-					{
-						pSW->uSdhz_L.bFlag.bBsXtime_P = true;
-						pSW->uSdhz_L.bFlag.bPtErr_P = false;
-					}
-					
-					if(pSW->uSdhz_L.bFlag.bPower && pSW->uSdhz_L.bFlag.bPtErr_L)
-					{
-						pSW->uSdhz_L.bFlag.bBsXtime_L = true;
-						pSW->uSdhz_L.bFlag.bPtErr_L = false;
-					}
-#endif
 				}
 				else
 				{
@@ -3392,11 +3292,7 @@ static void fa_l_status_run(int sw, DWORD  dStep)
 					pSW->uSdhz_L.bFlag.bXOverUo=	pSW->uSdhz_L.bFlag.bOverU0;
 				}
 			}
-			else if (pSW->tOnXLTime.boolTrip||pSW->uSdhz_L.bFlag.bPowerZ
-			#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-				|| !soe_check_pt_ok(sw)
-			#endif
-				)
+			else if (pSW->tOnXLTime.boolTrip||pSW->uSdhz_L.bFlag.bPowerZ)
 			{
 				pSW->uSdhz_L.wfFlag = 0;
 				//pSW->L_Status = L_INIT; 				//返回初始状态		
@@ -4325,10 +4221,7 @@ static void fa_l_run(int sw, DWORD  dStep)
 
 	TRELAY_T *pR=&g_tRelay[sw];
 	TSDHZ_T *pSW = &pR->tSDHZ;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];	
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-	bool bY3=false,bY4=false;
-#endif
+	TSETSW *pSet = &pRunSet->tSwSet[sw];
 
 	//有压检测
 	// 电源1上电合闸
@@ -4336,34 +4229,6 @@ static void fa_l_run(int sw, DWORD  dStep)
 	{
 		bY1 = OverRelay(g_sw_pub.m2_min[2], pSet->dU_fa_YY, pSet->dU_fa_WY, pSW->uSdhz_L.bFlag.bUABYY);
 		bY2 = OverRelay(g_sw_pub.m2_min[3], pSet->dU_fa_YY2, pSet->dU_fa_WY2, pSW->uSdhz_L.bFlag.bUBCYY);
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-		//电源侧
-		{
-			pSW->uSdhz_L.bFlag.bHzEnable_P = true;
-			
-			if(pSW->uSdhz_L.bFlag.bBsXtime_P)
-				pSW->uSdhz_L.bFlag.bHzEnable_P = false;
-			bY3 = LowRelay(g_sw_pub.m2_max[2], pSet->dU_fa_YY, pSet->dU_fa_YY_fh, pSW->uSdhz_L.bFlag.bUABYY);
-			if(bY3 && pSW->uSdhz_L.bFlag.bBsXtime_P && cheak_pt_ok_ing(sw))
-			{
-				pSW->uSdhz_L.bFlag.bHzEnable_P = true;
-				pSW->uSdhz_L.bFlag.bBsXtime_P = false;
-			}
-		}
-		//负荷侧
-		{
-			pSW->uSdhz_L.bFlag.bHzEnable_L = true;
-			
-			if(pSW->uSdhz_L.bFlag.bBsXtime_L)
-				pSW->uSdhz_L.bFlag.bHzEnable_L = false;
-			bY4 = LowRelay(g_sw_pub.m2_max[2], pSet->dU_fa_YY, pSet->dU_fa_YY_fh, pSW->uSdhz_L.bFlag.bUABYY);
-			if(bY4 && pSW->uSdhz_L.bFlag.bBsXtime_L && cheak_pt_ok_ing(sw))
-			{
-				pSW->uSdhz_L.bFlag.bHzEnable_L = true;
-				pSW->uSdhz_L.bFlag.bBsXtime_L = false;
-			}
-		}
-#endif
 #ifdef FUNC_NYY_NWY
 		bY1_n = (((g_sw_pub.m2_min[2] > pSet->dU_fa_WY) && (g_sw_pub.m2_min[2] < pSet->dU_fa_YY))?true:false)
 				|| (tPT.uPT1DX.bFlag.bQD && pSW->uSdhz_L.bFlag.bUBCYY)
@@ -4377,10 +4242,6 @@ static void fa_l_run(int sw, DWORD  dStep)
 	{
 		bY1 = OverRelay(g_sw_pub.m2_max[2], pSet->dU_fa_YY, pSet->dU_fa_WY, pSW->uSdhz_L.bFlag.bUABYY);
 		bY2 = OverRelay(g_sw_pub.m2_max[3], pSet->dU_fa_YY2, pSet->dU_fa_WY2, pSW->uSdhz_L.bFlag.bUBCYY);
-	#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-		pSW->uSdhz_L.bFlag.bHzEnable_P = true;
-		pSW->uSdhz_L.bFlag.bHzEnable_L = true;
-	#endif
 	}
 	
 	RunTR(&pSW->tUABL25ms, bY1, dStep);	

+ 0 - 8
dtu/dtu_main_t536/app/FA.h

@@ -188,14 +188,6 @@ typedef union USDHZ_U
 		DDWORD	bJS:1;						//满足解锁条件已解锁状态
 #if defined GD_AREA_ECZD_2020 && !defined GD_AREA_ZHONGSHAN_2020
 		DDWORD	bHhgz:1;			//合后故障
-#endif
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-		DDWORD	bHzEnable_P:1;			//电源侧允许合闸标志
-		DDWORD	bBsXtime_P:1;			//电源侧闭锁X-TIME
-		DDWORD	bHzEnable_L:1;			//负荷侧允许合闸标志
-		DDWORD	bBsXtime_L:1;			//负荷侧闭锁X-TIME
-		DDWORD	bPtErr_P:1; 		//电源侧PT曾断线
-		DDWORD	bPtErr_L:1; 		//负荷侧PT曾断线
 #endif
 	#ifdef FUNC_NYY_NWY
 		DDWORD   bUAB_NYY_NWY:1;					//UAB非有压非无压态

+ 6 - 2
dtu/dtu_main_t536/app/IECLINK.c

@@ -1145,8 +1145,12 @@ void lnk_slave_dd(u8 ch,u8 ti,u8 vsq,u8 cot,u8 al,u8 *ps)
 		if(lt)
 		{
 			dt = &g_dd_table[lt->tbl_index];
-			if((dt->owner >0)&&(pRunSet->dd_calc_mode == 2))
-			{
+            if ((dt->owner > 0)
+#ifdef METERING_ENERGY
+                && (pRunSet->dd_calc_mode == 2)
+#endif
+            )
+            {
 			
 #ifdef M_IT_TC
 				int j=0;

+ 14 - 14
dtu/dtu_main_t536/app/LcdComm.c

@@ -1156,15 +1156,15 @@ static void _hmi_comm_send(void)
 			int i;
 			if(ustimer_delay_origin2(&us0_led,USTIMER_SEC/8))
 			{
-				for(i=0;i<CFG_UART_NUM_MAX*2+CFG_ETH_NUM_MAX;i++)
-				{
-					if(g_run_stu.led[i])  // 232 1TX
-					{
-						led_set_pub(PUB_LED_232T1+i, LED_QUICK);	
-						g_run_stu.led[i]=0;
-					}
-				}				
-				if(g_bCommLed)
+                for (i = 0; i < CFG_UART_NUM_MAX - 3 + CFG_ETH_NUM_MAX; i++)
+                {
+                    if (g_run_stu.led[i]) // 232 1TX
+                    {
+                        led_set_pub(PUB_LED_SP1 + i, LED_QUICK);
+                        g_run_stu.led[i] = 0;
+                    }
+                }
+                if(g_bCommLed)
 				{
 					led_set_pub(PUB_LED_COMM, LED_QUICK);	
 					g_bCommLed=false;
@@ -1186,11 +1186,11 @@ static void _hmi_comm_send(void)
 					g_dw_ledsave[1]=g_dw_led[1];
 					pt->bFreshLed=false;					
 				}
-				for(i=0;i<CFG_UART_NUM_MAX*2+CFG_ETH_NUM_MAX;i++)
-				{
-					led_set_pub(PUB_LED_232T1+i, LED_OFF);	
-				}
-				led_set_pub(PUB_LED_COMM, LED_OFF);			
+                for (i = 0; i < CFG_UART_NUM_MAX - 3 + CFG_ETH_NUM_MAX; i++)
+                {
+                    led_set_pub(PUB_LED_SP1 + i, LED_OFF);
+                }
+                led_set_pub(PUB_LED_COMM, LED_OFF);			
 				
 			}
 		}

+ 7 - 7
dtu/dtu_main_t536/app/MmiData.c

@@ -406,11 +406,11 @@ bool mmd_checkset_yb(u8 index)  //
 	{
 		if(group_sub == GROUP_SET_TQHZ)
 		{
-			return (g_tRelay[sw].run_stu.bhtt)||yb_fa_g;
+			return (g_tRelay[sw].run_stu.cgbhtt)||yb_fa_g;
 		}
 		else
 		{
-			return g_tRelay[sw].run_stu.bhtt||yb_fa_g;
+			return g_tRelay[sw].run_stu.cgbhtt||yb_fa_g;
 		}
 	}
 #endif
@@ -419,18 +419,18 @@ bool mmd_checkset_yb(u8 index)  //
 	{
 		if (group_sub == GROUP_SET_JLTT)
 		{
-			return g_tRelay[sw].run_stu.bhtt||yb_fa_g;
+			return g_tRelay[sw].run_stu.cgbhtt||yb_fa_g;
 		}
 		else if(group_sub == GROUP_SET_TQHZ)
 		{
-			return (g_tRelay[sw].run_stu.bhtt)||yb_fa_g;
+			return (g_tRelay[sw].run_stu.cgbhtt)||yb_fa_g;
 		}
 		else
 		{
 #ifdef YB_AUTO_SELECT	
 			return bh_yb_enable(sw)||yb_fa_g;
 #else			
-			return g_tRelay[sw].run_stu.bhtt||yb_fa_g;
+			return g_tRelay[sw].run_stu.cgbhtt||yb_fa_g;
 #endif
 		}
 
@@ -1903,7 +1903,7 @@ int mmd_ChangeYBSet(const TSETTABLE *pSet,int num,SET_VALUE *setbuf) //ext为
 		if (pSet[i].wType != SETTYPE_LABEL) 
 		{
 			//xj 2019.10.21
-            if (pSet[i].group == GROUP_SET_YB_GN && (g_tRelay[sw].run_stu.bhtt == 1 || g_tRelay[sw].run_stu.fatt || g_tRelay[sw].run_stu.fa_g_tt) && (bPubSetMenuShow[i] > 0)) // 定值分类组为0 或显示定制为1
+            if (pSet[i].group == GROUP_SET_YB_GN && (g_tRelay[sw].run_stu.cgbhtt == 1 || g_tRelay[sw].run_stu.fatt || g_tRelay[sw].run_stu.fa_g_tt) && (bPubSetMenuShow[i] > 0)) // 定值分类组为0 或显示定制为1
             {
                 g_set_disp.no[g_set_disp.num] = i;
                 g_set_disp.num++;
@@ -4390,7 +4390,7 @@ static void mmd_GetFtuYxValue(int i,DATA_FIELD_DEF *pF)
 		strcpy(tmpstr,YX_H);
 	if((SW_DI_CHZ+1==ecd->type && ecd->owner!=0 && (!CHZ_ALL_EN(0)))||//重合闸投入压板 	   		
 	    (SW_DI_BHZTT+1==ecd->type && ecd->owner!=0 && (!FUN_ALL_EN(0)))||//保护总投入压板
-	    (ecd->owner!=0 && (!TQ_ALL_EN(0))))//同期压板	
+	    (ecd->owner!=0))//同期压板	
 		strcpy(tmpstr,YX_F);	
 
     #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ECZD_2020

+ 10 - 10
dtu/dtu_main_t536/app/Sys.c

@@ -303,7 +303,7 @@ void app_yb_refresh(void)
 		}
 	//soft_yb	
 		//只关联软压板: EV_KZ_YB/EV_EDIT_YB		(出口/远方)		
-		fresh_set_soe(EV_KZ_YB, pRunSet->bTT_KZ_YB, 0,sw); 	
+		fresh_set_soe(EV_KZ_YB, pRunSet->tSwSet[sw].btt_yxyb_gnzck, 0,sw); 	
 		fresh_set_soe(EV_EDIT_YB, pRunSet->bTT_EDIT_YB, 0,sw); 
 
         //关联硬压板
@@ -327,8 +327,8 @@ void app_yb_refresh(void)
         fresh_set_soe(EV_JL_YBTT,!JL_ALL_EN(sw),0,sw);// 自动解列软压板
 	#ifdef YB_STHD_CHECK
 		//功能总
-		if((((short)g_sw_pub.di_cfg_index[PUB_DI_BHALL] != INDEX_INVALLID)&&(pRunSet->bTT_BH_YB != g_run_stu.bhall))||
-			(((short)g_sw[sw].di_cfg_index[SW_DI_BHZTT] != INDEX_INVALLID)&&(pRunSet->bTT_BH_YB != g_tRelay[sw].run_stu.bhztt))||
+		if((((short)g_sw_pub.di_cfg_index[PUB_DI_BHALL] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_yxyb_gnztt != g_run_stu.bhall))||
+			(((short)g_sw[sw].di_cfg_index[SW_DI_BHZTT] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_yxyb_gnztt != g_tRelay[sw].run_stu.bhztt))||
 			(((short)g_sw_pub.di_cfg_index[PUB_DI_BHALL] != INDEX_INVALLID)&&((short)g_sw[sw].di_cfg_index[SW_DI_BHZTT] != INDEX_INVALLID)&&(g_run_stu.bhall != g_tRelay[sw].run_stu.bhztt)))
 		{
 			if(soe_check(EV_FUNALL_CHECK+sw*EV_SW_NUM)==false)   // 
@@ -344,8 +344,8 @@ void app_yb_refresh(void)
 			}
 		}
 		//CHZ		
-		if((((short)g_sw[sw].di_cfg_index[SW_DI_CHZ] != INDEX_INVALLID)&&(pRunSet->bTT_CHZ_YB != g_tRelay[sw].run_stu.chzyb))||
-			(((short)g_sw[sw].di_cfg_index[SW_DI_BSCH] != INDEX_INVALLID)&&(pRunSet->bTT_CHZ_YB == g_tRelay[sw].run_stu.bsch))||
+		if((((short)g_sw[sw].di_cfg_index[SW_DI_CHZ] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_gnyb_zdchz != g_tRelay[sw].run_stu.chzyb))||
+			(((short)g_sw[sw].di_cfg_index[SW_DI_BSCH] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_gnyb_zdchz == g_tRelay[sw].run_stu.bsch))||
 			(((short)g_sw[sw].di_cfg_index[SW_DI_CHZ] != INDEX_INVALLID)&&((short)g_sw[sw].di_cfg_index[SW_DI_BSCH] != INDEX_INVALLID)&&(g_tRelay[sw].run_stu.chzyb == g_tRelay[sw].run_stu.bsch)))
 		{
 			if(soe_check(EV_CHZ_CHECK+sw*EV_SW_NUM)==false)	 // 
@@ -362,7 +362,7 @@ void app_yb_refresh(void)
 		}		 
 		#if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020
 			//GOOSE
-			if(((short)g_sw[sw].di_cfg_index[SW_DI_FA_GOOSE] != INDEX_INVALLID)&&(pRunSet->bTT_SOFT_GOOSE_YB != g_tRelay[sw].run_stu.fa_g_tt))
+			if(((short)g_sw[sw].di_cfg_index[SW_DI_FA_GOOSE] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_gnyb_dfa != g_tRelay[sw].run_stu.fa_g_tt))
 			{
 				if(soe_check(EV_GOOSE_CHECK+sw*EV_SW_NUM)==false)	 // 
 				{
@@ -377,7 +377,7 @@ void app_yb_refresh(void)
 				}
 			}	
 			//FA
-			if(((short)g_sw[sw].di_cfg_index[SW_DI_FA_TT] != INDEX_INVALLID)&&(pRunSet->bTT_SOFT_FA_YB != g_tRelay[sw].run_stu.fatt))
+			if(((short)g_sw[sw].di_cfg_index[SW_DI_FA_TT] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_gnyb_fa != g_tRelay[sw].run_stu.fatt))
 			{
 				if(soe_check(EV_FA_CHECK+sw*EV_SW_NUM)==false)	 // 
 				{
@@ -392,7 +392,7 @@ void app_yb_refresh(void)
 				}
 			}			 
 			//BH
-			if(((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)&&(pRunSet->bTT_SOFT_BH_YB != g_tRelay[sw].run_stu.bhtt))
+			if(((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)&&(pRunSet->tSwSet[sw].btt_gnyb_cg != g_tRelay[sw].run_stu.cgbhtt))
 			{
 				if(soe_check(EV_BH_CHECK+sw*EV_SW_NUM)==false)	 // 
 				{
@@ -1421,7 +1421,7 @@ int _RemoteCtrl(BYTE yktype,BYTE index,BYTE ykval,WORD wID)
 			else if(no==PUB_DRIVE_HZ+1)
 			{
 				int sw=0;
-				if(pRunSet->bTT_DRIVE
+				if(pRunSet->tSwSet[sw].btt_gnyb_btdcd
 					&& !gb_drive.b_err
 					&& !gb_drive.b_warning
 					&& !g_tRelay[sw].run_stu.chzbs
@@ -1818,7 +1818,7 @@ int _RemoteCtrl(BYTE yktype,BYTE index,BYTE ykval,WORD wID)
 					{
 						return -15;
 					}
-					else if(pRunSet->bTT_TQ_YB )
+					else if(pRunSet->tSwSet[0].btt_gnyb_tqhz )
 					{
 						g_tRelay[owner-1].uRmtSW.bTQHz = true;
 						return  0;

+ 1 - 1
dtu/dtu_main_t536/app/UnitsLib.c

@@ -373,7 +373,7 @@ void ProtectRelayInit(void)
 			//fresh_set_soe(EV_FA_LL_EN,(g_tRelay[sw].tgoc.tllcd.sta.bFlag.bCD&&BH_GOOSE_EN(sw)),true,sw);
 		}
 		//soft_yb set		
-		fresh_set_soe(EV_KZ_YB, pRunSet->bTT_KZ_YB, true,sw); 	
+		fresh_set_soe(EV_KZ_YB, pRunSet->tSwSet[sw].btt_yxyb_gnzck, true,sw); 	
 		fresh_set_soe(EV_EDIT_YB, pRunSet->bTT_EDIT_YB, true,sw); 
 		
 		#if defined GD_AREA_ECZD_2020

+ 1 - 1
dtu/dtu_main_t536/app/bzt.c

@@ -2064,7 +2064,7 @@ void Out_BZTCFD(int sw, bool bState)
 
 void bzt_process(int sw, DWORD Step)
 {
-	//if(g_tRelay[sw].run_stu.bhtt && pRunSet->tSwSet[sw].bBZT_TT && FUN_ALL_EN(sw))
+	//if(g_tRelay[sw].run_stu.cgbhtt && pRunSet->tSwSet[sw].bBZT_TT && FUN_ALL_EN(sw))
 	if(pRunSet->tSwSet[sw].bBZT_TT)
 	{
 		Bzt_Dataset(sw, Step);

+ 7 - 3
dtu/dtu_main_t536/app/led.c

@@ -25,6 +25,7 @@
 */
 struct led_config g_led_hmi_default[HMI_TYPE_NUM]=
 {
+#if !defined CPU_FUXI
 	// 罩式FTU
 	{13,		
     {{0,PUB_LED_ERR}, 	{0,PUB_LED_RUN}, 	{1,SW_LED_DZ}, 		{0,PUB_LED_POWER}, 	
@@ -44,6 +45,7 @@ struct led_config g_led_hmi_default[HMI_TYPE_NUM]=
 	{0,PUB_LED_ERR}, 	{1,SW_LED_ZHHW},	{1,SW_LED_GL}, 		{1,SW_LED_JD}, 
 	{1,SW_LED_CHZ}, 	{1,SW_LED_LOCK}, 	{1,SW_LED_XT}, 		{1,SW_LED_YT}, 
 	{0,LED_NULL}, 		{0,LED_NULL}, 		{0,LED_NULL}, 		{0,LED_NULL}}},
+#endif
 };
 
 
@@ -306,6 +308,7 @@ void _led_update_status(void)
 	for(i=0;i<g_sw_num;i++)
 	{
 		RUN_STU_SW *prun=&g_tRelay[i].run_stu;
+#if !defined CPU_FUXI
 		// 综合合位灯
 		if (prun->sw == 0x2)
 		{
@@ -332,6 +335,7 @@ void _led_update_status(void)
 		{
 			led_set_sw(i,SW_LED_ZHTW, LED_OFF);	
 		}
+#endif
 		// 合位灯、跳位灯
 		if (prun->hw)
 		{			 
@@ -418,7 +422,7 @@ void _led_update_status(void)
 
 		//重合闸闭锁灯跟FA闭锁灯合并
 		#if 0
-		if(g_tRelay[i].run_stu.bhtt && !prun->chzcd)//保护与FA区分闭锁灯处理
+		if(g_tRelay[i].run_stu.cgbhtt && !prun->chzcd)//保护与FA区分闭锁灯处理
 			led_set_sw(i,SW_LED_CHZBS_LOCK, LED_ON);
 		else if(g_tRelay[i].run_stu.fatt && prun->bs)
 			led_set_sw(i,SW_LED_CHZBS_LOCK, LED_ON);
@@ -777,7 +781,7 @@ void _led_update_status(void)
 			led_set_sw(i,SW_LED_WCN, LED_OFF);
 		}
 
-#if defined GD_AREA_ECZD_2020
+#if !defined CPU_FUXI
 		if(JL_ALL_EN(i))
 		{
 			led_set_sw(i,SW_LED_ZDJL, LED_ON);
@@ -816,7 +820,7 @@ void _led_update_status(void)
         }
 #endif
 #ifdef FUNC_DRIVE
-		if(pRunSet->bTT_DRIVE)
+		if(pRunSet->tSwSet[0].btt_gnyb_btdcd)
 		{
 			led_set_sw(i,SW_LED_DRIVE, LED_ON);
 		}

+ 7 - 8
dtu/dtu_main_t536/app/oc.h

@@ -68,14 +68,13 @@ enum
     FA_GL_II,   // FA相间故障II段
     FA_LX,      // FA零序故障
     FA_GL2,     // FA相间告警
-
-    FA_LX2,  // FA零序告警
-    FA_DLBS, // 大电流闭锁
-    BH_DLBS, // 常规保护大电流闭锁
-    BH_OVI_ZZ, // 电流重载
-    BH_OVI_GZ, // 电流过载
-    BH_OVI,  // 电流越限
-    BH_OVI0, // 零序电流越限
+    FA_LX2,     // FA零序告警
+    FA_DLBS,    // 大电流闭锁
+    BH_DLBS,    // 常规保护大电流闭锁
+    BH_OVI_ZZ,  // 电流重载
+    BH_OVI_GZ,  // 电流过载
+    BH_OVI,     // 电流越限
+    BH_OVI0,    // 零序电流越限
     BHOC_NUMBER
 };
 

+ 66 - 70
dtu/dtu_main_t536/app/protect.c

@@ -1997,7 +1997,7 @@ static int _protect_rmt_sw(u32 dStep)
 	if (((((g_rmt_op.cmd == CMD_HZ)||pRunstu->sw_sh||g_run_stu.mb_hz) && (!g_run_stu.yf) && Ycn)
 		 || g_tPDA.bPDAHz || g_tPDA.bMsgHz)&&(!fa_bs_hz(sw))) //有手合信号
 	{
-		if(pRunSet->bTT_TQ_YB)
+		if(pRunSet->tSwSet[sw].btt_gnyb_tqhz)
 		{
 			pRmtsw->bTQHz=true;
 		}
@@ -2277,106 +2277,102 @@ int protect_printf_process(void)
 #ifdef YB_AUTO_SELECT
 bool fa_yb_enable(int sw)
 {
-	bool bY1=false;
+    bool bY1 = false;
 
-	if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_TT] != INDEX_INVALLID )
-	{
-		bY1=g_tRelay[sw].run_stu.fatt&&pRunSet->bTT_SOFT_FA_YB;	// FA	
-	}    
-	else
-	{
-		bY1=pRunSet->bTT_SOFT_FA_YB;	// FA
-	}
+    if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_TT] != INDEX_INVALLID)
+    {
+        bY1 = g_tRelay[sw].run_stu.fatt && pRunSet->tSwSet[sw].btt_gnyb_fa; // FA
+    }
+    else
+    {
+        bY1 = pRunSet->tSwSet[sw].btt_gnyb_fa; // FA
+    }
 
-	return bY1;
+    return bY1;
 }
 
 bool goose_yb_enable(int sw)
 {
-	bool bY1=false;
+    bool bY1 = false;
 
-	if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_GOOSE] != INDEX_INVALLID)
-	{
-		bY1=g_tRelay[sw].run_stu.fa_g_tt&&pRunSet->bTT_SOFT_GOOSE_YB;  // 智能分布式把手
-	}
-	else
-	{
-		bY1=pRunSet->bTT_SOFT_GOOSE_YB;
-	}
+    if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_GOOSE] != INDEX_INVALLID)
+    {
+        bY1 = g_tRelay[sw].run_stu.fa_g_tt && pRunSet->tSwSet[sw].btt_gnyb_dfa; // 智能分布式把手
+    }
+    else
+    {
+        bY1 = pRunSet->tSwSet[sw].btt_gnyb_dfa;
+    }
 
-	return bY1;
+    return bY1;
 }
 
 bool bh_yb_enable(int sw)
 {
-	bool bY1=false;
+    bool bY1 = false;
 
-	if ((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)
-	{
-		bY1=g_tRelay[sw].run_stu.bhtt&&pRunSet->bTT_SOFT_BH_YB;	// 保护
-	}
-	else
-	{
-		bY1=pRunSet->bTT_SOFT_BH_YB;	// 保护
-	}
+    if ((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)
+    {
+        bY1 = g_tRelay[sw].run_stu.cgbhtt && pRunSet->tSwSet[sw].btt_gnyb_cg; // 保护
+    }
+    else
+    {
+        bY1 = pRunSet->tSwSet[sw].btt_gnyb_cg; // 保护
+    }
 
-	return bY1;
+    return bY1;
 }
 
 #endif
 
-//#ifdef GD_AREA_ZHONGSHAN_2020  //中山要求通信异常,全系统均异常
+// #ifdef GD_AREA_ZHONGSHAN_2020  //中山要求通信异常,全系统均异常
 #if defined GD_AREA_ZHONGSHAN_2020 || defined YB_AUTO_SELECT
 bool fa_fun_true(int sw)
 {
-	bool bY1=false,bY2=false,bY3=false;
+    bool bY1 = false, bY2 = false, bY3 = false;
 
 #ifdef YB_AUTO_SELECT
-	if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_GOOSE] != INDEX_INVALLID)
-	{
-		bY1=g_tRelay[sw].run_stu.fa_g_tt&&pRunSet->bTT_SOFT_GOOSE_YB;  // 智能分布式把手
-	}
-	else
-	{
-		bY1=pRunSet->bTT_SOFT_GOOSE_YB;
-	}
+    if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_GOOSE] != INDEX_INVALLID)
+    {
+        bY1 = g_tRelay[sw].run_stu.fa_g_tt && pRunSet->tSwSet[sw].btt_gnyb_dfa; // 智能分布式把手
+    }
+    else
+    {
+        bY1 = pRunSet->tSwSet[sw].btt_gnyb_dfa;
+    }
 
-	if ((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)
-	{
-		bY2=g_tRelay[sw].run_stu.bhtt&&pRunSet->bTT_SOFT_BH_YB;	// 保护
-	}
-	else
-	{
-		bY2=pRunSet->bTT_SOFT_BH_YB;	// 保护
-	}
+    if ((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)
+    {
+        bY2 = g_tRelay[sw].run_stu.cgbhtt && pRunSet->tSwSet[sw].btt_gnyb_cg; // 保护
+    }
+    else
+    {
+        bY2 = pRunSet->tSwSet[sw].btt_gnyb_cg; // 保护
+    }
+
+    if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_TT] != INDEX_INVALLID)
+    {
+        bY3 = g_tRelay[sw].run_stu.fatt && pRunSet->tSwSet[sw].btt_gnyb_fa; // FA
+    }
+    else
+    {
+        bY3 = pRunSet->tSwSet[sw].btt_gnyb_fa; // FA
+    }
 
-	if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_TT] != INDEX_INVALLID )
-	{
-		bY3=g_tRelay[sw].run_stu.fatt&&pRunSet->bTT_SOFT_FA_YB;	// FA	
-	}    
-	else
-	{
-		bY3=pRunSet->bTT_SOFT_FA_YB;	// FA
-	}
-    
 #else
-	bY1=g_tRelay[sw].run_stu.fa_g_tt&&pRunSet->bTT_SOFT_GOOSE_YB  // 智能分布式把手
-		&&((pRunSet->tSwSet[sw].tGocSet.bsw_fz&&pRunSet->bTT_SOFT_BH_YB&&!pRunSet->bTT_SOFT_FA_YB)
-		||(!pRunSet->tSwSet[sw].tGocSet.bsw_fz&&pRunSet->bTT_SOFT_FA_YB&&!pRunSet->bTT_SOFT_BH_YB));
+    bY1 = g_tRelay[sw].run_stu.fa_g_tt && pRunSet->tSwSet[sw].btt_gnyb_dfa // 智能分布式把手
+          && ((pRunSet->tSwSet[sw].tGocSet.bsw_fz && pRunSet->tSwSet[sw].btt_gnyb_cg && !pRunSet->tSwSet[sw].btt_gnyb_fa) || (!pRunSet->tSwSet[sw].tGocSet.bsw_fz && pRunSet->tSwSet[sw].btt_gnyb_fa && !pRunSet->tSwSet[sw].btt_gnyb_cg));
 
-	bY2=g_tRelay[sw].run_stu.bhtt&&pRunSet->bTT_SOFT_BH_YB  // 保护
-		&&(!pRunSet->bTT_SOFT_FA_YB&&!pRunSet->bTT_SOFT_GOOSE_YB);
+    bY2 = g_tRelay[sw].run_stu.cgbhtt && pRunSet->tSwSet[sw].btt_gnyb_cg // 保护
+          && (!pRunSet->tSwSet[sw].btt_gnyb_fa && !pRunSet->tSwSet[sw].btt_gnyb_dfa);
 
-	bY3=g_tRelay[sw].run_stu.fatt&&pRunSet->bTT_SOFT_FA_YB  // FA
-		&&(!pRunSet->bTT_SOFT_BH_YB&&!pRunSet->bTT_SOFT_GOOSE_YB);
+    bY3 = g_tRelay[sw].run_stu.fatt && pRunSet->tSwSet[sw].btt_gnyb_fa // FA
+          && (!pRunSet->tSwSet[sw].btt_gnyb_cg && !pRunSet->tSwSet[sw].btt_gnyb_dfa);
 
-#endif		
-	return (bY1||bY2||bY3);	
-	
+#endif
+    return (bY1 || bY2 || bY3);
 }
 #endif
 
-
-
 /*------------------------------ 文件结束 -------------------------------------
 */

+ 36 - 44
dtu/dtu_main_t536/app/protect.h

@@ -15,63 +15,55 @@
 
 /*------------------------------- 宏定义 --------------------------------------
 */
-//控制出口总压板
-#define JZS_ALL_EN(sw)     (g_tRelay[sw].run_stu.jzs_tt && pRunSet->bTT_SOFT_JZS_YB)
-#define KZ_OUT_ALL_EN(sw)  (pRunSet->bTT_KZ_YB && !JZS_ALL_EN(sw))
+// 控制出口总压板
+#define JZS_ALL_EN(sw)      (g_tRelay[sw].run_stu.jzs_tt && pRunSet->tSwSet[sw].btt_gnyb_jzs)
+#define KZ_OUT_ALL_EN(sw)   (pRunSet->tSwSet[sw].btt_yxyb_gnzck && !JZS_ALL_EN(sw))
 
 // 保护总投退
 #if defined YB_AUTO_SELECT && !defined GD_AREA_ECZD_2020
-	#define 	FUN_ALL_EN(sw)		(pRunSet->bTT_BH_YB&&fa_fun_true(sw))
+#define FUN_ALL_EN(sw) (pRunSet->tSwSet[sw].btt_yxyb_gnztt && fa_fun_true(sw))
 #elif defined GD_AREA_ZHONGSHAN_2020
-	#define 	FUN_ALL_EN(sw)		(g_run_stu.bhall&&pRunSet->bTT_BH_YB&&g_tRelay[sw].run_stu.bhztt&&fa_fun_true(sw))
+#define FUN_ALL_EN(sw) (g_run_stu.bhall && pRunSet->tSwSet[sw].btt_yxyb_gnztt && g_tRelay[sw].run_stu.bhztt && fa_fun_true(sw))
 #else
-    #define 	FUN_ALL_EN(sw)		(g_run_stu.bhall&&pRunSet->bTT_BH_YB&&g_tRelay[sw].run_stu.bhztt)
+#define FUN_ALL_EN(sw) (g_run_stu.bhall && pRunSet->tSwSet[sw].btt_yxyb_gnztt && g_tRelay[sw].run_stu.bhztt)
 #endif
 
-
-
-#if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020  //中山要求通信异常,全系统均异常
-	// 分布式 FA总投退
-	#define 	BH_GOOSE_EN_YB(sw)	(FUN_ALL_EN(sw)&&g_tRelay[sw].run_stu.fa_g_tt&&pRunSet->bTT_SOFT_GOOSE_YB&&pRunSet->tSwSet[sw].tGocSet.bTT_gooseFA)
-	#define 	BH_GOOSE_EN(sw)	(BH_GOOSE_EN_YB(sw)&&(!tFAg.bComErr))
-	#define 	BH_GOOSE_COMMERR(sw)	(BH_GOOSE_EN_YB(sw)&&(tFAg.bComErr))
-
-	#define 	BH_ALL_EN(sw)		(FUN_ALL_EN(sw) && pRunSet->bTT_SOFT_BH_YB &&  ((g_tRelay[sw].run_stu.bhtt&&(!BH_GOOSE_EN_YB(sw)))||(BH_GOOSE_EN_YB(sw)&&pRunSet->tSwSet[sw].tGocSet.bsw_fz)))
-	#define 	FA_ALL_EN(sw)		(FUN_ALL_EN(sw) && pRunSet->bTT_SOFT_FA_YB &&  ((g_tRelay[sw].run_stu.fatt&&(!BH_GOOSE_EN_YB(sw)))||(BH_GOOSE_COMMERR(sw)&&!pRunSet->tSwSet[sw].tGocSet.bsw_fz)))
+#if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 // 中山要求通信异常,全系统均异常
+    // 分布式 FA总投退
+    #define BH_GOOSE_EN_YB(sw)      (FUN_ALL_EN(sw) && g_tRelay[sw].run_stu.fa_g_tt && pRunSet->tSwSet[sw].btt_gnyb_dfa && pRunSet->tSwSet[sw].tGocSet.bTT_gooseFA)
+    #define BH_GOOSE_EN(sw)         (BH_GOOSE_EN_YB(sw) && (!tFAg.bComErr))
+    #define BH_GOOSE_COMMERR(sw)    (BH_GOOSE_EN_YB(sw) && (tFAg.bComErr))
+    #define BH_ALL_EN(sw)           (FUN_ALL_EN(sw) && pRunSet->tSwSet[sw].btt_gnyb_cg && ((g_tRelay[sw].run_stu.cgbhtt && (!BH_GOOSE_EN_YB(sw))) || (BH_GOOSE_EN_YB(sw) && pRunSet->tSwSet[sw].tGocSet.bsw_fz)))
+    #define FA_ALL_EN(sw)           (FUN_ALL_EN(sw) && pRunSet->tSwSet[sw].btt_gnyb_fa && ((g_tRelay[sw].run_stu.fatt && (!BH_GOOSE_EN_YB(sw))) || (BH_GOOSE_COMMERR(sw) && !pRunSet->tSwSet[sw].tGocSet.bsw_fz)))
 #else
-	#ifdef YB_AUTO_SELECT
-        #define 	BH_GOOSE_EN_YB(sw)	(FUN_ALL_EN(sw)&&goose_yb_enable(sw)&&pRunSet->tSwSet[sw].tGocSet.bTT_gooseFA)
-		#define 	BH_GOOSE_EN(sw) (BH_GOOSE_EN_YB(sw))
-		#define 	BH_GOOSE_COMMERR(sw)	 (false)
-	
-        #define 	BH_ALL_2(sw)		(FUN_ALL_EN(sw) && bh_yb_enable(sw) && (!BH_GOOSE_EN(sw)))
-        #define 	BH_ALL_EN(sw)		(BH_ALL_2(sw)||JZS_ALL_EN(sw))	
-		#define 	FA_ALL_EN(sw)		(FUN_ALL_EN(sw) && fa_yb_enable(sw) &&(!BH_GOOSE_EN(sw)))
-	#else
-        #define 	BH_GOOSE_EN_YB(sw)	(FUN_ALL_EN(sw)&&g_tRelay[sw].run_stu.fa_g_tt&&pRunSet->bTT_SOFT_GOOSE_YB&&pRunSet->tSwSet[sw].tGocSet.bTT_gooseFA)
-		#define 	BH_GOOSE_EN(sw)	(BH_GOOSE_EN_YB(sw))
-		#define 	BH_GOOSE_COMMERR(sw)	 (false)
-        #define 	BH_ALL_2(sw)		(FUN_ALL_EN(sw) && pRunSet->bTT_SOFT_BH_YB && g_tRelay[sw].run_stu.bhtt && (!BH_GOOSE_EN(sw)))
-        #define 	BH_ALL_EN(sw)		(BH_ALL_2(sw)||JZS_ALL_EN(sw))	
-		#define 	FA_ALL_EN(sw)		(FUN_ALL_EN(sw) && pRunSet->bTT_SOFT_FA_YB  && g_tRelay[sw].run_stu.fatt&&(!BH_GOOSE_EN(sw)))
-	#endif	
+    #ifdef YB_AUTO_SELECT
+        #define BH_GOOSE_EN_YB(sw)      (FUN_ALL_EN(sw) && goose_yb_enable(sw) && pRunSet->tSwSet[sw].tGocSet.bTT_gooseFA)
+        #define BH_GOOSE_EN(sw)         (BH_GOOSE_EN_YB(sw))
+        #define BH_GOOSE_COMMERR(sw)    (false)
+        #define BH_ALL_2(sw)            (FUN_ALL_EN(sw) && bh_yb_enable(sw) && (!BH_GOOSE_EN(sw)))
+        #define BH_ALL_EN(sw)           (BH_ALL_2(sw) || JZS_ALL_EN(sw))
+        #define FA_ALL_EN(sw)           (FUN_ALL_EN(sw) && fa_yb_enable(sw) && (!BH_GOOSE_EN(sw)))
+    #else
+        #define BH_GOOSE_EN_YB(sw)      (FUN_ALL_EN(sw) && g_tRelay[sw].run_stu.fa_g_tt && pRunSet->tSwSet[sw].btt_gnyb_dfa && pRunSet->tSwSet[sw].tGocSet.bTT_gooseFA)
+        #define BH_GOOSE_EN(sw)         (BH_GOOSE_EN_YB(sw))
+        #define BH_GOOSE_COMMERR(sw)    (false)
+        #define BH_ALL_2(sw)            (FUN_ALL_EN(sw) && pRunSet->tSwSet[sw].btt_gnyb_cg && g_tRelay[sw].run_stu.cgbhtt && (!BH_GOOSE_EN(sw)))
+        #define BH_ALL_EN(sw)           (BH_ALL_2(sw) || JZS_ALL_EN(sw))
+        #define FA_ALL_EN(sw)           (FUN_ALL_EN(sw) && pRunSet->tSwSet[sw].btt_gnyb_fa && g_tRelay[sw].run_stu.fatt && (!BH_GOOSE_EN(sw)))
+    #endif
 #endif
 
-//重合闸压板
-#define     CHZ_ALL_EN(sw)      (pRunSet->bTT_CHZ_YB && g_tRelay[sw].run_stu.chzyb && !g_tRelay[sw].run_stu.bsch)//BH_ALL_EN(sw) &&
-
-//同期压板
-#define 	TQ_ALL_EN(sw)		(FUN_ALL_EN(sw) && pRunSet->bTT_TQ_YB)
-//解列压板
-#define 	JL_ALL_EN(sw)		(FUN_ALL_EN(sw) && pRunSet->bTT_JL_YB)
-
-//同期合闸软压板
-#define     TYTQ_ALL_EN(sw) (!FUN_ALL_EN(sw) || !pRunSet->bTT_TQ_YB)
+// 重合闸压板
+#define CHZ_ALL_EN(sw)              (pRunSet->tSwSet[sw].btt_gnyb_zdchz && g_tRelay[sw].run_stu.chzyb && !g_tRelay[sw].run_stu.bsch)
 
-//定值时间判断
-#define 	BH_WAVETIME_EN(dSetTime)	((dSetTime>=(T_10ms*10))?1:0)
+// 同期合闸软压板
+#define TYTQ_ALL_EN(sw)             (!FUN_ALL_EN(sw) || !pRunSet->tSwSet[sw].btt_gnyb_tqhz)
 
+// 解列压板
+#define JL_ALL_EN(sw)               (FUN_ALL_EN(sw) && pRunSet->tSwSet[sw].btt_gnyb_zdjl)
 
+// 定值时间判断
+#define BH_WAVETIME_EN(dSetTime) ((dSetTime >= (T_10ms * 10)) ? 1 : 0)
 
 // 取相量模值
 #define    	SQR(a,b)       (a*a + b*b)

+ 2 - 2
dtu/dtu_main_t536/app/reclose.c

@@ -267,7 +267,7 @@ static void AR_Recharge(int sw,DWORD  dStep)
 	pSW->sta.bFlag.bFDBZ = (!BH_ALL_EN(sw))							// 总保护未投入
 							|| (!KZ_OUT_ALL_EN(sw))					// 控制出口未投入
 							|| (!pSet->bTT_CHZ)                         // 软压板: 重合闸未投入
-							|| (!pRunSet->bTT_CHZ_YB)			// 重合闸软压板未投入
+							|| (!pRunSet->tSwSet[sw].btt_gnyb_zdchz)			// 重合闸软压板未投入
 							|| (!pR->run_stu.chzyb)			// 重合闸硬压板未投入
 							|| bHCD1 
 							|| bHCD2
@@ -489,7 +489,7 @@ static void AR_Logic(int sw,DWORD  dStep)
 	// 重合闸条件准备
 	bHZL1 = (BH_ALL_EN(sw)				// 总投退
 			&& pSet->bTT_CHZ         	// 软压板: 重合闸投
-			&& pRunSet->bTT_CHZ_YB		// 软压板: 重合闸投
+			&& pRunSet->tSwSet[sw].btt_gnyb_zdchz		// 软压板: 重合闸投
 			&& pR->run_stu.chzyb			// 重合闸硬压板投入
 			&& ((pSW->sta.bFlag.bCHQD   // 三相启动重合闸							
 				&& pSW->sta.bFlag.bCDWC)		  // 重合闸充电完成

+ 5 - 5
dtu/dtu_main_t536/app/run_status.c

@@ -282,7 +282,7 @@ int run_status_init(void)
 		// ±£»¤Í¶ÍËÎÞÅäÖã¬ÖúÏ
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] == INDEX_INVALLID)
 		{
-			prun->bhtt = prun->bhztt;
+			prun->cgbhtt = prun->bhztt;
 		}
 
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_JZS_TT] == INDEX_INVALLID)
@@ -591,7 +591,7 @@ int  run_status_check(u32 dStep)
 		TSWST *pSWST =&g_tRelay[sw].tSWST;
 		bool  pt1cyy,pt2cyy;
 
-		static bool bhtt,fatt,fa_g_tt,fa_ls;
+		static bool cgbhtt,fatt,fa_g_tt,fa_ls;
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_KRHW] != INDEX_INVALLID)
 		{
 			//g_run_stu.hw[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_KRHW))?1:0;
@@ -738,7 +738,7 @@ int  run_status_check(u32 dStep)
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_BHTT] != INDEX_INVALLID)
 		{
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_BHTT]];
-			prun->bhtt = dido_di_is_on(ecd->slot,ecd->index)&&prun->bhztt;
+			prun->cgbhtt = dido_di_is_on(ecd->slot,ecd->index)&&prun->bhztt;
 			prun->bh_yx = dido_di_is_on(ecd->slot,ecd->index);
 		}
 
@@ -813,12 +813,12 @@ int  run_status_check(u32 dStep)
 		RunTR(&pSW->tTRunST_20s1s,pSW->uSWST.bFlag.bTZWZ,dStep);                                                                      
 		pSW->uSWST.bFlag.bSHJS = pSW->tTRunST_20s1s.boolTrip                     
 			                 && (!pSW->uSWST.bFlag.bTZWZ); 
-		if((bhtt!=prun->bhtt)
+		if((cgbhtt!=prun->cgbhtt)
 			||(fatt!=prun->fatt)
 			||(fa_g_tt!=prun->fa_g_tt)
 			||(fa_ls!=prun->fa_ls))
 		{
-			bhtt=prun->bhtt;
+			cgbhtt=prun->cgbhtt;
 			fatt=prun->fatt;
 			fa_g_tt=prun->fa_g_tt;
 			fa_ls=prun->fa_ls;

+ 14 - 16
dtu/dtu_main_t536/app/run_status.h

@@ -130,19 +130,19 @@ typedef struct run_stu_sw
 
     u8 hzw;
     u8 tzw;
-    u8 wcn;   // 未储能
-    u8 gld;        // 隔离刀闸
-    u8 jdd;        // 接地刀闸
-    u8 qyd_bs;     // 气压低闭锁
-    u8 qyd_gj;     // 气压低告警
-    u8 pt1uf; // PT1瞬压
-    u8 pt2uf; // PT2瞬压
-    u8 sw_sh; // 手合
-    u8 sw_sf; // 手分
-    u8 bhztt; // 保护总投退
-
-    u8 jzs_tt; // 集中式投退
-    u8 bhtt;        // 常规保护投退
+    u8 wcn;    // 未储能
+    u8 gld;    // 隔离刀闸
+    u8 jdd;    // 接地刀闸
+    u8 qyd_bs; // 气压低闭锁
+    u8 qyd_gj; // 气压低告警
+    u8 pt1uf;  // PT1瞬压
+    u8 pt2uf;  // PT2瞬压
+    u8 sw_sh;  // 手合
+    u8 sw_sf;  // 手分
+    u8 bhztt;  // 保护总投退
+
+    u8 jzs_tt;      // 集中式投退
+    u8 cgbhtt;      // 常规保护投退
     u8 fatt;        // fa功能跟投退
     u8 fa_g_tt;     // 智能 fa功能跟投退
     u8 fa_ls;       // 联络分段
@@ -178,9 +178,7 @@ typedef struct run_stu_sw
 
     u8 gldz; // 隔离刀闸
     u8 jddz; // 接地刀闸
-}RUN_STU_SW;
-
-
+} RUN_STU_SW;
 
 struct rmt_oprate
 {

+ 131 - 234
dtu/dtu_main_t536/app/set.c

@@ -459,7 +459,7 @@ const  SET_LIST JMList[]=
 const  SET_LIST TULF8List[]=
 {
 	{"G B K ",    0,},
-	{"Utf-8 ", 1,},	
+	{"UTF-8 ", 1,},	
 	{"UNICODE", 2,},	
 };
 #define TULF8ListNum	sizeof(TULF8List)/sizeof(SET_LIST)
@@ -952,10 +952,8 @@ const TSETTABLE tSwSetTable[] = // min 	 max 		     default
         {SETTYPE_F,     SET_S,      0,      100.0,              100.0,  0,          0,              GROUP_SET_GOOSEDZ,      0x0000, FLOAT_R, "零序电流跳闸延时"},
         {SETTYPE_F,     SET_S,      0.00,   100.0,              0.1,    0,          0,              GROUP_SET_GOOSEDZ,      0x0000, FLOAT_R, "故障点下游开关隔离时间"},
         {SETTYPE_F,     SET_S,      0.01,   100.0,              1.0,    0,          0,              GROUP_SET_GOOSEDZ,      0x0000, FLOAT_R, "首开关失压跳闸时限"},
-        #ifdef GD_AREA_ECZD_CHAOZHOU_2022
-            {SETTYPE_F,     SET_S,      0.01,   100.0,              5.0,    0,          0,              GROUP_SET_GOOSEDZ,      0x0000, FLOAT_R, "供电恢复时限"},
-            {SETTYPE_LIST,  SET_NULL,   0,      TGooseKGNum - 1,    1,      TGooseKG,   TGooseKGNum,    GROUP_SET_GOOSEDZ,      0x0000, UINT_R, "本接点开关类型"},
-        #endif
+        {SETTYPE_F,     SET_S,      0.01,   100.0,              5.0,    0,          0,              GROUP_SET_GOOSEDZ,      0x0000, FLOAT_R, "供电恢复时限"},
+        {SETTYPE_LIST,  SET_NULL,   0,      TGooseKGNum - 1,    1,      TGooseKG,   TGooseKGNum,    GROUP_SET_GOOSEDZ,      0x0000, UINT_R, "本接点开关类型"},
         {SETTYPE_LIST,  SET_NULL,   0,      FAKGTYPENum - 1,    1,      FAKGTYPE,   FAKGTYPENum,    GROUP_SET_GOOSEDZ,      0x0000, UINT_R, "开关位置类型"},
     #else
         {SETTYPE_F,     SET_U,      0.0,    330.0,              30.0,   0,          0,              GROUP_SET_GOOSEDZ,      0x0000, FLOAT_R, "无压定值"},
@@ -1217,7 +1215,6 @@ const TSETTABLE tCstSetTable[] =
     {SETTYPE_F,     SET_S,      0.01,   0.1,                0.040,  0,          0,              GROUP_CSTSET_FA,        0x0000, FLOAT_R, "goose判断时间"},
     {SETTYPE_LIST,  SET_NULL,   0,      TTListNum - 1,      0,      TTList,     TTListNum,      GROUP_CSTSET_FA,        0x0000, BOOL_R, "负荷开关goose发布"},
     {SETTYPE_LIST,  SET_NULL,   0,      TTListNum - 1,      0,      TTList,     TTListNum,      GROUP_CSTSET_FA,        0x0000, BOOL_R, "goose发布在故障确认后"},
-    {SETTYPE_F,     SET_S,      0.00,   10.0,               0.0,    0,          0,              GROUP_CSTSET_FA,        0x0000, FLOAT_R, "短时失压闭锁时间"},
     {SETTYPE_F,     SET_S,      0.00,   10.0,               6.0,    0,          0,              GROUP_CSTSET_FA,        0x0000, FLOAT_R, "单侧来电解锁时间"},
     {SETTYPE_LIST,  SET_NULL,   0,      TTListNum - 1,      0,      TTList,     TTListNum,      GROUP_CSTSET_FA,        0x0000, BOOL_R, "FA闭锁合闸禁止遥合"},
 #ifdef FA_PL_PJ
@@ -2342,7 +2339,6 @@ bool MakeRunSet(bool bFirst)
     ptSet->dT_sendext = GetSetTIME(psetbuf[CSTSET_GOOSE_SENDEXT_T].ff);
     ptSet->dT_goosecheck = GetSetTIME(psetbuf[CSTSET_GOOSE_CHECK_T].ff);
     ptSet->bTT_fhkg_pub = ((WORD)psetbuf[CSTSET_GOOSE_FHKG_PUB].ff == 1) ? true : false; // 负荷开关发送goose投退
-    ptSet->dT_bs_lost = GetSetTIME(psetbuf[CSTSET_SHORT_BS_LOST_T].ff);
     ptSet->dT_ldjs = GetSetTIME(psetbuf[CSTSET_SHORT_LDJS_T].ff);
     ptSet->bTT_bs_ykon = ((WORD)psetbuf[CSTSET_BS_YKON_TT].ff == 1) ? true : false;
     ptSet->bTT_goose_send_after = (((WORD)psetbuf[CSTSET_GOOSE_SEND_FAULT].ff == 1) ? true : false); //
@@ -2399,10 +2395,6 @@ bool MakeRunSet(bool bFirst)
     ptSet->bTT_ShowOne = ((WORD)psetbuf[CSSET_DISP_ONE_TWO].ff == 1) ? true : false;
     ptSet->dDc_num = (DWORD)(psetbuf[CSSET_SET_DC_NUM].ff); // 直流通道数量
 
-    { // ptSet->bYX_AC:未投入定值时,以通道配置的判断为准;投入定值时,以定值为准
-        ptSet->bYX_AC = gb_yx_ac;
-    }
-
 #ifdef YC_QUANTITY
     ptSet->dYC_num = (DWORD)(psetbuf[CSSET_YC_NUM].ff); // 每间隔遥参数量
 #endif
@@ -2502,58 +2494,11 @@ bool MakeRunSet(bool bFirst)
 #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN_2020 // 中山局将此定值放至公共定值
     for (sw = 0; sw < SWITCH_NUM_MAX; sw++)
     {
-        ptSet->tSwSet[sw].bTT_KZHL = (((WORD)psetbuf[SET_TT_KZHL].ff == 1) ? true : false); //&ptSet->bFUN_TWCN;	//控制回路
+        ptSet->tSwSet[sw].bTT_KZHL = (((WORD)psetbuf[SET_TT_KZHL].ff == 1) ? true : false); // 控制回路
 #ifdef YF_TQ_JL_TY_PUBLIC
         ptSet->tSwSet[sw].bTT_BH_ALL_YB = (((WORD)psetbuf[SET_BH_YB].ff == 0) ? true : false); // 停用压板
 #endif
     }
-
-#if defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN_2020
-    // 软压板状态处理
-    ptSet->bTT_BH_YB = true;
-    ptSet->bTT_SOFT_YK_YB = true;
-    ptSet->bTT_SOFT_JZS_YB = false;
-
-#ifdef defined GD_AREA_ZHONGSHAN_2020 || (defined GD_AREA_ECZD_2020)
-    ptSet->bTT_SOFT_BH_YB = ((WORD)psetbuf[SET_BH_YBTT].ff == 1) ? true : false;
-    ptSet->bTT_SOFT_FA_YB = ((WORD)psetbuf[SET_FA_YBTT].ff == 1) ? true : false;
-    ptSet->bTT_SOFT_GOOSE_YB = ((WORD)psetbuf[SET_GOOSE_YBTT].ff == 1) ? true : false;
-#else
-    ptSet->bTT_SOFT_GOOSE_YB = true;
-    ptSet->bTT_SOFT_FA_YB = true;
-    ptSet->bTT_SOFT_BH_YB = true;
-#endif
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-    ptSet->bTT_SOFT_BH_YB_PUB = ((WORD)psetbuf[SET_BH_YBTT].ff == 1) ? true : false;
-    ptSet->bTT_SOFT_FA_YB_PUB = ((WORD)psetbuf[SET_FA_YBTT].ff == 1) ? true : false;
-    ptSet->bTT_SOFT_GOOSE_YB_PUB = ((WORD)psetbuf[SET_GOOSE_YBTT].ff == 1) ? true : false;
-#endif
-    ptSet->bTT_KZ_YB = ((WORD)psetbuf[SET_KZ_OUT_YB].ff == 1) ? true : false;
-#ifdef YF_TQ_JL_TY_PUBLIC
-    ptSet->bTT_TQ_YB = ((WORD)psetbuf[SET_TQ_YB].ff == 1) ? true : false; // 同期合闸软压板
-#else
-#ifdef FUNC_TQ_JL_PUBLIC
-    ptSet->bTT_TQ_YB = ((((WORD)psetbuf[SET_TQ_YB].ff == 1) ? true : false) && (((WORD)psetbuf[SET_TQ_YB_PUB].ff == 1) ? true : false)); // !!!解列压板
-#else
-    ptSet->bTT_TQ_YB = ((WORD)psetbuf[SET_TQ_YB].ff == 1) ? true : false; // 同期合闸软压板
-#endif
-#endif
-
-#ifdef YF_TQ_JL_TY_PUBLIC
-    ptSet->bTT_JL_YB = ((WORD)psetbuf[SET_JL_YB].ff == 1) ? true : false; // 解列压板
-#else
-#ifdef FUNC_TQ_JL_PUBLIC
-    ptSet->bTT_JL_YB = ((((WORD)psetbuf[SET_JL_YB].ff == 0) ? true : false) && (((WORD)psetbuf[SET_JL_YB_PUB].ff == 1) ? true : false)); // !!!解列压板(停用)
-#else
-    ptSet->bTT_JL_YB = ((WORD)psetbuf[SET_JL_YB].ff == 0) ? true : false; // !!!解列压板(停用)
-#endif
-#endif
-
-#ifdef YF_TQ_JL_TY_PUBLIC
-    ptSet->bTT_EDIT_YB = ((WORD)psetbuf[SET_YF].ff == 1) ? true : false; // 远方投退软压板
-#endif
-
-#endif
 #endif
 
     for (i = 0; i < VOL_NUMBER; i++)
@@ -2685,17 +2630,43 @@ bool MakeRunSet(bool bFirst)
         fKI0 = (float)(g_ui[ui_begin + SW_AC_I0].m2_factor_k) / 256.0;
 
         fresh_sw_ac_set(psetbuf, sw); // 将定值刷新到测量值中
+        
+        /* 压板 */
+        {
+            ptSet->tSwSet[sw].btt_gnyb_cg = (((WORD)psetbuf[SET_BH_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false);     // 常规保护投入
+            ptSet->tSwSet[sw].btt_gnyb_zdchz = (((WORD)psetbuf[SET_CHZ_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);   // 自动重合闸投入
+            ptSet->tSwSet[sw].btt_gnyb_fa = (((WORD)psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false);     // 就地馈线自动化投入
+            ptSet->tSwSet[sw].btt_gnyb_dfa = (((WORD)psetbuf[SET_GOOSE_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 智能分布式投入
+            // ptSet->tSwSet[sw].btt_gnyb_jzs = (((WORD)psetbuf[SET_MODE_JZS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);  // 集中模式压板
+            ptSet->tSwSet[sw].btt_gnyb_jzs = false;                                                                         // 集中模式压板
+            ptSet->tSwSet[sw].btt_gnyb_tqhz = (((WORD)psetbuf[SET_TQ_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);     // 同期合闸投入
+            ptSet->tSwSet[sw].btt_gnyb_zdjl = (((WORD)psetbuf[SET_JL_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);     // 自动解列投入
+            ptSet->tSwSet[sw].btt_gnyb_xdljd = (((WORD)psetbuf[SET_XDL_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);   // 小电流接地保护投入
+            ptSet->tSwSet[sw].btt_gnyb_xldxgj = (((WORD)psetbuf[SET_LA_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);   // 线路断线告警投入
+            ptSet->tSwSet[sw].btt_gnyb_btdcd = (((WORD)psetbuf[SET_TRASW_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 不停电传动投入
+
+            ptSet->tSwSet[sw].btt_yxyb_gnztt = (((WORD)psetbuf[SET_BH_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);     // 自动化功能总投退软压板
+            ptSet->tSwSet[sw].btt_yxyb_gnzck = (((WORD)psetbuf[SET_KZ_OUT_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 自动化功能总出口软压板
+            ptSet->tSwSet[sw].btt_yxyb_chz = (((WORD)psetbuf[SET_RECS_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false);     // 重合闸软压板
+
+            mode_total = (BYTE)(psetbuf[SET_BH_YBTT + sw * SW_SET_NUMBER].ff + psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff + psetbuf[SET_GOOSE_YBTT + sw * SW_SET_NUMBER].ff);
+            if (mode_total > 1)
+            { // 当前只允许一种功能模式投入运行
+                ptSet->tSwSet[sw].btt_gnyb_cg = false;
+                ptSet->tSwSet[sw].btt_gnyb_fa = false;
+                ptSet->tSwSet[sw].btt_gnyb_dfa = false;
+            }
+
+#ifdef YK_SOFT_YB // 遥控压板
+            ptSet->bTT_SOFT_YK_YB = ((WORD)psetbuf[SET_YK_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
+#endif
+        }
 
         // 过流类定值
         {
             poc = &ptSet->tSwSet[sw].toc[BH_GL1];
-#if defined GD_AREA_ECZD_2020
-            poc->bTz = (((WORD)psetbuf[SET_GL1_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_GL1_TT + sw * SW_SET_NUMBER].ff == 0) ? true : false);
-#else
-            poc->bTz = (((WORD)psetbuf[SET_GL1_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_GL1_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-#endif
+            poc->bTz = (((WORD)psetbuf[SET_GL1_TT + sw * SW_SET_NUMBER].ff == 2) ? true : false);
+            poc->bGj = (((WORD)psetbuf[SET_GL1_TT + sw * SW_SET_NUMBER].ff == 0) ? false : true);
             poc->bDir = (((WORD)psetbuf[SET_GL1_DIR + sw * SW_SET_NUMBER].ff == 1) ? true : false);
             poc->dT = GetSetTIME(psetbuf[SET_GL1_T + sw * SW_SET_NUMBER].ff);
 #ifdef OCI_XB_0MS
@@ -2705,41 +2676,54 @@ bool MakeRunSet(bool bFirst)
                 poc->dT = GetSetTIME(0.026);
             }
 #endif
-
             poc->dI = GetSetSQR(psetbuf[SET_GL1_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//过流定值返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
 
             poc = &ptSet->tSwSet[sw].toc[BH_GL2];
-#if defined GD_AREA_ECZD_2020 // 广东标准2020要求告警+跳闸两个选项 跳闸包含跳闸和告警
             poc->bTz = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 0) ? true : false);
-#else
-            poc->bTz = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_GL2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-#endif
+            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);
             poc->dI = GetSetSQR(psetbuf[SET_GL2_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//过流2定值返回值
-
-            poc = &ptSet->tSwSet[sw].toc[BH_DLBS];
-            poc->bGj = (((WORD)psetbuf[SET_BH_DLBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bTz = (((WORD)psetbuf[SET_BH_DLBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->dI = GetSetSQR(psetbuf[SET_BH_DLBS_I + sw * SW_SET_NUMBER].ff, fKI);
             poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
 
             poc = &ptSet->tSwSet[sw].toc[BH_GL3];
-            poc->bTz = false;
-            poc->bGj = false;
-            poc->bDir = false;
-
             poc->bTz = (((WORD)psetbuf[SET_GL3_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_GL3_TT + sw * SW_SET_NUMBER].ff == 1) ? 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);
             poc->dI = GetSetSQR(psetbuf[SET_GL3_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//过流2定值返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
+
+            poc = &ptSet->tSwSet[sw].toc[BH_LX1];
+            poc->bTz = (((WORD)psetbuf[SET_LX1_TT + sw * SW_SET_NUMBER].ff == 1) ? 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);
+            poc->dI = GetSetSQR(psetbuf[SET_LX1_I + sw * SW_SET_NUMBER].ff, fKI0);
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
+
+            poc = &ptSet->tSwSet[sw].toc[BH_LX2];
+            poc->bTz = (((WORD)psetbuf[SET_LX2_TT + sw * SW_SET_NUMBER].ff == 1) ? 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);
+            poc->dI = GetSetSQR(psetbuf[SET_LX2_I + sw * SW_SET_NUMBER].ff, fKI0);
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
+
+            poc = &ptSet->tSwSet[sw].toc[BH_LX3];
+            poc->bTz = (((WORD)psetbuf[SET_LX3_TT + sw * SW_SET_NUMBER].ff == 1) ? 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);
+            poc->dI = GetSetSQR(psetbuf[SET_LX3_I + sw * SW_SET_NUMBER].ff, fKI0);
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
+
+            poc = &ptSet->tSwSet[sw].toc[BH_DLBS]; //
+            poc->bGj = (((WORD)psetbuf[SET_BH_DLBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
+            poc->bTz = (((WORD)psetbuf[SET_BH_DLBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
+            poc->dI = GetSetSQR(psetbuf[SET_BH_DLBS_I + sw * SW_SET_NUMBER].ff, fKI);
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
 
             poc = &ptSet->tSwSet[sw].toc[BH_GLJS]; // 后加速,固定为过流1段定值
             poc->bTz = (((WORD)psetbuf[SET_GLJS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
@@ -2750,15 +2734,26 @@ bool MakeRunSet(bool bFirst)
                 poc->dI = GetSetSQR(psetbuf[SET_GLJS_I + sw * SW_SET_NUMBER].ff, fKI);
             else
                 poc->dI = GetSetSQR(psetbuf[SET_GL1_I + sw * SW_SET_NUMBER].ff, fKI);
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
+
+            poc = &ptSet->tSwSet[sw].toc[BH_LXJS];
+            poc->bTz = (((WORD)psetbuf[SET_GLJS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
+            poc->bGj = false;
+            poc->bDir = false;
+            poc->dT = GetSetTIME(psetbuf[SET_LXJS_T + sw * SW_SET_NUMBER].ff);
+            if (GetSetSQR(psetbuf[SET_LXJS_I + sw * SW_SET_NUMBER].ff, fKI0))
+                poc->dI = GetSetSQR(psetbuf[SET_LXJS_I + sw * SW_SET_NUMBER].ff, fKI0);
+            else
+                poc->dI = GetSetSQR(psetbuf[SET_LX1_I + sw * SW_SET_NUMBER].ff, fKI0);
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);
 
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;
             poc = &ptSet->tSwSet[sw].toc[BH_OVI_ZZ];
             poc->bGj = (((WORD)psetbuf[SET_DLZZ_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
             poc->bDir = false;
             poc->bTz = false;
             poc->dT = GetSetTIME(psetbuf[SET_DLZZ_T + sw * SW_SET_NUMBER].ff);
             poc->dI = GetSetSQR(psetbuf[SET_DLZZ_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;				//过流2定值返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
 
             poc = &ptSet->tSwSet[sw].toc[BH_OVI_GZ];
             poc->bGj = (((WORD)psetbuf[SET_DLGZ_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
@@ -2766,7 +2761,7 @@ bool MakeRunSet(bool bFirst)
             poc->bTz = false;
             poc->dT = GetSetTIME(psetbuf[SET_DLGZ_T + sw * SW_SET_NUMBER].ff);
             poc->dI = GetSetSQR(psetbuf[SET_DLGZ_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//过流2定值返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
 
             poc = &ptSet->tSwSet[sw].toc[BH_OVI];
             poc->bGj = (((WORD)psetbuf[SET_DLYX_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
@@ -2774,41 +2769,7 @@ bool MakeRunSet(bool bFirst)
             poc->bTz = false;
             poc->dT = GetSetTIME(psetbuf[SET_DLYX_T + sw * SW_SET_NUMBER].ff);
             poc->dI = GetSetSQR(psetbuf[SET_DLYX_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//过流2定值返回值
-
-            poc = &ptSet->tSwSet[sw].toc[BH_LX1];
-            poc->bTz = (((WORD)psetbuf[SET_LX1_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_LX1_TT + sw * SW_SET_NUMBER].ff == 0) ? true : false);
-            poc->bDir = false;
-            poc->dT = GetSetTIME(psetbuf[SET_LX1_T + sw * SW_SET_NUMBER].ff);
-            poc->dI = GetSetSQR(psetbuf[SET_LX1_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;
-
-            poc = &ptSet->tSwSet[sw].toc[BH_LX2];
-            poc->bTz = (((WORD)psetbuf[SET_LX2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = (((WORD)psetbuf[SET_LX2_TT + sw * SW_SET_NUMBER].ff == 0) ? true : false);
-            poc->bDir = false;
-            poc->dT = GetSetTIME(psetbuf[SET_LX2_T + sw * SW_SET_NUMBER].ff);
-            poc->dI = GetSetSQR(psetbuf[SET_LX2_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;
-            poc = &ptSet->tSwSet[sw].toc[BH_LX3];
-            poc->bTz = (((WORD)psetbuf[SET_LX3_TT + sw * SW_SET_NUMBER].ff == 1) ? 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);
-            poc->dI = GetSetSQR(psetbuf[SET_LX3_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;
-
-            poc = &ptSet->tSwSet[sw].toc[BH_LXJS];
-            poc->bTz = (((WORD)psetbuf[SET_GLJS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            poc->bGj = false;
-            poc->bDir = false;
-            poc->dT = GetSetTIME(psetbuf[SET_LXJS_T + sw * SW_SET_NUMBER].ff);
-            if (GetSetSQR(psetbuf[SET_LXJS_I + sw * SW_SET_NUMBER].ff, fKI0))
-                poc->dI = GetSetSQR(psetbuf[SET_LXJS_I + sw * SW_SET_NUMBER].ff, fKI0);
-            else
-                poc->dI = GetSetSQR(psetbuf[SET_LX1_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
 
             poc = &ptSet->tSwSet[sw].toc[BH_OVI0];
             poc->bGj = (((WORD)psetbuf[SET_LXYX_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
@@ -2816,7 +2777,7 @@ bool MakeRunSet(bool bFirst)
             poc->bTz = false;
             poc->dT = GetSetTIME(psetbuf[SET_LXYX_T + sw * SW_SET_NUMBER].ff);
             poc->dI = GetSetSQR(psetbuf[SET_LXYX_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//过流2定值返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 返回值
         }
         // 智能分布式定值
         {
@@ -2840,16 +2801,16 @@ bool MakeRunSet(bool bFirst)
 #endif
 
             poc->dIgl = GetSetSQR(psetbuf[SET_GOOSET_GL_I + sw * SW_SET_NUMBER].ff, fKI); // 过流定值
-            poc->dIgl_fh = _Mul_Div_U(poc->dIgl, 96, 100);                                // 0.96=0.98*0.98;        		        //过流定值返回值
+            poc->dIgl_fh = _Mul_Div_U(poc->dIgl, 96, 100);                                // 过流定值返回值
             poc->dTgl = GetSetTIME(psetbuf[SET_GOOSET_GL_T + sw * SW_SET_NUMBER].ff);
 
             poc->dIlx = GetSetSQR(psetbuf[SET_GOOSET_LX_I + sw * SW_SET_NUMBER].ff, fKI0); // 零序定值
-            poc->dIlx_fh = _Mul_Div_U(poc->dIlx, 96, 100);                                 // 0.96=0.98*0.98;        		        //零序定值返回值
+            poc->dIlx_fh = _Mul_Div_U(poc->dIlx, 96, 100);                                 // 零序定值返回值
             poc->dTlx = GetSetTIME(psetbuf[SET_GOOSET_GL_T + sw * SW_SET_NUMBER].ff);      // 2020指导意见默认只有一个时限,共用 "故障跳闸时限"
 
 #if defined GD_AREA_ZHONGSHAN_2020
             poc->dIgl2 = GetSetSQR(psetbuf[SET_GOOSET_GL2_I + sw * SW_SET_NUMBER].ff, fKI); // 过流2定值
-            poc->dIgl2_fh = _Mul_Div_U(poc->dIgl2, 96, 100);                                // 0.96=0.98*0.98;                   //过流2定值返回值
+            poc->dIgl2_fh = _Mul_Div_U(poc->dIgl2, 96, 100);                                // 返回值
             poc->dTgl2 = GetSetTIME(psetbuf[SET_GOOSET_GL2_T + sw * SW_SET_NUMBER].ff);
             poc->dTlx = GetSetTIME(psetbuf[SET_GOOSET_LX_T + sw * SW_SET_NUMBER].ff);                             // 中山分开零序延时
             poc->bKg_mainloop = (((WORD)psetbuf[SET_GOOSE_KG_TYPE + sw * SW_SET_NUMBER].ff == 0) ? true : false); // 主环开关
@@ -2861,8 +2822,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); // 智能分布式投退
@@ -2872,16 +2833,16 @@ bool MakeRunSet(bool bFirst)
             poc->bsw_ll = (((WORD)psetbuf[SET_GOOSE_FTU_TYPE + sw * SW_SET_NUMBER].ff == 3) ? true : false);   // 联络
 
             poc->dIgl = GetSetSQR(psetbuf[SET_GOOSET_GL_I + sw * SW_SET_NUMBER].ff, fKI); // 过流定值
-            poc->dIgl_fh = _Mul_Div_U(poc->dIgl, 96, 100);                                // 0.96=0.98*0.98;        		        //过流定值返回值
+            poc->dIgl_fh = _Mul_Div_U(poc->dIgl, 96, 100);                                // 过流定值返回值
             poc->dTgl = GetSetTIME(psetbuf[SET_GOOSET_GL_T + sw * SW_SET_NUMBER].ff);
 #ifdef GD_AREA_ZHONGSHAN
             poc->dIgl2 = GetSetSQR(psetbuf[SET_GOOSET_GL2_I + sw * SW_SET_NUMBER].ff, fKI); // 过流2定值
-            poc->dIgl2_fh = _Mul_Div_U(poc->dIgl2, 96, 100);                                // 0.96=0.98*0.98;        		    //过流2定值返回值
+            poc->dIgl2_fh = _Mul_Div_U(poc->dIgl2, 96, 100);                                // 返回值
             poc->dTgl2 = GetSetTIME(psetbuf[SET_GOOSET_GL2_T + sw * SW_SET_NUMBER].ff);
 #endif
 
             poc->dIlx = GetSetSQR(psetbuf[SET_GOOSET_LX_I + sw * SW_SET_NUMBER].ff, fKI0); // 零序定值
-            poc->dIlx_fh = _Mul_Div_U(poc->dIlx, 96, 100);                                 // 0.96=0.98*0.98;        		        //零序定值返回值
+            poc->dIlx_fh = _Mul_Div_U(poc->dIlx, 96, 100);                                 // 零序定值返回值
             poc->dTlx = GetSetTIME(psetbuf[SET_GOOSET_LX_T + sw * SW_SET_NUMBER].ff);
 
             poc->dTsdlost = GetSetTIME(psetbuf[SET_GOOSET_SDLOST_T + sw * SW_SET_NUMBER].ff);                        // 首端失压时间
@@ -2908,12 +2869,13 @@ bool MakeRunSet(bool bFirst)
             bool bch1, bch2, bch3;
             bch1 = (((WORD)psetbuf[SET_CH1_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 一次重合闸
             bch2 = (((WORD)psetbuf[SET_CH2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 二次重合闸
-            bch3 = false;
 #ifdef DISP_SET_CH_T3
             bch3 = (((WORD)psetbuf[SET_CH3_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 多次重合闸
+#else
+            bch3 = false;
 #endif
             ptSet->tSwSet[sw].bTT_CHZ = bch1 || bch2 || bch3;
-            ptSet->tSwSet[sw].bTT_chz_tq = (((WORD)psetbuf[SET_CH_TQ + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 同期重合闸
+            ptSet->tSwSet[sw].bTT_chz_tq = (((WORD)psetbuf[SET_CH_TQ + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 重合检同期
 #ifdef CHZ_JWY_LM
             ptSet->tSwSet[sw].bTT_chz_mwy = (((WORD)psetbuf[SET_CH_MWY + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 检母线无压
             ptSet->tSwSet[sw].bTT_chz_lwy = (((WORD)psetbuf[SET_CH_XWY + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 检线路无压
@@ -2924,13 +2886,13 @@ bool MakeRunSet(bool bFirst)
             ptSet->tSwSet[sw].bTT_TTCH_TT = (((WORD)psetbuf[SET_TTCH_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 偷跳启动重合
             ptSet->tSwSet[sw].dT_chz[0] = GetSetTIME(psetbuf[SET_CH_T1 + sw * SW_SET_NUMBER].ff);
             ptSet->tSwSet[sw].dT_chz[1] = GetSetTIME(psetbuf[SET_CH_T2 + sw * SW_SET_NUMBER].ff);
-            ptSet->tSwSet[sw].dT_chz[2] = 0;
-            ptSet->tSwSet[sw].dT_ch_gl_tt = (((WORD)psetbuf[SET_CH_GL_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            ptSet->tSwSet[sw].dT_ch_jd_tt = (((WORD)psetbuf[SET_CH_JD_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-
 #ifdef DISP_SET_CH_T3
             ptSet->tSwSet[sw].dT_chz[2] = GetSetTIME(psetbuf[SET_CH_T3 + sw * SW_SET_NUMBER].ff);
+#else
+            ptSet->tSwSet[sw].dT_chz[2] = 0;
 #endif
+            ptSet->tSwSet[sw].dT_ch_gl_tt = (((WORD)psetbuf[SET_CH_GL_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
+            ptSet->tSwSet[sw].dT_ch_jd_tt = (((WORD)psetbuf[SET_CH_JD_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
 #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);
@@ -2969,7 +2931,7 @@ bool MakeRunSet(bool bFirst)
             ptSet->tSwSet[sw].dRVS_MAX_T = GetSetTIME(9999);                                // 反时限最长时间
         }
 
-        ptSet->tSwSet[sw].d_bh_xbcoe = GetSetSQR(psetbuf[SET_BH_XBCOE + sw * SW_SET_NUMBER].ff, 256);
+        ptSet->tSwSet[sw].d_bh_xbcoe = GetSetSQR(psetbuf[SET_BH_XBCOE + sw * SW_SET_NUMBER].ff, 256); // 二次谐波闭锁系数
         ptSet->tSwSet[sw].bTT_bh_ptdx = (((WORD)psetbuf[SET_BH_PTDX + sw * SW_SET_NUMBER].ff == 1) ? true : false);    // PT断线检查
         ptSet->tSwSet[sw].bTT_bh_xbbs = (((WORD)psetbuf[SET_BH_XBBS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false); // 谐波闭锁
         // 同期
@@ -3051,8 +3013,8 @@ bool MakeRunSet(bool bFirst)
 #endif
 
 #ifdef FUNC_DRIVE
-        ptSet->bTT_DRIVE = ((WORD)psetbuf[SET_XDL_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false; // 不停电传动功能软压板
-        fresh_set_soe(EV_DRIVE, ptSet->bTT_DRIVE, bFirst, 0);
+        ptSet->tSwSet[sw].btt_gnyb_btdcd = ((WORD)psetbuf[SET_XDL_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false; // 不停电传动功能软压板
+        fresh_set_soe(EV_DRIVE, ptSet->tSwSet[sw].btt_gnyb_btdcd, bFirst, 0);
         for (sw = 0; sw < SWITCH_NUM_MAX; sw++)
         {
             ptSet->tSwSet[sw].dT_Drive_hz = GetSetTIME(psetbuf[SET_DRIVE_HZ_T + sw * SW_SET_NUMBER].ff);
@@ -3066,7 +3028,7 @@ bool MakeRunSet(bool bFirst)
         ptSet->tSwSet[sw].dIBSCHZ = GetSetSQR(psetbuf[SET_CH_DLBS_I + sw * SW_SET_NUMBER].ff, fKI);
         ptSet->tSwSet[sw].dT_chz_Topen = GetSetTIME(psetbuf[SET_CHZ_OPEN + sw * SW_SET_NUMBER].ff); // 重合闸开放时间,默认300秒
 
-        // 配网自动化功能
+        // FA
         {
             ptSet->tSwSet[sw].bTT_fa_poweron = ((DWORD)psetbuf[SET_P_YY_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
             ptSet->tSwSet[sw].bTT_fa_lineon = ((DWORD)psetbuf[SET_L_YY_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
@@ -3136,7 +3098,7 @@ bool MakeRunSet(bool bFirst)
 
             ptSet->tSwSet[sw].d_fa_xbcoe = GetSetSQR(psetbuf[SET_FA_XBCOE + sw * SW_SET_NUMBER].ff, 256);
             ptSet->tSwSet[sw].dU_OverU0 = GetSetSQR(psetbuf[SET_FA_U0_U + sw * SW_SET_NUMBER].ff, fKU[PUB_AC_U01]); //
-            ptSet->tSwSet[sw].dU_OverU0_fh = _Mul_Div_U(ptSet->tSwSet[sw].dU_OverU0, 96, 100);                      // 0.96=0.98*0.98;
+            ptSet->tSwSet[sw].dU_OverU0_fh = _Mul_Div_U(ptSet->tSwSet[sw].dU_OverU0, 96, 100);                     
             ptSet->tSwSet[sw].dT_OverU0 = GetSetTIME(psetbuf[SET_FA_U0_T + sw * SW_SET_NUMBER].ff);
 #if defined GD_AREA_ECZD_2020
             ptSet->tSwSet[sw].dU_UF = GetSetSQR(0.20 * fUn, fKU[PUB_AC_UAB1]);             // 瞬压定值固定取20%额定值
@@ -3161,7 +3123,7 @@ bool MakeRunSet(bool bFirst)
             if (poc->dT < T_FA_TZ_MIN_TIME)
                 poc->dT = T_FA_TZ_MIN_TIME; // 不小于20ms
             poc->dI = GetSetSQR(psetbuf[SET_FA_GL_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);        		//返回值
 
             poc = &ptSet->tSwSet[sw].toc[FA_GL_II]; // 相间II段故障
             poc->bTz = ((((WORD)psetbuf[SET_GZCHECK_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false));
@@ -3194,7 +3156,7 @@ bool MakeRunSet(bool bFirst)
             poc->bGj = false;
             poc->dI = false;
 #endif
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);        		//返回值
 
             poc = &ptSet->tSwSet[sw].toc[FA_GL2]; // 相间告警
             poc->bTz = false;
@@ -3202,7 +3164,7 @@ bool MakeRunSet(bool bFirst)
             poc->bGj = (((WORD)psetbuf[SET_FA_GL2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
             poc->dT = GetSetTIME(psetbuf[SET_FA_GL2_T + sw * SW_SET_NUMBER].ff);
             poc->dI = GetSetSQR(psetbuf[SET_FA_GL2_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);        		//返回值
 #ifdef GD_AREA_ECZD_2020
             poc->dU = GetSetSQR(psetbuf[SET_FA_FHDDY + sw * SW_SET_NUMBER].ff * fUn / 100, fKU[PUB_AC_UAB1]);  // 低电压定值
             poc->dU_fh = _Mul_Div_U(poc->dU, 104, 100);                                                        // 返回值
@@ -3216,7 +3178,7 @@ bool MakeRunSet(bool bFirst)
             poc->bGj = false;
             poc->dT = GetSetTIME(0.00); // 大电流闭锁0毫秒
             poc->dI = GetSetSQR(psetbuf[SET_FA_DLBS_I + sw * SW_SET_NUMBER].ff, fKI);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);        		//返回值
 
             poc = &ptSet->tSwSet[sw].toc[FA_LX]; // 零序故障
             poc->bTz = (((WORD)psetbuf[SET_GZCHECK_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
@@ -3242,16 +3204,15 @@ bool MakeRunSet(bool bFirst)
             if (poc->dT < T_FA_TZ_MIN_TIME)
                 poc->dT = T_FA_TZ_MIN_TIME; // 不小于20ms
             poc->dI = GetSetSQR(psetbuf[SET_FA_LX_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);        		//返回值
 
             poc = &ptSet->tSwSet[sw].toc[FA_LX2]; // 零序告警
             poc->bTz = false;
             poc->bDir = false;
             poc->bGj = (((WORD)psetbuf[SET_FA_LX2_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false);
-            ;
             poc->dT = GetSetTIME(psetbuf[SET_FA_LX2_T + sw * SW_SET_NUMBER].ff);
             poc->dI = GetSetSQR(psetbuf[SET_FA_LX2_I + sw * SW_SET_NUMBER].ff, fKI0);
-            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100); // 0.96=0.98*0.98;        		//返回值
+            poc->dI_fh = _Mul_Div_U(poc->dI, 96, 100);        		//返回值
         }
 
         // 零序过电压投入
@@ -3272,76 +3233,12 @@ bool MakeRunSet(bool bFirst)
             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);
         }
-#if defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN_2020 // 2020二次指导意见软压板放到公共 2020-9-9
-        // 软压板状态处理
-        ptSet->bTT_CHZ_YB = ((WORD)psetbuf[SET_CHZ_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false; // 重合闸投入软压板
-#else
-        {
-            // 软压板状态处理
-            ptSet->bTT_SOFT_GOOSE_YB = true;
-            ptSet->bTT_SOFT_FA_YB = true;
-            ptSet->bTT_SOFT_BH_YB = true;
-            ptSet->bTT_EDIT_YB = true;
-            ptSet->bTT_KZ_YB = true;
-            ptSet->bTT_SOFT_YK_YB = true;
-            ptSet->bTT_SOFT_JZS_YB = false;
-            ptSet->bTT_BH_YB = true;
-            ptSet->bTT_TQ_YB = true;
-            ptSet->bTT_JL_YB = true;
-            // 装置软压板配置
-            ptSet->bTT_EDIT_YB = ((WORD)psetbuf[SET_EDIT_PAR_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-            ptSet->bTT_BH_YB = ((WORD)psetbuf[SET_BH_YB].ff == 1) ? true : false;
-            ptSet->bTT_KZ_YB = ((WORD)psetbuf[SET_KZ_OUT_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-
-            ptSet->bTT_CHZ_YB = ((WORD)psetbuf[SET_CHZ_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false; // 重合闸投入软压板
-            ptSet->bTT_TQ_YB = ((WORD)psetbuf[SET_TQ_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false;   // 同期合闸软压板
-
-#if (defined GD_AREA_ZHONGSHAN)
-            mode_total = (BYTE)(psetbuf[SET_BH_YBTT + sw * SW_SET_NUMBER].ff + psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff + psetbuf[SET_GOOSE_YBTT + sw * SW_SET_NUMBER].ff);
-            if (mode_total > 1)
-            { // 当前只允许一种功能模式投入运行
-                ptSet->bTT_SOFT_BH_YB = false;
-                ptSet->bTT_SOFT_FA_YB = false;
-                ptSet->bTT_SOFT_GOOSE_YB = false;
-            }
-            else
-            {
-                ptSet->bTT_SOFT_BH_YB = ((WORD)psetbuf[SET_BH_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-                ptSet->bTT_SOFT_FA_YB = ((WORD)psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-                ptSet->bTT_SOFT_GOOSE_YB = ((WORD)psetbuf[SET_GOOSE_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-            }
-#endif
 
-            ptSet->bTT_SOFT_JZS_YB = ((WORD)psetbuf[SET_MODE_JZS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-
-#ifdef YK_SOFT_YB // 遥控压板
-            ptSet->bTT_SOFT_YK_YB = ((WORD)psetbuf[SET_YK_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-#endif
-
-            ptSet->bTT_JL_YB = ((WORD)psetbuf[SET_JL_YB].ff == 1) ? true : false; //
-        }
-#endif
-
-#ifdef GD_AREA_ZHONGSHAN_2020                                                   // 中山智能分布式手合故障处理
+#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段定值
         ptSet->tSwSet[sw].tGocSet.tOc[FAG_LX] = ptSet->tSwSet[sw].toc[FA_LX];   // 使用FA零序定值
 #endif
-
-#ifdef CUSTOMIZE_BZT // 备自投
-
-        ptSet->tSwSet[sw].bBZT_TT = ((WORD)psetbuf[SET_BZT_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-        ptSet->tSwSet[sw].bFD = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 0) ? true : false;
-        ptSet->tSwSet[sw].bJX = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-        ptSet->tSwSet[sw].bAUTO = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 2) ? true : false;
-        //	ptSet->tSwSet[sw].bDJX   = ((WORD)psetbuf[SET_BZT_FS+sw*SW_SET_NUMBER].ff==3 )?true:false;
-        ptSet->tSwSet[sw].bZF = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 3) ? true : false;
-
-        // ptSet->tSwSet[sw].bZF 		= ((WORD)psetbuf[SET_BZF_TT+sw*SW_SET_NUMBER].ff==1 )?true:false;
-        ptSet->tSwSet[sw].dT_BTTZ = GetSetTIME(psetbuf[SET_BZTT_T + sw * SW_SET_NUMBER].ff);
-        ptSet->tSwSet[sw].dT_BTHZ = GetSetTIME(psetbuf[SET_BZTH_T + sw * SW_SET_NUMBER].ff);
-        ptSet->tSwSet[sw].dT_BTCD = GetSetTIME(psetbuf[SET_TCD + sw * SW_SET_NUMBER].ff);
-#endif
         // 其他定值
         {
             ptSet->tSwSet[sw].bTT_Current_Inv = ((WORD)psetbuf[SET_CURRENT_INV_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
@@ -3353,6 +3250,17 @@ bool MakeRunSet(bool bFirst)
             ptSet->tSwSet[sw].bTT_QYD_BS = ((WORD)psetbuf[SET_QYD_BS_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
             ptSet->tSwSet[sw].bTT_Power_v2 = false;
 #ifdef CUSTOMIZE_BZT // 备自投
+            ptSet->tSwSet[sw].bBZT_TT = ((WORD)psetbuf[SET_BZT_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
+            ptSet->tSwSet[sw].bFD = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 0) ? true : false;
+            ptSet->tSwSet[sw].bJX = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 1) ? true : false;
+            ptSet->tSwSet[sw].bAUTO = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 2) ? true : false;
+            //	ptSet->tSwSet[sw].bDJX   = ((WORD)psetbuf[SET_BZT_FS+sw*SW_SET_NUMBER].ff==3 )?true:false;
+            ptSet->tSwSet[sw].bZF = ((WORD)psetbuf[SET_BZT_FS + sw * SW_SET_NUMBER].ff == 3) ? true : false;
+
+            // ptSet->tSwSet[sw].bZF 		= ((WORD)psetbuf[SET_BZF_TT+sw*SW_SET_NUMBER].ff==1 )?true:false;
+            ptSet->tSwSet[sw].dT_BTTZ = GetSetTIME(psetbuf[SET_BZTT_T + sw * SW_SET_NUMBER].ff);
+            ptSet->tSwSet[sw].dT_BTHZ = GetSetTIME(psetbuf[SET_BZTH_T + sw * SW_SET_NUMBER].ff);
+            ptSet->tSwSet[sw].dT_BTCD = GetSetTIME(psetbuf[SET_TCD + sw * SW_SET_NUMBER].ff);
 
             // 母线pt1电压电压选择
             dw = (int)(psetbuf[SET_BZT_MX_PT1 + sw * SW_SET_NUMBER].ff);
@@ -3396,7 +3304,7 @@ bool MakeRunSet(bool bFirst)
             poc->dI = GetSetSQR(psetbuf[SET_GL1_I + sw * SW_SET_NUMBER].ff, fKI);
 
             ptSet->tSwSet[sw].dwl = GetSetSQR(psetbuf[SET_BZT_WL + sw * SW_SET_NUMBER].ff, fKI);
-            ptSet->tSwSet[sw].dwl_fh = _Mul_Div_U(ptSet->tSwSet[sw].dwl, 96, 100); // 0.96=0.98*0.98;
+            ptSet->tSwSet[sw].dwl_fh = _Mul_Div_U(ptSet->tSwSet[sw].dwl, 96, 100);
 #endif
         }
 
@@ -3404,21 +3312,8 @@ bool MakeRunSet(bool bFirst)
         ptSet->tSwSet[sw].bTT_PT2_ll_check = ((WORD)psetbuf[SET_PT2_LL_CHECK_TT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
 
         // 功能模块配置项目表
-        {
-            ptSet->bTT_SOFT_BH_YB = ((WORD)psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff == 0) ? true : false;
-            ptSet->bTT_SOFT_FA_YB = ((WORD)psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff == 1) ? true : false;
-            ptSet->bTT_SOFT_GOOSE_YB = ((WORD)psetbuf[SET_FA_YBTT + sw * SW_SET_NUMBER].ff == 2) ? true : false;
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-            ptSet->bTT_SOFT_BH_YB = ptSet->bTT_SOFT_BH_YB_PUB && ptSet->bTT_SOFT_BH_YB;
-            ptSet->bTT_SOFT_FA_YB = ptSet->bTT_SOFT_FA_YB_PUB && ptSet->bTT_SOFT_FA_YB;
-            ptSet->bTT_SOFT_GOOSE_YB = ptSet->bTT_SOFT_GOOSE_YB_PUB && ptSet->bTT_SOFT_GOOSE_YB;
-#endif
-            ptSet->bTT_TQ_YB = ((((WORD)psetbuf[SET_TQ_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false) && ptSet->bTT_TQ_YB);   // 检同期压板
-            ptSet->bTT_JL_YB = ((((WORD)psetbuf[SET_JL_YB + sw * SW_SET_NUMBER].ff == 1) ? true : false) && ptSet->bTT_JL_YB); // 解列压板
-            ptSet->tSwSet[sw].bTT_jl_dy = (ptSet->tSwSet[sw].bTT_jl_dy && ptSet->bTT_JL_YB);
-            ptSet->tSwSet[sw].bTT_jl_hz = (ptSet->tSwSet[sw].bTT_jl_hz && ptSet->bTT_JL_YB);
-            ptSet->bTT_BH_YB = ((((WORD)psetbuf[SET_BH_YB + sw * SW_SET_NUMBER].ff == 0) ? true : false) && ptSet->bTT_BH_YB); // 保护功能总压板
-        }
+        ptSet->tSwSet[sw].bTT_jl_dy = (ptSet->tSwSet[sw].bTT_jl_dy && ptSet->tSwSet[sw].btt_gnyb_zdjl);
+        ptSet->tSwSet[sw].bTT_jl_hz = (ptSet->tSwSet[sw].bTT_jl_hz && ptSet->tSwSet[sw].btt_gnyb_zdjl);
 
 #ifdef FUN_JDXX
         { // 接地选线定值
@@ -3479,6 +3374,7 @@ bool MakeRunSet(bool bFirst)
         ptSet->tSwSet[sw].dT_drive_again = GetSetTIME(psetbuf[SET_DRIVE_AGAIN_T + sw * SW_SET_NUMBER].ff);
 #endif
     }
+
     // 无压定值为0.3倍的电压值
     ptSet->dU02V_SQR = (DWORD)rt_round((0.8 * fKU[PUB_AC_U01]) * (0.8 * fKU[PUB_AC_U01])); // 16电压
 #if 0
@@ -3524,7 +3420,9 @@ bool MakeRunSet(bool bFirst)
 
     m_runsection = pRunSet->section;
 
+#if !defined CPU_FUXI
     create_set_data_txt();
+#endif
     return bRet;
 }
 
@@ -3559,7 +3457,6 @@ int print_EquipParaTable(void)
 		dat = (DWORD) psetbuf[i].ff;
 		rt_printf("%d\t%-20s\t\t", i+1, pTable->szName);
 
-
 		switch(pTable->wType)
 		{
 			case SETTYPE_F:

+ 197 - 205
dtu/dtu_main_t536/app/set.h

@@ -185,7 +185,7 @@ typedef struct BH_SET_GROUP
 {
     u8 group;     // 显示组定义
     u8 defval;    // 默认值
-    u8 set_yb;    //  关联压板
+    u8 set_yb;    // 关联压板
     u8 group_sub; // 显示组子类
     const char *group_name;
     const char *item_name;
@@ -328,7 +328,7 @@ enum
 // 线路定值
 enum
 {
-    SET_LABLE_YB_GN, // 列表名 功能软压板
+    SET_LABLE_YB_GN = 0, // 列表名 功能软压板
     SET_BH_YBTT,     // 常规保护投入
     SET_CHZ_YB,      // 自动重合闸投入
     SET_FA_YBTT,     // 就地馈线自动化投入
@@ -940,12 +940,11 @@ enum
 #endif
 
 #ifdef METERING_ENERGY
-                      //  历史记录文件定值
+    // 历史记录文件定值
     PARA_LABEL_HISFILE,  // 列表名
     PARA_YC_JG_T,        // 遥测定点间隔
     PARA_LL_FILE_TT,     // 线损文件投退
     PARA_LL_SW_ID,       // 开关ID
-    PARA_LL_JG_T,        // 电度定点间隔
     PARA_LL_MONTHD_DAY,  // 考核日冻结日
     PARA_LL_MONTHD_HOUR, // 考核日冻结小时
 #endif
@@ -975,8 +974,8 @@ enum
 #endif
     CSTSET_U0BS_TT,      // 零压闭锁零流
     CSTSET_DDYBS_TT,     // 低压闭锁过流
-    CSTSET_U0BS_U,       // 零压闭锁零流
-    CSTSET_DDYBS_U,      // 低压闭锁过流
+    CSTSET_U0BS_U,       // 零压闭锁零流定值
+    CSTSET_DDYBS_U,      // 低压闭锁过流定值
     CSTSET_DP_DELTAF_TT, // 低频滑差投入
     CSTSET_DP_DELTAF,    // 低频滑差
 #ifdef PRO_AL_LOCK_HZ
@@ -1021,7 +1020,6 @@ enum
     CSTSET_GOOSE_CHECK_T,    // goose判断时间
     CSTSET_GOOSE_FHKG_PUB,   // 负荷开关goose发布
     CSTSET_GOOSE_SEND_FAULT, // goose发布在故障确认后
-    CSTSET_SHORT_BS_LOST_T,  // 短时失压闭锁时间
     CSTSET_SHORT_LDJS_T,     // 单侧来电解锁时间
     CSTSET_BS_YKON_TT,       // FA闭锁合闸禁止遥合
 #ifdef FA_PL_PJ
@@ -1053,7 +1051,7 @@ enum
     CSSET_LOG_PRINTF_TT,         // 现场运行模式
     CSSET_101_TRANSSURE_TT,      // 101文件传输确认帧
     CSSET_ZERO,                  // 测量差值
-    CSSET_ZL,                    //  直流电压定值
+    CSSET_ZL,                    // 直流电压定值
     CSSET_SET_DC_NUM,            // 直流通道数
     CSSET_PT2_VOL,               // 负荷侧电压选择
     CSSET_DISP_ONE_TWO,          // 液晶遥测数据显示
@@ -1171,7 +1169,27 @@ typedef struct GOC_SET // 
 
 typedef struct TSETSW
 {
-    OC_SET toc[BHOC_NUMBER];
+    /* 功能压板 */
+    bool btt_gnyb_cg;     // 常规保护投入
+    bool btt_gnyb_zdchz;  // 自动重合闸投入
+    bool btt_gnyb_fa;     // 就地馈线自动化投入
+    bool btt_gnyb_dfa;    // 智能分布式投入
+    bool btt_gnyb_jzs;    // 集中模式压板
+    bool btt_gnyb_tqhz;   // 同期合闸投入
+    bool btt_gnyb_zdjl;   // 自动解列投入
+    bool btt_gnyb_xdljd;  // 小电流接地保护投入
+    bool btt_gnyb_xldxgj; // 线路断线告警投入
+    bool btt_gnyb_btdcd;  // 不停电传动投入
+
+    /* 运行压板 */
+    bool btt_yxyb_gnztt; // 自动化功能总投退软压板
+    bool btt_yxyb_gnzck; // 自动化功能总出口软压板
+    bool btt_yxyb_chz;   // 重合闸软压板
+#ifdef YK_SOFT_YB // 遥控压板
+	bool bTT_SOFT_YK_YB;
+#endif
+
+    OC_SET toc[BHOC_NUMBER];// 过量保护
     GOC_SET tGocSet; // goose 过流
 
     DWORD dT_ch_gl_tt; // 过流重合默认投入
@@ -1196,12 +1214,16 @@ typedef struct TSETSW
     bool bTT_chz_wy; // 重合检无压
 #endif
 
-    bool bTT_chz_tq; // 重合检同期
-    bool bTT_CHZ;
+    bool bTT_chz_tq;  // 重合检同期
+    bool bTT_CHZ;     // 重合闸投退
     bool bTT_TTCH_TT; // 偷跳启动重合
-    bool bTT_3U0;     // 零序过电压投退
-    bool bTT_3U0Tz;
-    bool bTT_3U0Gj;
+
+    bool bTT_3U0;       // 零序过电压投退
+    bool bTT_3U0Tz;     // 零序过电压保护跳闸
+    bool bTT_3U0Gj;     // 零序过电压保护告警
+    DWORD dBHOverU0;    // 零序过电压
+    DWORD dBHOverU0_fh; // 零序过电压返回值
+    DWORD dBHTOverU0;   // 零序过电压时间
 
     DWORD dIglfsx;    // 反时限过流基准值--10
     DWORD dTglfsx;    // 反时限过流时间
@@ -1209,16 +1231,16 @@ typedef struct TSETSW
     DWORD dIglfsx105; // 反时限过流*1.05*1.05
     DWORD dRVS_MIN_T; // 反时限最短时间
     DWORD dRVS_MAX_T; // 反时限最长时间
-    bool bTT_FSX;
-    WORD wFsxType;
+    bool bTT_FSX;     // 反时限投退
+    WORD wFsxType;    // 反时限类型
 
     bool bTT_bh_ptdx; // 保护PT断线检查
     bool bTT_bh_xbbs; // 保护谐波闭锁
 
     DWORD dT_tq;        // 同期时间
     DWORD dU_tq_deltaU; // 同期压差
-    DWORD dA_tq_delatA; //  同期角差
-    DWORD dF_tq_deltaF; //  同期频差
+    DWORD dA_tq_delatA; // 同期角差
+    DWORD dF_tq_deltaF; // 同期频差
 
     bool bTT_jl_dy;   // 电压解列
     DWORD dT_jl_ggdy; // 高电压解列时间
@@ -1236,10 +1258,6 @@ typedef struct TSETSW
     DWORD dU_jl_gdy_fh;  // 电压解列时定值
     DWORD dU_jl_ddy_fh;  // 电压解列时定值
 
-    DWORD dBHOverU0; // 零序过电压
-    DWORD dBHOverU0_fh;
-    DWORD dBHTOverU0;
-
     bool bTT_jl_hz;    // 频率解列
     DWORD dT_jl_ghz;   // 高频解列时间
     DWORD dT_jl_dhz;   // 低频解列时间
@@ -1253,11 +1271,11 @@ typedef struct TSETSW
     DWORD dU_jl_dhz_fh;   // 低频解列定值
     DWORD dU_jl_lowhz_fh; // 过低频解列定值
     bool bTT_hcbs_hz;     // 滑差闭锁投退
-    bool bTT_hcbs_dy;
-    DWORD dhcbs_hz; // 频率滑差定值
-    DWORD dhcbs_u;  // 电压滑差定值
+    bool bTT_hcbs_dy;     // 电压滑差闭锁功能
+    DWORD dhcbs_hz;       // 频率滑差定值
+    DWORD dhcbs_u;        // 电压滑差定值
 
-    bool bTT_FA;          //
+    bool bTT_FA;          // FA投退
     bool bTT_fa_LL;       // 分段联络模式
     bool bTT_fa_poweron;  // 电源侧上电合闸
     bool bTT_fa_lineon;   // 负荷侧上电合闸
@@ -1353,6 +1371,40 @@ typedef struct TSETSW
 #endif
     bool bTT_lxpolar; // 零序电流反极性投退
 
+    bool bTT_PT1_ll_check; // pt1断线检查投退
+    bool bTT_PT2_ll_check; // pt2断线检查投退
+
+#ifdef PRO_AL_LOCK_HZ
+    DWORD dU_reclose_gdy_fh; // 用于解列后重合闸时判电压高值
+    DWORD dU_reclose_ddy_fh; // 用于解列后重合闸时判电压低值
+#endif
+    bool bTT_IBSCHZ; // 大电流闭锁重合
+    DWORD dIBSCHZ;   // 大电流闭锁重合闸定值
+
+#ifdef FUNC_DRIVE_JY
+    bool bTT_drive;       // 传动功能投退
+    float dU_drive_ua1;   // 传动电源侧电压
+    float dU_drive_ua2;   // 传动负荷侧电压
+    float dU_drive_u0;    // 传动零压
+    float dU_drive_i;     // 传动过流
+    float dU_drive_i0;    // 传动零流
+    DWORD dT_drive;       // 传动持续时间
+    DWORD dT_drive_ua1;   // 传动电源侧电压时间
+    DWORD dT_drive_ua2;   // 传动负荷侧电压时间
+    DWORD dT_drive_u0;    // 传动零压时间
+    DWORD dT_drive_i;     // 传动过流时间
+    DWORD dT_drive_i0;    // 传动零流时间
+    DWORD dT_drive_again; // 分/合闸失败时延时后再次分/合闸
+#endif
+#ifdef FUNC_DRIVE
+    DWORD dT_Drive_hz; // 传动延时合闸时间
+    DWORD dT_Drive_fz; // 传动延时分闸时间
+    DWORD dT_fz_end;   // 结束传动时间
+    DWORD dT_hz_end;   // 合闸结束传动时间
+#endif
+
+    bool bTT_rcd_type[RECORD_TYPE_NUM]; // 录波投退项
+
 #ifdef CUSTOMIZE_BZT // 备自投
     DWORD dBZT_TYPE; // 备自投方式
     bool bBZT_BH_TT; // 备自投保护投退
@@ -1396,40 +1448,6 @@ typedef struct TSETSW
     u8 bzt_dl1_ct;
     u8 bzt_dl2_ct;
 #endif
-
-    bool bTT_PT1_ll_check; // pt1断线检查投退
-    bool bTT_PT2_ll_check; // pt2断线检查投退
-
-#ifdef PRO_AL_LOCK_HZ
-    DWORD dU_reclose_gdy_fh; // 用于解列后重合闸时判电压高值
-    DWORD dU_reclose_ddy_fh; // 用于解列后重合闸时判电压低值
-#endif
-    bool bTT_IBSCHZ; // 大电流闭锁重合
-    DWORD dIBSCHZ;   // 大电流闭锁重合闸定值
-
-#ifdef FUNC_DRIVE_JY
-    bool bTT_drive;       // 传动功能投退
-    float dU_drive_ua1;   // 传动电源侧电压
-    float dU_drive_ua2;   // 传动负荷侧电压
-    float dU_drive_u0;    // 传动零压
-    float dU_drive_i;     // 传动过流
-    float dU_drive_i0;    // 传动零流
-    DWORD dT_drive;       // 传动持续时间
-    DWORD dT_drive_ua1;   // 传动电源侧电压时间
-    DWORD dT_drive_ua2;   // 传动负荷侧电压时间
-    DWORD dT_drive_u0;    // 传动零压时间
-    DWORD dT_drive_i;     // 传动过流时间
-    DWORD dT_drive_i0;    // 传动零流时间
-    DWORD dT_drive_again; // 分/合闸失败时延时后再次分/合闸
-#endif
-#ifdef FUNC_DRIVE
-    DWORD dT_Drive_hz; // 传动延时合闸时间
-    DWORD dT_Drive_fz; // 传动延时分闸时间
-    DWORD dT_fz_end;   // 结束传动时间
-    DWORD dT_hz_end;   // 合闸结束传动时间
-#endif
-
-    bool bTT_rcd_type[RECORD_TYPE_NUM]; // 录波投退项
 } TSETSW;
 
 typedef struct VOL_SET
@@ -1443,61 +1461,82 @@ typedef struct VOL_SET
 // 保护定值结构
 typedef struct TSET
 {
-    u8 section;      // 定值区
-    float ct_one;    // CT额定一次值
-    float ct_two;    // CT额定二次值
-    float ct0_one;   // 零序CT额定一次值
-    float ct0_two;   // 零序CT额定二次值
-    float a_pt_one;  // 电源侧PT额定一次值
-    float a_pt_two;  // 电源侧PT额定二次值
-    float b_pt_one;  // 负荷侧PT额定一次值
-    float b_pt_two;  // 负荷侧PT额定二次值
-    float pt_rate;
-    float evt_rate;
-    u8 a_side_pt_type; // A侧PT接线方式
-    u8 b_side_pt_type; // B侧PT接线方式
-
-    bool bTT_EDIT_YB; // 远程运维投入
-
-    bool bTT_CHZ_YB;  // 重合闸软压板
-    bool bTT_BH_YB;   // 功能总软压板
-    bool bTT_KZ_YB;   // 控制出口软压板
-    bool bTT_TQ_YB;   // 同期合闸软压板
-    bool bTT_JL_YB;   // 自动解列软压板
-    bool bTT_SOFT_GOOSE_YB;
-    bool bTT_SOFT_FA_YB;
-    bool bTT_SOFT_BH_YB;
-    bool bTT_SOFT_YK_YB;
-    bool bTT_SOFT_JZS_YB;
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-    bool bTT_SOFT_GOOSE_YB_PUB; // 潮州模式压板在公共定值
-    bool bTT_SOFT_FA_YB_PUB;    // 潮州模式压板在公共定值
-    bool bTT_SOFT_BH_YB_PUB;    // 潮州模式压板在公共定值
-#endif
-    bool bTT_RmtPara; // 远动参数有效
-    bool bTT_ShowOne; // 显示一次值
+    /* 保护定值 */
+    TSETSW tSwSet[SWITCH_NUM_MAX];
 
-#ifdef FUNC_DRIVE
-    bool bTT_DRIVE; // 不停电传动功能软压板
-#endif
-    DWORD dDc_num;                 // 直流通道数量
-    TSETSW tSwSet[SWITCH_NUM_MAX]; // 线路定值
-    VOL_SET tVolSet[VOL_NUMBER];   // 电压定值 含 过电压、低电压、电源有压,电源无压 U0告警
+    /* 公共定值 */
+    u8 section;          // 定值区
+#ifdef FIXAREA_VERSION_T // 待召唤定值区号、待执行定值区号
+    u8 section_zh;       // 待召唤定值区
+    u8 section_zx;       // 待执行定值区
+#endif
+
+    float ct_one;                // CT额定一次值
+    float ct_two;                // CT额定二次值
+    float ct0_one;               // 零序CT额定一次值
+    float ct0_two;               // 零序CT额定二次值
+    float a_pt_one;              // 电源侧PT额定一次值
+    float a_pt_two;              // 电源侧PT额定二次值
+    float b_pt_one;              // 负荷侧PT额定一次值
+    float b_pt_two;              // 负荷侧PT额定二次值
+    u8 a_side_pt_type;           // A侧PT接线方式
+    u8 b_side_pt_type;           // B侧PT接线方式
+    bool bTT_EDIT_YB;            // 远程运维投入
+    VOL_SET tVolSet[VOL_NUMBER]; // 电压定值 含 过电压、低电压、电源有压,电源无压 U0告警
 #ifdef CUSTOMIZE_BZT               // 备自投
     VOL_SET tVolLostSet;
 #endif
-    float fFZLBXS;                   // 幅值滤波系数
+    bool bTT_FDLTz[6];           // 非电量保护
+    bool bTT_FDLGj[6];           // 非电量保护
+    DWORD dTFDL[6];              // 非电量保护
+    bool bTT_GZJD;               // 经高阻接地投退
+    WORD bTT_TBLTYPE;            // 小电流突变方式
+    WORD bTT_FILTER;             // 小电流信号滤波方式
+    BYTE bTT_WAVE[8];            // 小波类型
+    WORD bTT_WAVE_ORDER;         // 小波分解阶数
+    bool bTT_HILEBERT;           // H 变换
+    DWORD dT_tq_fh;              // 同期判断返回时间
+#ifdef FUNC_SET_FA_JS
+    DWORD dT_FA_JS; // FA合闸解锁
+#endif
+#ifdef VOLT_ADAPTIVE_FACTOR
+    bool bTT_AdaptiveFactor; // 投退自适应电压系数,为1时电压值按计算系数匹配10kv上送,不按转发点表配置系数
+#endif
+
+    /* 内部定值 */
+#ifdef XDL_ZT
+    bool bTT_xdl;          // 小电流接地投入,只要任一线路小电流接地投入就投入
+    DWORD dU_xdl_u0[2];    // 小电流零压定值
+    DWORD dU_xdl_u0_fh[2]; // 小电流零压返回定值
+    DWORD dU_xdl_u0_zt[2]; // 小电流零压暂态定值
+    DWORD dT_xdl_u0[2];    // 小电流零压时间
+    DWORD dU_xdl_22V[2];   // 小电流零压暂态定值
+#endif
+    float fFZLBXS;                   // 幅值加速滤波系数
     DWORD dTBLValue[SWITCH_NUM_MAX]; // 突变量定值
     DWORD dIWL_SQR[SWITCH_NUM_MAX];  // 无流定值
     DWORD dT_ZZFG;                   // 整组复归时间
-    DWORD dT_TZSB;
-    DWORD dT_HZSB;
-    DWORD dT_chzcd_2;
+    DWORD dT_TZSB;                   // 跳闸失败时间
+    DWORD dT_HZSB;                   // 合闸失败时间
+    DWORD dT_chzcd_2;                // 二次充电时间
+    bool bTT_U0BS;                   // 零压闭锁零流
+    bool bTT_DDYBS;                  // 低电压闭锁
+    DWORD dU_U0BS;                   // 零压闭锁零流定值
+    DWORD dU_DDYBS;                  // 低压闭锁过流定值
+    bool bKG2_DP_DELTAF;             // 低频滑差闭锁投 =1投入 =0 退出
+    DWORD dDP_DELTAF;                // 低频减载滑差定值
+
+#ifdef PRO_AL_LOCK_HZ
+    bool bTT_JLlockCHZ;          // 解列闭锁重合闸
+    bool bTT_StartCHZ_judgeFreq; // 解列后启动重合闸判频率
+    bool bTT_StartCHZ_judgeVolt; // 解列后启动重合闸判电压
+#endif
+
     bool bTT_FREQ;          // 频率跟踪投退
-    float f_temp_factor_ac; // 交流校准温度系数
-    float f_temp_factor_dc; // 直流校准温度系数
-    bool bTT_RET_ZERO;      // 归零值
-    bool bTT_U0ZC;
+    float f_temp_factor_ac; // 交流温漂(ppm)
+    float f_temp_factor_dc; // 直流温漂
+    bool bTT_RET_ZERO;      // 归零值投退
+    bool bTT_U0ZC;          // 零序电压自产
 
     DWORD dT101Resend;        // 101重发时间
     DWORD dT101Check;         // 101通道检查时间
@@ -1512,50 +1551,62 @@ typedef struct TSET
     DWORD dGroupYcSize;       // 组召遥测分组大小,为0则无效
     bool bTT_SoeResumeComm;   // SOE通讯续传,通讯重连时上送未确认的SOE
     bool bTT_SoeResumePower;  // SOE上电续传
+#ifdef FIX_PARAM_FORMAT
+    bool bTT_Utf8;    // 固定参数上送格式 UTF-8
+    bool bTT_Unicode; // 固定参数上送格式 UNICODE
+#endif
     WORD wEquTypeDFTU;        // DTFU模式
     WORD wEquTypeManager;     // 通信管理机模式
     float f_yc_filter_factor; // 遥测上送滤波系数
-#ifdef FIX_PARAM_FORMAT
-    bool bTT_Utf8;
-    bool bTT_Unicode;
+
+    bool bTT_SY_Board;         // 瞬压板投退
+    DWORD dT_cd;               // DFA充电时间
+    DWORD dT_glfd;             // DFA隔离放电时间
+    DWORD dT_llfd;             // DFA恢复放电时间
+    DWORD dT_frobit;           // DFA禁止转发时间
+    DWORD dT_sendext;          // DFA发送展宽时间 默认300毫秒
+    DWORD dT_goosecheck;       // goose判断时间
+    bool bTT_fhkg_pub;         // 负荷开关goose发布
+    bool bTT_goose_send_after; // goose发布在故障确认后
+    DWORD dT_ldjs;             // 单侧来电解锁时间
+    DWORD bTT_bs_ykon;         // FA闭锁合闸禁止遥合
+#ifdef FA_PL_PJ
+    bool bTT_judgeFreq; // 有压判频率投退
 #endif
+    bool bTT_UYYmin; // 有压判据
 
-    bool bTT_HistoryFile;         // 历史文件投退
-    bool bTT_MsgFile;             // 历史文件:msg格式
-    bool bTT_XmlFile;             // 历史文件:xml格式
+    DWORD dWCN_T;                 // 未储能告警时间
+    DWORD dSDYX_T;                // 失电闭锁遥信时间
+    float bat_chargeok_time;      // 电池充满维持时间
+    bool bTT_HistoryFile;         // 记录文件投退
+    bool bTT_MsgFile;             // 记录文件格式 msg格式
+    bool bTT_XmlFile;             // 记录文件格式 xml格式
     WORD wHSFileFormat;           // 历史文件格式
-    bool bTT_RstUnlock;           // 复归按钮可解锁
     BYTE resReuseFuncSelect;      // 复归按键复用功能选择
     DWORD resReuseFuncFilterTime; // 复归按键复用功能防抖时间
-    bool bTT_LogPrintf;
-    bool bTT_101Transsure; // 101文件传输是否需要确认
-    bool bTT_SY_Board;
-    bool bYX_AC;      // 交流遥信
-    DWORD dT_XCY;     // 残压时间定值
-    DWORD dDP_DELTAF; // 低频减载滑差定值
-
-#ifdef PRO_AL_LOCK_HZ
-    bool bTT_JLlockCHZ;          // 解列闭锁重合闸
-    bool bTT_StartCHZ_judgeFreq; // 解列后启动重合闸判频率
-    bool bTT_StartCHZ_judgeVolt; // 解列后启动重合闸判电压
+    bool bTT_RmtPara;             // 远动参数有效
+    bool bTT_LogPrintf;           // 现场运行模式
+    bool bTT_101Transsure;        // 101文件传输确认帧
+    DWORD dSmoothZero;            // 测量差值
+    DWORD dwZL;                   // 直流电压定值
+    DWORD dDc_num;                // 直流通道数量
+    DWORD pt2vol;                 // 负荷侧电压选择
+    bool bTT_ShowOne;             // 液晶遥测数据显示
+    bool bTT_faultparaDKY;        // 故障事件遥信地址长度
+#ifdef YC_QUANTITY
+    DWORD dYC_num; // 每间隔遥参数量
 #endif
+#ifdef METERING_ENERGY
+    u8 dd_calc_mode; // 电度计算方式
+    WORD wJLJX;      // 计量接线方式
+    WORD wWGFS;      // 无功方式
+#endif
+    bool bTT_EV_YCRate;       // 故障事件上送一/二次值切换标志
+    bool bTT_YC_DeadZone_All; // 遥测总死区有效
 
-    DWORD dSmoothZero;
-
-    DWORD dT_cd;               // 充电时间
-    DWORD dT_glfd;             // 隔离放电时间
-    DWORD dT_llfd;             // 故障
-    bool bTT_fhkg_pub;         // 负荷开关发布goose数据
-    WORD wDDJG;                // 电度间隔
-    WORD wDDRL;                // 电度存储容量
-    DWORD dT_frobit;           // 故障隔离发送后,闭锁重复发送时间15秒
-    DWORD dT_sendext;          // 发送展宽时间,默认300毫秒
-    DWORD dT_goosecheck;       // goose判断时间
-    DWORD dT_bs_lost;          // 短时失压闭锁时间
-    DWORD dT_ldjs;             // 单侧来电解锁延时
-    DWORD bTT_bs_ykon;         // FA闭锁合闸禁止遥控合
-    bool bTT_goose_send_after; // goose故障信息发送在故障确认时间后
-
+    /* 装置参数 一些数据 */
+    WORD wDDJG;  // 电度定点间隔
+    WORD wDDRL;  // 电度存储容量
     WORD wZDJG;  // 整点间隔
     WORD wZDRL;  // 整点存储容量
     WORD wJZRL;  // 极值存储容量
@@ -1563,78 +1614,21 @@ typedef struct TSET
     WORD wCAPRL; // 电容器管理存储容量
     WORD wUDCRL; // 电池电压存储容量
 
-    DWORD dWCN_T;            // 未储能告警时间
-    DWORD dSDYX_T;           // 失电闭锁遥信时间
-    float bat_chargeok_time; // 电池充满维持时间
-
-    DWORD dwZL;
-    DWORD pt2vol; // 负荷侧电压通道
-    //	DWORD	parIdType;
-
-#ifdef YC_QUANTITY
-    DWORD dYC_num; // 每间隔遥参数量
-#endif
-
-#ifdef FA_PL_PJ
-    bool bTT_judgeFreq; // 有压判频率投退
-#endif
-
-    bool bTT_UYYmin;          // 有压判据取三相电压最小值
-    bool bTT_EV_YCRate;       // 故障事件上送一/二次值切换标志
-    bool bTT_YC_DeadZone_All; // 遥测总死区有效
-
-    // #ifdef METERING_ENERGY
-    u8 dd_calc_mode; // 电度计算方式
-    WORD wJLJX;      // 计量接线方式
-    WORD wWGFS;      // 无功方式
-                     // #endif
-
-    bool bTT_faultparaDKY;
     bool bTT_CheckPhase; // 相序检查
     bool bTT_CTYC;       // CT异常检查
     // 内部参数
     DWORD dKU[PUB_AC_NUM]; // 相电压比例系数1V对应的码值*256
-                           // 常量定值
+
+    float pt_rate; // PT变比
+    DWORD dT_XCY;  // 残压时间定值
+
+    // 常量定值
     DWORD dU02V_SQR;
     DWORD dVOL10V_SQR;
     DWORD dVOL16V_SQR;
     DWORD dVOL50V_SQR;
     DWORD dVOL90V_SQR;
     DWORD dVOL70V_SQR;
-
-    // 暂时不用定值
-
-    bool bTT_U0BS;       // 零序电压闭锁
-    bool bTT_DDYBS;      // 低电压闭锁
-    bool bKG2_DP_DELTAF; // 低频滑差闭锁投 =1投入 =0 退出
-    DWORD dU_U0BS;
-    DWORD dU_DDYBS;
-    bool bTT_FDLTz[6]; // 非电量保护
-    bool bTT_FDLGj[6]; // 非电量保护
-    DWORD dTFDL[6];    // 非电量保护
-#ifdef XDL_ZT
-    bool bTT_xdl;          // 小电流接地投入,只要任一线路小电流接地投入就投入
-    DWORD dU_xdl_u0[2];    // 小电流零压定值
-    DWORD dU_xdl_u0_fh[2]; // 小电流零压返回定值
-    DWORD dU_xdl_u0_zt[2]; // 小电流零压暂态定值
-    DWORD dT_xdl_u0[2];    // 小电流零压时间
-    DWORD dU_xdl_22V[2];   // 小电流零压暂态定值
-#endif
-
-#ifdef VOLT_ADAPTIVE_FACTOR
-    bool bTT_AdaptiveFactor; // 投退自适应电压系数,为1时电压值按计算系数匹配10kv上送,不按转发点表配置系数
-#endif
-#ifdef FUNC_SET_FA_JS
-    DWORD dT_FA_JS; // FA合闸解锁
-#endif
-    DWORD dT_tq_fh; // 同期判断返回时间
-
-    bool bTT_GZJD;       // 经高阻接地投退
-    WORD bTT_TBLTYPE;    // 小电流突变方式
-    WORD bTT_FILTER;     // 小电流信号滤波方式
-    BYTE bTT_WAVE[8];    // 小波类型
-    WORD bTT_WAVE_ORDER; // 小波分解阶数
-    bool bTT_HILEBERT;   // H 变换
 } TSET;
 
 /**********************************************************
@@ -1740,8 +1734,6 @@ typedef struct RUN_PARA
 #ifdef METERING_ENERGY
     bool bTT_LLFile;
     WORD wSWID;
-    WORD wZDJG; // 整点间隔
-    WORD wDDJG; // 电度间隔
     WORD wMonday;
     WORD wMonhour;
 #endif

+ 30 - 36
dtu/dtu_main_t536/app/switch.c

@@ -148,43 +148,40 @@ const s8 * g_sw_do_name[SW_DO_NUM] =
 
 const s8 * g_sw_led_name[SW_LED_NUM]=
 {
-	"综合合位灯",
-	"综合分位灯",
 	"合位灯",
 	"分位灯",
+	"未储能灯",
 	"过流灯",
 	"接地灯",
+	"常规保护灯",
+	"就地FA灯",
+	"集中FA灯",
+	"分布式灯",
 	"重合闸灯",
-	"充电灯",
+	"重合闸充电灯",
+	"跳闸灯",
+	"故障告警灯",
 	"闭锁灯",
-	"XT灯",
-	"YT灯",
 	"动作灯",
 	"重合闭锁灯",
-	"未储能灯",
+	"重合+FA闭锁灯",
+	"开关传动灯",
 	"联络灯",
 	"分段灯",
-	"重合+FA闭锁灯",
-	"保护模式灯",
-	"就地FA模式灯",
-	"分布式模式灯",
+	"充电灯",
+	"隔离刀闸灯",
+	"接地刀闸灯",
+#if !defined CPU_FUXI
+	"综合合位灯",
+	"综合分位灯",
+	"XT灯",
+	"YT灯",
 	"X+Y灯",
-	"故障告警灯",
-#if defined GD_AREA_ECZD_2020
 	"自动解列功能灯",
 	"同期合闸功能灯",
 	"停用保护及FA灯",
 	"停用自动解列灯",
 	"停用同期合闸灯",
-#endif
-	"跳闸灯",
-	"重合闸充电灯",
-
-	"隔离刀闸灯",
-	"接地刀闸灯",
-
-#ifdef FUNC_DRIVE
-	"开关传动灯",
 #endif
 };
 
@@ -492,10 +489,8 @@ const s8 * g_pub_led_name[PUB_LED_NUM]=
 {
 	"电源灯",
 	"运行灯",
-	
 	"通信灯",
 	"通信状态灯",
-
 	"电池灯",
 	"异常灯",
 #if defined GD_AREA_ECZD_2020
@@ -504,25 +499,24 @@ const s8 * g_pub_led_name[PUB_LED_NUM]=
 	"动作灯",
 	"远方灯",
 	"就地灯",
-	"232T1",
-	"232R1",
-	"232T2",
-	"232R2",
-	"232T3",
-	"232R3",
-	"485T1",
-	"485R1",
-	"485T2",
-	"485R2",
-	"485T3",
-	"485R3",
+	"串口1",
+	"串口2",
+	"串口3",
+	"串口4",
 	"网口1",
 	"网口2",
 	"网口3",
+	"级联异常灯",
+	"间隔1通讯灯",
+	"间隔2通讯灯",
+	"间隔3通讯灯",
+	"间隔4通讯灯",
+	"间隔5通讯灯",
+	"间隔6通讯灯",
+	"规约通信异常灯",
 #ifdef	KZ_OUT_TT
 	"控制闭锁灯",
 #endif
-	"规约通信异常灯",
 };
 
 // 开关公共模拟量名称

+ 51 - 56
dtu/dtu_main_t536/app/switch.h

@@ -146,45 +146,41 @@ enum
 // 开关类LED类型
 enum
 {
-	SW_LED_ZHHW = 0,// 综合合位灯,以一个灯代表双点灯
-	SW_LED_ZHTW, // 综合合位灯,以一个灯代表双点灯
-	SW_LED_HW,		// 合位灯
-	SW_LED_TW,		// 跳位灯
-	SW_LED_GL,		// 过流灯
- 	SW_LED_JD,		// 接地灯
-	SW_LED_CHZ,		// 重合闸灯
-	SW_LED_CD,		// 充电灯(包含重合闸、联络和分布式的充电)
-	SW_LED_LOCK,	// 闭锁灯
-	SW_LED_XT,		// XT灯
-	SW_LED_YT,		// YT灯
-	SW_LED_DZ,		// 动作灯
-	SW_LED_CHZBS,	// 重合闸闭锁灯
-	SW_LED_WCN,		// 未储能灯
-	SW_LED_LL,	// 联络
-	SW_LED_FD,	// 分段	
-	SW_LED_CHZBS_LOCK,	// 重合闸闭锁灯+FA闭锁合闸
-	SW_LED_MODE_BH,		//保护模式
-	SW_LED_MODE_FA,		//就地FA	模式
-	SW_LED_MODE_GOOSE,	//智能分布式
-	SW_LED_X_YT,
-
-	SW_LED_FAULT_GJ,//故障告警灯
-#if defined GD_AREA_ECZD_2020
-	SW_LED_ZDJL,	//"自动解列功能",
-	SW_LED_TYBHTT,	//"停用保护及FA",
-	SW_LED_TYZDJL,	//"停用自动解列",
-#endif
-	SW_LED_TZ,		//跳闸灯
-	SW_LED_CHZ_CD,	// 重合闸充电灯(之前的充电灯包含联络和分布式的充电状态,非单独的重合闸充电灯)
-
-	SW_LED_GLDZ,	//隔离刀闸灯
-	SW_LED_JDDZ,	//接地刀闸灯
-
-#ifdef FUNC_DRIVE
-	SW_LED_DRIVE,	//开关传动灯
+    SW_LED_HW = 0,     // 合位灯
+    SW_LED_TW,         // 跳位灯
+    SW_LED_WCN,        // 未储能灯
+    SW_LED_GL,         // 过流灯
+    SW_LED_JD,         // 接地灯
+    SW_LED_MODE_BH,    // 常规保护灯
+    SW_LED_MODE_FA,    // 就地FA灯
+    SW_LED_MODE_JZFA,  // 集中FA灯
+    SW_LED_MODE_GOOSE, // 分布式灯
+    SW_LED_CHZ,        // 重合闸灯
+    SW_LED_CHZ_CD,     // 重合闸充电灯(之前的充电灯包含联络和分布式的充电状态,非单独的重合闸充电灯)
+    SW_LED_TZ,         // 跳闸灯
+    SW_LED_FAULT_GJ,   // 故障告警灯
+    SW_LED_LOCK,       // 闭锁灯
+    SW_LED_DZ,         // 动作灯
+    SW_LED_CHZBS,      // 重合闸闭锁灯
+    SW_LED_CHZBS_LOCK, // 重合闸闭锁灯+FA闭锁合闸
+    SW_LED_DRIVE,      // 开关传动灯
+    SW_LED_LL,         // 联络
+    SW_LED_FD,         // 分段
+    SW_LED_CD,         // 充电灯(包含重合闸、联络和分布式的充电)
+    SW_LED_GLDZ,       // 隔离刀闸灯
+    SW_LED_JDDZ,       // 接地刀闸灯
+
+#if !defined CPU_FUXI
+    SW_LED_ZHHW, // 综合合位灯,以一个灯代表双点灯
+    SW_LED_ZHTW, // 综合合位灯,以一个灯代表双点灯
+    SW_LED_XT,   // XT灯
+    SW_LED_YT,   // YT灯
+    SW_LED_X_YT,
+    SW_LED_ZDJL,   // 自动解列功能,
+    SW_LED_TYBHTT, // 停用保护及FA,
+    SW_LED_TYZDJL, // 停用自动解列,
 #endif
-
-	SW_LED_NUM
+    SW_LED_NUM
 };
 
 #define SW_DO_LED_NUM (SW_DO_NUM + SW_LED_NUM)
@@ -434,12 +430,12 @@ enum
 	PUB_YK_YB_FZ,	//虚遥控,遥控软压板
 #endif
 #ifdef YK_FA_ENBLE
-	PUB_YK_BS_FA_HZ,	//	"FA遥控闭锁-合",
-	PUB_YK_BS_FA_FZ,	//	"FA遥控闭锁-分",
+	PUB_YK_BS_FA_HZ,	//	FA遥控闭锁-合,
+	PUB_YK_BS_FA_FZ,	//	FA遥控闭锁-分,
 #endif
 #ifdef YK_FA_S_L_ENBLE
-	PUB_YK_FA_S_L_HZ,	//	"分段/联络-合",
-	PUB_YK_FA_S_L_FZ,	//	"分段/联络-分",
+	PUB_YK_FA_S_L_HZ,	//	分段/联络-合,
+	PUB_YK_FA_S_L_FZ,	//	分段/联络-分,
 #endif
 
 	PUB_JL_YB_HZ,   //虚遥控,自动解列软压板
@@ -481,25 +477,24 @@ enum
 	PUB_LED_DZ,			// 动作灯,例如电压类动作
 	PUB_LED_YF,			// 远方灯
 	PUB_LED_JD,			// 就地灯
-	PUB_LED_232T1,
-	PUB_LED_232R1,
-	PUB_LED_232T2,
-	PUB_LED_232R2,
-	PUB_LED_232T3,
-	PUB_LED_232R3,
-	PUB_LED_485T1,
-	PUB_LED_485R1,
-	PUB_LED_485T2,
-	PUB_LED_485R2,
-	PUB_LED_485T3,
-	PUB_LED_485R3,	
-	PUB_LED_NET1,
+	PUB_LED_SP1,// 串口
+	PUB_LED_SP2,
+	PUB_LED_SP3,
+	PUB_LED_SP4,
+	PUB_LED_NET1,// 网口
 	PUB_LED_NET2,
 	PUB_LED_NET3,
+	PUB_LED_JL_ERR,// 级联异常
+	PUB_LED_JG_1,// 间隔通信
+	PUB_LED_JG_2,
+	PUB_LED_JG_3,
+	PUB_LED_JG_4,
+	PUB_LED_JG_5,
+	PUB_LED_JG_6,
+	PUB_LED_IEC_ERR,	//规约通信异常灯,
 #ifdef	KZ_OUT_TT
 	PUB_LED_KZ_OUT,
 #endif
-	PUB_LED_IEC_ERR,	//"规约通信异常灯",
 
 	PUB_LED_NUM,
 };

+ 7 - 50
dtu/dtu_main_t536/app/vol.c

@@ -659,7 +659,7 @@ void vol_DYJL(int sw,DWORD  dStep)   // 
 
 	pJL->sta.bFlag.bQD_H = SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_dy//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&bQDD1;
 
@@ -696,7 +696,7 @@ void vol_DYJL(int sw,DWORD  dStep)   // 
 
 	pJL->sta.bFlag.bQD_G = SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_dy//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&(!bQDD1&&bQDD2);
 
@@ -747,7 +747,7 @@ void vol_DYJL(int sw,DWORD  dStep)   // 
 
 	pJL->sta.bFlag.bQD_L = SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_dy//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&pR->tSWST.uSWST.bFlag.bCYY		//曾有压
 							&&(!tPT.uPT1DX.bFlag.bPTYC)      //无 PT异常
@@ -789,7 +789,7 @@ void vol_DYJL(int sw,DWORD  dStep)   // 
 	
 	pJL->sta.bFlag.bQD_D = SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_dy//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&pR->tSWST.uSWST.bFlag.bCYY		//曾有压
 							&&(!tPT.uPT1DX.bFlag.bPTYC)      //无 PT异常
@@ -846,7 +846,7 @@ void vol_PLJL(int sw,DWORD  dStep)   // 频
 	bQDD1 = LowRelay(freq, pSet->dU_jl_lowhz,pSet->dU_jl_lowhz_fh,pJL->sta.bFlag.bQD_L); 
 	pJL->sta.bFlag.bQD_L = SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_hz//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&(freq>44*65536)  //频率大于44hz,不然认为无频率
 							&&(bQDD1);
@@ -880,7 +880,7 @@ void vol_PLJL(int sw,DWORD  dStep)   // 频
 	bQDD2 = LowRelay(freq, pSet->dU_jl_dhz,pSet->dU_jl_dhz_fh,pJL->sta.bFlag.bQD_D); 
 	pJL->sta.bFlag.bQD_D= SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_hz//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&(!bQDD1&&bQDD2);
 
@@ -913,7 +913,7 @@ void vol_PLJL(int sw,DWORD  dStep)   // 频
 	bQDD1 = OverRelay(freq, pSet->dU_jl_ghz,pSet->dU_jl_ghz_fh,pJL->sta.bFlag.bQD_H); 
 	pJL->sta.bFlag.bQD_H= SOFE_AUTO_EN(sw)
 							&& pSet->bTT_jl_hz//投退字
-							&& pRunSet->bTT_JL_YB
+							&& pRunSet->tSwSet[sw].btt_gnyb_zdjl
 							&&pSWST->uSWST.bFlag.bHZWZ		//在合闸位置
 							&&bQDD1;
 
@@ -949,10 +949,6 @@ void vol_PLJL(int sw,DWORD  dStep)   // 频
 void PT_Check(DWORD  dStep)
 {
 	bool bsxyl=false;
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-	DWORD Umin_tmp=0;
-	DWORD U_WY=0;
-#endif
 /***********PT 异常判断**********************************/
 	{
 		int sw;
@@ -970,16 +966,6 @@ void PT_Check(DWORD  dStep)
 			bpt2check|=(bptdx&&(pRunSet->a_side_pt_type));// pt2 vv接线
             bpt1check&=pRunSet->tSwSet[sw].bTT_PT1_ll_check;
             bpt2check&=pRunSet->tSwSet[sw].bTT_PT2_ll_check;
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			if(Umin_tmp < pRunSet->tSwSet[sw].dU_fa_YY)
-			{
-				Umin_tmp = pRunSet->tSwSet[sw].dU_fa_YY;
-			}
-			if(U_WY < pRunSet->tSwSet[sw].dU_fa_WY)
-			{
-				U_WY = pRunSet->tSwSet[sw].dU_fa_WY;
-			}
-#endif
 		}
 
 		/*********PT1断线判断***************************/
@@ -1024,9 +1010,6 @@ void PT_Check(DWORD  dStep)
 		}
 		else
 		{
-		#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			if(Umin >= Umin_tmp)
-		#endif
 			{
 				if(tPT.uPT1DX.bFlag.bEvent) 						
 				{
@@ -1131,9 +1114,6 @@ void PT_Check(DWORD  dStep)
 		}
 		else
 		{
-		#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-			if(Umin >= Umin_tmp)
-		#endif
 			{
 				if(tPT.uPT2DX.bFlag.bEvent) 						
 				{
@@ -1188,29 +1168,6 @@ void PT_Check(DWORD  dStep)
 			}
 		}		
 	}
-	
-#ifdef GD_AREA_ECZD_CHAOZHOU_2022
-	if((g_sw_pub.m2_min[2]<U_WY) && !bsxyl && tPT.uPT1DX.bFlag.bEvent)
-	{
-		ResetTR(&tPT.tTPT1DXTime);	//清PT断线计时器避免返回时间内一直刷屏PT断线SOE
-		if(soe_check(EV_PT1ERR))
-		{
-			soe_record_ev(EV_PT1ERR,0, 0,0,0 );
-		}
-		tPT.uPT1DX.bFlag.bEvent=false;
-		tPT.uPT1DX.bFlag.bPTYC=false;
-	}
-	if((g_sw_pub.m2_min[3]<U_WY) && !bsxyl && tPT.uPT2DX.bFlag.bEvent)
-	{
-		ResetTR(&tPT.tTPT2DXTime);	//清PT断线计时器避免返回时间内一直刷屏PT断线SOE
-		if(soe_check(EV_PT2ERR))
-		{
-			soe_record_ev(EV_PT2ERR,0, 0,0,0 );
-		}
-		tPT.uPT2DX.bFlag.bEvent=false;
-		tPT.uPT2DX.bFlag.bPTYC=false;
-	}
-#endif
 }