lch 11 сар өмнө
parent
commit
ea24b70473
66 өөрчлөгдсөн 1452 нэмэгдсэн , 8364 устгасан
  1. 2 1
      README.md
  2. 1 5
      app_public/fuxi_public/fuxi_bsp/include/bsp.h
  3. 16 36
      app_public/fuxi_public/fuxi_bsp/include/bspconfig.h
  4. 91 0
      app_public/fuxi_public/fuxi_bsp/include/debug_print.h
  5. 2 90
      app_public/fuxi_public/fuxi_bsp/include/dido.h
  6. 18 14
      app_public/fuxi_public/fuxi_bsp/include/equ.h
  7. 0 54
      app_public/fuxi_public/fuxi_bsp/include/equ_dtu.h
  8. 0 0
      app_public/fuxi_public/fuxi_bsp/include/equ_fuxi.h
  9. 90 135
      app_public/fuxi_public/fuxi_bsp/source/ad7616.c
  10. 1 980
      app_public/fuxi_public/fuxi_bsp/source/dido.c
  11. 0 790
      app_public/fuxi_public/fuxi_bsp/source/equ_dtu.c
  12. 6 3
      app_public/fuxi_public/fuxi_bsp/source/equ_fuxi.c
  13. 6 3
      app_public/fuxi_public/fuxi_bsp/source/factor.c
  14. 12 15
      app_public/fuxi_public/fuxi_bsp/source/gpio.c
  15. 1 2
      app_public/fuxi_public/fuxi_bsp/source/led_ftu.c
  16. 3 2
      app_public/fuxi_public/fuxi_bsp/source/uart.c
  17. 4 2
      app_public/fuxi_public/rt_lite/source/rt.c
  18. 16 14
      app_public/fuxi_public/rt_lite/source/rt_console.c
  19. 9 9
      app_public/fuxi_public/rt_lite/source/rt_error.c
  20. 1 1
      app_public/xdljd/jdxx.c
  21. 18 201
      dtu/dtu_main_t536/app/Appconfig.c
  22. 16 213
      dtu/dtu_main_t536/app/Appconfig.h
  23. 2 2
      dtu/dtu_main_t536/app/Down.c
  24. 3 3
      dtu/dtu_main_t536/app/FA.c
  25. 0 1
      dtu/dtu_main_t536/app/FA.h
  26. 2 2
      dtu/dtu_main_t536/app/FA_g.c
  27. 8 7
      dtu/dtu_main_t536/app/IECComm.c
  28. 1 1
      dtu/dtu_main_t536/app/IECLINK.c
  29. 2 9
      dtu/dtu_main_t536/app/MmiData.c
  30. 1 1
      dtu/dtu_main_t536/app/Modbus.c
  31. 11 223
      dtu/dtu_main_t536/app/Sys.c
  32. 27 229
      dtu/dtu_main_t536/app/UnitsLib.c
  33. 0 2
      dtu/dtu_main_t536/app/UnitsLib.h
  34. 2 4
      dtu/dtu_main_t536/app/app.c
  35. 4 4
      dtu/dtu_main_t536/app/can_board.c
  36. 4 4
      dtu/dtu_main_t536/app/can_metering_app.c
  37. 2 2
      dtu/dtu_main_t536/app/dcfactor.c
  38. 215 302
      dtu/dtu_main_t536/app/defineSys.h
  39. 1 1
      dtu/dtu_main_t536/app/down_panel_prog.c
  40. 17 17
      dtu/dtu_main_t536/app/equ.c
  41. 1 2
      dtu/dtu_main_t536/app/fsx.c
  42. 4 2
      dtu/dtu_main_t536/app/head.h
  43. 5 42
      dtu/dtu_main_t536/app/led.c
  44. 2 2
      dtu/dtu_main_t536/app/main.c
  45. 1 1
      dtu/dtu_main_t536/app/myconf.c
  46. 3 1541
      dtu/dtu_main_t536/app/oc.c
  47. 1 89
      dtu/dtu_main_t536/app/oc.h
  48. 22 235
      dtu/dtu_main_t536/app/protect.c
  49. 3 149
      dtu/dtu_main_t536/app/protect.h
  50. 1 1
      dtu/dtu_main_t536/app/ptl_pwrm.c
  51. 2 619
      dtu/dtu_main_t536/app/reclose.c
  52. 1 95
      dtu/dtu_main_t536/app/reclose.h
  53. 4 7
      dtu/dtu_main_t536/app/record.c
  54. 0 2
      dtu/dtu_main_t536/app/record.h
  55. 81 175
      dtu/dtu_main_t536/app/run_status.c
  56. 62 70
      dtu/dtu_main_t536/app/run_status.h
  57. 344 706
      dtu/dtu_main_t536/app/set.c
  58. 43 561
      dtu/dtu_main_t536/app/set.h
  59. 113 147
      dtu/dtu_main_t536/app/switch.c
  60. 104 128
      dtu/dtu_main_t536/app/switch.h
  61. 25 381
      dtu/dtu_main_t536/app/vol.c
  62. 1 11
      dtu/dtu_main_t536/app/vol.h
  63. 1 10
      dtu/dtu_main_t536/app/xdljd.c
  64. 1 1
      dtu/dtu_main_t536/main_mod.c
  65. 11 2
      dtu/dtu_main_t536/sh/t536/Makefile
  66. 1 1
      dtu/dtu_main_t536/sh/t536/mybuild_for_jiangmen_t536

+ 2 - 1
README.md

@@ -21,7 +21,8 @@
 02. 修改: clk_time_get接口获取的时间修改回UTC+8时区。
 03. 修改: 采样板起始板卡宏修改。
 04. 修改: 线损维护串口切换io根据硬件修改为PM5。
-   
+
+
 # 20251110
 01. 增加: 共享内存对接。
 

+ 1 - 5
app_public/fuxi_public/fuxi_bsp/include/bsp.h

@@ -8,11 +8,7 @@
 #include "my_rtc.h"
 #include "dido.h"
 #include "e2prom.h"
-#ifndef  GW_AREA_MAIN_2021
-#include "equ_ftu.h"
-#else
-#include "equ_dtu.h"
-#endif
+#include "equ_fuxi.h"
 #include "flash.h"
 #include "flexcan.h"
 #include "fourier.h"

+ 16 - 36
app_public/fuxi_public/fuxi_bsp/include/bspconfig.h

@@ -19,10 +19,10 @@
 #include "defineSys.h"
 //----------------------------- BSP版本  ---------------------------
 // #define BSP_FTU					1	// 单回路配电终端,f308
-//#define BSP_DTU2					2	// DTU2.0 f306
+// #define BSP_DTU2					2	// DTU2.0 f306
 // #define BSP_DTU3					3	// DTU3.0
-//   #define BSP_DFTU					4	// DTU、FTU混合版本;支持4回路二遥标准型DTU、单回路FTU;支持电磁式、电子式互感器。
-#define BSP_DTU5					5	// DTUv5 T536
+// #define BSP_DFTU					4	// DTU、FTU混合版本;支持4回路二遥标准型DTU、单回路FTU;支持电磁式、电子式互感器。
+// #define BSP_DTU5					5	// DTUv5 T536
 #define BSP_VERSION					BSP_DFTU
 
 #define  __DFTU_V4_HV0102__         1 // sunxi 20180724 第二版
@@ -246,7 +246,7 @@
 #define CFG_ADC_OS_BASE				0						// 过采样基数
 #define CFG_ADC_OS_NUM				(1<<CFG_ADC_OS_BASE)	// 过采样倍数
 
-#define CFG_ADC_CHANNEL				32					// ADC采样的通道数
+#define CFG_ADC_CHANNEL				16					// ADC采样的通道数
 #define CFG_ADC_CHANNEL_DC			1					// 直流ADC通道数量
 #define CFG_ADC_CHANNEL_ALL			(CFG_ADC_CHANNEL + CFG_ADC_CHANNEL_DC) // 所有通道数
 #define CFG_ADC_CHANNEL_ZERO		(CFG_ADC_CHANNEL_ALL)	// 全0通道索引
@@ -293,44 +293,24 @@
 //-------------------------------- UART ----------------------------------------
 #define CFG_UART_INT_VECTOR(x)		((x<4)? (90+x):(176+x))
 
-/*
-FUXI:
-UART0 -> /dev/ttyS0
-UART1 -> /dev/ttyS1
-
-CFG_UART_232_0 -> /dev/ttyS2
-CFG_UART_232_1 -> /dev/ttyS3
-CFG_UART_485_0 -> /dev/ttyS4
-CFG_UART_485_1 -> /dev/ttyS5
-CFG_UART_485_2 -> /dev/ttyS8
-
-...
-
-*/
-
 //TODO. noted by sunxi: 根据实际情况,定义串口号
-#define CFG_UART_RT_CONSOLE			0	//内部已实现console功能
-
 #define CFG_UART_HMI				1	//
-#define CFG_UART_232_0				2	//232_2	
-#define CFG_UART_232_1				3	//232_3
-#define CFG_UART_485_0				4	//485_4
 
-#define CFG_UART_485_1				5	//485_5
-#define CFG_UART_485_2				8	//485_8
-#define CFG_UART_485_3				7
-#define CFG_UART_GPRS_IN			10	//此UART物理上不存在,虚拟给内部GPRS用
-#define CFG_UART_GPS				(CFG_UART_232_0)//暂定
-#define CFG_UART_CHIP_S1			11	//此UART物理上不存在,虚拟给南网加密芯片用
+/* T536版fuxi串口分配 注意uart11 13实际没接任何东西 */
+#define CFG_UART_485_0				6
+#define CFG_UART_485_1				4
+#define CFG_UART_232_0				3
+#define CFG_UART_232_1				1
+#define CFG_UART_GPS				14
+#define CFG_UART_BK_0				11
+#define CFG_UART_BK_1				13
+#define CFG_UART_CHIP_S1			10	// 南网加密芯片用
 
-#define CFG_UART_NUM_MAX   			11	// 最大UART数量
+#define CFG_UART_GPRS_IN			10
 
+#define CFG_UART_NUM_MAX   			7	// 最大UART数量 标准化端子4 gps1 备用2
 
-#ifdef __GOOSE_USING_DOUBLE_ETH__
-	#define CFG_ETH_NUM_MAX   		3 	//网络数量
-#else
-	#define CFG_ETH_NUM_MAX   		2
-#endif
+#define CFG_ETH_NUM_MAX   		    3 	// 网络数量
 
 //-------------------------------- CAN ----------------------------------------
 #define CFG_CAN_VECTOR_BEGIN	(128 + 0)	//中断向量

+ 91 - 0
app_public/fuxi_public/fuxi_bsp/include/debug_print.h

@@ -0,0 +1,91 @@
+/**
+ * @file           debug_print.c
+ * @brief          打印头文件
+ * @author         lch (lch_work@foxmail.com)
+ * @version        1.0
+ * @date           20251022
+ * 
+ * @copyright Copyright (c) 2025 by OLE, All Rights Reserved.
+ * 
+ * @par 修改日志:
+ * <table>
+ * <tr><th>Date        <th>Version         <th>Author          <th>Description
+ * <tr><td>20251022    <td>1.0             <td>lch             <td>内容
+ * </table>
+ */
+
+#ifndef DEF_DEBUG_PRINT_H
+#define DEF_DEBUG_PRINT_H
+
+/***** 宏定义 *****/
+
+#define DP_COLOR_NONE		"\e[0m"
+#define DP_COLOR_RED		"\e[31m"
+#define DP_COLOR_GREEN		"\e[32m"
+#define DP_COLOR_YELLOW	    "\e[33m"
+#define DP_COLOR_BLUE		"\e[34m"
+#define DP_COLOR_PURPLE		"\e[35m" // 紫色
+#define DP_COLOR_WATHET		"\e[36m" // 浅蓝
+#define DP_COLOR_WHITE		"\e[37m"
+
+/* 信息提示 nt整行不带[tag] h只有[tag]显示浅蓝色 n[tag]显示为浅蓝色内容为蓝色 a[tag]整行为浅蓝色 */
+#define dp_info_nt(fmt, args...) \
+    printf(DP_COLOR_WATHET fmt DP_COLOR_NONE, ##args)
+
+#define dp_info_h_s(fmt, args...) \
+    printf(DP_COLOR_WATHET "[INFO] " DP_COLOR_NONE fmt, ##args)
+#define dp_info_h_c(fmt, args...) \
+    printf(DP_COLOR_WATHET "[INFO][%s:%d] " DP_COLOR_NONE fmt, __func__, __LINE__, ##args)
+
+#define dp_info_n_s(fmt, args...) \
+    printf(DP_COLOR_WATHET "[INFO] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, ##args)
+#define dp_info_n_c(fmt, args...) \
+    printf(DP_COLOR_WATHET "[INFO][%s:%d] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, __func__, __LINE__, ##args)
+
+#define dp_info_a_s(fmt, args...) \
+    printf(DP_COLOR_WATHET "[INFO] " fmt DP_COLOR_NONE, ##args)
+#define dp_info_a_c(fmt, args...) \
+    printf(DP_COLOR_WATHET "[INFO][%s:%d] " fmt DP_COLOR_NONE, __func__, __LINE__, ##args)
+
+/* 错误提示 nt整行不带[tag] h只有[tag]显示红色 n[tag]显示为红色内容为蓝色 a[tag]整行为红色 */
+#define dp_err_nt(fmt, args...) \
+    printf(DP_COLOR_RED fmt DP_COLOR_NONE, ##args)
+
+#define dp_err_h_s(fmt, args...) \
+    printf(DP_COLOR_RED "[ERR] " DP_COLOR_NONE fmt, ##args)
+#define dp_err_h_c(fmt, args...) \
+    printf(DP_COLOR_RED "[ERR][%s:%d] " DP_COLOR_NONE fmt, __func__, __LINE__, ##args)
+    
+#define dp_err_n_s(fmt, args...) \
+    printf(DP_COLOR_RED "[ERR] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, ##args)
+#define dp_err_n_c(fmt, args...) \
+    printf(DP_COLOR_RED "[ERR][%s:%d] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, __func__, __LINE__, ##args)
+    
+#define dp_err_a_s(fmt, args...) \
+    printf(DP_COLOR_RED "[ERR] " fmt DP_COLOR_NONE, ##args)
+#define dp_err_a_c(fmt, args...) \
+    printf(DP_COLOR_RED "[ERR][%s:%d] " fmt DP_COLOR_NONE, __func__, __LINE__, ##args)
+
+
+#define dp_err_n_s_rt(fmt, args...) \
+    rt_printf(DP_COLOR_RED "[ERR] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, ##args)
+#define dp_err_n_c_rt(fmt, args...) \
+    rt_printf(DP_COLOR_RED "[ERR][%s:%d] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, __func__, __LINE__, ##args)
+
+    
+#define dp_err_n_s_pk(fmt, args...) \
+    printk(DP_COLOR_RED "[ERR] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, ##args)
+#define dp_err_n_c_pk(fmt, args...) \
+    printk(DP_COLOR_RED "[ERR][%s:%d] " DP_COLOR_NONE DP_COLOR_BLUE fmt DP_COLOR_NONE, __func__, __LINE__, ##args)
+
+/***** 头文件 *****/
+
+/*****  枚举  *****/
+
+/***** 结构体 *****/
+
+/***** 变量对外声明 *****/
+
+/***** 函数对外声明 *****/
+
+#endif /* end of file */

+ 2 - 90
app_public/fuxi_public/fuxi_bsp/include/dido.h

@@ -10,98 +10,10 @@
 */
 #ifndef _DIDO_H
 #define _DIDO_H
-/*------------------------------- 头文件 --------------------------------------
-*/
-#ifdef GW_AREA_MAIN_2021
-
-/*------------------------------- 宏定义 --------------------------------------
-*/
-#define DIDO_MAX_DI_PER_SLOT		61				  // DTUv4-DI
-#define DIDO_MAX_DO_PER_SLOT		16
-
-#define DIDO_TS_BITS 				4
-#define DIDO_TS_NUM 				(1<<DIDO_TS_BITS) // 16
-
-/*------------------------------ 类型结构 -------------------------------------
-*/
-
-// buffer 索引
-struct ts_index
-{
-	volatile u8 n : DIDO_TS_BITS; 
-};
-
-struct di
-{
-	int bInited;	// 是否初始化
-	u32 value[2];	// 开入值
-	u32 inv[2];		// 是否反转
-
-	struct ts_index ts_i[DIDO_MAX_DI_PER_SLOT];				// 索引
-	u32 			ts_t[DIDO_MAX_DI_PER_SLOT][DIDO_TS_NUM];// 时间戳
-	u8 				ts_v[DIDO_MAX_DI_PER_SLOT][DIDO_TS_NUM];// 值
-};
-
-
-
-struct _do
-{
-	u32 on;	
-	u32 off;	
-};
-
-struct do_time
-{
-	u8 slot;
-	u32 diff_out_count;
-	u32 diff_min;
-	u32 diff_max;
-};
 
-// 定义遥信防抖处理结构
-struct di_struct
-{
-	// 设置值
-	u32 tm_filter;  // 防抖时间
-	u8  owner;		//归属:开关1~开关12、公共
-	u8  type;		//DI类型
-};
-
-
-
-
-/*------------------------------ 全局变量 -------------------------------------
-*/
-extern struct di g_di[];
-extern u8 dido_buf[128];
-extern struct di_struct g_di_st[EQU_SLOT_NUM_MAX][DIDO_MAX_DI_PER_SLOT*2];  
-
-/*------------------------------ 函数声明 -------------------------------------
+/*------------------------------- 头文件 --------------------------------------
 */
 
-int dido_init(void);
-int dido_exit(void);
-
-int dido_di_is_on(u8 slot,u8 index);
-int dido_di_is_on_ts(u8 slot,u8 index,u32 ts);
-int dido_di_update(u8 * buf);
-int dido_do_have_select(u32 slot,u32 index);
-int dido_do(u32 slot,u32 v,int is_on);
-int dido_do_time_recv(u8 * buf);
-void dido_do_poll(void);
-void dido_qd_set_keeptime(u32 us);
-
-int dido_printf(void);
-int dido_stat_reset(void);
-
-int dido_led_test(void);
-int dido_auto_test(char *buf,int num);
-int dido_single_test(u8 slot, u8 point);
-int dido_test(void);
-
-
-#else
-
 /*------------------------------- 宏定义 --------------------------------------
 */
 #define DIDO_MAX_DI_PER_SLOT		32
@@ -207,7 +119,7 @@ int dido_auto_test(char *buf,int num);
 int dido_single_test(u8 slot, u8 point);
 int dido_test(void);
 int dido_do_kz(int on, unsigned int i);
-#endif // GW_AREA_MAIN_2021
+
 #endif //_DIDO_H
 
 /*------------------------------ 文件结束 -------------------------------------

+ 18 - 14
app_public/fuxi_public/fuxi_bsp/include/equ.h

@@ -34,16 +34,16 @@
 #define BOARD_TYPE_KZ_NUM		26  //增加控制板的类型数量,适应分布式不同办卡类型
 
 
-#define	BOARD_TYPE_NULL				0
-#define BOARD_TYPE_POWER			1
-#define BOARD_TYPE_MAIN				2
-#define BOARD_TYPE_DO				3
-#define BOARD_TYPE_DI				4
-#define BOARD_TYPE_AUX				5
-#define BOARD_TYPE_AC				6
-#define BOARD_TYPE_ZT				7	//状态板
-#define BOARD_TYPE_ZH				8	//综合板
-#define BOARD_TYPE_KZ				9	//控制板
+#define	BOARD_TYPE_NULL				0   // 备用板
+#define BOARD_TYPE_POWER			1   // 电源板
+#define BOARD_TYPE_MAIN				2   // 主控板 
+#define BOARD_TYPE_DO				3   // 开入板
+#define BOARD_TYPE_DI				4   // 开出板
+#define BOARD_TYPE_AUX				5   // 
+#define BOARD_TYPE_AC				6   // 采样板
+#define BOARD_TYPE_ZT				7	// 状态板
+#define BOARD_TYPE_ZH				8	// 综合板
+#define BOARD_TYPE_KZ				9	// 控制板
 
 #define BOARD_TYPE_FTUMAIN			11	//GH_F308 主板,DI、DO、AI
 #define BOARD_TYPE_FTUKZ1			12	//GH_F308 控制板,仅占板卡位置,10DO, 3DI, 8AC
@@ -59,16 +59,20 @@
 #define BOARD_TYPE_DI60				10	//标准化DTU开入拓展板
 #define BOARD_TYPE_DO_2				20	//标准化DTU开出拓展板
 
-#define BOARD_TYPE_RS_STATUS		64	//状态板
+#define BOARD_TYPE_FBC_V1           25  // 国网测控控制板
+#define BOARD_TYPE_FBM_V1           26	// 国网管理控制板
+
+#define BOARD_TYPE_FUXI_DI          30   // 开入板
+#define BOARD_TYPE_FUXI_DO          31   // 开出板
+#define BOARD_TYPE_FUXI_AC          32   // 采样板
+
+#define BOARD_TYPE_RS_STATUS		64	// 状态板
 #define BOARD_TYPE_LCD_16LED		65	// 液晶面板
 #define BOARD_TYPE_LCD				65	// 液晶面板
 #define BOARD_TYPE_METERING			67	// 计量板
 #define BOARD_TYPE_LCD_24LED		68	// 液晶面板 24个双色灯
 #define BOARD_TYPE_LCD_26LED		70	// 液晶面板 26个双色灯
 
-#define BOARD_TYPE_FBC_V1           25  // 国网测控控制板
-#define BOARD_TYPE_FBM_V1           26	// 国网管理控制板
-
 #define BOARD_TYPE_FTU				100	//FTU主板
 #define BOARD_TYPE_FTU_V2		    103 //FTU_V2
 #define BOARD_TYPE_FTU_END			130	

+ 0 - 54
app_public/fuxi_public/fuxi_bsp/include/equ_dtu.h

@@ -1,54 +0,0 @@
-/******************************************************************************
-版权所有:	
-文件名称:	equ.h
-文件版本:	01.01
-创建作者:	
-创建日期:	2013-03-25
-功能说明:	装置信息管理维护
-其它说明:
-修改记录:
-*/
-#ifndef _EQU_DTU_H
-#define _EQU_DTU_H
-/*------------------------------- 头文件 --------------------------------------
-*/
-
-
-/*------------------------------- 宏定义 --------------------------------------
-*/
-#define DO_DEFAULT_KEEPTIME			200 //MS
-#define DI_DEFAULT_FILTER_TIME		20 	//MS
-
-#define EQU_SLOT_HMI			(g_equ_config->equ_slot_num -1)	// 面板
-#define EQU_SLOT_STATUS			(g_equ_config->equ_slot_num -2)	// 状态板
-
-/*------------------------------ 类型结构 -------------------------------------
-*/
-
-/*------------------------------ 函数声明 -------------------------------------
-*/
-extern int 		 g_ui_freq[CFG_FREQ_NUM];	// 记录频率对应UI通道的索引值
-
-int equ_init_later(void);
-
-int equ_ac_channel_is_ok(u32 index);
-
-int equ_power_check(void);
-int equ_power_adjust(void);
-
-int equ_board_info_update(int can_bus,u8 * frame);
-int equ_slot_check(u32 slot);
-int equ_check_period(void);
-
-int equ_power_stat_reset(void);
-int equ_power_stat_printf(void);
-
-int equ_get_ac_slot(u32 owner, u32 type);
-
-#endif //_EQU_DTU_H
-
-/*------------------------------ 文件结束 -------------------------------------
-*/
-
-
-

+ 0 - 0
app_public/fuxi_public/fuxi_bsp/include/equ_ftu.h → app_public/fuxi_public/fuxi_bsp/include/equ_fuxi.h


+ 90 - 135
app_public/fuxi_public/fuxi_bsp/source/ad7616.c

@@ -335,12 +335,13 @@ int adc_init(void)
 	}
 
 		
-	for(i=0; i<EQU_SLOT_AC_NUM; i++)   //配置通道的采样参数
+#if 0
+	for(i=0; i<EQU_SLOT_AC_NUM; i++)   //配置通道的采样参数 直接写死 lch
 	{
+        printf("[%s:%d]\r\n", __func__, __LINE__);
 		adc_get_range_config(i,g_ac_slot_begin+g_adc_slot2cs[i]);
 	}
 
-#if 0
 	// 检查和槽对应的ADC芯片是否安装或损坏
 	//	printk("g_adc_chip=%02x.\r\n",g_adc_chip);
 	for(i=0; i< EQU_SLOT_AC_NUM; i++)
@@ -548,96 +549,70 @@ int adc_isr(int mod)
 	return 0;
 }
 
-static void updata_adc(struct t_shmdata_adc *sample_data0, uint16_t us_adc_dot_index0, struct t_shmdata_adc *sample_data1, uint16_t us_adc_dot_index1)
+static void updata_adc(struct t_shmdata_adc *sample_data0, uint16_t us_adc_dot_index0)
 {
-	int i = 0;
-	int index = 0;
-	int opt = ((g_adc_dots_data_count & (ADC_REC_SAMPLE_RATE - 1)) == 0) ? TRUE : FALSE;
-	//每片16路
-	for (uint8_t j = 0; j < 16; j++)
-	{
-		g_adc_dots_rec[g_adc_dots_index_rec][j] =
-			sample_data0->data.usa_sample_dots[j][us_adc_dot_index0];
+    int i = 0;
+    int index = 0;
+    int opt = ((g_adc_dots_data_count & (ADC_REC_SAMPLE_RATE - 1)) == 0) ? TRUE : FALSE;
 
-		if (opt == TRUE)
-		{
-			g_adc_dots[j][g_adc_dots_index] =
-				sample_data0->data.usa_sample_dots[j][us_adc_dot_index0];
-		}
-	}
-
-	for (uint8_t j = 16; j < CFG_ADC_CHANNEL; j++)
-	{
-		g_adc_dots_rec[g_adc_dots_index_rec][j] =
-			sample_data1->data.usa_sample_dots[j - 16][us_adc_dot_index1]; // 注意两片ADC为不同内存,j得减16
-
-		// if (j == 17) // 3_IA
-		// {
-		// 	int32_t physical_value1 = (int16_t)g_adc_dots_rec[g_adc_dots_index_rec][j];
-		// 	printf("%d, ", physical_value1);
-		// }
+    // 每片16路
+    for (uint8_t j = 0; j < CFG_ADC_CHANNEL; j++)
+    {
+        g_adc_dots_rec[g_adc_dots_index_rec][j] = sample_data0->data.usa_sample_dots[j][us_adc_dot_index0];
 
-		if (opt == TRUE)
-		{
-			g_adc_dots[j][g_adc_dots_index] =
-				sample_data1->data.usa_sample_dots[j - 16][us_adc_dot_index1]; // 注意两片ADC为不同内存,j得减16
-
-			// if (j == 17) // 3_IA
-			// {
-			// 	int32_t physical_value1 = (int16_t)g_adc_dots[j][g_adc_dots_index];
-			// 	printf("%d, ", physical_value1);
-			// }
-		
-		}
-	}
+        if (opt == TRUE)
+        {
+            g_adc_dots[j][g_adc_dots_index] = sample_data0->data.usa_sample_dots[j][us_adc_dot_index0];
+        }
+    }
 
-	// 直流采样 国网集中式暂时不需要 zhl TODO
-	// g_adc_dots_dc[0][g_adc_dots_data_count & CFG_ADC_DOTS_MASK] =
-	// 	sample_data->data.usa_sample_dots[AD7616_DC0_CHANNEL][us_adc_dot_index];
+    // 直流采样 国网集中式暂时不需要 zhl TODO
+    // g_adc_dots_dc[0][g_adc_dots_data_count & CFG_ADC_DOTS_MASK] =
+    // 	sample_data->data.usa_sample_dots[AD7616_DC0_CHANNEL][us_adc_dot_index];
 
-	if (opt == TRUE)
-	{
-		index = g_adc_dots_index;
+    if (opt == TRUE)
+    {
+        index = g_adc_dots_index;
 
-		// 统计数据
-		if (g_adc_stat_flag)
-		{
-			for (i = 0; i < CFG_ADC_CHANNEL; i++)
-			{
-				rt_stat_in(&g_stat_adc[i], (unsigned short)(g_adc_dots[i][index] + 32768));
-			}
-		}
+        // 统计数据
+        if (g_adc_stat_flag)
+        {
+            for (i = 0; i < CFG_ADC_CHANNEL; i++)
+            {
+                rt_stat_in(&g_stat_adc[i], (unsigned short)(g_adc_dots[i][index] + 32768));
+            }
+        }
 
-		// 通道取反
-		for (i = 0; i < g_equ_adc_inv_num; i++)
-		{
-			g_adc_dots[g_equ_adc_inv[i]][index] = -(g_adc_dots[g_equ_adc_inv[i]][index]);
-		}
+        // 通道取反
+        for (i = 0; i < g_equ_adc_inv_num; i++)
+        {
+            g_adc_dots[g_equ_adc_inv[i]][index] = -(g_adc_dots[g_equ_adc_inv[i]][index]);
+        }
 
-		// 全部BUFFER都是新数据,才能算同步好。
-		if (g_adc_sync < 1)
-		{
-			g_adc_sync++;
-		}
+        // 全部BUFFER都是新数据,才能算同步好。
+        if (g_adc_sync < 1)
+        {
+            g_adc_sync++;
+        }
 
-		// 索引值加一
-		g_adc_dots_count++;
-		// 保护计数+突变量
-		{
-			dTCounter++;
-			if (dTCounter % 8 == 0)
-			{
-				prt_flag = true;
-			}
-			// 突变量
-			if (g_adc_sync == 1 && g_sw_init == 1)
-			{
-				protect_tbl_qd();
-			}
-		}
-	}
+        // 索引值加一
+        g_adc_dots_count++;
+        // 保护计数+突变量
+        {
+            dTCounter++;
+            if (dTCounter % 8 == 0)
+            {
+                prt_flag = true;
+            }
+            // 突变量
+            if (g_adc_sync == 1 && g_sw_init == 1)
+            {
+                protect_tbl_qd();
+            }
+        }
+    }
 
-	g_adc_dots_data_count++;
+    g_adc_dots_data_count++;
 }
 
 /**
@@ -649,36 +624,29 @@ static void updata_adc(struct t_shmdata_adc *sample_data0, uint16_t us_adc_dot_i
  */
 int adc_isr_new(int mod)
 {
-	int cnt = 0;
-	struct t_shmdata_adc sample_data0 = {0};
-	struct t_shmdata_adc sample_data1 = {0};
-	int ret0 = 0;
-	int ret1 = 0;
-	static volatile uint16_t smus_sample_read_index0 = 0; /* 读取adc1索引 */
-	static volatile uint16_t smus_sample_read_index1 = 0; /* 读取adc2索引 */
-
-	ret0 = shm_packet_read_v2(SHM_ADDR_W_U_ADC_1, sizeof(sample_data0), (uint8_t *)&sample_data0, sizeof(sample_data0));
-    // printf("ret0=%d, sample_idx=%d, read_index=%d, us_updata=%d, us_op=%d, us_op_bk=%d\n", 
-	// 	ret0, sample_data0.data.us_sample_idx, smus_sample_read_index0, sample_data0.us_updata, sample_data0.us_op, sample_data0.us_op_bk);
-	
-	while (ret0 > 0)
-	{
-		ret1 = shm_packet_read_v2(SHM_ADDR_W_U_ADC_2 , sizeof(sample_data1), (uint8_t *)&sample_data1, sizeof(sample_data1));
-		if(ret1 > 0)
-			break;
+    int cnt = 0;
+    struct t_shmdata_adc sample_data0 = {0};
+    int ret0 = 0;
+    int ret1 = 0;
+    static volatile uint16_t smus_sample_read_index0 = 0; /* 读取adc1索引 */
 
-		if(++cnt > 5)
-			break;
+    ret0 = shm_packet_read_v2(SHM_ADDR_W_U_ADC_1, sizeof(sample_data0), (uint8_t *)&sample_data0, sizeof(sample_data0));
+    // printf("ret0=%d, sample_idx=%d, read_index=%d, us_updata=%d, us_op=%d, us_op_bk=%d\n",
+    // 	ret0, sample_data0.data.us_sample_idx, smus_sample_read_index0, sample_data0.us_updata, sample_data0.us_op, sample_data0.us_op_bk);
 
-		usleep(300);
-	}
-    // printf("ret1=%d, sample_idx=%d, read_index=%d, us_updata=%d, us_op=%d, us_op_bk=%d\n", 
-	// 	ret1, sample_data1.data.us_sample_idx, smus_sample_read_index1, sample_data1.us_updata, sample_data1.us_op, sample_data1.us_op_bk);
-	
-	if((ret0 > 0 && (smus_sample_read_index0 != sample_data0.data.us_sample_idx))
-		 && (ret1 > 0 && (smus_sample_read_index1 != sample_data1.data.us_sample_idx)))
+    while (ret0 > 0)
+    {
+        if (++cnt > 5)
+            break;
+
+        usleep(300);
+    }
+    // printf("ret1=%d, sample_idx=%d, read_index=%d, us_updata=%d, us_op=%d, us_op_bk=%d\n",
+    // 	ret1, sample_data1.data.us_sample_idx, smus_sample_read_index1, sample_data1.us_updata, sample_data1.us_op, sample_data1.us_op_bk);
+
+    if (ret0 > 0 && (smus_sample_read_index0 != sample_data0.data.us_sample_idx))
     {
-		uint16_t us_adc_dot_num0 = 0;
+        uint16_t us_adc_dot_num0 = 0;
         if (sample_data0.data.us_sample_idx > smus_sample_read_index0)
         {
             us_adc_dot_num0 = sample_data0.data.us_sample_idx - smus_sample_read_index0;
@@ -687,40 +655,27 @@ int adc_isr_new(int mod)
         {
             us_adc_dot_num0 = (sample_data0.data.us_sample_idx + TC_ADC_DOTS_PER_CHANNEL) - smus_sample_read_index0;
         }
-		// printf("us_adc_dot_num0:%d\n", us_adc_dot_num0);
-
-		uint16_t us_adc_dot_num1 = 0;
-        if (sample_data1.data.us_sample_idx > smus_sample_read_index1)
-        {
-            us_adc_dot_num1 = sample_data1.data.us_sample_idx - smus_sample_read_index1;
-        }
-        else
-        {
-            us_adc_dot_num1 = (sample_data1.data.us_sample_idx + TC_ADC_DOTS_PER_CHANNEL) - smus_sample_read_index1;
-        }
-		// printf("us_adc_dot_num1:%d\n\n", us_adc_dot_num1);
+        // printf("us_adc_dot_num0:%d\n", us_adc_dot_num0);
 
-		// us_adc_dot_num0 与 us_adc_dot_num1的数量一般相同
+        // us_adc_dot_num0 与 us_adc_dot_num1的数量一般相同
         for (uint16_t i = 0; i < us_adc_dot_num0; i++)
         {
-			/* 注意采样下标索引不能超过采样缓存 TC_ADC_DOTS_PER_CHANNEL  */
+            /* 注意采样下标索引不能超过采样缓存 TC_ADC_DOTS_PER_CHANNEL  */
             uint16_t us_adc_dot_index0 = (smus_sample_read_index0 + i) % TC_ADC_DOTS_PER_CHANNEL;
-			uint16_t us_adc_dot_index1 = (smus_sample_read_index1 + i) % TC_ADC_DOTS_PER_CHANNEL;
-			
-			// test zhl
-			// int32_t physical_value0 = (int16_t)(sample_data0.data.usa_sample_dots[9][us_adc_dot_index0]);
-			// printf("%d, ", physical_value0);
-			// int32_t physical_value1 = (int16_t)(sample_data1.data.usa_sample_dots[1][us_adc_dot_index1]);
-			// printf("%d, ", physical_value1);
 
-			updata_adc(&sample_data0, us_adc_dot_index0, &sample_data1, us_adc_dot_index1);
-		}
+            // test zhl
+            // int32_t physical_value0 = (int16_t)(sample_data0.data.usa_sample_dots[9][us_adc_dot_index0]);
+            // printf("%d, ", physical_value0);
+            // int32_t physical_value1 = (int16_t)(sample_data1.data.usa_sample_dots[1][us_adc_dot_index1]);
+            // printf("%d, ", physical_value1);
+
+            updata_adc(&sample_data0, us_adc_dot_index0);
+        }
 
-		smus_sample_read_index0 = (smus_sample_read_index0 + us_adc_dot_num0) % TC_ADC_DOTS_PER_CHANNEL;
-		smus_sample_read_index1 = (smus_sample_read_index1 + us_adc_dot_num1) % TC_ADC_DOTS_PER_CHANNEL;
+        smus_sample_read_index0 = (smus_sample_read_index0 + us_adc_dot_num0) % TC_ADC_DOTS_PER_CHANNEL;
     }
 
-	return 0;
+    return 0;
 }
 
 /******************************************************************************

+ 1 - 980
app_public/fuxi_public/fuxi_bsp/source/dido.c

@@ -20,983 +20,6 @@
 /*------------------------------- 头文件 --------------------------------------
 */
 #include "head.h"
-
-#ifdef GW_AREA_MAIN_2021
-/*------------------------------- 宏定义 --------------------------------------
-*/
-
-
-/*------------------------------ 类型结构 -------------------------------------
-*/
-/*------------------------------ 全局变量 -------------------------------------
-*/
-struct di  g_di[EQU_SLOT_NUM_MAX];
-struct _do g_do[EQU_SLOT_NUM_MAX];
-
-struct di_struct g_di_st[EQU_SLOT_NUM_MAX][DIDO_MAX_DI_PER_SLOT*2];  
-
-int g_do_flag;
-
-struct rt_stat 	g_stat_di_delay;
-struct rt_stat 	g_stat_do_delay;
-
-static u32 di_error_count = 0;
-static u32 di_change_num = 0;
-static u32 error_count = 0;
-
-struct do_time g_do_time[EQU_SLOT_NUM_MAX];
-
-/*------------------------------ 函数声明 -------------------------------------
-*/
-int dido_do_time(void);
-
-/*------------------------------ 外部函数 -------------------------------------
-外部函数供其它实体文件引用,必须仔细检查传入参数的合法性.
-*/
-int dido_init(void)
-{
-	int i;
-	memset(g_di,0,sizeof(g_di));
-	memset(g_do,0,sizeof(g_do));
-	memset(g_do_time,0,sizeof(g_do_time));
-	
-	// 检查装置配置
-	if(equ_config_null())
-	{
-		return -1;
-	}
-
-	// 初始化取反标志
-	for(i=0; i< g_equ_config->di_num; i++)
-	{
-		if(g_equ_config_di[i].is_Inverse == 0)
-		{
-			continue;
-		}
-
-		if(g_equ_config_di[i].slot < EQU_SLOT_NUM_MAX && g_equ_config_di[i].index < DIDO_MAX_DI_PER_SLOT)
-		{
-			if(g_equ_config_di[i].index < 32)
-			{
-				g_di[g_equ_config_di[i].slot].inv[0] |= 1<<g_equ_config_di[i].index;
-			}
-			else
-			{
-				g_di[g_equ_config_di[i].slot].inv[1] |= 1<<(g_equ_config_di[i].index - 32);
-			}
-		}
-	}
-	
-	dido_stat_reset();
-	
-	return 0;
-}
-
-int dido_di_is_on(u8 slot,u8 index)
-{
-	if(slot >= EQU_SLOT_NUM_MAX || index >= 64)
-	{
-		return 0;
-	}
-
-	if(index < 32)
-	{
-		if(g_di[slot].value[0]&(1<<index))
-		{
-			return 1;
-		}
-	}
-	else
-	{
-		index -= 32;
-		if(g_di[slot].value[1]&(1<<index))
-		{
-			return 1;
-		}
-	}
-
-	return 0;
-}
-
-// 查看某个时间点下的开入值
-int dido_di_is_on_ts(u8 slot,u8 index,u32 ts)
-{
-	int i,r;
-	struct ts_index ts_i;
-	
-	if(slot >= EQU_SLOT_NUM_MAX || index >= 32)
-	{
-		return 0;
-	}
-
-#if 0
-	{
-		static int cnt = 0;
-		if(cnt++ < 16)
-			rt_printf("slot=%d,index=%d,ts=%d.\r\n",slot,index,ts);
-	}
-#endif
-
-	ts_i.n = g_di[slot].ts_i[index].n - 1; //ts_i下是无值的,所以应该减1
-	for(i=0;i<DIDO_TS_NUM;i++)
-	{
-		r = (int)(ts - g_di[slot].ts_t[index][ts_i.n]);
-		if(r >= 0)
-		{
-			return g_di[slot].ts_v[index][ts_i.n];
-		}
-
-		ts_i.n--;
-	}
-
-	if(g_di[slot].value[0]&(1<<index))
-	{
-		return 1;
-	}
-
-	return 0;
-}
-
-int dido_di_update(u8 * buf)
-{
-	struct can_frame_head 	*cfh;
-	struct timespec ts,ts_rec;
-	u32 di,value_new,value_old;
-	int i,j,is_on;
-	unsigned long flags;
-	u32 dt;
-	// static bool bDI_Init[EQU_SLOT_NUM_MAX] = {false};
-	
-	// 检查帧内容
-	cfh = (struct can_frame_head *)buf;
-	if(cfh->src >= EQU_SLOT_NUM_MAX)
-	{
-		return -1;
-	}
-	if(cfh->len != 8)
-	{
-		return -2;
-	}
-
-	// 检查帧类型
-	switch(buf[0])
-	{
-	case CAN_FRAME_TYPE_DI_INIT:
-	case CAN_FRAME_TYPE_DI_ON:
-	case CAN_FRAME_TYPE_DI_OFF:
-		j = 0;
-		break;
-	case CAN_FRAME_TYPE_DI_INIT1:
-	case CAN_FRAME_TYPE_DI_ON1:
-	case CAN_FRAME_TYPE_DI_OFF1:
-		j = 1;
-		break;
-	default:
-		return -3;
-	}
-
-	// 获取数据
-	memcpy(&di,buf+4,4);
-	switch(buf[0])
-	{
-	case CAN_FRAME_TYPE_DI_INIT:
-	case CAN_FRAME_TYPE_DI_INIT1:
-	{
-		//g_di[cfh->src].value[j] = di^g_di[cfh->src].inv[j];
-		value_old = g_di[cfh->src].value[j];
-		value_new = di^g_di[cfh->src].inv[j];
-		di = value_old ^ value_new; // 得到有变化的位
-		g_di[cfh->src].value[j] = value_new;
-
-		// rt_printf("DI_INIT:src=%d,j=%d,di=%08x,oldv=%08x,newv=%08x.\r\n",cfh->src,j,di,value_old,value_new);
-
-		if(g_di[cfh->src].bInited == 0)
-		{
-			// 更新逻辑模型中的值
-			for(i=0;i<DIDO_MAX_DI_PER_SLOT;i++)
-			{
-				is_on = (g_di[cfh->src].value[j]&(1<<i)) ? 1 : 0;
-				sw_di_set(	g_di_st[cfh->src][(j<<5)+i].owner,
-							g_di_st[cfh->src][(j<<5)+i].type,
-							is_on ? SW_DI_TYPE_ON : SW_DI_TYPE_OFF);
-
-				// 双点的值也需要重新初始化
-				plc_db_init_value(cfh->src,(j<<5)+i,is_on);
-
-				// 遥信时标
-				g_di[cfh->src].ts_t[i][g_di[cfh->src].ts_i[i].n] = 0;
-				g_di[cfh->src].ts_v[i][g_di[cfh->src].ts_i[i].n] = is_on;
-				g_di[cfh->src].ts_i[i].n++;
-			}
-
-			g_di[cfh->src].bInited = true;
-			// bDI_Init[cfh->src] = true;
-
-			return 0;
-		}
-
-
-	}
-		break;
-	case CAN_FRAME_TYPE_DI_ON:
-	case CAN_FRAME_TYPE_DI_ON1:
-		value_old = g_di[cfh->src].value[j] 	& (~di);
-		value_new = (di^g_di[cfh->src].inv[j]) & di;
-		g_di[cfh->src].value[j] = value_old | value_new;
-		break;
-	case CAN_FRAME_TYPE_DI_OFF:
-	case CAN_FRAME_TYPE_DI_OFF1:
-		value_old = g_di[cfh->src].value[j] 	& (~di);
-		value_new = ((~di)^g_di[cfh->src].inv[j]) & di;
-		g_di[cfh->src].value[j] = value_old | value_new;
-		break;
-	default:
-		return -3;
-	}
-
-	// 得到当前时刻,通过关中断保证时间的一致性
-	rt_irq_save(flags);
-	// gps_get_time(&ts); //modify by EWen can app 对时用的是clk_time_get,此处记录di时间取同一时间源
-	clk_time_get(&ts);
-	dt=g_adc_dots_count; 
-	rt_irq_restore(flags);
-
-	// 计算变位的真正时刻
-	// 记录秒的低8位和纳秒的高24位合成32位时间戳放在buf[8]~buf[11]的位置。
-	// 因为开入滤波时间最长为65.536S,所以用秒的低8位(256S)
-	// 作为时间戳有足够的余量保证时间戳的正确性,但需要考虑秒的进位。
-	
-	ts_rec.tv_sec =  (ts.tv_sec & ~0xff) | buf[8];
-	ts_rec.tv_nsec=(buf[9]<<24) | (buf[10]<<16) | (buf[11]<<8);
-	if((u8)(ts.tv_sec & 0xff) < buf[8])
-	{
-		// 如果当前时刻秒的低8位小于记录时刻的低8位,说明当前秒的低8位
-		// 已进位,记录秒需去掉此进位。
-		ts_rec.tv_sec -= 0x100;
-	}
-
-{
-	u32 diff;
-	diff = ts.tv_nsec + (ts.tv_sec - ts_rec.tv_sec)*NSEC_PER_SEC;
-	diff -= ts_rec.tv_nsec;
-
-	// 修正对应采样时间点
-	dt -= (u32)rt_round(g_freq*CFG_ADC_DOTS_PER_PERIOD*diff/NSEC_PER_SEC);
-	
-	rt_stat_in(&g_stat_di_delay,diff);
-/*
-	di_change_num ++;
-	rt_printf("开入变位:src=%d,buf[0]=%02x,DI==0x%08x,new=0x%08x,T=%d,di_change_num=%d.\r\n",
-		cfh->src,
-		buf[0],
-		g_di[cfh->src].value,
-		di,
-		diff,
-		di_change_num);	
-*/
-#if 0
-	if(diff > 1000000)
-	{
-		struct rtc_time_t tm;
-		di_error_count ++;
-		
-		rt_printf("开入变位时间超出次数:%d\r\n\r\n",di_error_count);
-		timespec_to_rtc(ts,&tm,0);
-		rt_printf("当前时间: %04d-%02d-%02d %02d:%02d:%02d:%09d!\r\n",
-				tm.year + 2000,
-				tm.month,
-				tm.day,
-				tm.hour,
-				tm.min,
-				tm.ms/1000,
-				ts.tv_nsec
-				);
-				
-		timespec_to_rtc(ts_rec,&tm,0);
-		rt_printf("变位时间: %04d-%02d-%02d %02d:%02d:%02d:%09d!\r\n",
-				tm.year + 2000,
-				tm.month,
-				tm.day,
-				tm.hour,
-				tm.min,
-				tm.ms/1000,
-				ts_rec.tv_nsec
-				);
-	}
-#endif
-}
-
-	// if (bDI_Init[cfh->src])
-	// {
-	// 	bDI_Init[cfh->src] = false;
-	// }
-	// else
-	{
-		// 记录遥信变位
-		for(i=0; i<32; i++)
-		{
-			if(di&(0x01<<i))
-			{
-				// 记录SOE
-				is_on = (g_di[cfh->src].value[j] & (1<<i)) ? 1:0;
-				soe_record_yx((WORD)((j<<5) + i +(cfh->src<<8)),is_on,&ts_rec);
-
-				// 更新逻辑模型中的值
-				sw_di_set(	g_di_st[cfh->src][(j<<5)+i].owner,
-							g_di_st[cfh->src][(j<<5)+i].type,
-							(is_on)? SW_DI_TYPE_ON : SW_DI_TYPE_OFF);
-
-				// 更新记录
-				g_di[cfh->src].ts_t[i][g_di[cfh->src].ts_i[i].n] = dt;
-				g_di[cfh->src].ts_v[i][g_di[cfh->src].ts_i[i].n] = is_on;
-				g_di[cfh->src].ts_i[i].n++;
-			}
-		}
-	}
-	
-	return 0;
-}
-
-void dido_qd_set_keeptime(u32 us)
-{
-}
-
-int dido_do_have_select(u32 slot,u32 index)
-{
-	// 只有开出板有选择继电器,其它板如辅助板没有
-	if(g_board_info[slot].type == BOARD_TYPE_DO || g_board_info[slot].type == BOARD_TYPE_DO_2)
-	{
-		return 1;
-	}
-	return 0;
-}
-
-int dido_do(u32 slot,u32 v,int is_on)
-{
-	unsigned long flags;
-	
-	//检查子板是否正常
-	if(equ_slot_check(slot) != 0)
-	{
-		return -1;
-	}
-
-	// 检查DO资源
-	if(equ_get_do_num(slot) == 0)
-	{
-		return -2;
-	}
-
-	// 保存输出值,在5ms中断中输出
-	rt_irq_save(flags);
-	g_do_flag = 1;
-	if(is_on)
-	{
-		g_do[slot].on |= v;
-	}
-	else
-	{
-		g_do[slot].off |= v;
-	}
-	rt_irq_restore(flags);
-
-	return 0;
-}
-
-int _dido_do(u32 slot,u32 v,int is_on)
-{
-	int i,ret,err;
-	u8 *buf;
-	u32 do_time;
-	struct timespec ts;
-	
-	// 帧头
-	buf = can_request_tx_buf(CAN_FRAME_TYPE_DO_ON);
-	if(is_on)
-	{
-		buf[0] = CAN_FRAME_TYPE_DO_ON;
-	}
-	else
-	{
-		buf[0] = CAN_FRAME_TYPE_DO_OFF;
-	}
-	buf[1] = slot;
-	buf[2] = 0;
-	buf[3] = 8;
-
-	// 开出值
-	buf[4] = (v>>24) & 0xff;
-	buf[5] = (v>>16) & 0xff;
-	buf[6] = (v>> 8) & 0xff;
-	buf[7] = (v>> 0) & 0xff;
-	
-	// 开出时间
-	clk_time_get(&ts);
-	do_time = (u32)(((ts.tv_sec&0xff)<<24) | (ts.tv_nsec>>8));
-	buf[8] = (unsigned char)(do_time>>24);
-	buf[9] = (unsigned char)(do_time>>16);
-	buf[10] = (unsigned char)(do_time>>8);
-	buf[11] = (unsigned char)(do_time);
-
-	// 开出帧发送,为了提高可靠性,连发2帧
-	err = 0;
-	for(i=0; i<2; i++)
-	{
-		ret = can_send(equ_slot_can_bus(slot),buf);
-		if(ret < 0)
-		{
-			rt_printf("dido_do err:i=%d,ret=%d\r\n",i,ret);
-			err++;
-		}
-	}
-	
-	return -err;
-}
-
-
-void dido_do_poll(void)
-{
-	int i;
-
-	// 检查开出标志
-	if(g_do_flag == 0)
-	{
-		return;
-	}
-	g_do_flag = 0;
-
-	// 真正开出
-	for(i=0; i<EQU_SLOT_NUM_MAX; i++)
-	{
-		if(g_do[i].on)
-		{
-			_dido_do(i,g_do[i].on,1);
-			g_do[i].on = 0;
-		}
-
-		if(g_do[i].off)
-		{
-			_dido_do(i,g_do[i].off,0);
-			g_do[i].off = 0;
-		}
-	}
-
-	return;
-}
-
-
-/*------------------------------ 内部函数 -------------------------------------
-内部函数以下划线‘_’开头,不需要检查参数的合法性.
-*/
-
-
-/*------------------------------ 测试函数 -------------------------------------
-一个实体文件必须带一个本模块的测试函数来进行单元测试,如果的确不方便在本模块中
-进行单元测试,必须在此注明实际的测试位置(例如在哪个实体文件中使用哪个测试函数).
-*/
-int dido_printf(void)
-{
-	int i,slot,index;
-	struct ts_index ts_i;
-	
-	rt_printf("槽号\t值\r\n");
-	for(i=0; i<EQU_SLOT_NUM_MAX; i++)
-	{
-		rt_printf("%02d:\tvalue=0x%08x_%08x,inv=0x%08x_%08x\r\n",i,g_di[i].value[1],g_di[i].value[0],g_di[i].inv[1],g_di[i].inv[0]);
-	}
-
-	rt_printf("\r\n");
-
-	slot = 3;
-	index = 2;
-	ts_i.n = g_di[slot].ts_i[index].n;
-	rt_printf("开入时间戳记录:slot=%d,index=%d,ts_i=%d.\r\n",slot,index,ts_i.n);
-	rt_printf("序号\t值\t时间戳\r\n");
-	ts_i.n = 0;
-	for(i=0;i<DIDO_TS_NUM;i++)
-	{
-		rt_printf("%02d\t%d\t%08d\r\n",ts_i.n,g_di[slot].ts_v[index][ts_i.n],g_di[slot].ts_t[index][ts_i.n]);
-		ts_i.n++;
-	}
-
-	rt_stat_printf(&g_stat_di_delay);
-	rt_stat_printf(&g_stat_do_delay);
-
-#if 0
-	{
-		char tmpbuf[7];
-		tmpbuf[0] = 1;
-		tmpbuf[1] = 4;
-		dido_auto_test(tmpbuf,1);
-	}
-#endif
-
-	return 0;
-}
-
-int dido_stat_reset(void)
-{
-	rt_stat_init(&g_stat_di_delay,"di_delay");
-	rt_stat_init(&g_stat_do_delay,"do_delay");
-
-	return 0 ;
-}
-
-int dido_led_test(void)
-{
-#if 0
-	int i;
-	// 测试告警灯
-	for(i=0; i<SWITCH_NUM_MAX; i++)
-	{
-		dido_led(1<<i);
-		ustimer_delay(200*USTIMER_MS);
-		dido_led(~(1<<i));
-	}
-	
-	// 所有LED ON
-	dido_led(0xffff);
-
-	ustimer_delay(1*USTIMER_SEC);
-
-	// 所有LED OFF
-	dido_led(0xffff);
-#endif
-
-	return 0;
-}
-
-
-
-int dido_single_test(u8 slot, u8 point)
-{
-	int do_num;
-	
-	do_num = equ_get_do_num(slot);
-	if(do_num == 0)
-	{
-		return 0;
-	}
-	
-	switch (point/4)
-	{
-	case 0:
-		dido_do(slot,(1<<do_num),1);
-		break;
-	case 1:
-		dido_do(slot,(1<<(do_num+1)),1);
-		break;
-	case 2:
-		dido_do(slot,(1<<(do_num+2)),1);
-		break;
-	case 3:
-		dido_do(slot,(1<<(do_num+3)),1);
-		break;
-	case 4:
-		dido_do(slot,(1<<(do_num+4)),1);
-		break;
-	case 5:
-		dido_do(slot,(1<<(do_num+5)),1);
-		break;
-	
-	default:
-		break;
-	}
-	dido_do(slot,(1<<point),1);
-//	ustimer_delay(100*USTIMER_MS);
-//	dido_do(slot,(1<<point),0);
-
-	return 0;
-}
-
-int dido_test(void)
-{
-	static unsigned long us0 = 0;
-	static char dido_test_pair[3][2] = 
-	{
-		{1,3},
-		{2,4},
-		{5,5},
-	};
-
-	static char dido_test_di[32] = 
-	{
-		0,1,2,3,
-		0,1,2,3,
-		4,5,6,7,
-		4,5,6,7,
-		8,9,10,11,
-		8,9,10,11,
-		12,13,10,11,
-		12,13,12,13 
-	};
-	
-	int i,j,k,err_once,di_num;
-	u32 slot_di,slot_do;
-
-	if(g_test_on == 0)
-	{
-		return 0;
-	}
-	// 5秒处理一次
-	if(ustimer_delay_origin2(&us0,10*USTIMER_SEC) != 1)
-	{
-		return 0;
-	}
-	
-	rt_printf("dido_test begin...\r\n");
-
-#if 0
-	// 所有开出ON
-	rt_printf("dido_test all on.\r\n");
-	dido_do(1,0xffff,1);
-	dido_do(2,0xffff,1);
-	dido_do(5,0xffff,1);
-	dido_led(0xffff);
-
-	// 检查所有开入
-	ustimer_delay(1*USTIMER_SEC);
-
-
-	// 所有开出OFF
-	rt_printf("dido_test all off.\r\n");
-	dido_do(1,0xffff,0);
-	dido_do(2,0xffff,0);
-	dido_do(5,0xffff,0);
-	dido_led(0);
-#endif
-	ustimer_delay(1*USTIMER_SEC);
-
-#if 1
-	// 测试开出板、开入板
-	// 开出板逐一开出
-	rt_printf("dido_test single.\r\n");
-	err_once = 0;
-	for(i=0; i<3; i++)
-	{
-		slot_do = dido_test_pair[i][0];
-		slot_di = dido_test_pair[i][1];
-
-		if(equ_slot_check(slot_do)!= 0 || equ_slot_check(slot_di) != 0)
-		{
-			rt_printf("dido_test:board error:slot_do=%d,slot_in=%d\r\n",slot_do,slot_di);
-			continue;
-		}
-		if(g_board_info[slot_do].status != BOARD_STATUS_NORMAL ||g_board_info[slot_di].status != BOARD_STATUS_NORMAL)
-		{
-			rt_printf("dido_test:board status error:slot_do=%d,slot_in=%d\r\n",slot_do,slot_di); 
-			continue;
-		}
-		for(j=0;j<equ_get_do_num(slot_do); j++)
-		{
-			dido_do(slot_do,(1<<j),1);
-		//	rt_printf("dido_test:开出:j=%d\r\n",j);
-			ustimer_delay(250*USTIMER_MS);
-			
-			di_num = equ_get_di_num(slot_di);
-			if(slot_di == equ_get_slot_by_type(BOARD_TYPE_AUX))
-			{
-				di_num -= 1;
-			}
-			for(k=0;k<di_num; k++)
-			{
-				// 是否对应的开出点
-				if(dido_test_di[k] == j)
-				{
-					if((g_di[slot_di].value[0] & (1<<k)) == 0)
-					{
-						err_once++;
-						error_count++;
-						rt_printf("dido_test on err(err=%d):i=%d,j=%d,k=%d,di=0x%08x.\r\n",err_once,i,j,k,g_di[slot_di].value[0]);				
-					}
-				}
-				else
-				{
-					if((g_di[slot_di].value[0] & (1<<k)) != 0)
-					{
-						err_once++;
-						error_count++;
-						rt_printf("dido_test off err(err=%d):i=%d,j=%d,k=%d,di=0x%08x.\r\n",err_once,i,j,k,g_di[slot_di].value[0]);				
-					}
-				}
-			}
-			
-			dido_do(slot_do,(1<<j),0);
-			ustimer_delay(20*USTIMER_MS);
-			watchdog_feed_mainloop();
-
-		}
-	}
-#endif
-
-#if 0
-	// 测试告警灯
-	for(i=0; i<SWITCH_NUM_MAX; i++)
-	{
-		dido_led(1<<i);
-		ustimer_delay(200*USTIMER_MS);
-	}
-	
-	// 所有开出ON
-	dido_do(1,0xffff,1);
-	dido_do(2,0xffff,1);
-	dido_do(5,0xffff,1);
-	dido_led(0xffff);
-
-	ustimer_delay(1*USTIMER_SEC);
-
-	// 所有开出OFF
-	dido_do(1,0xffff,0);
-	dido_do(2,0xffff,0);
-	dido_do(5,0xffff,0);
-	dido_led(0);
-#endif
-
-	rt_printf("\r\n开入变位时间超出次数:%d\r\n",di_error_count);
-	rt_printf("name\t\t\tmin\tmax\tavg\tsum\t\tcnt\n");
-	rt_stat_printf(&g_stat_di_delay);
-
-	can_app_sb_monitor();
-
-	rt_printf("\r\n");
-
-	for(i=0;i<5;i++)
-	{
-		if(g_do_time[i].slot != 0)
-		{
-			rt_printf("do_time[%d]:diff_max=%d,diff_out_count=%d\r\n",g_do_time[i].slot,g_do_time[i].diff_max,g_do_time[i].diff_out_count);
-
-		}
-	}
-
-	rt_printf("\r\n");
-
-	rt_printf("dido_test end:err_once=%d,error_count=%d!\r\n\r\n\r\n",err_once,error_count);
-
-	return 0;
-}
-
-
-int dido_auto_test(char *buf,int num)
-{
-	static char test_do[16][4] = 
-	{
-		{1,5,0,0,},
-		{2,6,0,0,},
-		{3,7,0,0,},
-		{4,8,0,0,},
-
-		{9,13,0,0,},
-		{10,14,0,0,},
-		{11,15,0,0,},
-		{12,16,0,0,},
-
-		{17,21,0,0,},
-		{18,22,0,0,},
-		{19,23,0,0,},
-		{20,24,0,0,},
-
-		{25,29,0,0,},
-		{26,30,0,0,},
-		{27,0,0,0,},
-		{28,0,0,0,},
-	};
-	
-	int i,j,k,err_once,flag,flag1,di_num, do_num;
-	u32 slot_di,slot_do;
-	u8 tmp[5],tmp_data[5];
-	u8 bd_di60=0;
-	u8 di_ok[4] = {0};
-	u8 do_errflag = 0;
-	
-	char dido_test_pair[num][2];
-	unsigned long us_begin = 0;
-
-	dido_stat_reset();
-	
-	for(i=0;i<(num*2);)
-	{
-		for(j=0;j<2;j++)
-		{
-			dido_test_pair[i/2][j] = buf[i];
-			i++;
-		}
-	}
-	 
-	flag = 0;
-	flag1 = 0;
-	memset(tmp,0,sizeof(tmp));
-	memset(tmp_data,0,sizeof(tmp_data));
-	memset(dido_buf,0,sizeof(dido_buf));
-	
-	rt_printf("dido_test begin...\r\n");
-
-	err_once = 0;
-	for(i=0; i<num; i++)
-	{
-		slot_do = dido_test_pair[i][0];
-		slot_di = dido_test_pair[i][1];
-		
-		if(equ_slot_check(slot_do)!= 0 || equ_slot_check(slot_di) != 0 || slot_di == equ_get_slot_by_type(BOARD_TYPE_AUX))
-		{
-			rt_printf("dido_test:board error:slot_do=%d,slot_in=%d\r\n",slot_do,slot_di);
-			dido_buf[i+i*13] = 0;
-			dido_buf[i+i*13+5] = 0;
-			continue;
-		}
-		if(g_board_info[slot_do].status != BOARD_STATUS_NORMAL ||g_board_info[slot_di].status != BOARD_STATUS_NORMAL)
-		{
-			rt_printf("dido_test:board status error:slot_do=%d,slot_in=%d\r\n",slot_do,slot_di); 
-			dido_buf[i+i*13] = 0;
-			dido_buf[i+i*13+5] = 0;
-			continue;
-		}
-		dido_buf[i+i*13] = slot_do;
-		dido_buf[i+i*13+5] = slot_di;
-		if(slot_di == equ_get_slot_by_type(BOARD_TYPE_DI60))
-		{
-			bd_di60 = 1;
-		}
-		di_num = equ_get_di_num(slot_di);
-		do_num = equ_get_do_num(slot_do);
-		us_begin = ustimer_get_origin();
-		//以循环保证不论开出所配置的脉宽是多少,都能保持2s输出
-		while(1)
-		{
-			// 点亮所有遥信灯
-			for(j=0; j<do_num; j++)
-			{
-				dido_do(slot_do,(1<<j),1);
-			}
-			// 延时2秒,让测试人员观察所有遥信灯是否正常点亮
-			if(ustimer_get_duration(us_begin) > (2000*USTIMER_MS))
-//			if(ustimer_get_duration(us_begin) > (10000*USTIMER_MS))
-			{
-				break;
-			} 
-		}
-		// 关闭所有遥信灯
-		for(j=0; j<do_num; j++)
-		{
-			dido_do(slot_do,(1<<j),0);
-		}
-		// 等待子板的开出硬件接点真正释放,一般至少6ms
-		ustimer_delay(20*USTIMER_MS);
-
-		// 开始逐一测试开入开出对
-		for(j=0; j<do_num; j++)
-		{
-			dido_do(slot_do,(1<<j),1);
-			ustimer_delay(150*USTIMER_MS);
-
-			memset(di_ok,0,sizeof(di_ok));
-			do_errflag = 4;
-
-			for (k=0; k<4; k++)
-			{
-				if (!test_do[j+bd_di60*i*do_num][k])				 
-				{
-					do_errflag--;
-				}
-				else if (test_do[j+bd_di60*i*do_num][k] < 33)	//开入小于32个
-				{
-					if (!(g_di[slot_di].value[0] & (1<<(test_do[j+bd_di60*i*do_num][k]-1))))	//对应开入无值
-					{
-						do_errflag--;	
-						di_ok[k] = test_do[j+bd_di60*i*do_num][k];
-					}
-				}
-				else if (test_do[j+bd_di60*i*do_num][k] >= 33)	//开入小于32个										//开入大于32个
-				{
-					if (!(g_di[slot_di].value[1] & (1<<(test_do[j+bd_di60*i*do_num][k]-33))))	//对应开入无值
-					{
-						do_errflag--;
-						di_ok[k] = test_do[j+bd_di60*i*do_num][k];
-					}
-				}				
-			}
-
-			if (!do_errflag)	//开出对应的所有开入都没有值,即代表该开出有问题
-			{	
-				if (j<8)
-				{
-					dido_buf[i+i*13+1] |= (1<<j);		//开出错误标志
-				}
-				else if (j<16)
-				{
-					dido_buf[i+i*13+2] |= (1<<(j-8));		//开出错误标志
-				}
-				
-				rt_printf("dido_test do err:i=%d,j=%d,di=%d,di_l=0x%04x,di_h=0x%04x.\r\n",i,j,di_ok[0], g_di[slot_di].value[0],g_di[slot_di].value[1]);				
-			}
-			else
-			{
-				for (k=0; k<4; k++)
-				{
-					if (!di_ok[k])
-						continue;
-					if ((di_ok[k]-1) < 8)
-					{
-						dido_buf[i+i*13+6] |= (1<<(di_ok[k]-1));
-					}
-					else if ((di_ok[k]-1) < 16)
-					{
-						dido_buf[i+i*13+7] |= (1<<(di_ok[k]-1-8));
-					}
-					else if ((di_ok[k]-1) < 24)
-					{
-						dido_buf[i+i*13+8] |= (1<<(di_ok[k]-1-16));
-					}
-					else if ((di_ok[k]-1) < 32)
-					{
-						dido_buf[i+i*13+9] |= (1<<(di_ok[k]-1-24));
-					}
-					else if ((di_ok[k]-1) < 40)
-					{
-						dido_buf[i+i*13+10] |= (1<<(di_ok[k]-1-32));
-					}
-					else if ((di_ok[k]-1) < 48)
-					{
-						dido_buf[i+i*13+11] |= (1<<(di_ok[k]-1-40));
-					}
-					else if ((di_ok[k]-1) < 56)
-					{
-						dido_buf[i+i*13+12] |= (1<<(di_ok[k]-1-48));
-					}
-					else if ((di_ok[k]-1) < 64)
-					{
-						dido_buf[i+i*13+13] |= (1<<(di_ok[k]-1-56));
-					}
-					rt_printf("dido_test di err:i=%d,j=%d,di=%d,di_l=0x%04x,di_h=0x%04x.\r\n",i,j,di_ok[k], g_di[slot_di].value[0],g_di[slot_di].value[1]);
-				}
-			}
-
-			dido_do(slot_do,(1<<j),0);
-			ustimer_delay(20*USTIMER_MS);
-			watchdog_feed_mainloop();
-		}
-	}
-
-
-	for(i=0;i<5;i++)
-	{
-		if(g_do_time[i].slot != 0)
-		{
-			rt_printf("do_time[%d]:diff_max=%d,diff_out_count=%d\r\n",g_do_time[i].slot,g_do_time[i].diff_max,g_do_time[i].diff_out_count);
-
-		}
-	}
-	
-	//rt_printf("\r\n");
-
-	rt_printf("dido_test end:err_once=%d,error_count=%d!\r\n\r\n\r\n",err_once,error_count);
-
-	
-	return 0;
-}
-
-#else
-
 #include "gpio.h"
 #include "ad7616.h"
 
@@ -2197,8 +1220,6 @@ int dido_auto_test_for_v3(char *buf,int num)
 	return 0;
 }
 
-
-extern u32 g_brd_type_kz;
 int dido_auto_test(char *buf,int num)
 {
 	#define KC_COUNT 11
@@ -2429,6 +1450,6 @@ int dido_auto_test(char *buf,int num)
 	return 0;
 }
 
-#endif // GW_AREA_MAIN_2021
+
 /*------------------------------ 文件结束 -------------------------------------
 */

+ 0 - 790
app_public/fuxi_public/fuxi_bsp/source/equ_dtu.c

@@ -1,790 +0,0 @@
-/******************************************************************************
-版权所有:	
-文件名称:	equ.c
-文件版本:	01.01
-创建作者:	
-创建日期:	2013-03-25
-功能说明:	装置信息管理维护
-其它说明:
-修改记录:
-*/
-/*------------------------------- 头文件 --------------------------------------
-*/
-#include "head.h"
- 
-/*------------------------------- 宏定义 --------------------------------------
-*/
-// 171221 以前为4,现改为8,因为子板初始化时,可能导致有些子板响应不及时。
-#define EQU_SLOT_CHECK_TIMEOUT 	8	// 子板检查超时,以秒为单位,不能小于4s
-
-/*------------------------------ 类型结构 -------------------------------------
-*/
-//子板信息帧结构
-struct board_info_frame
-{
-	u8 	type;		// 子板类型
-	u8 	errcode:4;	// 子板错误代码
-	u8 	status :4;	// 子板状态
-	u16 crc;		// 子板CRC
-	u32 version;	// 子板版本
-};
-
-
-/*------------------------------ 全局变量 -------------------------------------
-*/
-
-// 采样板硬件通道和ADC采样通道的对应关系
-static const u8 g_adc_channel_index[EQU_SLOT_NUM_MAX][16] = 
-{
-	{0x09,0x0B,0x0D,0x0F,0x08,0x0A,0x0C,0x0E,0x00,0x02,0x04,0x06,0x11,0x13,0x15,0x17},	// DTUv5 采样板卡1
-	{0x19,0x1B,0x1D,0x1F,0x18,0x1A,0x1C,0x1E,0x10,0x12,0x14,0x16,0x01,0x03,0x05,0x07},	// DTUv5 采样板卡2 最后 1357通道因实际硬件没有接入所以排最后,没有用到
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 2
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 3
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 4
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 5
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 6
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 7
-	
-	{0X00,0X02,0X04,0X06,0X08,0X0A,0X0C,0X0E,0X01,0X03,0X05,0X07,0X09,0X0B,0X0D,0X0F}, // 8
-	{0X10,0X12,0X14,0X16,0X18,0X1A,0X1C,0X1E,0X11,0X13,0X15,0X17,0X19,0X1B,0X1D,0X1F}, // 9 
-	{0X20,0X22,0X24,0X26,0X28,0X2A,0X2C,0X2E,0X21,0X23,0X25,0X27,0X29,0X2B,0X2D,0X2F}, // 10
-	{0X30,0X32,0X34,0X36,0X38,0X3A,0X3C,0X3E,0X31,0X33,0X35,0X37,0X39,0X3B,0X3D,0X3F}, // 11
-	
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 12
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 13
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 14
-	{0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}, // 15
-};
-
-int g_ac_slot_is_ok[EQU_SLOT_AC_NUM];
-
-u32 g_ac_slot_begin;  //采样板起始槽位,每种机箱不一样。
-
-
-int g_ui_freq[CFG_FREQ_NUM];	// 记录频率对应ui通道的索引值
-
-
-/*------------------------------ 函数声明 -------------------------------------
-*/
-
-
-/*------------------------------ 外部函数 -------------------------------------
-外部函数供其它实体文件引用,必须仔细检查传入参数的合法性.
-*/
-int equ_init_later(void)
-{
-	int i,ui;
-	struct equ_config_di *ecd;
-
-	// 采样板起始槽位
-	if(g_equ_config->equ_slot_num == EQU_SLOT_NUM_06)
-	{
-		g_ac_slot_begin = EQU_SLOT_AC_BEGIN06;
-	}
-	else
-	{
-		// g_ac_slot_begin = EQU_SLOT_AC_BEGIN12;
-        // 16回路需处理,开始做再说...
-        rt_printf("%s 未处理的卡槽数量与采样板起始卡槽!\r\n", __func__);
-	}
-
-	// 检查频率硬件通道对应的UI。
-	g_ui_freq[0] = UI_NUM;
-	g_ui_freq[1] = UI_NUM;
-	for(i=0; i< g_equ_config->ac_num; i++)
-	{
-		// 频率通道必须是配置了的公共电压类型
-		if(g_equ_config_ac[i].type == 0 || g_equ_config_ac[i].owner != 0)
-		{
-			continue;
-		}
-
-		ui = g_equ_config_ac[i].type -1;
-		if(ui >= PUB_AC_NUM)
-		{
-			continue;
-		}
-		
-		// 确定频率对应电压通道
-        // EWen TODO DTUv5 暂时定义通道配置板卡1通道1为频率对应通道后面根据ADC数据对接再最终定义
-		// 测频放到了R核
-		if(	g_equ_config->equ_slot_num == EQU_SLOT_NUM_06 && ui < PUB_AC_NUM)
-		{
-			if(g_equ_config_ac[i].slot == 0 && g_equ_config_ac[i].index == 0)
-			{
-				g_ui_freq[0] = ui;
-			}
-			// 标准化只采了一路电压
-			if(g_equ_config_ac[i].slot == 1 && g_equ_config_ac[i].index == 0)
-			{
-				g_ui_freq[1] = ui;
-			}
-		}
-		
-#ifdef BSP_DTU3
-		if(ui < PUB_AC_NUM)
-		{
-			// if(g_equ_config_ac[i].slot == 9 && g_equ_config_ac[i].index == 0)
-			if(g_equ_config_ac[i].slot == 9 && g_equ_config_ac[i].index == 12)		// BSP_DTU4
-			{
-				g_ui_freq[0] = ui;
-			}
-			if(g_equ_config_ac[i].slot == 8 && g_equ_config_ac[i].index == 0)
-			{
-				g_ui_freq[1] = ui;
-			}
-		}
-#endif
-	}
-
-
-	// 初始化开入g_di_st结构
-	memset(g_di_st,0,sizeof(g_di_st));
-	ecd = g_equ_config_di;
-	for(i=0;i<g_equ_config->di_num;i++)
-	{
-		g_di_st[ecd->slot][ecd->index].tm_filter = ecd->filter_time;
-		g_di_st[ecd->slot][ecd->index].owner = ecd->owner;
-		g_di_st[ecd->slot][ecd->index].type = ecd->type;
-		ecd++;
-	}
-
-	return 0;
-}
-
-/******************************************************************************
-函数名称:	equ_board_info_update
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	接收到子板的对时应答帧后,更新子板信息
-参数说明:
-	can_bus 从哪条can总线接收到的帧。
-	frame	接收帧的buf指针
-返回值:	
-	0:		成功
-	其它:	失败
-修改记录:	
-*/
-int equ_board_info_update(int can_bus,u8 * frame)
-{
-	struct can_frame_head 	*cfh;
-	struct board_info_frame *bif;
-	struct board_info		*bi;
-	int i = 0;
-
-	// 检查帧内容
-	cfh = (struct can_frame_head *)frame;
-	if(cfh->src >= EQU_SLOT_NUM_MAX)
-	{
-		return -1;
-	}
-
-	if(cfh->len != 8)
-	{
-		return -2;
-	}
-	// 比较子板类型
-	bi = &g_board_info[cfh->src];
-	// 此处不能sizeof cfh 这个指针变量,64位系统中指针变量为8字节。
-	bif = (struct board_info_frame *)(frame + sizeof(struct can_frame_head));//(frame + sizeof(cfh));
-	if(bif->type != bi->type)
-	{
-		//rt_printf("board type error(no=%d,bi_type=%d,gbi_type=%d)\r\n",cfh->src,bif->type,bi->type);
-		// print_mem("frame",frame,16);
-		return -3;
-	}
-
-	// 得到子板信息
-	bi->status  = bif->status;
-	bi->errcode = bif->errcode;
-	bi->crc 	= bif->crc;
-	bi->version = bif->version;
-	// rt_printf("slot\ttype\tstatus\terrcode\tcrc\tver\r\n");
-	// rt_printf("%02d\t%02d\t%02d\t%04x\t%08x\t\r\n",cfh->src, bi->type,bi->status,bi->errcode,bi->crc,bi->version);
-
-	// 得到子板时间
-	clk_time_get(&bi->update_time);
-	bi->us0 = ustimer_get_origin();
-	bi->is_ok = 1;
-
-	bi->can_bus = can_bus;
-
-	return 0;
-
-}
-/******************************************************************************
-函数名称:	equ_ac_channel_is_ok
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	得到插槽中子板的模拟量通道对应的ADC采样通道。
-参数说明:
-	slot	插槽索引号
-	index	子板上模拟量通道索引号
-返回值:	ADC采样通道索引号
-修改记录:	
-*/
-int equ_ac_channel_is_ok(u32 index)
-{
-	
-	// 检查参数
-	if(index >= CFG_ADC_CHANNEL)
-	{
-		return 0;
-	}
-
-	//	index右移4位找到板卡索引,再通过槽地址查看板卡是否存在
-	return !(g_slot_addr&(1<<(index>>4)));
-}
-
-
-/******************************************************************************
-函数名称:	equ_get_ac_channel
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	得到插槽中子板的模拟量通道对应的ADC采样通道。
-参数说明:
-	slot	插槽索引号
-	index	子板上模拟量通道索引号
-返回值:	ADC采样通道索引号
-修改记录:	
-*/
-int equ_get_ac_channel(u32 slot,u32 index)
-{
-	// 检查参数
-	if(slot >= EQU_SLOT_NUM_MAX)
-	{
-		return -1;
-	}
-
-	if(index >= 16)
-	{
-		return -2;
-	}
-	
-	return g_adc_channel_index[slot][index];
-}
-
-/******************************************************************************
-函数名称:	equ_get_ac_slot
-函数版本:	01.01
-创建作者:	钟务贵
-创建日期:	2014-10-09
-函数说明:	得到采样通道对应的板卡
-参数说明:
-	owner	归属公共、开关
-	type	采样类型
-返回值:	ADC采样通道索引号
-修改记录:	
-*/
-int equ_get_ac_slot(u32 owner, u32 type)
-{
-	u32 no;
-	if (owner)
-	{
-		no = g_sw[owner].ac_cfg_index[type];
-	}
-	else
-	{
-		no = g_sw_pub.ac_cfg_index[type];
-	}
-	return g_equ_config_ac[no].slot;
-}
-
-/******************************************************************************
-函数名称:	equ_ac_index_to_slot
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	将采样板索引号(和ADC通道号对应)转换为插槽号。
-参数说明:
-	ac_index	采样板索引号
-返回值:	插槽号
-修改记录:	
-*/
-int equ_ac_index_to_slot(int ac_index)
-{
-	if((u32)ac_index >= EQU_SLOT_AC_NUM)
-	{
-		return 0;
-	}
-	
-	return g_ac_slot_begin + ac_index;
-}
-
-/******************************************************************************
-函数名称:	equ_slot_config_led
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	配置子板上的开出资源
-参数说明:
-	slot	插槽索引号
-返回值:	插槽号
-	0:		成功
-	其它:	失败
-修改记录:	
-*/
-int equ_slot_config_led(int slot)
-{
-	int num,i;
-	u8 *buf,*buf0;
-
-	// 得到LED个数,并检查合法性
-	num = g_led_slot[slot].num;
-	if(num > (CAN_FRAME_LEN_MAX - 8))
-	{
-		return -1;
-	}
-
-	// 获取帧buf
-	buf0 = can_request_tx_buf(CAN_FRAME_TYPE_ARGUMENT_LED);
-	memset(buf0,0,CAN_FRAME_LEN_MAX);
-	
-	// 帧头
-	buf = buf0;
-	buf[0] = CAN_FRAME_TYPE_ARGUMENT_LED;
-	buf[1] = slot;
-	buf[2] = 0;
-	buf[3] = num  + 1;
-
-	// LED配置
-	buf = buf0 + 4;
-	for(i=0;i<num;i++)
-	{
-		if(g_led_slot[slot].sn[i].no != LED_NULL)
-		{
-			buf[i] = 1;
-		}
-	}
-
-	// 校验和
-	buf[num] = can_app_checksum(buf0,num+4);
-	buf[num] = ~buf[num]+1;
-
-	// 发送
-	can_send(g_board_info[slot].can_bus,buf0);
-
-	return 0;
-}
-
-
-/******************************************************************************
-函数名称:	equ_slot_config_do
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	配置子板上的开出资源
-参数说明:
-	slot	插槽索引号
-返回值:	插槽号
-	0:		成功
-	其它:	失败
-修改记录:	
-*/
-int equ_slot_config_do(int slot)
-{
-	int num,i;
-	u8 *buf,*buf0;
-	u16 keeptime;
-	struct equ_config_do *ecd;
-
-
-	// 得到do个数,并检查合法性
-	num = equ_get_do_num(slot);
-	num++; //将选择继电器加上
-	if(num > (CAN_FRAME_LEN_MAX - 8)/2)
-	{
-		return -1;
-	}
-
-	// 获取帧buf
-	buf0 = can_request_tx_buf(CAN_FRAME_TYPE_ARGUMENT_DO);
-	
-	// 帧头
-	buf = buf0;
-	buf[0] = CAN_FRAME_TYPE_ARGUMENT_DO;
-	buf[1] = slot;
-	buf[2] = 0;
-	buf[3] = num *2 + 1;
-
-	// 默认保持时间
-	buf = buf0 + 4;
-	keeptime = DO_DEFAULT_KEEPTIME;
-	for(i=0; i<num; i++)
-	{
-		memcpy(buf,&keeptime,2);
-		buf += 2;
-	}
-
-	// 用户配置的保持时间
-	ecd = g_equ_config_do;
-	buf = buf0 + 4;
-	for(i=0;i<g_equ_config->do_num;i++)
-	{
-		// 通道配置设置的时间
-		if(ecd->slot == slot)
-		{
-			memcpy(buf+ecd->index*2,&ecd->time_pulse,2);
-		}
-		
-		// 如果定值参数中设置了分闸时间,覆盖
-		if((ecd->slot == slot && ecd->owner) &&
-			(ecd->type == SW_DO_FZ+1 || ecd->type == SW_DO_YKT+1) )
-		{
-			if(pRunSet->bTT_RmtPara)
-			{
-				memcpy(buf+ecd->index*2,&tRunPara.wFZMC,2);
-			}
-		}
-		
-		// 如果定值参数中设置了合闸时间,覆盖
-		if((ecd->slot == slot && ecd->owner) &&
-			(ecd->type == SW_DO_HZ+1 || ecd->type == SW_DO_YKH+1) )
-		{
-			if(pRunSet->bTT_RmtPara)
-			{
-				memcpy(buf+ecd->index*2,&tRunPara.wHZMC,2);
-			}
-		}
-
-		ecd++;
-	}
-
-	//将遥控超时时间用作选择继电器超时时间,以秒为单位
-	keeptime = tRunPara.dSM2Time;
-	memcpy(buf+(num-1)*2,&keeptime,2);
-	
-	// 校验和
-	buf[num *2] = can_app_checksum(buf0,num*2+4);
-	buf[num *2] = ~buf[num *2]+1;
-
-	// 发送
-	can_send(g_board_info[slot].can_bus,buf0);
-
-	return 0;
-}
-
-/******************************************************************************
-函数名称:	equ_slot_config_do_2
-函数版本:	01.00
-创建作者:	赵海洋
-创建日期:	2021-10-22
-函数说明:	配置拓展子板上的开出资源
-参数说明:
-	slot	插槽索引号
-返回值:	插槽号
-	0:		成功
-	其它:	失败
-修改记录:	
-*/
-int equ_slot_config_do_2(int slot)
-{
-	int num,i;
-	u8 *buf,*buf0;
-	u16 keeptime;
-	struct equ_config_do *ecd;
-
-
-	// 得到do个数,并检查合法性
-	num = equ_get_do_num(slot);
-	num=num+6; //将选择继电器加上
-	if(num > (CAN_FRAME_LEN_MAX - 8)/2)
-	{
-		return -1;
-	}
-
-	// 获取帧buf
-	buf0 = can_request_tx_buf(CAN_FRAME_TYPE_ARGUMENT_DO_2);
-	
-	// 帧头
-	buf = buf0;
-	buf[0] = CAN_FRAME_TYPE_ARGUMENT_DO_2;
-	buf[1] = slot;
-	buf[2] = 0;
-	buf[3] = num *2 + 1;
-
-	// 默认保持时间
-	buf = buf0 + 4;
-	keeptime = DO_DEFAULT_KEEPTIME;
-	for(i=0; i<num; i++)
-	{
-		memcpy(buf,&keeptime,2);
-		buf += 2;
-	}
-
-	// 用户配置的保持时间
-	ecd = g_equ_config_do;
-	buf = buf0 + 4;
-	for(i=0;i<g_equ_config->do_num;i++)
-	{
-		// 通道配置设置的时间
-		if(ecd->slot == slot)
-		{
-			memcpy(buf+ecd->index*2,&ecd->time_pulse,2);
-		}
-		
-		// 如果定值参数中设置了分闸时间,覆盖
-		if((ecd->slot == slot && ecd->owner) &&
-			(ecd->type == SW_DO_FZ+1 || ecd->type == SW_DO_YKT+1) )
-		{
-			if(pRunSet->bTT_RmtPara)
-			{
-				memcpy(buf+ecd->index*2,&tRunPara.wFZMC,2);
-			}
-		}
-		
-		// 如果定值参数中设置了合闸时间,覆盖
-		if((ecd->slot == slot && ecd->owner) &&
-			(ecd->type == SW_DO_HZ+1 || ecd->type == SW_DO_YKH+1) )
-		{
-			if(pRunSet->bTT_RmtPara)
-			{
-				memcpy(buf+ecd->index*2,&tRunPara.wHZMC,2);
-			}
-		}
-
-		ecd++;
-	}
-
-	//将遥控超时时间用作选择继电器超时时间,以秒为单位
-	keeptime = tRunPara.dSM2Time;
-	for ( i = 1; i < 7; i++)
-	{
-		memcpy(buf+(num-i)*2,&keeptime,2);
-	}
-	
-	// 校验和
-	buf[num *2] = can_app_checksum(buf0,num*2+4);
-	buf[num *2] = ~buf[num *2]+1;
-
-	// 发送
-	can_send(g_board_info[slot].can_bus,buf0);
-
-	return 0;
-}
-
-/******************************************************************************
-函数名称:	equ_slot_config_di
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	配置子板上的开入资源
-参数说明:
-	slot	插槽索引号
-返回值:	插槽号
-	0:		成功
-	其它:	失败
-修改记录:	
-*/
-int equ_slot_config_di(int slot)
-{
-	int num,i;
-	u8 *buf,*buf0;
-	u16 time;
-	struct equ_config_di *ecd;
-
-	// 得到di个数,并检查合法性
-	num = equ_get_di_num(slot);
-	if(num > (CAN_FRAME_LEN_MAX -8)/2)
-	{
-		return -1;
-	}
-
-	// 获取帧buf
-	buf0 = can_request_tx_buf(CAN_FRAME_TYPE_ARGUMENT_DI);
-	
-	// 帧头
-	buf = buf0;
-	buf[0] = CAN_FRAME_TYPE_ARGUMENT_DI;
-	buf[1] = slot;
-	buf[2] = 0;
-	buf[3] = num *2 + 1;
-	buf += 4;
-
-	// 默认保持时间
-	buf = buf0 + 4;
-	time = DI_DEFAULT_FILTER_TIME;
-	for(i=0; i<num; i++)
-	{
-		memcpy(buf,&time,2);
-		buf += 2;
-	}
- 
-	// 用户配置的保持时间
-	ecd = g_equ_config_di;
-	buf = buf0 + 4;
-	for(i=0;i<g_equ_config->di_num;i++)
-	{
-		if(ecd->slot == slot)
-		{
-			/// 如果定值参数中设置了遥信滤波时间,使用之,否则使用通道配置的遥信滤波时间。
-			time = pRunSet->bTT_RmtPara ? tRunPara.wYXFD : ecd->filter_time;
-			memcpy(buf+ecd->index*2,&time,2);
-		}
-
-		ecd++;
-	}
-
-	// 校验和
-	buf[num *2] = can_app_checksum(buf0,num*2+4);
-	buf[num *2] = ~buf[num *2] + 1;
-
-	// 发送
-	can_send(g_board_info[slot].can_bus,buf0);
-
-	return 0;
-}
-
-
-
-/******************************************************************************
-函数名称:	equ_check_period
-函数版本:	01.01
-创建作者:	 
-创建日期:	2013-08-08
-函数说明:	在大循环中检查子板是否正常。
-参数说明:
-返回值:	插槽号
-	0:		成功
-	其它:	失败
-修改记录:	
-*/
-int equ_check_period(void)
-{
-	static int g_us_max=0;
-	int i;
-	unsigned long us;
-	
-	for(i=0; i<EQU_SLOT_NUM_MAX; i++)
-	{
-		// 不需要检查的子板,直接跳过
-		if(g_board_info[i].is_check == 0)
-		{
-			continue;
-		}
-
-		// 采样板通过槽地址直接判是否正常
-		if(g_board_info[i].type == BOARD_TYPE_AC)
-		{
-			if((g_slot_addr &(1<<(i-g_ac_slot_begin))) == 0)
-			{
-				clk_time_get(&g_board_info[i].update_time);
-				g_board_info[i].us0 = ustimer_get_origin();
-				g_board_info[i].is_ok = 1;
-			}
-		}
-
-		// 如果子板规定时间内没有应答,置标志
-		// 注意:由于ustimer计时最长只能为1个小时,所以判断时需配合is_ok标志
-		us = ustimer_get_duration(g_board_info[i].us0);
-		if(us > g_us_max)
-		{
-			g_us_max = us;
-	//		rt_printf("g_us_max=%d.\r\n",g_us_max);
-		}
-		if(g_board_info[i].is_ok && us > (EQU_SLOT_CHECK_TIMEOUT*USTIMER_SEC))
-		{
-			if(rt_err_set(ERR_CODE_SB_COMM,i) == 2)
-			{
-				rt_printf("板卡%d通讯异常:us=%08x\r\n",i,us);
-				soe_record_ev(EV_BOARDCOMM, 1, 0,0,0 );        
-			}
-
-			g_board_info[i].is_ok = 0;
-		}
-
-		// 如果此子板不正常,不处理后面的操作
-		if(g_board_info[i].is_ok == 0)
-		{
-			continue;
-		}
-
-		// 子板正常,复位通讯异常标志
-		if(rt_err_clr(ERR_CODE_SB_COMM,i) == 2)
-		{
-			soe_record_ev(EV_BOARDCOMM, 0, 0,0,0 );        
-		}
-
-		// 检查子板是否需要LED配置
-		if(g_board_info[i].status == BOARD_STATUS_CONFIG_LED)
-		{
-			equ_slot_config_led(i);
-			g_board_info[i].status = BOARD_STATUS_CONFIG_WAIT;
-
-			// 子板上电记录
-			{
-				char log[64];
-
-				sprintf(log,"板卡%02d[%s]上电",i,g_board_res[g_board_info[i].type].name);
-				log_str_time(LOG_OPERATE,log,0,0);
-			}
-		}
-
-		// 检查子板是否需要DO配置
-		if(g_board_info[i].status == BOARD_STATUS_CONFIG_DO)
-		{
-			equ_slot_config_do(i);
-			g_board_info[i].status = BOARD_STATUS_CONFIG_WAIT;
-		}
-
-		// 检查子板是否需要DO_2配置
-		if(g_board_info[i].status == BOARD_STATUS_CONFIG_DO_2)
-		{
-			equ_slot_config_do_2(i);
-			g_board_info[i].status = BOARD_STATUS_CONFIG_WAIT;
-
-			// 子板上电记录
-			if(equ_get_do_num(i) != 0)
-			{
-				char log[64];
-				u8 ttype = g_board_info[i].type;
-				ttype = 20 ? 11 : 0;
-				// Here special deal board type
-				if (g_board_res[ttype].name != NULL)
-				{
-					sprintf(log,"板卡%02d[%s]上电 类型[%d]",i,g_board_res[ttype].name, g_board_info[i].type);
-					log_str_time(LOG_OPERATE,log,0,0);
-				}
-			}
-		}
-
-		// 检查子板是否需要DI配置
-		if(g_board_info[i].status == BOARD_STATUS_CONFIG_DI)
-		{
-			equ_slot_config_di(i);
-			g_board_info[i].status = BOARD_STATUS_CONFIG_WAIT;
-
-			// 子板上电记录
-			if(equ_get_di_num(i) != 0)
-			{
-				char log[64];
-
-				sprintf(log,"板卡%02d[%s]上电 类型[%d]",i,g_board_res[g_board_info[i].type].name, g_board_info[i].type);
-				log_str_time(LOG_OPERATE,log,0,0);
-			}
-		}
-	}
-
-	return 0;
-}
-
-
-
-/*------------------------------ 内部函数 -------------------------------------
-内部函数以下划线‘_’开头,不需要检查参数的合法性.
-*/
-
-
-/*------------------------------ 测试函数 -------------------------------------
-一个实体文件必须带一个本模块的测试函数来进行单元测试,如果的确不方便在本模块中
-进行单元测试,必须在此注明实际的测试位置(例如在哪个实体文件中使用哪个测试函数).
-*/
-
-
-/*------------------------------ 文件结束 -------------------------------------
-*/
-
-

+ 6 - 3
app_public/fuxi_public/fuxi_bsp/source/equ_ftu.c → app_public/fuxi_public/fuxi_bsp/source/equ_fuxi.c

@@ -38,6 +38,7 @@ u32 g_brd_type_kz;
 // 模拟量对应关系
 static const s8 g_ac_index[BOARD_TYPE_KZ_NUM][EQU_SLOT_AC_CHN] = 
 {
+    {0X01, 0X03, 0X05, 0X07, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X02, 0X04, 0X06, 0X0E, 0X0C, 0X0A, 0X08}, // 24款分布式 lch
 	{0X01,0X03,0X05,0X07,0X09,0X0B,0X0D,0X04,0X0A,0X0E,0X02,0X08,0X0C,0X00,0X06,0X0F},	// KC00
 	{0X01,0X03,0X05,0X07,0X09,0X0B,0X0D,0X0F,0x0E,0x04,0x02,0x08,0x0C,0x00,0x06,0x0A},	// KC08
 	{0X0C,0X0E,0X01,0X03,0X00,0X02,0X04,0X06,0X08,0X0A,0X05,0X07,0X09,0X0B,0X0D,0X0F},	// KC10,10AC
@@ -417,16 +418,18 @@ int equ_ac_channel_is_ok(u32 index)
 int equ_get_ac_channel(u32 slot,u32 index)
 {
 	// 检查参数
-	if(slot != EQU_SLOT_KZ)
+#if (0) /* 不检查 插槽索引号 lch 2025年12月5日17:29:28 */
+	if(slot != BOARD_TYPE_FUXI_AC)
 	{
 		return -1;
 	}
+#endif
 
-	if(index >= 16)
+	if(index >= CFG_ADC_CHANNEL)
 	{
 		return -2;
 	}
-	
+
 	return g_ac_index[g_brd_type_kz][index];
 }
 

+ 6 - 3
app_public/fuxi_public/fuxi_bsp/source/factor.c

@@ -31,18 +31,21 @@
 // #define SCALE_PT_204K		(0.513*32768/2.5*1.4142)	// 次级电阻200k  最终版本
 // DTUv5与DTUv4同样硬件,系数一样
 #define SCALE_PT_204K		(0.1105*32768/2.5*1.4142)	// 加264V相电压二次用万用表测有效值为0.063v		初级241KΩ次级100Ω
+#define SCALE_PT_FUXI       (0.1090 * 32768 / 5.0 * 1.4142)
+
 // 使用次级电阻标识
 #define SCALE_CT_100A_51	(2.526*32768/5.0*1.4142)	// 次级电阻51欧,,加5A相电流二次用万用表测有效值为0.127V
 #define SCALE_CT_10A_51	(0.254*32768/2.5*1.4142)	// 次级电阻51欧,加10A相电流二次用万用表测有效值为0.254V
 #define SCALE_CT_10A_120	(1.27*32768/2.5*1.4142)	// 次级电阻249欧,加10A相电流二次用万用表测有效值为0.643V  // 零序穿心5倍 最大量程20A
 #define SCALE_CT_10A_249	(1.265*32768/5.0*1.4142)	//  1ACT 量程20A
 #define SCALE_CT_10A_604	(3.235*32768/5.0*1.4142)	// 次级电阻604欧,加10A相电流二次用万用表测有效值为3.235V
+#define SCALE_CT_FUXI       (3.069 * 32768 / 5.0 * 1.4142)
 
 #define SCALE_EVT			(32768.0)
 #define SCALE_ECT			(32768.0)
 
-#define SCALE_PT_DEFAULT	SCALE_PT_204K
-#define SCALE_CT_DEFAULT	SCALE_CT_100A_51
+#define SCALE_PT_DEFAULT	SCALE_PT_FUXI
+#define SCALE_CT_DEFAULT	SCALE_CT_FUXI
 
 /*------------------------------ 类型结构 -------------------------------------
 */
@@ -155,7 +158,7 @@ int factor_init(void)
 	if(ret != 0)
 	{
 		rt_err_set(ERR_CODE_FACTOR,0);
-		printf("交流系数文件错误: (ret=%d)\r\n", ret);
+		dp_err_n_c("交流系数文件错误: (ret=%d)\r\n", ret);
 
 		return -2;
 	}

+ 12 - 15
app_public/fuxi_public/fuxi_bsp/source/gpio.c

@@ -122,7 +122,7 @@ int sysfs_gpio_export(int gpio) {
     if (write(fd, buf, strlen(buf)) < 0) {
         perror("Failed to export GPIO");
         close(fd);
-        return -1;
+        return -2;
     }
     
     close(fd);
@@ -199,13 +199,13 @@ int sysfs_gpio_init(int gpio, int direction)
 	ret = sysfs_gpio_export(gpio);
 	if(ret < 0)
 	{
-		printf("sysfs_gpio_export error\n");
+		dp_err_n_c("sysfs_gpio_export error ret = %d!\n", ret);
 		return -1;
 	}
 	ret = sysfs_gpio_set_direction(gpio, direction);
 	if(ret < 0)
 	{
-		printf("sysfs_gpio_set_direction error\n");
+		dp_err_n_c("sysfs_gpio_set_direction error\n");
 	}
 
 	return sysfs_gpio_set_value(gpio, GPIO_LOW);	// 初始化IO为低电平
@@ -232,7 +232,7 @@ int rt_write(int fd, char *buf, int len) {
         // Xenomai RTDM设备:需要转换为二进制值
         value = atoi(buf);
         if(value != 0 && value != 1) {
-            printf("value :%d ERR, Please enter '0' or '1'\n", value);
+            dp_err_n_c("value :%d ERR, Please enter '0' or '1'\n", value);
             return -1;
         }
         return write(fd, &value, sizeof(value));
@@ -281,7 +281,7 @@ int gpio_init(void)
 			gpio_val_fd[i] = sysfs_gpio_init(gpio_val[i], GPIO_OUTPUT);
 			if(gpio_val_fd[i] < 0)
 			{
-				printf("gpio_val_fd[%d] error\n", i);
+				dp_err_n_c("gpio_val_fd[%d] error\n", i);
 				gpio_val_fd[i] = -1;
 				gpio_dev_type[i] = -1;
 				return -1;
@@ -300,7 +300,7 @@ int gpio_init(void)
 			gpio_val_fd_other[i] = sysfs_gpio_init(gpio_val_other[i], GPIO_OUTPUT);
 			if(gpio_val_fd_other[i] < 0)
 			{
-				printf("gpio_val_fd_other[%d] error\n", i);
+				dp_err_n_c("gpio_val_fd_other[%d] error\n", i);
 				gpio_val_fd_other[i] = -1;
 				gpio_dev_type_other[i] = -1;
 				return -1;
@@ -386,7 +386,7 @@ int gpio_init(void)
     exportfd = open("/sys/class/gpio/export", O_WRONLY);
     if (exportfd < 0)
     {
-        printf("Cannot open GPIO to export it\n");
+        dp_err_n_c("Cannot open GPIO to export it\n");
         return -1;
     }
 #ifdef NW_AREA_MAIN_2021
@@ -414,7 +414,7 @@ int gpio_init(void)
         gpio_val_fd[i] = open(path, O_RDWR);
         if (gpio_val_fd[i] < 0)
         {
-            printf("Cannot open GPIO%d value!\n", gpio_val[i]);
+            dp_err_n_c("Cannot open GPIO%d value!\n", gpio_val[i]);
             for(j = 0; j < i; j ++)
             {
             	close(gpio_val_fd[j]);
@@ -432,7 +432,7 @@ int gpio_init(void)
 		directionfd = open(path, O_RDWR);
 		if (directionfd < 0)
 		{
-			printf("Cannot open GPIO%d direction!\n", gpio_val[i]);
+			dp_err_n_c("Cannot open GPIO%d direction!\n", gpio_val[i]);
 			return -2;
 		}
 		write(directionfd, "out", 4);
@@ -450,7 +450,7 @@ int gpio_init(void)
         gpio_val_fd_other[i] = open(path, O_RDWR);
         if (gpio_val_fd_other[i] < 0)
         {
-            printf("Cannot open GPIO%d value!\n", gpio_val_other[i]);
+            dp_err_n_c("Cannot open GPIO%d value!\n", gpio_val_other[i]);
             for(j = 0; j < i; j ++)
             {
             	close(gpio_val_fd_other[j]);
@@ -474,7 +474,7 @@ int gpio_init(void)
 		directionfd = open(path, O_RDWR);
 		if (directionfd < 0)
 		{
-			printf("Cannot open GPIO%d direction!\n", gpio_val_other[i]);
+			dp_err_n_c("Cannot open GPIO%d direction!\n", gpio_val_other[i]);
 			return -3;
 		}
 		write(directionfd, "out", 4);
@@ -519,7 +519,7 @@ int gpio_exit(void)
 	unexportfd = open("/sys/class/gpio/unexport", O_WRONLY);
     if (unexportfd < 0)
     {
-        printf("Cannot open GPIO to unexport it\n");
+        dp_err_n_c("Cannot open GPIO to unexport it\n");
         return -1;
     }
 #ifdef NW_AREA_MAIN_2021
@@ -588,14 +588,11 @@ unsigned int gpio_get_kin(unsigned int addr)
 
 unsigned int gpio_get_di(void)
 {
-	return 0;
-	#ifndef GW_AREA_MAIN_2021
     unsigned int dw = 0;
 
 	dw = g_yx_buf[0];//这里保存的是共享内存的yx值,156us更新一次
 
 	return  change_di_ch(~dw);//取反---因为没有短接时,值为1. 所以要取反为0才行
-	#endif
 }
 
 

+ 1 - 2
app_public/fuxi_public/fuxi_bsp/source/led_ftu.c

@@ -117,7 +117,6 @@ static int _led_act(void)
 
 static int _led_kc_op(int i)
 {
-#ifndef GW_AREA_MAIN_2021
 	int channel;
 	
 	// 先将板卡的索引转换为开出函数的索引
@@ -146,7 +145,7 @@ static int _led_kc_op(int i)
 			}
 		break;
 	}
-#endif
+
 	return 0;
 }
 

+ 3 - 2
app_public/fuxi_public/fuxi_bsp/source/uart.c

@@ -20,6 +20,7 @@
 #include "bsp.h"
 #include "rt.h"
 #include "uart_user.h"
+#include "debug_print.h"
 
 
 #define UART_MAX_FD	256 //noted by sunxi: 因为传进来的UART_CHANNEL[i]不一定是连续的。
@@ -255,7 +256,7 @@ int uart_open(int channel, uint32_t baudRate, int setting)
 		am335x_uarts_fd[channel] = open(tty_name, O_RDWR, 0);
 		if(am335x_uarts_fd[channel] < 0)
 		{
-			printf("inside open %s failed!\n", tty_name);
+			dp_err_n_c("inside open %s failed!\n", tty_name);
 			return am335x_uarts_fd[channel];
 		}
 	} 
@@ -409,7 +410,7 @@ int uart_init(void)
 		ret = uart_open(i,115200,PARITY_NONE);
 		if (ret < 0)
 		{
-			printf("%s: outside uart %d open failed!\n", __FUNCTION__, i);
+			dp_err_n_c("%s: outside uart %d open failed!\n", __FUNCTION__, i);
 		}
 	}
 

+ 4 - 2
app_public/fuxi_public/rt_lite/source/rt.c

@@ -11,6 +11,8 @@
 /*------------------------------- Í·Îļþ --------------------------------------
 */
 #include "rt.h"
+#include "debug_print.h"
+
 int g_clock_mode;
 int g_clock_mode_gps; 
 /*------------------------------- ºê¶¨Òå --------------------------------------
@@ -71,7 +73,7 @@ int rt_init(void)
 		if(ret != 0)
 		{
 			rt_err_set(g_rt_init_func[i].err_code,0);
-			printf("rt_init err(i=%d,ret=%d)\r\n",i,ret);
+			dp_err_n_c("rt_init err(i=%d,ret=%d)\r\n",i,ret);
 			return ret;
 		}
 	}
@@ -89,7 +91,7 @@ int rt_exit(void)
 		ret = g_rt_exit_func[i]();
 		if(ret != 0)
 		{
-			printf("rt_exit err(i=%d,ret=%d)\r\n",i,ret);
+			dp_err_n_c("rt_exit err(i=%d,ret=%d)\r\n",i,ret);
 		}
 	}
 

+ 16 - 14
app_public/fuxi_public/rt_lite/source/rt_console.c

@@ -182,20 +182,20 @@ unsigned int rt_console_write_len(void)
 
 static inline void console_tx_chars(void)
 {
-	unsigned char c;
-	
-	if(rt_fifo_get(&g_console_fifo_tx,&c,1))
-	{
-		  /* Wait until space is available in the FIFO */
-		    //while (!(MCF_UART_USR(CFG_UART_RT_CONSOLE) & MCF_UART_USR_TXRDY)) ;
-
-		    //MCF_UART_UTB(CFG_UART_RT_CONSOLE) = c;
-	}
-	else
-	{
-	//	g_uart_imr &= ~(MCF_UART_UIMR_TXRDY);
-		//MCF_UART_UIMR(CFG_UART_RT_CONSOLE) = (unsigned char)g_uart_imr;
-	}
+    unsigned char c;
+
+    if (rt_fifo_get(&g_console_fifo_tx, &c, 1))
+    {
+        /* Wait until space is available in the FIFO */
+        // while (!(MCF_UART_USR(CFG_UART_RT_CONSOLE) & MCF_UART_USR_TXRDY)) ;
+
+        // MCF_UART_UTB(CFG_UART_RT_CONSOLE) = c;
+    }
+    else
+    {
+        //	g_uart_imr &= ~(MCF_UART_UIMR_TXRDY);
+        // MCF_UART_UIMR(CFG_UART_RT_CONSOLE) = (unsigned char)g_uart_imr;
+    }
 }
 
 /*------------------------------ 内部函数 -------------------------------------
@@ -442,7 +442,9 @@ TCmd gCmd[] =
 	//{"sec", sec_info_printf, "安全信息打印"},
 	//{"ept", print_EquipParaTable, "装置参数打印"},
 	
+#ifdef BSP_CAN_ENABLE
 	{"can",can_stat,"CAN总线统计"},
+#endif
 #if defined(BSP_DTU3) || defined(BSP_DTU2)
 	{"sb",can_app_sb_monitor, "子板监视信息"},
 	{"cantest",can_app_test_printf, "子板测试信息"},

+ 9 - 9
app_public/fuxi_public/rt_lite/source/rt_error.c

@@ -13,6 +13,7 @@
 #include "rt.h"
 #include "my_rtc.h"
 #include <stdatomic.h>
+#include "debug_print.h"
 
 /*------------------------------- 宏定义 --------------------------------------
 */
@@ -221,12 +222,11 @@ int rt_err_init(void)
 
 	num = sizeof(g_err_txt)/sizeof(g_err_txt[0]);
 	if(num != ERR_CODE_NUM)
-	{
-		rt_printf("rt_err_init error(ERR_CODE_NUM=%d,num=%d).\r\n",ERR_CODE_NUM,num);
-		return -1;
-
-	}
-	atomic_init(&g_err_cnt_hw, 0);
+    {
+        dp_err_n_c_rt("rt_err_init error(ERR_CODE_NUM=%d,num=%d).\r\n", ERR_CODE_NUM, num);
+        return -1;
+    }
+    atomic_init(&g_err_cnt_hw, 0);
 	atomic_init(&g_err_cnt_sw, 0);
 	
 	return 0;
@@ -257,7 +257,7 @@ int rt_err_set(u32 err_code,u32 err_arg)
 		// 检查参数索引
 		if(err_arg >= 32)
 		{
-			rt_printf("rt_err_set err:err_code=%lu,err_arg=%lu",err_code,err_arg);
+			dp_err_n_c_rt("rt_err_set err:err_code=%lu, err_arg=%lu", err_code,err_arg);
 			return -2;
 		}
 		
@@ -305,7 +305,7 @@ int rt_err_set(u32 err_code,u32 err_arg)
 			rt_printf("rt_err_clr g_err_queue full!\r\n");
 		}
 	
-		rt_printf("%s产生[错误参数:%lu]!\r\n",g_err_txt[err_code].txt,err_arg);
+		dp_err_n_c_rt("%s产生[错误参数:%lu]!\r\n",g_err_txt[err_code].txt,err_arg);
 	}
 
 	return 0;
@@ -394,7 +394,7 @@ int rt_err_clr(u32 err_code,int err_arg)
 			rt_printf("rt_err_clr g_err_queue full!\r\n");
 		}
 		
-		rt_printf("%s消失[错误参数:%d]!\r\n",g_err_txt[err_code].txt,err_arg);
+		dp_err_n_c_rt("%s消失[错误参数:%d]!\r\n",g_err_txt[err_code].txt,err_arg);
 	}
 
 	return 0;

+ 1 - 1
app_public/xdljd/jdxx.c

@@ -2051,7 +2051,7 @@ void _getjdxxdz_inf(void)
 	pfile = rt_file_open("/app/data/pcolcfg.ini",O_RDONLY ,0);
 	if(IS_ERR(pfile))
 	{
-		rt_printf("error! ÎŞ·¨´ò¿ª pcolcfg.ini\r\n");
+		dp_err_n_c_rt("error! ÎŞ·¨´ò¿ª pcolcfg.ini\r\n");
 		goto jdxx_err;
 	}
 	

+ 18 - 201
dtu/dtu_main_t536/app/Appconfig.c

@@ -141,146 +141,7 @@ const SOE_DEF tAllSOE[]=
 /*    代码         类型          参数1    参数2    参数3        名称            */
 /*保护专用事件*/
 	// 开关事件
-#ifdef GW_AREA_MAIN_2021
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流I段动作"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流I段动作"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流I段动作"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流I段动作"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流I段告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流I段告警"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流I段告警"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流I段告警"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流II段动作"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流II段动作"},
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流II段动作"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流II段动作"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流II段告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流II段告警"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流II段告警"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流II段告警"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流III段动作"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流III段动作"},
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流III段动作"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流III段动作"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流III段告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流III段告警"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流III段告警"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流III段告警"},
-	{0x84,		{EV_PARA_Ia,	EV_PARA_Ib,	EV_PARA_Ic},	"短路故障跳闸"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"A相短路跳闸"},
-	{0x0,		{EV_PARA_Ib,	0,			0},				"B相短路跳闸"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"C相短路跳闸"},
-	{0x84,		{EV_PARA_Ia,	EV_PARA_Ib,	EV_PARA_Ic},	"短路故障告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"A相短路告警"},
-	{0x0,		{EV_PARA_Ib,	0,			0},				"B相短路告警"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"C相短路告警"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"小电流接地启动"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"小电流接地动作"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"小电流接地告警"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序I段动作"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序I段告警"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序II段动作"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序II段告警"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序III段动作"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序III段告警"},
-	{0x84,		{EV_PARA_I0,	0,			0},				"零流跳闸"},
-	{0x84,		{EV_PARA_I0,	0,			0},				"零流告警"},
-	{0x05,		{EV_PARA_U0,	0,			0},				"零压跳闸"},
-	{0x05,		{EV_PARA_U0,	0,			0},				"零压告警"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"过流加速动作"},	
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过流加速"},
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过流加速"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过流加速"},
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零序加速动作"},
-	{0x84,		{EV_PARA_U0,	0,			0},				"零压加速动作"},	
-	{0x00,		{0,				0,			0},				"重合闸启动"},
-	{0x04,		{0,				0,			0},				"一次重合动作"},
-	{0x04,		{0,				0,			0},				"二次重合动作"},
-	{0x04,		{0,				0,			0},				"三次重合动作"},
-	{0x84,		{EV_PARA_Us1,	EV_PARA_Us2,0},				"失压分闸"},
-	{0x84,		{0,				0,			0},				"闭锁失压分闸"},	
-	{0x84,		{EV_PARA_Us1,	EV_PARA_Us2,0},				"上电合闸"},
-	{0x84,		{EV_PARA_Us1,	EV_PARA_Us2,0},				"联络合闸"},
-	{0x84,		{EV_PARA_U0,	0,			0},				"合后接地跳闸"},	
-	{0x84,		{EV_PARA_U0,	0,			0},				"接地选线跳闸"},	
-	{0x84,		{0,				0,			0},				"闭锁合闸"},
-	{0x84,		{0,				0,			0},				"电源侧X闭锁"},
-	{0x84,		{0,				0,			0},				"负荷侧X闭锁"},
-	{0x84,		{0,				0,			0},				"电源侧Y闭锁"},
-	{0x84,		{0,				0,			0},				"负荷侧Y闭锁"},
-	{0x84,		{0,				0,			0},				"电源侧残压闭锁"},
-	{0x84,		{0,				0,			0},				"负荷侧残压闭锁"},
-	{0x84,		{0,				0,			0},				"合后零压闭锁合闸"},
-	{0x84,		{0,				0,			0},				"手动闭锁合闸"},
-	{0x84,		{0,				0,			0},				"双电源闭锁合闸"},
-	{0x04,		{0,				0,			0},				"合后故障"},	
-	{0x84,		{0,				0,			0},				"人工解锁"},
-	{0x84,		{0,				0,			0},				"合闸解锁"},
-	{0x84,		{0,				0,			0},				"单侧来电解锁"},
-	{0x84,		{0,				0,			0},				"联络有压解锁"},
-	{0x04,		{0,				0,			0},				"合环检测"},
-	{0x04,		{0,				0,			0},				"合环合闸"},
-	{0x04,		{0,				0,			0},				"合环闭锁"},	
-	{0x84,		{EV_PARA_Ia,	EV_PARA_Ib,	EV_PARA_Ic},	"遮断电流闭锁"},
-	{0x04,		{0,				0,		0},					"无流分闸"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"电流重载告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia重载告警"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib重载告警"}, 
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic重载告警"}, 
-
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"电流过载告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia过载告警"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib过载告警"}, 
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic过载告警"}, 
-
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"电流越限告警"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"Ia越限告警"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"Ib越限告警"}, 
-	{0x0,		{EV_PARA_Ic,	0,			0},				"Ic越限告警"}, 
-	
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"二次谐波越限"},
-	{0x04,		{0,				0,			0},				"跳闸失败"},
-	{0x04,		{0, 			0,			0}, 			"合闸失败"},
-	{0x04,		{0, 			0,			0}, 			"开关拒动"},
-	{0x04,		{0,				0,			0},				"跳位有流告警"},
-	{0x07,		{PARA_TYPE_YB|EV_PARA_YK,	0,	0},			"开出软压板  "},
-	{0x05,		{0,				0,			0},				"未储能告警"},
-
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"接地故障总"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"A相接地故障"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"B相接地故障"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"C相接地故障"},
-
-	{0x00,		{0,				0,			0},				"故障停电"},
-	{0x00,		{0,				0,			0},				"计划停电"},
-	{0x00,		{0,				0,			0},				"恢复供电"},
-
-#if  1 //#if defined(SET_PROFE_ISPECTION)
-	{0x00,		{0,				0,			0},				"控回断线告警"},
-#else
-	{0x00,		{0,				0,			0},				"合闸控回断线"},
-	{0x00,		{0,				0,			0},				"分闸控回断线"},
-#endif
-
-	{0x04,		{EV_PARA_Uab,EV_PARA_Ubc,EV_PARA_Uca},	"PT断线告警"},
-	{0x04,		{EV_PARA_Uab,EV_PARA_Ubc,EV_PARA_Uca},	"PT断线跳闸"},
-
-#if (defined RECORD_SW_U0TB)
-	{0x00,		{0,				0,			0},				"零序电压突变"},
-#endif
-
-	{0x00,		{0,				0,			0},				"集中式FA投入"},
-	{0x00,		{0,				0,			0},				"常规保护投入"},
-	{0x00,		{0,				0,			0},				"间隔事故总"},
-	{0x00,		{0,				0,			0},				"功率方向"},
-	{0x00,		{0,				0,			0},				"故障指示"},
-	{0x00,		{0,				0,			0},				"重合闸充电完成"},
-	{0x00,		{0,				0,			0},				"录波生成成功"},
-	{0x00,		{0,				0,			0},				"二次谐波闭锁"},
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"CT断线告警"},
-	{0x85,		{0,			0,			0},					"CT相序异常"},
 
-#else
 #ifdef GD_AREA_ECZD_MAOMING
 	{0x84,		{0,			0,					0},				"保护动作总"},
 #else
@@ -345,16 +206,7 @@ const SOE_DEF tAllSOE[]=
   	    {0x14,		{EV_PARA_Ib,	0,					0},				"过流Ⅲ段B相短路故障"},
  	    {0x14,		{EV_PARA_Ic,	0,					0},				"过流Ⅲ段C相短路故障"},
     #endif	
-	#ifdef GW_AREA_MAIN_2021
-		{0x84,		{EV_PARA_Ia,	EV_PARA_Ib,	EV_PARA_Ic},	"短路故障跳闸"},
-		{0x0,		{EV_PARA_Ia,	0,			0},				"A相短路跳闸"},
-		{0x0,		{EV_PARA_Ib,	0,			0},				"B相短路跳闸"},
-		{0x0,		{EV_PARA_Ic,	0,			0},				"C相短路跳闸"},
-		{0x84,		{EV_PARA_Ia,	EV_PARA_Ib,	EV_PARA_Ic},	"短路故障告警"},
-		{0x0,		{EV_PARA_Ia,	0,			0},				"A相短路告警"},
-		{0x0,		{EV_PARA_Ib,	0,			0},				"B相短路告警"},
-		{0x0,		{EV_PARA_Ic,	0,			0},				"C相短路告警"},
-	#endif
+	
 	{0xD4|SOE_TYPE_DELAY_FHZ,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零流I段动作"},
 	{0xD4,		{EV_PARA_I0,	EV_PARA_U0,	0},				"零流I段告警"},
 	#ifdef EV_GL_STATR
@@ -374,10 +226,6 @@ const SOE_DEF tAllSOE[]=
 			{0x04,		{EV_PARA_U0,EV_PARA_I0,	 0}, 			"零流III段启动"},
 		#endif
 	#endif	
-	#ifdef GW_AREA_MAIN_2021
-		{0x84,		{EV_PARA_I0,	0,			0},				"零流跳闸"},
-		{0x84,		{EV_PARA_I0,	0,			0},				"零流告警"},
-	#endif
 #endif
 
 #ifdef FUN_JDXX
@@ -721,21 +569,27 @@ const SOE_DEF tAllSOE[]=
 	
 	{0x44,		{EV_PARA_Ia,	EV_PARA_Ib,	EV_PARA_Ic},		"遮断电流闭锁"},
 
+#ifdef DISP_SET_DLYX
 	{0x84,		{EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic},		"电流重载告警"},
-	{0x04,		{EV_PARA_Ia,	0,			0}, 			"Ia重载告警"}, 
-	{0x04,		{EV_PARA_Ib,	0,			0}, 			"Ib重载告警"}, 
-	{0x04,		{EV_PARA_Ic,	0,			0}, 			"Ic重载告警"}, 
+//	{0x04,		{EV_PARA_Ia,	0,			0}, 			"Ia重载告警"}, 
+//	{0x04,		{EV_PARA_Ib,	0,			0}, 			"Ib重载告警"}, 
+//	{0x04,		{EV_PARA_Ic,	0,			0}, 			"Ic重载告警"}, 
 
 	{0x84,		{EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic},		"电流过载告警"},
-	{0x04,		{EV_PARA_Ia,	0,			0}, 			"Ia过载告警"}, 
-	{0x04,		{EV_PARA_Ib,	0,			0}, 			"Ib过载告警"}, 
-	{0x04,		{EV_PARA_Ic,	0,			0}, 			"Ic过载告警"}, 
+//	{0x04,		{EV_PARA_Ia,	0,			0}, 			"Ia过载告警"}, 
+//	{0x04,		{EV_PARA_Ib,	0,			0}, 			"Ib过载告警"}, 
+//	{0x04,		{EV_PARA_Ic,	0,			0}, 			"Ic过载告警"}, 
 
 	{0x84,		{EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic},		"负荷越限告警"},
-	{0x04,		{EV_PARA_Ia,	0,			0}, 			"Ia越限告警"}, 
-	{0x04,		{EV_PARA_Ib,	0,			0}, 			"Ib越限告警"}, 
-	{0x04,		{EV_PARA_Ic,	0,			0}, 			"Ic越限告警"}, 
-
+//	{0x04,		{EV_PARA_Ia,	0,			0}, 			"Ia越限告警"}, 
+//	{0x04,		{EV_PARA_Ib,	0,			0}, 			"Ib越限告警"}, 
+//	{0x04,		{EV_PARA_Ic,	0,			0}, 			"Ic越限告警"}, 
+#else
+	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"电流越限告警"},
+	{0x04,		{EV_PARA_Ia,	0,			0},				"Ia越限告警"}, 
+	{0x04,		{EV_PARA_Ib,	0,			0},				"Ib越限告警"}, 
+	{0x04,		{EV_PARA_Ic,	0,			0},				"Ic越限告警"}, 
+#endif
 	{0x84,		{EV_PARA_I0,0,	0},						"零序电流越限告警"},
 
 #ifdef GD_AREA_JIEYANG
@@ -946,30 +800,6 @@ const SOE_DEF tAllSOE[]=
 #endif
 #ifdef FUNC_YL_FZ_SOE
 	{0x44,		{0, 			0,			0}, 			"联络Y闭锁"},
-#endif
-#ifdef GW_AREA_MAIN_2021
-	{0x04,		{EV_PARA_Uab,EV_PARA_Ubc,EV_PARA_Uca},		"PT断线告警"},
-	{0x04,		{EV_PARA_Uab,EV_PARA_Ubc,EV_PARA_Uca},		"PT断线跳闸"},
-
-	{0x84,		{EV_PARA_I0,	EV_PARA_U0,	0},				"接地故障总"},
-	{0x0,		{EV_PARA_Ia,	0,			0},				"A相接地故障"}, 
-	{0x0,		{EV_PARA_Ib,	0,			0},				"B相接地故障"},
-	{0x0,		{EV_PARA_Ic,	0,			0},				"C相接地故障"},
-
-	{0x00,		{0,				0,			0},				"故障停电"},
-	{0x00,		{0,				0,			0},				"计划停电"},
-	{0x00,		{0,				0,			0},				"恢复供电"},
-
-	{0x00,		{0,				0,			0},				"二次谐波闭锁"},
-
-	{0x84,		{EV_PARA_Ia,EV_PARA_Ib,	EV_PARA_Ic},		"CT断线告警"},
-	{0x07,		{PARA_TYPE_YB|EV_PARA_YK,	0,	0},			"遥控开出软压板"},
-	{0x00,		{0,				0,			0},				"故障指示"},
-	{0x00,		{0,				0,			0},				"间隔事故总"},
-	{0x04,		{0,				0,			0},				"合环检测"},
-	{0x04,		{0,				0,			0},				"合环闭锁"},	
-#endif
-
 #endif
 	// 公共事件
 
@@ -985,12 +815,6 @@ const SOE_DEF tAllSOE[]=
 	{0x04,		{EV_PARA_Uab,	0,			0},				"Uab2低电压告警"},
 	{0x04,		{EV_PARA_Ubc,	0,			0},				"Ubc2低电压告警"},
 	{0x04,		{EV_PARA_Uca,	0,			0},				"Uca2低电压告警"},
-	{0x04,		{EV_PARA_Uab,	0,			0},				"Uab1失压告警"},
-	{0x04,		{EV_PARA_Ubc,	0,			0},				"Ubc1失压告警"},
-	{0x04,		{EV_PARA_Uca,	0,			0},				"Uca1失压告警"},
-	{0x04,		{EV_PARA_Uab,	0,			0},				"Uab2失压告警"},
-	{0x04,		{EV_PARA_Ubc,	0,			0},				"Ubc2失压告警"},
-	{0x04,		{EV_PARA_Uca,	0,			0},				"Uca2失压告警"},
 #ifdef DISP_SET_YYJB
 	#ifdef GD_TEST_2021
 		{0x04,		{EV_PARA_Us1,	0,			0}, 			"A侧有压"},
@@ -1004,12 +828,7 @@ const SOE_DEF tAllSOE[]=
 		{0x04,		{EV_PARA_Us2,	0,			0}, 			"线路侧无压"},
 	#endif
 #endif
-	{0x85,		{0,			0,			0},					"电源模块状态"},
-#ifdef GW_AREA_MAIN_2021	
-	{0x07,		{PARA_TYPE_YB|EV_PARA_YK,	0,	0},			"总遥控开出软压板"},
-	{0x07,		{PARA_TYPE_YB|EV_PARA_YK,	0,	0},			"总保护出口软压板"},
-	{0x07,		{PARA_TYPE_YB|EV_PARA_YK,	0,	0},			"总遥控出口软压板"},
-#endif
+	{0x85,		{0,			0,			0},					"电源模块状态"},	
 #ifdef BATTERY_WITH_COMM
 	#ifdef FUNC_SEL_BAT_MODULE	
 		{0x04,		{0, 		0,			0}, 				"电池过压告警"},	
@@ -1073,7 +892,6 @@ const SOE_DEF tAllSOE[]=
 	{0x00,		{0,	0,	0},			"事故总"},
 	{0x04,		{0,			0,			0},					"电池自动活化投退"},
 	{0x04,		{0,			0,			0},					"备用电源投入"},
-#ifndef GW_AREA_MAIN_2021
 	{0x04,		{0,			0,			0},					"非电量1跳闸"},
 	{0x04,		{0,			0,			0},					"非电量2跳闸"},
 	{0x04,		{0,			0,			0},					"非电量3跳闸"},
@@ -1090,7 +908,6 @@ const SOE_DEF tAllSOE[]=
 	{0x04,		{0,			0,			0},					"非电量6告警"},
 	{0x04,		{0,			0,			0},					"非电量7告警"},
 	{0x04,		{0,			0,			0},					"非电量8告警"},
-#endif
 	{0x04,		{0,			0,			0},					"串口1通信异常"},
 	{0x04,		{0,			0,			0},					"串口2通信异常"},
 	{0x04,		{0,			0,			0},					"串口3通信异常"},

+ 16 - 213
dtu/dtu_main_t536/app/Appconfig.h

@@ -133,157 +133,7 @@ extern struct unit g_unit[UNIT_NUM];
 
 enum
 {
-#ifdef GW_AREA_MAIN_2021
-	EV_GL1TZ=0,			// 过流1动作
-	EV_GL1ATZ,			// 过流A相
-	EV_GL1BTZ,			// 过流B相
-	EV_GL1CTZ,			// 过流C相
-
-	EV_GL1GJ,			// 过流1告警
-	EV_GL1AGJ,			// 过流1A相告警
-	EV_GL1BGJ,			// 过流1B相告警
-	EV_GL1CGJ,			// 过流1C相告警
-
-
-	EV_GL2TZ,			// 过流2动作
-	EV_GL2ATZ,			// 过流A相
-	EV_GL2BTZ,			// 过流B相
-	EV_GL2CTZ,			// 过流C相
-
-	EV_GL2GJ,			// 过流2告警
-	EV_GL2AGJ,			// 过流2A相告警
-	EV_GL2BGJ,			// 过流2B相告警
-	EV_GL2CGJ,			// 过流2C相告警
-
-	EV_GL3TZ,			// 过流3动作
-	EV_GL3ATZ,			// 过流A相
-	EV_GL3BTZ,			// 过流B相
-	EV_GL3CTZ,			// 过流C相
-
-	EV_GL3GJ,			// 过流3告警
-	EV_GL3AGJ,			// 过流3A相告警
-	EV_GL3BGJ,			// 过流3B相告警
-	EV_GL3CGJ,			// 过流3C相告警
-
-	EV_DL_TZ,			// 短路故障跳闸		
-	EV_ADL_TZ,			// A相短路跳闸
-	EV_BDL_TZ,			// B相短路跳闸
-	EV_CDL_TZ,			// C相短路跳闸
-
-	EV_DL_GZ,			// 短路故障
-	EV_ADL_GZ,			// A相短路告警
-	EV_BDL_GZ,			// B相短路告警
-	EV_CDL_GZ,			// C相短路告警
-	
-	EV_LX_XDL_QD,		// 零序小电流启动		
-	EV_LX_XDL_TZ,		// 零序小电流跳闸		
-	EV_LX_XDL_GJ,		// 零序小电流告警
-
-	EV_LX1TZ,			// 零序1段动作
-	EV_LX1GJ,				
-	EV_LX2TZ,			// 零序2段动作
-	EV_LX2GJ,	
-	EV_LX3TZ,			// 零序3段动作
-	EV_LX3GJ,
-
-	EV_LLTZ,			
-	EV_LLGJ,	
-	EV_LYTZ,					// 零压跳闸			
-	EV_LYGJ,					// 零压告警
 
-	EV_GLJS,					// 过流加速
-	EV_GLJSA,					// IA过流加速
-	EV_GLJSB,					// IB过流加速
-	EV_GLJSC,					// IC过流加速
-	EV_LXJS,					// 零序加速
-	EV_U0JS,					// 零压加速动作
-	EV_AR_START,				// 重合闸启动
-	EV_AR1,						// 重合闸动作1
-	EV_AR2,						// 重合闸动作2
-	EV_AR3,						// 重合闸动作3
-	
-	EV_SYTZ,					// 失压分闸
-	EV_BSTZ_FA,	 				// 合后无故障闭锁失压分闸
-	EV_SDHZ,					// 上电合闸		
-	EV_LLHZ,					// 联络合闸
-	EV_OVERU0,					// 合后接地跳闸
-	EV_XXTZ,					// 接地选线跳闸
-	EV_BS_ALL,					// 闭锁合闸
-	EV_BS_X_P,					// 电源侧X闭锁
-	EV_BS_X_L,					// 负荷侧X闭锁
-	EV_BS_Y_P,					// 电源侧Y闭锁,
-	EV_BS_Y_L,					// 负荷侧Y闭锁
-	EV_BS_UF_P,					// 电源侧残压闭锁合闸
-	EV_BS_UF_L,					// 负荷侧残压闭锁合闸
-	EV_BS_U0,					// 合后零压闭锁合闸
-	EV_BS_HA,					// 手分闭锁合闸
-	EV_BS_DB,					// 双电源闭锁合闸
-	EV_HHGZ,	 				// 合后故障
-	EV_JS_HA,					// 就地按钮解锁
-	EV_JS_HZ,					// 人工合闸解锁
-	EV_JS_POWER,				// 对侧来电解锁
-	EV_JS_L,					// 联络有压解锁
-	EV_TQJC,					// 合环检测
-	EV_TQHZ,					// 合环合闸
-	EV_BSTQHZ,					// 合环闭锁
-	EV_BSTZ,					// 大电流闭锁分闸
-	EV_WLTZ,					// 无流计数分闸s
-	
-	EV_OVLOADI,					// 电流重载
-	EV_IAOV,					// IA电流重载
-	EV_IBOV,					// IB电流重载
-	EV_ICOV,					// IC电流重载
-	EV_DLGZ,					// 电流过载
-	EV_IAGZ,					// IA电流过载
-	EV_IBGZ,					// IB电流过载
-	EV_ICGZ,					// IC电流过载
-
-	EV_DLYX,					// 电流越限
-	EV_IAYX,					// IA电流越限
-	EV_IBYX,					// IB电流越限
-	EV_ICYX,					// IC电流越限
-	
-	EV_OVI2,					// IA2电流越上限
-	EV_TZFAIL,					// 跳闸失败
-	EV_HZFAIL,					// 合闸失败
-	EV_SWFAIL,					// 开关拒动	
-	EV_TWYL,					// 跳位有流
-	EV_YB_TT,					// 压板状态
-	EV_TH_WCN,					// 弹簧未储能
-
-	EV_ABC_JDTZ,				// 接地故障总
-	EV_A_JDTZ,					// A项接地
-	EV_B_JDTZ,					// B项接地
-	EV_C_JDTZ,					// C项接地
-
-	EV_POWRE_FAILURE,			//故障停电
-	EV_PLAN_OUTAGE,				//计划停电
-	EV_RESTORE_POWER,			//恢复供电
-
-	EV_HZ_DISCON,				// 合闸控回断线 (合并为单点时:控制回路断线告警)
-#if  0 //#(!defined SET_PROFE_ISPECTION)
-	EV_FZ_DISCON,				// 分闸控回断线
-#endif
-
-	EV_PTDX_GJ,					// PT断线告警
-	EV_PTDX_TZ,					// PT断线跳闸
-
-#if (defined RECORD_SW_U0TB)
-	EV_XDL_U0TB,				// 零压突变
-#endif
-
-	EV_CENTER_FA_TT,			// 集中式FA投退
-	EV_SW_BH_TT,				// 间隔常规保护投退
-	EV_SW_FAULT_ALL,			// 间隔事故总
-	EV_SW_DIR_PQ,				// 功率方向(0:流入母线; 1:流出母线)
-	EV_SW_FAULT_LED,			// 故障指示灯
-	EV_SW_AR_CHARGE_DONE,		// 重合闸充电完成
-	EV_SW_RECORD_WAVE,			// 录波完成信号
-	EV_SW_I2_LOCK,				// 二次谐波闭锁
-	EV_CTDX_GJ,					// CT断线告警
-	EV_CTXXYC,					//CT 相序异常
-	EV_SW_NUM,					//
-#else
 	EV_BH_FAULT=0,				// 保护总
 	EV_ALL_FAULT,				// 线路故障总
 
@@ -333,17 +183,8 @@ enum
 	EV_GL3_IB,					//过流3 B相故障
 	EV_GL3_IC,					//过流3 C相故障
 #endif
-#ifdef GW_AREA_MAIN_2021
-	EV_DL_TZ,			// 短路故障跳闸		
-	EV_ADL_TZ,			// A相短路跳闸
-	EV_BDL_TZ,			// B相短路跳闸
-	EV_CDL_TZ,			// C相短路跳闸
 
-	EV_DL_GZ,			// 短路故障
-	EV_ADL_GZ,			// A相短路告警
-	EV_BDL_GZ,			// B相短路告警
-	EV_CDL_GZ,			// C相短路告警
-#endif
+
     EV_LX1TZ,
     EV_LX1GJ,
 #ifdef EV_GL_STATR
@@ -362,10 +203,7 @@ enum
 	EV_LX3_START,
   #endif
 #endif
-#ifdef GW_AREA_MAIN_2021
-	EV_LLTZ,			
-	EV_LLGJ,
-#endif
+
 #ifdef FUN_JDXX
 		EV_JDXX_U01GJ,			// 小电流零压告警1
 		EV_JDXX_U02GJ,			// 小电流零压告警2
@@ -532,22 +370,25 @@ enum
 #endif
 	
 	EV_BSTZ,					// 大电流闭锁分闸
-
-
-	EV_DLZZ,					// 电流重载
-	EV_IAZZ,					// IA电流重载
-	EV_IBZZ,					// IB电流重载
-	EV_ICZZ,					// IC电流重载
+#ifdef DISP_SET_DLYX
+	EV_DLZZ,				// 电流重载
+//	EV_IAZZ,					// IA电流重载
+//	EV_IBZZ,					// IB电流重载
+//	EV_ICZZ,					// IC电流重载
 	EV_DLGZ,					// 电流过载
-	EV_IAGZ,					// IA电流过载
-	EV_IBGZ,					// IB电流过载
-	EV_ICGZ,					// IC电流过载
+//	EV_IAGZ,					// IA电流过载
+//	EV_IBGZ,					// IB电流过载
+//	EV_ICGZ,					// IC电流过载
+	EV_DLYX,					// 电流越限
+//	EV_IAYX,					// IA电流越限
+//	EV_IBYX,					// IB电流越限
+//	EV_ICYX,					// IC电流越限
+#else
 	EV_DLYX,					// 电流越限
 	EV_IAYX,					// IA电流越限
 	EV_IBYX,					// IB电流越限
 	EV_ICYX,					// IC电流越限
-
-
+#endif
 	EV_I0YX,					// 零序电流越限	
 	EV_TZFAIL,					// 跳闸失败
 	EV_HZFAIL,					// 合闸失败
@@ -645,33 +486,8 @@ enum
 #endif
 #ifdef FUNC_YL_FZ_SOE
 	EV_YL_FZ,		//联络Y闭锁
-#endif
-#ifdef GW_AREA_MAIN_2021
-
-
-	EV_PTDX_GJ,					// PT断线告警
-	EV_PTDX_TZ,					// PT断线跳闸
-
-	EV_ABC_JDTZ,				// 接地故障总
-	EV_A_JDTZ,					// A项接地
-	EV_B_JDTZ,					// B项接地
-	EV_C_JDTZ,					// C项接地p
-
-	EV_POWRE_FAILURE,			//故障停电
-	EV_PLAN_OUTAGE,				//计划停电
-	EV_RESTORE_POWER,			//恢复供电
-
-	EV_SW_I2_LOCK,				// 二次谐波闭锁
-
-	EV_CTDX_GJ,					// CT断线告警
-	EV_YKYB_TT,					// 压板状态
-	EV_SW_FAULT_LED,			// 故障指示灯
-	EV_SW_FAULT_ALL,			// 间隔事故总
-	EV_TQJC,					// 合环检测
-	EV_BSTQHZ,					// 合环闭锁
 #endif
 	EV_SW_NUM,					//
-#endif
 };  
 enum
 {
@@ -688,12 +504,6 @@ enum
 	EV_UAB2DDY,				// UAB2越下限
 	EV_UBC2DDY,				// UBC2越下限
 	EV_UCA2DDY,				// UCA2越下限
-	EV_UAB1SYGJ,			// UAB1失压告警
-	EV_UBC1SYGJ,			// UBC1失压告警
-	EV_UCA1SYGJ,			// UCA1失压告警
-	EV_UAB2SYGJ,			// UAB2失压告警
-	EV_UBC2SYGJ,			// UBC2失压告警
-	EV_UCA2SYGJ,			// UCA2失压告警
 #ifdef DISP_SET_YYJB
 	EV_POW1YY,				// PT1有压
 	EV_POW2YY,				// PT2有压
@@ -701,11 +511,6 @@ enum
 	EV_POW2WY,			    // PT2无压
 #endif
 	EV_DYSTATUS,				//电源模块状态
-#ifdef GW_AREA_MAIN_2021
-	EV_YK_ZYB_TT,			// 总遥控开出软压板  退出后遥控预置和执行出口回否定
-	EV_ZBHYB_TT,			// 总保护出口软压板  退出后通道配置处配置为保护合分闸的通道无法出口
-	EV_ZYKYB_TT,			// 总遥控出口软压板  退出后通道配置处配置为遥控合分闸的通道无法出口
-#endif
 #ifdef BATTERY_WITH_COMM
 	#ifdef FUNC_SEL_BAT_MODULE	
 		EV_BAT_OVER_GJ,				// 电池过压告警	
@@ -764,7 +569,6 @@ enum
 	FAULT_ALL,					//事故总
 	EV_TT_BAT,				//电池自动活化
 	EV_BAT_ON,				//电池投入
-#ifndef GW_AREA_MAIN_2021
 	EV_FDL1_TZ,
 	EV_FDL2_TZ,
 	EV_FDL3_TZ,
@@ -781,7 +585,6 @@ enum
 	EV_FDL6_GJ,
 	EV_FDL7_GJ,
 	EV_FDL8_GJ,
-#endif
 	EV_COMM1_ERR,			//通信端口1异常
 	EV_COMM2_ERR,
 	EV_COMM3_ERR,

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

@@ -14,7 +14,7 @@
 ÐÞ¸ÄÔ­Òò£º
 ****************************************************************************/
 #include "head.h"
-//#ifdef CAN_SLAVE_BOARD
+#ifdef CAN_SLAVE_BOARD
 
 #define RECV_TIMEOUT	(USTIMER_SEC*5)
 
@@ -441,4 +441,4 @@ u8 is_prog_down(void)
 	return g_program.comm;
 }
 #endif
-//#endif
+#endif

+ 3 - 3
dtu/dtu_main_t536/app/FA.c

@@ -11,7 +11,7 @@
 /*------------------------------- 头文件 --------------------------------------
 */
 
-#ifndef GW_AREA_MAIN_2021
+
 #include  "head.h"
 
 const char *fa_s_status[]={"S_0",
@@ -5049,7 +5049,7 @@ void fa_status_print(int sw)
 
 int  fa_UFDI_Init(void)
 {
-	int sw;
+	int sw, i;
 	if(!pRunSet->bTT_SY_Board)return 1; //无瞬压模块
 
 #ifdef BSP_DFTU
@@ -6250,6 +6250,6 @@ bool get_power_on_dir(int sw)
 	return false;	
 }
 #endif
-#endif	/* GW_AREA_MAIN_2021 */
+
 // = ========================= 本文件结束 =============================
 

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

@@ -112,7 +112,6 @@ typedef struct TTQHZ_T
 	UVOT_U		uTQHz;		//同期合闸
 	TIMERELAY 	tTQTime; 	//同期合闸时间继电器
 	TIMERELAY 	tTQQDTime; 	//同期合闸时间继电器	
-	TIMERELAY	tBSTQTime;	//闭锁合环
 	bool		bBSTQLed;
 }TTQHZ_T;
 

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

@@ -103,7 +103,7 @@ const struct gse_tbl g_goose_recv_tbl[GOOSE_RECV_TBL_NUMBER]=
 
 FA_GOOSE tFAg;
 bool bFAgInit=false;
-#ifndef GW_AREA_MAIN_2021
+
 void fa_g_init(void)
 {
 	int i;
@@ -2027,6 +2027,6 @@ void XBCalc_goc(int sw)
 	}
 	
 }
-#endif /* GW_AREA_MAIN_2021 */
+
 /***************************************endfile**********************************************************/
 

+ 8 - 7
dtu/dtu_main_t536/app/IECComm.c

@@ -42,13 +42,10 @@ BYTE g_arrIECBuf[IEC_TBUF_LEN];  	// 通
 
 SERIAL_COMM 	g_tRsComm[CFG_UART_NUM_MAX]; 	// 4个串行通信口的通信结构定义
 union u_RsIEC 	g_tRsIEC[CFG_UART_NUM_MAX];		// 串口规约共用结构buf区,目前有101 104规约
-
-#ifdef FUN_FUXI_ESAM
-s8 UART_CHANNEL[CFG_UART_NUM_MAX]={CFG_UART_232_0,CFG_UART_232_1,CFG_UART_HMI,CFG_UART_485_0,CFG_UART_485_1, CFG_UART_485_2,CFG_UART_CHIP_S1};
-#else
-// s8 UART_CHANNEL[CFG_UART_NUM_MAX]={CFG_UART_232_0,CFG_UART_232_1,CFG_UART_HMI,CFG_UART_485_0,CFG_UART_485_1, CFG_UART_485_2};
-s8 UART_CHANNEL[CFG_UART_NUM_MAX]={6,4,13,11,8,3,14,9,5,1,15}; //临时调试设置
-#endif
+s8 UART_CHANNEL[CFG_UART_NUM_MAX] = {CFG_UART_485_0, CFG_UART_485_1,
+                                     CFG_UART_232_0, CFG_UART_232_1,
+                                     CFG_UART_GPS, CFG_UART_BK_0,
+                                     CFG_UART_BK_1, CFG_UART_CHIP_S1};
 
 u8 uart_test_begin=0;
 u8 uart_test_flag[CFG_UART_NUM_MAX][2];
@@ -580,10 +577,12 @@ static void IEC_Recv(BYTE cDat,BYTE chnl)
 	{
 		modbus_Recv((MODBUS_DEF *)g_tRsComm[chnl].ptBuf,cDat);
 	}	
+#if defined(ADD_ATGM366_GPS_FUN) || defined(DEV_GPS_ATGM366) || defined(DEV_GPS_ATGM332D)
 	else if(tRunPara.tUartPara[chnl].wProtocol==PROTOCOL_GPS) //GPS模块
 	{
 		GPS_Recv((GPS_COMM *)g_tRsComm[chnl].ptBuf,cDat);
 	}
+#endif
 	else if(tRunPara.tUartPara[chnl].wProtocol==PROTOCOL_AUTHOR_BL) //加密蓝牙模块
 	{
 		bluetooth_recv((BLUETOOTH_DEF *)g_tRsComm[chnl].ptBuf,cDat);
@@ -770,10 +769,12 @@ void IECCommTask(void)
 			modbus_Applay((MODBUS_DEF *)g_tRsComm[i].ptBuf);	
 			modbus_AutoTimer((MODBUS_DEF *)g_tRsComm[i].ptBuf);
 		}
+#if defined(ADD_ATGM366_GPS_FUN) || defined(DEV_GPS_ATGM366) || defined(DEV_GPS_ATGM332D)
 		else if(tRunPara.tUartPara[i].wProtocol==PROTOCOL_GPS)  // GPS模块
 		{
 			GPS_Comm_App((GPS_COMM *)g_tRsComm[i].ptBuf);
 		}
+#endif
 		else if(tRunPara.tUartPara[i].wProtocol==PROTOCOL_AUTHOR_BL)  // 蓝牙模块
 		{
 			bluetooth_app((BLUETOOTH_DEF *)g_tRsComm[i].ptBuf);

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

@@ -1648,7 +1648,7 @@ static int  lnk_init_cfg(IECLINK_DEF *pt,u8 *keystr)
 	pfile = rt_file_open("/app/data/pcolcfg.ini",O_RDONLY ,0);
 	if(IS_ERR(pfile))
 	{
-		rt_printf("\r\nerror! ÎŞ·¨´ò¿ª pcolcfg.ini\r\n");
+		dp_err_n_c_rt("\r\nerror! ÎŞ·¨´ò¿ª pcolcfg.ini\r\n");
 		return -1;
 	}
 

+ 2 - 9
dtu/dtu_main_t536/app/MmiData.c

@@ -379,7 +379,6 @@ static bool mmd_ChangeList(const TSETTABLE *pSetTable,int key,SET_VALUE *setbuf)
 ***************************************************************************/
 bool mmd_checkset_yb(u8 index)  //判断定值分类对应的压板是否有效
 {
-#ifndef GW_AREA_MAIN_2021
 	u8 yb,group_sub;
 	int sw=0;
 	//if(index==0)return true;
@@ -470,7 +469,6 @@ bool mmd_checkset_yb(u8 index)  //
 		return g_tRelay[sw].run_stu.fa_g_tt;
 #endif
 	}
-#endif
 	return true;
 }
 
@@ -2514,8 +2512,7 @@ int mmd_InitAzSet(int value)
 	int i;
 	m_AllSection=0;
 	g_set_disp.num=0;
-	// TODO EWen
-	num=mmd_GetshowAzSetNum(&tSwSetTable[0],SET_LABLE_TQ,SET_LABLE_OVI-1/*SET_LABLE_FATT-1*/,set_show_group[value]);	
+	num=mmd_GetshowAzSetNum(&tSwSetTable[0],SET_LABLE_TQ,SET_LABLE_FATT-1,set_show_group[value]);	
 	SetGroupIndex=value;	
 	screennum=mmi_GetScreenNum(63,1);	 // 取当前屏幕最大显示数目
 	bSetChange=true;
@@ -2610,9 +2607,6 @@ int mmd_SaveAzSet(int value)
 
 int mmd_ChangeYBSet(const TSETTABLE *pSet,int num,SET_VALUE *setbuf) //ext为不需显示的定值组
 {
-#ifdef GW_AREA_MAIN_2021
-	return 0;
-#else
 	int i;
 	int sw=0;
 	for(i=0;i<num;i++)
@@ -2633,7 +2627,6 @@ int mmd_ChangeYBSet(const TSETTABLE *pSet,int num,SET_VALUE *setbuf) //ext为
 		}		
 	}
 	return g_set_disp.num;
-#endif
 }
 
 
@@ -9356,7 +9349,7 @@ int mmd_menu_cfg_init(void)
 	pfile = rt_file_open("/app/data/lcd_menu.csv",O_RDONLY ,0);
 	if(IS_ERR(pfile))
 	{
-		rt_printf("无法打开 lcd_menu.csv,新建...\r\n");
+		dp_err_n_c_rt("无法打开 lcd_menu.csv,新建...\r\n");
 		mmd_create_menufile();
 		pfile = rt_file_open("/app/data/lcd_menu.csv",O_RDONLY ,0);
 		if(IS_ERR(pfile))

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

@@ -323,7 +323,7 @@ static int  modbus_init_inf(MODBUS_DEF *pt)
 	pfile = rt_file_open("/app/data/pcolcfg.ini",O_RDONLY ,0);
 	if(IS_ERR(pfile))
 	{
-		rt_printf("error! ÎŞ·¨´ò¿ª pcolcfg.ini\r\n");
+		dp_err_n_c_rt("error! ÎŞ·¨´ò¿ª pcolcfg.ini\r\n");
 		return -1;
 	}
 

+ 11 - 223
dtu/dtu_main_t536/app/Sys.c

@@ -107,12 +107,13 @@ DWORD dTRstTime;
 const char *ykownerstr[]=
 {
     "--",
-    "1#232",
-    "2#232",
-    "3#232",
     "1#485",
     "2#485",
-    "3#485",
+    "1#232",
+    "2#232",
+    "GPS",
+    "备用1",
+    "备用2",
 #ifdef FUN_FUXI_ESAM
 	"南网加密",
 #endif
@@ -261,14 +262,10 @@ void SystemInit(void)
 #endif	
 	filelist_createfile();
 	//esam_init();
-  #ifndef GW_AREA_MAIN_2021
 	FA_Init();	
-#endif
-	lcdcomm_init(); 
+	lcdcomm_init();
 	ReadUqua();
-#ifndef GW_AREA_MAIN_2021
 	fa_g_init();
-#endif
 #ifdef METERING_ENERGY
 	DLInit();
 	get_eep_dd_data();
@@ -290,7 +287,6 @@ void app_yb_refresh(void)
 	int sw;
 	for(sw=0;sw<g_sw_num;sw++)
 	{
-#ifndef GW_AREA_MAIN_2021
 	#if defined GD_AREA_JIEYANG_2021 || defined GD_AREA_ECZD_CHAOZHOU_2021 || defined GD_AREA_ECZD_JIEYANG_2022
 		if(pRunSet->bTT_SOFT_BH_YB && !FA_ALL_EN(sw))
 		{
@@ -306,9 +302,8 @@ void app_yb_refresh(void)
 			fresh_set_soe(EV_TYPE_L, g_tRelay[sw].run_stu.fa_ls,0,sw);//联络模式
 		}
 		}
-#endif						
+						
 		//自供电功能投入
-	#ifndef GW_AREA_MAIN_2021
 		{
 			bool bll;
 			bll=(g_tRelay[sw].tgoc.tllcd.sta.bFlag.bCD&&BH_GOOSE_EN(sw));			
@@ -321,7 +316,7 @@ void app_yb_refresh(void)
 		//只关联软压板: EV_KZ_YB/EV_EDIT_YB		(出口/远方)		
 		fresh_set_soe(EV_KZ_YB, pRunSet->bTT_KZ_YB, 0,sw); 	
 		fresh_set_soe(EV_EDIT_YB, pRunSet->bTT_EDIT_YB, 0,sw); 
-	#endif
+
         //关联硬压板
         // EV_CHZ_YB (重合闸)
         //#ifdef GD_AREA_FOS
@@ -330,18 +325,14 @@ void app_yb_refresh(void)
 #elif defined GD_AREA_HEYUAN_KL
         fresh_set_soe(EV_CHZ_YB,!pRunSet->bTT_CHZ_YB, 0,sw);//重合闸投入
 #else
-	#ifndef GW_AREA_MAIN_2021
         fresh_set_soe(EV_CHZ_YB,!CHZ_ALL_EN(sw) , 0,sw);//停用重合闸
-	#endif
 #endif
 
         // EV_BH_YB (功能总)
 #ifdef GD_AREA_MAIN_2020
         fresh_set_soe(EV_BH_YB, !FUN_ALL_EN(sw), 0,sw);   //停用保护和FA
 #else
-	#ifndef GW_AREA_MAIN_2021
         fresh_set_soe(EV_BH_YB, FUN_ALL_EN(sw), 0,sw);
-	#endif
 #endif
 
 #if defined BHFAGS_YB_YK || defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_ZHUHAI_V2 || defined GD_AREA_SHAOGUAN || defined GD_AREA_ECZD_2020 || defined BH_FA_INONE_PUBLIC
@@ -503,9 +494,7 @@ void AppPolling(void)
 	if((app_step%5)==2)_yk_polling();	
 	if((app_step%5)==3)bat_proc();
 	if((app_step%5)==4)system_check_proc();
-	#ifndef GW_AREA_MAIN_2021
 	if((app_step%10)==0)fa_g_app_time(0);
-	#endif
 
 }
 
@@ -594,8 +583,6 @@ void ResetHzLed(int rstsw)
 {
 	int i,sw;
 	rt_printf("复归动作灯\r\n");
-//TODO 
-#ifndef GW_AREA_MAIN_2021
 	for(sw=0;sw<g_sw_num;sw++)
 	{
 		TRELAY_T *pR=&g_tRelay[sw];
@@ -643,7 +630,7 @@ void ResetHzLed(int rstsw)
 	led_set_sw(sw,SW_LED_TZ, LED_OFF);  
 #endif
 	}
-#endif	
+		
 }
 
 
@@ -679,139 +666,6 @@ void SignalReset(int rstsw,bool blnk)
 	}
 
 	//收保护动作灯
-#ifdef GW_AREA_MAIN_2021
-	for(sw=0;sw<g_sw_num;sw++)
-	{
-		TRELAY_T *pR=&g_tRelay[sw];
-
-		bRst=true;
-		bBSRst = true;
-		bGLRst = true;
-		bJDRst = true;
-		bCHRst = true;
-		if(rstsw>0&&((sw+1)!=rstsw))continue;
-		for(i=0;i<=OC_GLBS;i++)
-		{
-			TOC_T *poc = &g_tRelay[sw].tOC[i];
-			if(poc->sta.bFlag.bGj||poc->sta.bFlag.bTz)
-			{
-				bRst=false;
-				if(i==OC_GL1||i==OC_GL2||i==OC_GL3||i==OC_DL||i==OC_GLJS||i==OC_GLBS)
-				{
-					bGLRst = false;
-				}
-				// if(i==OC_LX1||i==OC_LX2||i==OC_LX3||i==OC_GLJS)
-				if(i==OC_LX1||i==OC_LX2||i==OC_LX3||i==OC_LL||i==OC_LXJS)
-				{
-					bJDRst = false;
-				}
-			}
-			else
-			{
-				poc->sta.bFlag.bDzLed=false;
-				poc->sta.bFlag.bTzsbLed=false;
-			}
-
-		}
-		
-		if (pR->tU0TZ.uZOV.bFlag.bTz||pR->tXXTZ.uZOV.bFlag.bTz)	// 零序过压跳闸
-		{
-			bRst = false;
-			bJDRst = false;
-		}
-		else
-		{
-			pR->tU0TZ.bU0Led = false;
-		}
-
-			
-		if (pR->tLostVot.uLostVot.bFlag.bTz)	//失压跳闸
-		{
-			bRst = false;
-		}
-		else
-		{
-			pR->tLostVot.bLostVotLed = false;
-		}
-
-		// TODO 小电流重合闸标志合并 EWen
-		if (pR->tCHZ.sta.bFlag.bHz/* || pR->tXDLCHZ.sta.bFlag.bHz*/)	// 重合闸
-		{
-			bRst = false;
-			bCHRst = false;
-		}
-		else
-		{
-			pR->tCHZ.sta.bFlag.bCHZLed = false;
-		}
-		
-		if (pR->tSDHZ.bL_BSLed)				// 联络闭锁
-		{
-			bRst = false;
-			bBSRst = false;
-		}
-		
-		if (pR->tSDHZ.bS_BSLed)				// 分段闭锁
-		{
-			bRst = false;
-			bBSRst = false;
-		}
-
-		// 灭过流灯
-		if (bGLRst)
-		{
-			int  soeno;
-
-			led_set_sw(sw,SW_LED_GL, LED_OFF);  
-			led_set_sw(sw,SW_LED_XLGZ, LED_OFF); 
-
-			soeno = EV_SW_FAULT_LED + sw*EV_SW_NUM;
-			if(soe_check(soeno)==true)
-			{
-				soe_record_ev(soeno, 0, 0,0,0);
-			}
-		}
-		// 灭接地灯
-		if (bJDRst)
-		{
-			led_set_sw(sw,SW_LED_JD, LED_OFF);  	
-		}
-		// 灭重合灯
-		if (bCHRst)
-		{
-			led_set_sw(sw,SW_LED_CHZ, LED_OFF); 	
-		}	
-		// 灭闭锁灯
-		if (bBSRst)
-		{
-			//led_set_sw(sw,SW_LED_LOCK, LED_OFF);  //  闭锁灯程序自动处理,不需要人工干预
-		}
-
-		// 灭动作灯
-		if(bRst)
-		{
-			led_set_sw(sw,SW_LED_DZ, LED_OFF);  
-			pR->run_stu.dz = 0;
-			if(rstsw>0)soe_record_opt(EV_SIG_RESET, 0);
-		}
-		// 置位短路电流
-		// TODO 故障电流处理 EWen
-		// g_sw[sw].ac_in[SW_AC_IN_IAS] = 0;
-		// g_sw[sw].ac_in[SW_AC_IN_IBS] = 0;
-		// g_sw[sw].ac_in[SW_AC_IN_ICS] = 0;
-
-		// 复位多次分闸闭锁合闸标志
-		pR->FRES_FZ = 0;
-		pR->uFREFZ.bFlag.BS_HZ = 0;
-		pR->uFREFZ.bFlag.HW_JY = 0;
-		pR->uFREFZ.bFlag.JS_QD = 0;
-		pR->RUN_BSHZ = 0;
-		
-		//间歇性接地
-		//TODO 待对接 EWen
-		// jxjd_sw_reset(sw);
-	}
-#else
 	for(sw=0;sw<g_sw_num;sw++)
 	{
 		TRELAY_T *pR=&g_tRelay[sw];
@@ -1093,7 +947,6 @@ void SignalReset(int rstsw,bool blnk)
 
 		pR->run_stu.fgbs=0;
 	}
-#endif
 	// 灭公共动作灯
 	if(rstsw==0)g_run_stu.pubdz = 0;
 	
@@ -1159,9 +1012,6 @@ g_RmtCtrl_ErrCode[err_code];
 //遥控修改软压板判断
 bool ykEditYb(BYTE ykTypeNo)
 {
-#ifdef GW_AREA_MAIN_2021
-	return false;
-#else
 	switch(ykTypeNo-1)
 	{
 		case PUB_CHYB_HZ:
@@ -1220,7 +1070,6 @@ bool ykEditYb(BYTE ykTypeNo)
 		default:
 			return FALSE;
 	}
-#endif
 }
 
 static bool yk_pub_yb(int no)
@@ -1461,21 +1310,15 @@ int _RemoteCtrl(BYTE yktype,BYTE index,BYTE ykval,WORD wID)
 					return -26;
 				}
 			#endif
-			#ifndef GW_AREA_MAIN_2021
 				else if((fa_bs_fz( owner-1)||pR->bBSTZ) && ykval==YK_VAL_TZ && (no ==SW_DO_YKT+1||no ==SW_DO_FZ+1))
-			#else
-				else if(pR->bBSTZ && ykval==YK_VAL_TZ && (no ==SW_DO_YKT+1||no ==SW_DO_FZ+1))
-			#endif
 				{
 					//rt_printf("遮断闭锁,禁止分闸操作\r\n");
 					return -24;
 				}
-			#ifndef GW_AREA_MAIN_2021
 				else if(fa_bs_hz( owner-1)&& ykval==YK_VAL_HZ && (no ==SW_DO_YKH+1||no ==SW_DO_HZ+1))
 				{
 					return -25;
 				}
-			#endif
 				else if(pR->run_stu.wcn && pRunSet->tSwSet[owner-1].bTT_WCN && ykval==YK_VAL_HZ && (no ==SW_DO_YKH+1||no ==SW_DO_HZ+1))
 				{
 					return -27;
@@ -1838,7 +1681,7 @@ int _RemoteCtrl(BYTE yktype,BYTE index,BYTE ykval,WORD wID)
 				{
 					return -27;
 				}
-			#ifndef GW_AREA_MAIN_2021
+
                 if(no==PUB_BHYB_HZ+1)
                 {
                     setno=SET_BH_YB;
@@ -1869,7 +1712,6 @@ int _RemoteCtrl(BYTE yktype,BYTE index,BYTE ykval,WORD wID)
                     setno=SET_KZ_OUT_YB;
                     val=1;
                 }
-			#endif
 #if (defined BHFA_YB_YK || defined BHFAGS_YB_YK) && !defined BH_FA_INONE_SW
                 else if(no==PUB_BHYBTT_FZ+1)
                 {
@@ -2127,11 +1969,7 @@ int _RemoteCtrl(BYTE yktype,BYTE index,BYTE ykval,WORD wID)
 						return -26;
 					}
 				#endif
-				#ifndef GW_AREA_MAIN_2021
 					if((fa_bs_fz( owner-1)||pR->bBSTZ)&&ykval==YK_VAL_TZ)
-				#else
-					if(pR->bBSTZ&&ykval==YK_VAL_TZ)
-				#endif
 					{
 						//rt_printf("遮断闭锁,禁止分闸操作\r\n");
 						return -24;
@@ -2534,56 +2372,6 @@ int send_rmt_yk(u8 *buf)
 */
 bool check_fault(void)
 {
-#ifdef GW_AREA_MAIN_2021
-	int sw;
-	int  soeno;
-
-	for(sw=0;sw<g_sw_num;sw++)		//保护动作
-	{
-		int i;
-		bool bY1=false;
-		TRELAY_T *pR=&g_tRelay[sw];
-		soeno = EV_SW_FAULT_ALL + sw*EV_SW_NUM;
-		for(i=0;i<=OC_GLBS;i++)
-		{
-			bY1|=(pR->tOC[i].sta.bFlag.bTz||pR->tOC[i].sta.bFlag.bGj);
-
-			// TODO 过流关失压录波,跑台体 EWen
-			// if(i<=OC_LL)	
-			// 	g_ban_waverec.bban_losevolt_waverec |=bY1;
-		}
-
-		bY1|= (pR->tCHZ.sta.bFlag.bHz
-			// || pR->tXDLCHZ.sta.bFlag.bHz		// TODO EWen
-			|| pR->tU0TZ.uZOV.bFlag.bTz
-			|| pR->tXXTZ.uZOV.bFlag.bTz
-			|| pR->tLostVot.uLostVot.bFlag.bTz
-			// || pR->tJXJD.uJxjdFlag.bFlag.bTz	// TODO EWen
-			);
-
-		// 增加小电流接地
-		if (pRunSet->tSwSet[sw].bTT_xdlsg)
-		{
-			bY1|= xdl_is_dz(sw) ;
-		}
-		
-		if(bY1)		
-		{
-			if(soe_check(soeno)==false)
-			{
-				soe_record_ev(soeno, 1, 0,0,0);
-			}
-			return true;
-		}
-		else
-		{
-			if(soe_check(soeno)==true)
-			{
-				soe_record_ev(soeno, 0, 0,0,0);
-			}
-		}
-	}
-#else
 	int sw;
 	bool bY=false;
 	for(sw=0;sw<g_sw_num;sw++)		//保护动作
@@ -2627,7 +2415,7 @@ bool check_fault(void)
 		g_protect.bARSTFLT=true;
 		return true;
 	}
-#endif
+	
 	return false;	
 }
 

+ 27 - 229
dtu/dtu_main_t536/app/UnitsLib.c

@@ -38,82 +38,6 @@ void ProtectRelayInit(void)
 #ifdef	CUSTOMIZE_BZT //备自投
 		BztTimerInit(sw);
 #endif
-#ifdef GW_AREA_MAIN_2021
-		for(i=0;i<OC_NUMBER;i++)
-		{
-			TOC_T *poc=&pR->tOC[i];
-
-			InitTR(&poc->tQDTime,    pSet->tOcSet[i].dTgl,  PRO_RET_TIME); 
-
-			if(pRunSet->dT_ZZFG>tRunPara.dTEventRst)
-			{
-				InitTR(&poc->tTzEvRstTime, pRunSet->dT_ZZFG,  0);   // 故障遥信复归时间
-				InitTR(&poc->tGjEvRstTime, pRunSet->dT_ZZFG,  0);   // 故障遥信复归时间
-			}
-			else
-			{
-				InitTR(&poc->tTzEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG),  0);   // 故障遥信复归时间
-				InitTR(&poc->tGjEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG),  0);   // 故障遥信复归时间
-			}
-			InitTR(&poc->tFz25ms,    T_25ms,  0); 
-			InitTR(&poc->tTzsbTime,  T_1s*2,  0); 
-			InitTR(&poc->tTzhold3s,  0,  T_1s*3); 			
-			InitTR(&poc->tCYLTime,  T_1s,  0); 
-			if(i==OC_GLJS)
-			{
-				InitTR(&poc->tDefer25_100ms,    T_10ms*3,  0);  //30毫秒延时,加速出口的最短时间
-			}
-			else if(i==OC_LXJS)
-			{
-				InitTR(&poc->tDefer25_100ms,    T_100ms,  0);  //120毫秒延时,加速出口的最短时间
-			}
-			else if(i==OC_LYJS)
-			{
-				InitTR(&poc->tDefer25_100ms,    T_100ms,  0);  //120毫秒延时,加速出口的最短时间
-			}
-			else
-			{
-				InitTR(&poc->tDefer25_100ms,    T_25ms,  0); 
-			}
-			if(i==OC_GLBS)
-			{
-				InitTR(&poc->tQDTime, 0, T_200ms);   // 过流闭锁时间定值
-			}
-
-			if(i>=OC_OVLOAD)
-			{
-				InitTR(&poc->tQDTime,    pSet->tOcSet[i].dTgl,  WRN_RET_TIME);  // 过载及重载,返回时间为1秒
-			}			
-			
-		}
-
-		//重合闸
-		InitTR(&pR->tCHZ.tTCHCD15s0s,		pSet->dTCHOK,0   );           //充电15秒
-		InitTR(&pR->tCHZ.tTCHQDHW0ms50ms,	0,T_10ms*5);           //合闸位置下降沿展宽50ms
-		InitTR(&pR->tCHZ.tTCHQD0ms50ms,	0,T_10ms*5  );           //跳闸开出下降沿展宽50ms
-		InitTR(&pR->tCHZ.tTCHJD_0ms30ms,	0,T_10ms*3  );           //弹簧未储能下降沿展宽30ms
-		InitTR(&pR->tCHZ.tTCHJD_200ms0ms,	T_200ms,0   );           //重合开出宽度
-		InitTR(&pR->tCHZ.tTCHJD_ARDelay,	pSet->dTCH[0],0   );           //重合闸延时
-		InitTR(&pR->tCHZ.tTCHFAIL_TW,		pSet->dTCH[0]+T_1s, 0   );           //三相跳位延时: 重合失败返回时间
-		InitTR(&pR->tCHZ.tTCHBSDelay,		pSet->dTCHBS,0   );           //重合闭锁延时
-		InitTR(&pR->tCHZ.tTCHOKTime,		pSet->dTCHOK,0   );           //重合确认延时	
-		InitTR(&pR->tCHZ.tTCHJD_HJS,		0,			pSet->dTCHZK);		// zhy 20210823,后加速有效展宽,从1s改为3s,适应标准
-		InitTR(&pR->tTrip_BHT100MS, 0,			T_100ms);  		//跳闸脉冲最短时间1000ms // TODO 对接 EWen
-
-		// 小电流重合闸
-		// TODO EWen
-		// InitTR(&pR->tXDLCHZ.tTXDLCHCD15s0s,		T_1s*15,0   );           //充电15秒
-		// InitTR(&pR->tXDLCHZ.tTXDLCHQDHW0ms50ms,	0,T_10ms*5);           //合闸位置下降沿展宽50ms
-		// InitTR(&pR->tXDLCHZ.tTXDLCHQD0ms50ms,	0,T_10ms*5  );           //跳闸开出下降沿展宽50ms
-		// InitTR(&pR->tXDLCHZ.tTXDLCHJD_ARDelay,	T_1s*10,0   );           //小电流重合闸延时
-		// InitTR(&pR->tXDLCHZ.tTXDLCHFAIL_TW,		T_1s*11, 0   ); 
-		// InitTR(&pR->tXDLCHZ.tTXDLCHBSDelay,		0,0   );           		 //小电流重合闭锁延时
-		// InitTR(&pR->tXDLCHZ.tTXDLCHOKTime,		10*T_1s,0   );           //重合成功确认时间
-		// InitTR(&pR->tXDLCHZ.tTXDLCHJD_0ms30ms,	0,T_10ms*3  );           //弹簧未储能下降沿展宽30ms
-		// InitTR(&pR->tXDLCHZ.tTXDLCHJD_200ms0ms,	T_200ms,0   );           //小电流重合开出宽度
-		// InitTR(&pR->tXDLCHZ.tTXDLCHJD_HJS,		0,			T_1s*3);
-		// InitTR(&pR->tXDLCHZ.tTXDLCHJLY_HJS,		pSet->dT_xdl_hjs, 0);	 //小电流检零压跳闸
-#else
 		for(i=0;i<BHOC_NUMBER;i++)
 		{
 			TOC_T *poc=&pR->tOC[i];
@@ -244,7 +168,7 @@ void ProtectRelayInit(void)
 		InitTR(&pR->tCHZ.tTCHJD_HJS, 0, T_300ms ); // 2020-07-23 分位持续检测时间改为1s,按照广东标准2020 手合开放检测时间,将3s时间改为0.3s,即分闸持续1S以上,手合0.3秒内可启动后加速
 		InitTR(&pR->tCHZ.tTCHJBSTime,		0,pSet->dT_chz_ok );           //重合闭锁时间
 		InitTR(&pR->tCHZ.tTCHJBSHw,			T_100ms,	0);           // 开关合位100ms确认
-#endif
+
 	#ifdef  GD_AREA_YUNFU
 		InitTR(&pR->tCHZ.tTCH_UO_BS,		T_100ms, 0   );           //;零序电压重合闭锁延时
 	#endif
@@ -259,7 +183,6 @@ void ProtectRelayInit(void)
 		InitTR(&pR->tTrip_BHT40MS, 0,			T_40ms);  		//跳闸脉冲最短时间40ms ,以前为100ms,在做多次重合闸是,若时间整定为100ms左右,会有异常
 		
 		 //配网功能定值
-#ifndef GW_AREA_MAIN_2021
 		InitTR(&pR->tSDHZ.tOnXSTime, pSet->dT_X,0);
 		InitTR(&pR->tSDHZ.tOnYSTime, pSet->dT_Y,0);
 		InitTR(&pR->tSDHZ.tOnZSTime, T_100ms*35,0);  //  3.5秒
@@ -393,17 +316,16 @@ void ProtectRelayInit(void)
 		InitTR(&pR->tSDHZ.tHz0ms2s,pRunSet->dT_HZSB,0);
 		InitTR(&pR->tSDHZ.tTz0ms2s,pRunSet->dT_TZSB,0);	
 		InitTR(&pR->tSDHZ.tTSDHzHJS, 0, pSet->dT_Y); //上电合闸加速判断 
-#endif		
-		// TODO pSet对接,但国网目前没有用到FA逻辑,晚点再合 EWen
-		// InitTR(&pR->tU0TZ.tZOVTime,  		pSet->dT_OverU0, T_20ms); 
-		// InitTR(&pR->tOVER_U0TZ.tZOVTime,  	pSet->dBHTOverU0, T_20ms); 
+		
+		InitTR(&pR->tU0TZ.tZOVTime,  		pSet->dT_OverU0, T_20ms); 
+		InitTR(&pR->tOVER_U0TZ.tZOVTime,  	pSet->dBHTOverU0, T_20ms); 
 
-		// //InitTR(&pR->tGdy.tQDTime,  pSet->dT_gy, T_20ms); 	
+		//InitTR(&pR->tGdy.tQDTime,  pSet->dT_gy, T_20ms); 	
 
-		// InitTR(&pR->tLostVot.tCYY25ms0ms,  T_25ms, 0);    	
-		// InitTR(&pR->tLostVot.tLostVotTime,  pSet->dT_Z, T_20ms);    	
-		// InitTR(&pR->tLostVot.tLostVLockTime,0,pSet->dT_fa_bsTz);
-		// InitTR(&pR->tTQHz.tTQTime,pSet->dT_tq,0); //同期
+		InitTR(&pR->tLostVot.tCYY25ms0ms,  T_25ms, 0);    	
+		InitTR(&pR->tLostVot.tLostVotTime,  pSet->dT_Z, T_20ms);    	
+		InitTR(&pR->tLostVot.tLostVLockTime,0,pSet->dT_fa_bsTz);
+		InitTR(&pR->tTQHz.tTQTime,pSet->dT_tq,0); //同期
 #ifdef ADD_TQ_FH_TIME_SET
 		InitTR(&pR->tTQHz.tTQQDTime,0, pRunSet->dT_tq_fh);
 #else
@@ -411,7 +333,7 @@ void ProtectRelayInit(void)
 #endif
 
 		//解列
-#ifndef GW_AREA_MAIN_2021
+
 		InitTR(&pR->tDYJL.tDdyTime,  pSet->dT_jl_ddy, T_20ms);   //CorrectTR(&pR->tDYJL.tDdyTime);  CorrectTR(&pR->tDYJL.tDdyTime);   	
 		InitTR(&pR->tDYJL.tGdyTime,  pSet->dT_jl_gdy, T_20ms);   //CorrectTR(&pR->tDYJL.tGdyTime);  CorrectTR(&pR->tDYJL.tGdyTime);     	
 		InitTR(&pR->tDYJL.tHighTime,  pSet->dT_jl_ggdy, T_20ms); //CorrectTR(&pR->tDYJL.tHighTime); CorrectTR(&pR->tDYJL.tHighTime);
@@ -425,7 +347,7 @@ void ProtectRelayInit(void)
 		InitTR(&pR->tDYJL.thcbs2_0ms_100ms,  0, T_100ms); 
 		InitTR(&pR->tPLJL.thcbs1_0ms_100ms,  0, T_100ms);  
 		InitTR(&pR->tPLJL.thcbs2_0ms_100ms,  0, T_100ms);  		
-#endif		
+		
 		//手合加速
 //#if defined GD_AREA_MAIN_2020 || defined GD_AREA_ECZD_2020  
         InitTR(&pR->tSWST.tTRunST_20s1s, T_1s, T_300ms ); // 2020-07-23 分位持续检测时间改为1s,按照广东标准2020 手合开放检测时间,将3s时间改为0.3s,即分闸持续1S以上,手合0.3秒内可启动后加速
@@ -454,9 +376,8 @@ void ProtectRelayInit(void)
 		InitTR(&pR->tSWST.tBatOver, T_1s*3,	WRN_RET_TIME);
 		InitTR(&pR->tMb_yuk_time,  T_1s*5, 0); 
 		InitTR(&pR->tTZZFG_5S0ms,  pRunSet->dT_ZZFG, 0);     	//无故障延时5s
-		// InitTR(&pR->thzbs.tBSHZTime, 	pSet->dT_hzbs,	T_20ms);  		// 分闸次数过多,闭锁合闸 // TODO EWen
+		InitTR(&pR->thzbs.tBSHZTime, 	pSet->dT_hzbs,	T_20ms);  		// 分闸次数过多,闭锁合闸
 		InitTR(&pR->thzbs.tTw100ms100ms,T_100ms,T_100ms);	
-#ifndef GW_AREA_MAIN_2021
 		for(i=0;i<8;i++)
 		{
 			if(pRunSet->bTT_FDLTz[i])
@@ -471,6 +392,7 @@ void ProtectRelayInit(void)
 		}
 		fresh_set_soe(EV_TYPE_S, !g_tRelay[sw].run_stu.fa_ls,true,sw);
 		fresh_set_soe(EV_TYPE_L, g_tRelay[sw].run_stu.fa_ls,true,sw);
+
 		//自供电功能投入
 		{
 			//bool bll;
@@ -481,12 +403,14 @@ void ProtectRelayInit(void)
 		//soft_yb set		
 		fresh_set_soe(EV_KZ_YB, pRunSet->bTT_KZ_YB, true,sw); 	
 		fresh_set_soe(EV_EDIT_YB, pRunSet->bTT_EDIT_YB, true,sw); 
+		
 		//#ifdef GD_AREA_FOS
 		#if defined GD_AREA_FOS || defined GD_AREA_MAIN_2020 || defined GD_AREA_ECZD_2020 || defined GD_AREA_FOS_2021
 			fresh_set_soe(EV_CHZ_YB,CHZ_ALL_EN(sw) , true,sw);//重合闸投入
 		#else
 			fresh_set_soe(EV_CHZ_YB,!CHZ_ALL_EN(sw) , true,sw);//停用重合闸
 		#endif		
+
 #ifdef GD_AREA_MAIN_2020
         fresh_set_soe(EV_BH_YB, !FUN_ALL_EN(sw), true,sw);  //停用保护和FA
 #else
@@ -508,7 +432,7 @@ void ProtectRelayInit(void)
 	#ifdef JL_SOFT_YB
 		fresh_set_soe(EV_JL_YBTT,!JL_ALL_EN(sw),true,sw);//停用自动解列
 	#endif
-#endif
+
 	#ifdef FUNC_DRIVE_JY
 		InitTR(&gb_drive.tDriveUa1Time,pSet->dT_drive_ua1, 0);
 		InitTR(&gb_drive.tDriveUa2Time,pSet->dT_drive_ua2, 0);
@@ -528,11 +452,6 @@ void ProtectRelayInit(void)
 	#ifdef FUNC_REBOOT_BS_HA_JS_3S
 		InitTR(&pR->tSDHZ.tHW_JS_HA_3STime, T_1s*3, 0);
 	#endif
-
-		// PT断线
-	#ifdef GW_AREA_MAIN_2021
-		InitTR(&pR->tPTDX.tQDTime,  pRunSet->tPTSet.dTVol,  0);
-	#endif
 	}
 
 	for(i=0;i<VOL_NUMBER;i++)
@@ -585,53 +504,6 @@ void ProtectRelayInit1(void)
 #ifdef	CUSTOMIZE_BZT //备自投
 		BztTimerChange(sw);
 #endif
-#ifdef GW_AREA_MAIN_2021
-
-		for(i=0;i<OC_NUMBER;i++)
-		{
-			TOC_T *poc=&pR->tOC[i];
-
-			InitTR(&poc->tQDTime,    pSet->tOcSet[i].dTgl,  PRO_RET_TIME); 
-		
-			
-			if(pRunSet->dT_ZZFG>tRunPara.dTEventRst)
-			{
-				InitTR_Time(&poc->tTzEvRstTime, pRunSet->dT_ZZFG,  0);   // 故障遥信复归时间
-				InitTR_Time(&poc->tGjEvRstTime, pRunSet->dT_ZZFG,  0);   // 故障遥信复归时间
-			}
-			else
-			{
-				InitTR_Time(&poc->tTzEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG),  0);   // 故障遥信复归时间
-				InitTR_Time(&poc->tGjEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG),  0);   // 故障遥信复归时间
-			}
-			if(i==OC_GLBS)
-			{
-				InitTR_Time(&poc->tQDTime, 0, T_200ms);   // 过流闭锁时间定值
-			}
-			if(i>=OC_OVLOAD)
-			{
-				InitTR(&poc->tQDTime,    pSet->tOcSet[i].dTgl,  WRN_RET_TIME);  // 过载及重载,返回时间为1秒
-			}			
-
-		}
-
-		//重合闸
-		InitTR_Time(&pR->tCHZ.tTCHCD15s0s,		pSet->dTCHOK,0   );            // 重合充电
-		InitTR_Time(&pR->tCHZ.tTCHJD_ARDelay,	pSet->dTCH[0],0   );           // 重合闸延时
-		InitTR_Time(&pR->tCHZ.tTCHFAIL_TW,		pSet->dTCH[0]+T_1s, 0   );     // 三相跳位延时: 重合失败返回时间
-		InitTR_Time(&pR->tCHZ.tTCHBSDelay,		pSet->dTCHBS,0   );            // 重合闭锁延时
-		InitTR_Time(&pR->tCHZ.tTCHOKTime,		pSet->dTCHOK,0   );            // 重合确认延时
-		InitTR_Time(&pR->tCHZ.tTCHJD_HJS,	0,	pSet->dTCHZK);				   // zhy20210918,后加速有效展宽,从1s改为3s,适应标准
-		InitTR_Time(&pR->tSWST.tTRunST_20s1s, 0, pSet->dTCHZK );               // 手合加速判断 zwg,考虑到方便测试,将200ms改为1s	
-
-		//小电流重合闸
-		//TODO 小电流重合定值对接 EWen
-		// InitTR_Time(&pR->tXDLCHZ.tTXDLCHJD_ARDelay,	T_1s*10,0   );
-		// InitTR_Time(&pR->tXDLCHZ.tTXDLCHFAIL_TW,		T_1s*11, 0   );
-		// InitTR_Time(&pR->tXDLCHZ.tTXDLCHBSDelay,		0,0   );           	   // 小电流重合闭锁延时
-		// InitTR_Time(&pR->tXDLCHZ.tTXDLCHOKTime,		T_1s*10,0   );             // 小电流重合成功确认时间
-
-#else
 		for(i=0;i<BHOC_NUMBER;i++)
 		{
 			TOC_T *poc=&pR->tOC[i];
@@ -742,7 +614,6 @@ void ProtectRelayInit1(void)
 		InitTR_Time(&pR->tCHZ.tTCHBSDelay,		pSet->dT_chz_bs,0   );           //重合闭锁延时
 		InitTR_Time(&pR->tCHZ.tTCHOKTime,			pSet->dT_chz_ok,0   );           //重合闭锁延时	
 		 InitTR_Time(&pR->tCHZ.tTCHJBSTime,		 0,pSet->dT_chz_ok );			//重合闭锁时间
-#endif
 	#ifdef	GD_AREA_YUNFU
 		InitTR(&pR->tCHZ.tTCH_UO_BS,		 T_100ms, 0   );			//;零序电压重合闭锁延时
 	#endif
@@ -751,8 +622,6 @@ void ProtectRelayInit1(void)
 	#endif
 		
 		 //配网功能定值
-		 // TODO 国网暂时没有应用FA 此部分定值后面再理  EWen
-#ifndef GW_AREA_MAIN_2021
 		InitTR_Time(&pR->tSDHZ.tOnXSTime, pSet->dT_X,0);
 		InitTR_Time(&pR->tSDHZ.tOnYSTime, pSet->dT_Y,0);
 		InitTR_Time(&pR->tSDHZ.tOnXLTime, pSet->dT_XL,0);
@@ -887,13 +756,12 @@ void ProtectRelayInit1(void)
 		InitTR_Time(&pR->tSDHZ.tTz0ms2s,pRunSet->dT_TZSB,0);	
 		
 		InitTR_Time(&pR->tSDHZ.tTSDHzHJS, 0, pSet->dT_Y); //上电合闸加速判断 
-#endif	
-		// TODO pSet对接,但国网目前没有用到FA逻辑,晚点再合 EWen
-		// InitTR_Time(&pR->tU0TZ.tZOVTime,  pSet->dT_OverU0, T_20ms); 
-		// InitTR_Time(&pR->tOVER_U0TZ.tZOVTime,  	pSet->dBHTOverU0, T_20ms); 
+		
+		InitTR_Time(&pR->tU0TZ.tZOVTime,  pSet->dT_OverU0, T_20ms); 
+		InitTR_Time(&pR->tOVER_U0TZ.tZOVTime,  	pSet->dBHTOverU0, T_20ms); 
 
 		//解列
-	#ifndef GW_AREA_MAIN_2021
+
 		InitTR_Time(&pR->tDYJL.tDdyTime,  pSet->dT_jl_ddy, T_20ms);    	
 		InitTR_Time(&pR->tDYJL.tGdyTime,  pSet->dT_jl_gdy, T_20ms);    	
 		InitTR_Time(&pR->tDYJL.tHighTime,  pSet->dT_jl_ggdy, T_20ms);    	
@@ -902,12 +770,11 @@ void ProtectRelayInit1(void)
 		InitTR_Time(&pR->tPLJL.tDhzTime,  pSet->dT_jl_dhz, T_40ms);    	
 		InitTR_Time(&pR->tPLJL.tHighTime,  pSet->dT_jl_ghz, T_40ms);    	
 		InitTR_Time(&pR->tPLJL.tLowTime,  pSet->dT_jl_lowhz, T_40ms);    
-	#endif
-		// TODO pSet对接,晚点再合 EWen
-		// InitTR_Time(&pR->tLostVot.tLostVotTime,  pSet->dT_Z, T_20ms);    	
-		// InitTR_Time(&pR->tLostVot.tLostVLockTime,0,pSet->dT_fa_bsTz);
-		// InitTR_Time(&pR->tTQHz.tTQTime,pSet->dT_tq,0); //同期
-		InitTR(&pR->tTQHz.tBSTQTime,T_25ms, PRO_RET_TIME);
+
+		InitTR_Time(&pR->tLostVot.tLostVotTime,  pSet->dT_Z, T_20ms);    	
+		InitTR_Time(&pR->tLostVot.tLostVLockTime,0,pSet->dT_fa_bsTz);
+		InitTR_Time(&pR->tTQHz.tTQTime,pSet->dT_tq,0); //同期
+
 
 
 		InitTR_Time(&pR->tSWST.tTWCNGJ1s,  pRunSet->dWCN_T,   WRN_RET_TIME);	
@@ -918,7 +785,7 @@ void ProtectRelayInit1(void)
 		InitTR_Time(&pR->tSWST.tCTXXYC, 	T_1s*3,	WRN_RET_TIME);  		// CT相序异常
 		InitTR_Time(&pR->tSWST.tCTYC, 	T_1s*10,	WRN_RET_TIME);  		// CT断线 
 		InitTR_Time(&pR->tTZZFG_5S0ms,  pRunSet->dT_ZZFG, 0);     	//无故障延时5s
-	#ifndef GW_AREA_MAIN_2021
+
 		for(i=0;i<8;i++)
 		{
 			if(pRunSet->bTT_FDLTz[i])
@@ -931,7 +798,7 @@ void ProtectRelayInit1(void)
 				InitTR_Time(&pR->tFdl[i].tFdlTime,pRunSet->dTFDL[i], WRN_RET_TIME);  
 			}
 		}
-	#endif
+
 	#ifdef FUNC_DRIVE_JY
 		InitTR(&gb_drive.tDriveUa1Time,pSet->dT_drive_ua1, 0);
 		InitTR(&gb_drive.tDriveUa2Time,pSet->dT_drive_ua2, 0);
@@ -947,11 +814,6 @@ void ProtectRelayInit1(void)
 		InitTR(&gb_drive.tQDTime_fz_end,pRunSet->tSwSet[sw].dT_fz_end, 0);
 		InitTR(&gb_drive.tQDTime_hz_end,pRunSet->tSwSet[sw].dT_hz_end, 0);
 	#endif
-
-		// PT断线
-	#ifdef GW_AREA_MAIN_2021
-		InitTR_Time(&pR->tPTDX.tQDTime,  pRunSet->tPTSet.dTVol,  0);
-	#endif
 	}
 
 	for(i=0;i<VOL_NUMBER;i++)
@@ -1197,72 +1059,8 @@ bool PowerDirectionalRelay(long Ur,long Ui,DWORD U, long Ir,long Ii,DWORD I, DWO
 }
 
 
-/**************************************************************************
-函数名称:SynAngle
-函数版本:1.00 
-作者:    赵海洋
-创建日期:2020.05.20     
-函数功能说明:角差判别
 
-输入参数:
-输出参数:
-返回值:  TRUE---角差满足,
-          FALSE--角差不满足
-**************************************************************************/
- bool SynAngle(qs16 lANG1,qs16 lANG2,qs16 dANGSET)//角差判别
-{
-    bool bStatus;
-    qs16 lTemp;
-    
-    lTemp = lANG1 - lANG2;
-	if(lTemp<0)
-	{
-		lTemp=-lTemp;
-	}
-    
-    if(dANGSET > lTemp)
-    {
-        bStatus = 1;
-    }
-    else
-    {
-        bStatus = 0;
-    }
-    return( bStatus );
-}
-/**************************************************************************
-函数名称:SynFrequency
-函数版本:1.00 
-作者:    赵海洋
-创建日期:2020.05.20     
-函数功能说明:频差判别
 
-输入参数:
-输出参数:
-返回值:  TRUE---频差满足,
-          FALSE--频差不满足
-**************************************************************************/
- bool SynFrequency(qs16 lFEQ1,qs16 lFEQ2,qs16 dFEQSET)//频差判别
-{
-    bool bStatus;
-    qs16 lTemp;
-    
-    lTemp = lFEQ1 - lFEQ2;
-	if(lTemp<0)
-	{
-		lTemp=-lTemp;
-	}
-    
-    if(dFEQSET > lTemp)
-    {
-        bStatus = 1;
-    }
-    else
-    {
-        bStatus = 0;
-    }
-    return( bStatus );
-}
 
 
 

+ 0 - 2
dtu/dtu_main_t536/app/UnitsLib.h

@@ -54,7 +54,5 @@ void ProtectRelayInit1(void);                           //
  bool SynJudge(long lANG1,long lANG2,DWORD dANGSET);//ͬÆÚÅбð
 long CalcAngSub(long Real1, long Imag1, long Real2, long Imag2);
 bool PowerDirectionalRelay(long Ur,long Ui,DWORD U, long Ir,long Ii,DWORD I, DWORD Umk,DWORD Imk,long sina1,long cosa1,long sina2,long cosa2);
-bool SynAngle(qs16 lANG1,qs16 lANG2,qs16 dANGSET);//½Ç²îÅбð
-bool SynFrequency(qs16 lFEQ1,qs16 lFEQ2,qs16 dFEQSET);//Ƶ²îÅбð
 #endif
 /*******************************end***************************************/

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

@@ -71,9 +71,7 @@ INIT_FUNC g_app_exit_func[]=
 	pit_exit,
 	adc_exit,
 	equ_exit,
-#ifndef GW_AREA_MAIN_2021
 	FA_exit,
-#endif
 	led_exit,
 	mainimage_exit,
 	auth_exit, // sunxi 20191204 added
@@ -100,7 +98,7 @@ int app_init(void)
 		if(ret != 0)
 		{
 			rt_err_set(g_app_init_func[i].err_code,0);
-			printk("%s err(i=%d,ret=%d)\r\n",g_app_init_func[i].init_name,i,ret);
+			dp_err_n_c_pk("%s err(i=%d,ret=%d)\r\n",g_app_init_func[i].init_name,i,ret);
 		}
 	}
 	
@@ -117,7 +115,7 @@ int app_exit(void)
 		ret = g_app_exit_func[i]();
 		if(ret != 0)
 		{
-			printk("app_exit err(i=%d,ret=%d)\r\n",i,ret);
+			dp_err_n_c_pk("app_exit err(i=%d,ret=%d)\r\n",i,ret);
 		}
 	}
 

+ 4 - 4
dtu/dtu_main_t536/app/can_board.c

@@ -18,8 +18,8 @@
 */
 #include "head.h"
 
-//#ifndef CAN_DISABLE
-//#ifdef CAN_SLAVE_BOARD
+#ifndef CAN_DISABLE
+#ifdef CAN_SLAVE_BOARD
 const CAN_BOARD_NAME can_board_name[] = 
 {
 	{BOARD_TYPE_METERING, "¼ÆÁ¿°å"}
@@ -423,8 +423,8 @@ void can_brd_error_clear(u8 slot)
 	}
 }
 
-//#endif
-//#endif
+#endif
+#endif
 
 /*------------------------------- ºê¶¨Òå --------------------------------------
 */

+ 4 - 4
dtu/dtu_main_t536/app/can_metering_app.c

@@ -1,8 +1,8 @@
 
 #include "head.h"
 
-//#ifndef CAN_DISABLE
-//#ifdef CAN_SLAVE_BOARD
+#ifndef CAN_DISABLE
+#ifdef CAN_SLAVE_BOARD
 
 /*
 struct frz_rcd_t 	rcd_fixd;
@@ -926,7 +926,7 @@ void can_app_busy(void)
 		busy_us = ustimer_get_origin();
 	}
 }
-//#endif
+#endif
 
 #if 0
 int can_ll_energy(struct timespec time,u8 cmd)
@@ -1033,5 +1033,5 @@ void can_ll_msg_app(void)
 	
 }
 #endif
-//#endif
+#endif
 

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

@@ -56,7 +56,7 @@ int dcfactor_init(void)
 	{
 		rt_err_set(ERR_CODE_DCFACTOR,0);
 		rt_file_del("/app/data/dcfactor.bin");
-		rt_printf("直流系数文件错误: %d\r\n", ret);
+		dp_err_n_c_rt("直流系数文件错误: %d\r\n", ret);
 		
 		for (i=0; i<DC_NUM; i++)
 		{
@@ -334,7 +334,7 @@ void _getdcfactorinf(void)
 	pfile = rt_file_open("/app/data/pcolcfg.ini",O_RDONLY ,0);
 	if(IS_ERR(pfile))
 	{
-		rt_printf("error! 无法打开 pcolcfg.ini\r\n");
+		dp_err_n_c_rt("error! 无法打开 pcolcfg.ini\r\n");
 		goto dc_err;
 	}
 	// 得到文件长度

+ 215 - 302
dtu/dtu_main_t536/app/defineSys.h

@@ -14,211 +14,200 @@
 
 #ifdef ___defineSys____//!!!此宏定义不开启,以下宏不直接开启,只用于注释显示
 //内核类型定义
-#define KERNEL_TYPE_OLD_DEVICE		0x4B540000	// 对应老设备的内核
-#define KERNEL_TYPE_COMMON			0x4B540001	// 通用内核
-#define KERNEL_TYPE_GOOSE			0x4B540002	// 带goose功能的设备内核
-#define KERNEL_TYPE_LDP				0x4B540003	// 带光差保护功能的设备内核
-#define KERNEL_TYPE_MANAGE_UNIT		0x4B540004	// 通信管理单元设备内核
-#define KERNEL_TYPE_CTRL_UNIT		0x4B540005	// 测控单元设备内核
-#define KERNEL_TYPE_FTU				0x4B540006	// ftu的设备内核
 #define __GOOSE_USING_DOUBLE_ETH__			//网络3驱动
 
 //需要的时候打开宏重新编译
-#define DISP_SET_CH_T3		//维护工具&&液晶显示重合闸三次
-#define	DISP_SET_GL3		//维护工具&&液晶显示过流三段定值&时间
-#define DISP_MEA_CN			//液晶遥测名称显示中文
-#define DISP_DYGD_JL			//低电压解裂
-#define DISP_GDGUIDANCE_2019    //2019广东配网终端二次功能指导意见定值表
-#define DISP_SET_LX3            //维护工具&&液晶显示零序三段定值&时间
-#define DISP_SET_YYJB           //有压鉴别
-#define DISP_SET_DLYX         //电流越限告警
-#define DISP_SET_67KEY        //6键/7键压板切换
-
-#define SOE_PARA_ALL_SAVE   //soe 全参数处理有效	
-#define BAT_STATE_LED		//电池状态灯显示 增加欠压灯,告警灯
-#define QYD_STATE_LED		//气压低状态灯显示
-#define SOE_RECORD_DELAY	//SOE延迟保存       
-#define JX_YB_SEND_SOE		//检修压板发送带品质描述的SOE	
-#define GD_AREA_GOOSE_DKY	//广东电科院测试互操作测试,goose信息发送时刻在故障判段时间后,每个厂家的理解不同,做成兼容设计
-#define AUTO_VOL_CAL_PQ			//自动选择电压计算PQ
-#define KZ_OUT_TT			//控制出口硬压板
-#define COMM_STATION_NR    //定义南瑞主站适应模式
-#define IECTABLE_NEWDPI_V106   // 转发表配合工具完成合并点和遥信单双点配合版本  0X01010106
-#define BHFA_YB_YK          //遥控保护和FA软压板投退
-#define BHFAGS_YB_YK        //保护、FA合goose软压板定值投退/SOE硬压板关联/遥控
-#define EV_GL_STATR			//过流启动SOE
-#define EV_CHZ_FG           //重合闸复归SOE
-#define DISP_CHZOKCHR_2_SW     //重合闸确认时间+充电时间移到开关定值
-#define SOE_YK_OPT          	//佛山局2020版遥控要求
-#define YX_DI_ERROR				//遥信硬件自检错误
-#define HISTORY_DB				//历史文件数据库
-#define DO_KOUT_CHECK       	//开出反校
-#define YB_STHD_CHECK         //软硬压板不对应检测
-#define FA_OC_COUNT				//FA 过流脉冲计数功能
-#define YK_SOFT_YB				//遥控软压板
-#define YX_RESET_TIME			//遥信复归时间 注意!!!跟 SOE_RECORD_DELAY 不允许同时使用
-#define YK_ZZDY_KC				// 装置电源开出
-#define JZS_FUNCTION			//集中式功能
-#define	XDL_ZT 					//小电流接地
-#define FAULT_3_INFO_ADDR		//故障信息地址3个字节 故障参数电科院模式
-#define NET3_IP5            //3Mac5IP
-#define YK_FA_ENBLE				//主站需要具备遥控闭锁以及解锁开关自动合闸的功能,由主站发起的闭锁需要由主站解锁,即其他情况的解锁都不能消除此遥控闭锁。
-#define TQ_SOFT_YB          //同期软压板
-#define IEC_ERR_LED				//规约通信异常灯(主站101&104 级联101)
-#define TYTQ_DI_YB          //停用检同期硬压板
-#define BS_FAL_DI_YB         //闭锁FA模式下L功能硬压板     
-#define FUN_SET_CHANGE_SOE   //定值修改SOE
-#define QDS_TT               //101/104品质描述投退字
-#define IEC_QDS_HAVE         //101/104品质描述压板(与QDS_TT二选一)
-#define YK_FG_FAJS           //遥控复归+FA解锁
-#define ADD_FD_GL_FX_BH_FUN    //分段过流段内分相保护功能
-#define YK_FA_S_L_ENBLE		//分段联络遥控
-#define FUN_HCBS                 //低频低压滑差功能
-#define YD_TEST_REALTIME_VALUE_DISPLAY     //远动测试遥信、遥测数据显示       
-#define LINK_ERR_LED		//级联灯异常
-#define SEC_SETVALUE_7       //7个定值区
-#define FUN_CHZ_TOPEN        //重合闸开放时间功能
-#define FA_YY_PJ             //FA有压判据:必须任意一侧有两个线电压均满足条件才判得电
-#define DC_NUM_SET          //直流量测试
-#define DISP_DOUBLE_CN		 //显示双位置储能(遥信和灯)
-#define TZ_STATE_LED		 //跳闸状态灯
-#define CHZ_CD_LED			// 重合闸充电灯(之前的充电灯包含联络和分布式的充电状态,非单独的重合闸充电灯)
-#define JL_SOFT_YB          //电压解列软压板
-#define COMM_STATUS_LED      //通信状态灯
-#define SW_FAIL_SINGLE_OUT		//开关失灵
-#define YX_POW_AC            //增加交流遥信功能
-#define DC_OLLECT_NOT_156US_LOOPC  //DC采样在非156us循环中使用
-#define ADD_DEBUG_RECORD_FUN    //增加调试记录功能选项
-#define ADD_DEBUG_RECORD_AUTO_SHOW_FUN    //增加调试记录功能自动显示功能
-#define CHZ_QUIT_LED		//重合闸退出灯(硬件压板或软件压板退出灯亮)
-#define MIN_SIGNAL_SAMPLE		//小信号采样
-#define SW_AC_I0S_SAMPLE		//I0S电流采样
-#define DZ_STANDBY			//备用定值,共40个
-#define BH_FA_INONE_PUBLIC		//常规保护/就地FA/智能分布式FA三合一定值投退(在公共定值中)
-#define SEC_SETVALUE_13       //13个定值区
-#define FA_PL_PJ			//FA频率判据(内部定值):频率在49~50.8Hz的频率才认为有效,可参与判得电
-#define YC_QUANTITY			//每间隔遥参数量可通过内部定值设定(内部定值)
-#define PICK_3U_MIXMIN		//电压判据(内部定值):取三相电压最小值or取三相电压最大值,往后版本皆开放此宏;与FA_YY_PJ不可同时开放
-#define FORBID_YK				//屏蔽遥控操作
-#define TY_YB				//定义停用压板
-#define DZ_STANDBY_ADJUSTABLE	//备用定值(增加最大值使之可调),共20个
-#define NO_SEND_YC				//检修压板投入时不发送遥测
-#define BH_FA_INONE_SW			//功能模块配置定值部分,主要特征为BH/FA/智能FA三合一(在开关定值中)
-#define EQU_RUN_LED				//增加装置工作指示灯:重合闸闭锁/FA闭锁时灭,无闭锁时常亮
-#define VOLT_ADAPTIVE_FACTOR	//电压系数自适应
-#define BATTERY_WITH_COMM		//带通讯电源模块
-#define SET_GL_GJ2				//相间过流告警II段
-#define FUN_JDXX  				//功能:小电流接地					版本:V1.0
-#define DISP_LIST_NUM		//列表类型定值显示定值选项的序号(如:"0:退出"、"1:投入")
-#define GEN_QUEUE			//录波相关
-#define RCD_STRAN_M			/*录波传输*/
-#define RCD_STRAN_S			/*录波传输*/
-#define TY_BH_FA			//停用压板只停保护/常规FA,不包含智能FA、解列、同期等功能
-#define INRUSH_CURRENT_IN_DECIMALS	//涌流识别定值显示为小数并给主站送小数形式
-#define FUN_FUXI_ESAM			//南网加密芯片
-#define FUNC_GET_RD_ONLY		//lcd_menu可配置只读定值
-#define FUNC_YT_HARD_YB			//lcd_menu新增关键硬件遥信(如常规保护硬压板、FA硬压板等)
-#define FUNC_SEL_BAT_MODULE		//可选贵州、佛山电源模块(前提开启宏BATTERY_WITH_COMM)
-#define MODBUS_YX_REG_NUM		//完善modbus满足广州思泰电源模块规约
-#define SWITCH_GLJD_LED			//新增隔离刀闸/接地刀闸可配置指示灯
-#define FUNC_XDLJD_PUB			// 接地选线定值内容移到公共定值区
-#define FUNC_ENCRY_IN_ONE_SERIAL	//串口1可同时接收处理纬德模块转发的3个主站的数据
-#define FUNC_GL_LX_HJS			//后加速投入区分过流后加速/零流后加速
-#define FUNC_YT_NO_ID		//遥调lcd_menu中未配置的地址时,默认回0
-#define FUNC_DRIVE_JY	//不停电传动功能――用于揭阳
-#define FUNC_DRIVE					//不停电传动功能
-#define FUN_ADD_CONFIG_DIR	//增加文件远方交互目录
-#define LCD_ADD_FUNC_MODE		//按照正超韶关局所布局定值
-#define FUNC_RESET_EQU	//通过断开接入电源的常闭继电器重启装置(注意:实测实际开出通道的脉宽时间不应低于600ms)
-#define RCD_STRAN_M_EN				//级联录波主站使能	
-#define YPARA_LINK_S_EN 			//子站定值通知上送
-#define FUN_YPARA_CFG_NOTY			//参数事件
-#define YPARA_LINK					//级联遥参	
-#define YPARA_LINK_S				//级联遥参
-#define FUN_DIMER_LINK				//级联点支持合并
-#define IEC_RESET_PROCESS			//复位命令重启装置	
-#define FUNC_YC_DEAD_ZONE_ALL				//遥测死区可设置为共用一个定值
-#define	MAIN_MEUN_POPOVER		//仅在主菜单液晶下运行才出现弹窗信息,非主菜单不弹窗
-#define ADD_TQ_FH_TIME_SET		//使用备用定值增加同期合闸判断返回时间定值
-#define FUNC_SEND_FAULT_CURRENT 	//遥测上送故障电流
-#define FUNC_CT_BREAK_CHECK 		//开放CT断线检测
+#define DISP_SET_CH_T3       // 维护工具&&液晶显示重合闸三次
+#define DISP_MEA_CN          // 液晶遥测名称显示中文
+#define DISP_DYGD_JL         // 低电压解裂
+#define DISP_GDGUIDANCE_2019 // 2019广东配网终端二次功能指导意见定值表
+#define DISP_SET_LX3         // 维护工具&&液晶显示零序三段定值&时间
+#define DISP_SET_YYJB        // 有压鉴别
+#define DISP_SET_DLYX        // 电流越限告警
+#define DISP_SET_67KEY       // 6键/7键压板切换
+
+#define SOE_PARA_ALL_SAVE              // soe 全参数处理有效
+#define BAT_STATE_LED                  // 电池状态灯显示 增加欠压灯,告警灯
+#define QYD_STATE_LED                  // 气压低状态灯显示
+#define SOE_RECORD_DELAY               // SOE延迟保存
+#define JX_YB_SEND_SOE                 // 检修压板发送带品质描述的SOE
+#define GD_AREA_GOOSE_DKY              // 广东电科院测试互操作测试,goose信息发送时刻在故障判段时间后,每个厂家的理解不同,做成兼容设计
+#define KZ_OUT_TT                      // 控制出口硬压板
+#define COMM_STATION_NR                // 定义南瑞主站适应模式
+#define IECTABLE_NEWDPI_V106           // 转发表配合工具完成合并点和遥信单双点配合版本  0X01010106
+#define BHFA_YB_YK                     // 遥控保护和FA软压板投退
+#define BHFAGS_YB_YK                   // 保护、FA合goose软压板定值投退/SOE硬压板关联/遥控
+#define EV_GL_STATR                    // 过流启动SOE
+#define EV_CHZ_FG                      // 重合闸复归SOE
+#define DISP_CHZOKCHR_2_SW             // 重合闸确认时间+充电时间移到开关定值
+#define SOE_YK_OPT                     // 佛山局2020版遥控要求
+#define YX_DI_ERROR                    // 遥信硬件自检错误
+#define HISTORY_DB                     // 历史文件数据库
+#define DO_KOUT_CHECK                  // 开出反校
+#define YB_STHD_CHECK                  // 软硬压板不对应检测
+#define FA_OC_COUNT                    // FA 过流脉冲计数功能
+#define YK_SOFT_YB                     // 遥控软压板
+#define YX_RESET_TIME                  // 遥信复归时间 注意!!!跟 SOE_RECORD_DELAY 不允许同时使用
+#define YK_ZZDY_KC                     // 装置电源开出
+#define JZS_FUNCTION                   // 集中式功能
+#define XDL_ZT                         // 小电流接地
+#define FAULT_3_INFO_ADDR              // 故障信息地址3个字节 故障参数电科院模式
+#define NET3_IP5                       // 3Mac5IP
+#define YK_FA_ENBLE                    // 主站需要具备遥控闭锁以及解锁开关自动合闸的功能,由主站发起的闭锁需要由主站解锁,即其他情况的解锁都不能消除此遥控闭锁。
+#define TQ_SOFT_YB                     // 同期软压板
+#define IEC_ERR_LED                    // 规约通信异常灯(主站101&104 级联101)
+#define TYTQ_DI_YB                     // 停用检同期硬压板
+#define BS_FAL_DI_YB                   // 闭锁FA模式下L功能硬压板
+#define FUN_SET_CHANGE_SOE             // 定值修改SOE
+#define QDS_TT                         // 101/104品质描述投退字
+#define IEC_QDS_HAVE                   // 101/104品质描述压板(与QDS_TT二选一)
+#define YK_FG_FAJS                     // 遥控复归+FA解锁
+#define ADD_FD_GL_FX_BH_FUN            // 分段过流段内分相保护功能
+#define YK_FA_S_L_ENBLE                // 分段联络遥控
+#define FUN_HCBS                       // 低频低压滑差功能
+#define YD_TEST_REALTIME_VALUE_DISPLAY // 远动测试遥信、遥测数据显示
+#define LINK_ERR_LED                   // 级联灯异常
+#define SEC_SETVALUE_7                 // 7个定值区
+#define FUN_CHZ_TOPEN                  // 重合闸开放时间功能
+#define FA_YY_PJ                       // FA有压判据:必须任意一侧有两个线电压均满足条件才判得电
+#define DC_NUM_SET                     // 直流量测试
+#define TZ_STATE_LED                   // 跳闸状态灯
+#define CHZ_CD_LED                     // 重合闸充电灯(之前的充电灯包含联络和分布式的充电状态,非单独的重合闸充电灯)
+#define JL_SOFT_YB                     // 电压解列软压板
+#define COMM_STATUS_LED                // 通信状态灯
+#define SW_FAIL_SINGLE_OUT             // 开关失灵
+#define YX_POW_AC                      // 增加交流遥信功能
+#define DC_OLLECT_NOT_156US_LOOPC      // DC采样在非156us循环中使用
+#define ADD_DEBUG_RECORD_FUN           // 增加调试记录功能选项
+#define ADD_DEBUG_RECORD_AUTO_SHOW_FUN // 增加调试记录功能自动显示功能
+#define CHZ_QUIT_LED                   // 重合闸退出灯(硬件压板或软件压板退出灯亮)
+#define MIN_SIGNAL_SAMPLE              // 小信号采样
+#define SW_AC_I0S_SAMPLE               // I0S电流采样
+#define DZ_STANDBY                     // 备用定值,共40个
+#define BH_FA_INONE_PUBLIC             // 常规保护/就地FA/智能分布式FA三合一定值投退(在公共定值中)
+#define SEC_SETVALUE_13                // 13个定值区
+#define FA_PL_PJ                       // FA频率判据(内部定值):频率在49~50.8Hz的频率才认为有效,可参与判得电
+#define YC_QUANTITY                    // 每间隔遥参数量可通过内部定值设定(内部定值)
+#define PICK_3U_MIXMIN                 // 电压判据(内部定值):取三相电压最小值or取三相电压最大值,往后版本皆开放此宏;与FA_YY_PJ不可同时开放
+#define FORBID_YK                      // 屏蔽遥控操作
+#define TY_YB                          // 定义停用压板
+#define DZ_STANDBY_ADJUSTABLE          // 备用定值(增加最大值使之可调),共20个
+#define NO_SEND_YC                     // 检修压板投入时不发送遥测
+#define BH_FA_INONE_SW                 // 功能模块配置定值部分,主要特征为BH/FA/智能FA三合一(在开关定值中)
+#define EQU_RUN_LED                    // 增加装置工作指示灯:重合闸闭锁/FA闭锁时灭,无闭锁时常亮
+#define VOLT_ADAPTIVE_FACTOR           // 电压系数自适应
+#define BATTERY_WITH_COMM              // 带通讯电源模块
+#define SET_GL_GJ2                     // 相间过流告警II段
+#define FUN_JDXX                       // 功能:小电流接地					版本:V1.0
+#define DISP_LIST_NUM                  // 列表类型定值显示定值选项的序号(如:"0:退出"、"1:投入")
+#define GEN_QUEUE                      // 录波相关
+#define RCD_STRAN_M                    /*录波传输*/
+#define RCD_STRAN_S                    /*录波传输*/
+#define TY_BH_FA                       // 停用压板只停保护/常规FA,不包含智能FA、解列、同期等功能
+#define INRUSH_CURRENT_IN_DECIMALS     // 涌流识别定值显示为小数并给主站送小数形式
+#define FUN_FUXI_ESAM                  // 南网加密芯片
+#define FUNC_GET_RD_ONLY               // lcd_menu可配置只读定值
+#define FUNC_YT_HARD_YB                // lcd_menu新增关键硬件遥信(如常规保护硬压板、FA硬压板等)
+#define FUNC_SEL_BAT_MODULE            // 可选贵州、佛山电源模块(前提开启宏BATTERY_WITH_COMM)
+#define MODBUS_YX_REG_NUM              // 完善modbus满足广州思泰电源模块规约
+#define SWITCH_GLJD_LED                // 新增隔离刀闸/接地刀闸可配置指示灯
+#define FUNC_XDLJD_PUB                 // 接地选线定值内容移到公共定值区
+#define FUNC_ENCRY_IN_ONE_SERIAL       // 串口1可同时接收处理纬德模块转发的3个主站的数据
+#define FUNC_GL_LX_HJS                 // 后加速投入区分过流后加速/零流后加速
+#define FUNC_YT_NO_ID                  // 遥调lcd_menu中未配置的地址时,默认回0
+#define FUNC_DRIVE_JY                  // 不停电传动功能――用于揭阳
+#define FUNC_DRIVE                     // 不停电传动功能
+#define FUN_ADD_CONFIG_DIR             // 增加文件远方交互目录
+#define LCD_ADD_FUNC_MODE              // 按照正超韶关局所布局定值
+#define FUNC_RESET_EQU                 // 通过断开接入电源的常闭继电器重启装置(注意:实测实际开出通道的脉宽时间不应低于600ms)
+#define RCD_STRAN_M_EN                 // 级联录波主站使能
+#define YPARA_LINK_S_EN                // 子站定值通知上送
+#define FUN_YPARA_CFG_NOTY             // 参数事件
+#define YPARA_LINK                     // 级联遥参
+#define YPARA_LINK_S                   // 级联遥参
+#define FUN_DIMER_LINK                 // 级联点支持合并
+#define IEC_RESET_PROCESS              // 复位命令重启装置
+#define FUNC_YC_DEAD_ZONE_ALL          // 遥测死区可设置为共用一个定值
+#define MAIN_MEUN_POPOVER              // 仅在主菜单液晶下运行才出现弹窗信息,非主菜单不弹窗
+#define ADD_TQ_FH_TIME_SET             // 使用备用定值增加同期合闸判断返回时间定值
+#define FUNC_SEND_FAULT_CURRENT        // 遥测上送故障电流
+#define FUNC_CT_BREAK_CHECK            // 开放CT断线检测
 
 //定制功能
 //#define CUSTOMIZE_BZT			//定制功能-备自投
 
-//export GD_AREA=-DGD_AREA_MIAN
-#define AREA_MAIN			//广东标准版
-#define GD_AREA_FOS				//佛山局要求
-#define GD_AREA_FOS_CHANCHENG	//佛山禅城要求
-#define GD_AREA_FOS_2020        //佛山局2020要求
-#define GD_AREA_ZHONGSHAN		//中山局要求
-#define GD_AREA_ZHUHAI			//珠海局要求
-#define GD_AREA_DONGGUAN		//东莞局要求
-//#define GD_AREA_CHAOZHOU		//潮州局要求 潮州版本不维护,潮州统一用 GD_AREA_CHAOZHOUFENGXI
-#define GD_AREA_JIANGMEN        //江门局要求
-#define GD_AREA_QINGYUAN		//清远局要求
-#define GD_AREA_HUIZHOU			//惠州局要求
-#define GD_AREA_HUIZHOU_DAYAWAN	//惠州局要求_大亚湾
-#define GD_AREA_HUIZHOU_TEST_2021   //惠州局2021试点 在惠州大亚湾的基础上增加交流遥信功能
-#define GD_AREA_HUIZHOU_HUIDONG //惠州惠东局用户工程
-#define GD_AREA_ZHONGSHAN_FTU	//中山FTU要求
-#define GD_AREA_JIEYANG			//揭阳要求
-#define GD_AREA_MEIZHOU_FTU		//梅州要求
-#define GD_AREA_YUNAN_LP		// 云南涞浦
-#define GD_AREA_PANYU_TEST		//番禺测试
-#define GD_AREA_ZHUHAI_V2		//珠海局2019_V2要求
-#define GD_AREA_HEYUAN			//河源局要求
-#define GD_AREA_HEYUAN_KL       //科陆河源局要求
-#define GD_AREA_GUANGZHOU_FTU	//广州局要求
-#define GD_AREA_ZHAOQING		//肇庆局要求
-#define GD_AREA_ZHUHAI_FTU		//珠海FTU局要求
-#define GD_AREA_SHAOGUAN		//韶关局要求
-#define GD_AREA_CHAOZHOUFENGXI	//潮州枫溪局要求
-#define GD_AREA_CHAOZHOU_CHAOAN_FUYANG	//潮州潮安浮洋
-#define GD_AREA_YUNFU			//云浮
-#define GD_AREA_TEST_2020		//广东送检2020标准
-#define GD_AREA_ZHAOQING_FENGKAI	//肇庆封开县要求,科陆在梅州FTU基础上新增功能
-#define GD_AREA_SHANTOU         //汕头局要求
-#define GD_AREA_JIEYANG_FTU     //揭阳FTU要求
-#define GD_AREA_MAIN_2020	    //广东标准版2020
-#define GD_AREA_MAIN_2020_V2		
-#define GD_AREA_ECZD_2020    	//2020广东配网终端二次功能指导意见
-#define GD_AREA_ZHONGSHAN_2020	    //中山局2020要求
-#define GD_AREA_ZHONGSHAN_2020_ZC	//中山局2020要求正超版本
-#define GD_AREA_SHANWEI			//汕尾局要求
-#define GD_AREA_FOS_2021		//佛山21年新标准(针对环网柜)
-#define GD_AREA_HUIZHOU_2021	//广东标准2020分支-惠州局要求
-#define GD_AREA_CHAOZHOU_2021	//广东标准2020分支-潮州地区装置统一程序
-#define GD_AREA_HEYUAN_2021		//广东标准2020分支-河源兼容20年硬件配置及19年非标需求
-#define GD_AREA_JIEYANG_2021		//广东标准2020分支-揭阳
-#define GD_AREA_ECZD_MAOMING			//广东标准2020分支-茂名局
-#define GD_AREA_DONGGUAN_2021		//广东标准2020分支-东莞	
-#define GD_AREA_MEIZHOU_2021		//广东标准2020分支-梅州局
-#define GD_AREA_ECZD_MEIZHOU_2021		//20二次指导意见梅州分支
-#define GD_AREA_PROTECTOR			//分布式装置用作保护用
-#define GD_AREA_LIAONING_2021		//辽宁供货程序(基于广东20年主线宏)
-#define GD_AREA_ECZD_CHAOZHOU_2021		////潮州20二次指导意见分支
-#define GD_AREA_ECZD_FOS_2021		//二次指导意见框架新增佛山分支		//暂未用,下次可直接借用,借用后将此注释删除
-#define GD_ECZD_FOS_FTU_2021		//佛山21年新标准(针对柱上开关)
-#define GD_AREA_ECZD_SHAOGUAN_2021	//韶关20二次指导意见分支
-#define GD_MAIN_2021		//广东标准2021,沿用20框架内容,新增小电流接地功能
-#define GD_MAIN_2021_TEST			//广东标准2021,开普测试用
-#define GD_MAIN_2020_TEST		//广东20年框架宏,用于科陆现场测试
-#define GD_AREA_ECZD_DONGGUAN_2021		//东莞21年新增20年二次指导意见框架内容
-#define GD_AREA_ECZD_YUNFU_2021			//云浮二次指导意见内容
-#define GD_AREA_TEST_2022		//深圳基于南网送检版本新增线损功能
-#define GD_AREA_ECZD_JIEYANG_2022			//揭阳二次指导意见内容
-#define GD_AREA_ECZD_JIANGMEN_2022			//江门二次指导意见内容
-#define GD_AREA_ECZD_QINGYUAN_2022			//广东20年二次指导意见分支-清远
-#define GD_AREA_ECZD_SHANWEI_2022	//广东20年二次指导意见分支-汕尾
-#define GD_AREA_ECZD_CHAOZHOU_2022	//广东20年二次指导意见分支-潮州-V2
-#define GD_AREA_ECZD_YUNFU_YUNAN_2022	//广东20年二次指导意见分支-云浮-郁南
-#define GD_AREA_ECZD_ZHUHAI_2022		//珠海共用20年二次指导意见程序,考虑到地区维护原因,单独新增珠海分支
-#define GD_AREA_ECZD_SHANTOU_2022		//广东20年二次指导意见分支-汕头
-#define GD_AREA_ECZD_SHANWEI_2022_LUHE	//广东20年二次指导意见分支-汕尾陆河
-
- /**< 集中式DTU产品 */
- #define GW_AREA_MAIN_2021		//国网集中式标准版DTU_2021
+#define AREA_MAIN             // 广东标准版
+#define GD_AREA_FOS           // 佛山局要求
+#define GD_AREA_FOS_CHANCHENG // 佛山禅城要求
+#define GD_AREA_FOS_2020      // 佛山局2020要求
+#define GD_AREA_ZHONGSHAN     // 中山局要求
+#define GD_AREA_ZHUHAI        // 珠海局要求
+#define GD_AREA_DONGGUAN      // 东莞局要求
+// #define GD_AREA_CHAOZHOU		//潮州局要求 潮州版本不维护,潮州统一用 GD_AREA_CHAOZHOUFENGXI
+#define GD_AREA_JIANGMEN               // 江门局要求
+#define GD_AREA_QINGYUAN               // 清远局要求
+#define GD_AREA_HUIZHOU                // 惠州局要求
+#define GD_AREA_HUIZHOU_DAYAWAN        // 惠州局要求_大亚湾
+#define GD_AREA_HUIZHOU_TEST_2021      // 惠州局2021试点 在惠州大亚湾的基础上增加交流遥信功能
+#define GD_AREA_HUIZHOU_HUIDONG        // 惠州惠东局用户工程
+#define GD_AREA_ZHONGSHAN_FTU          // 中山FTU要求
+#define GD_AREA_JIEYANG                // 揭阳要求
+#define GD_AREA_MEIZHOU_FTU            // 梅州要求
+#define GD_AREA_YUNAN_LP               // 云南涞浦
+#define GD_AREA_PANYU_TEST             // 番禺测试
+#define GD_AREA_ZHUHAI_V2              // 珠海局2019_V2要求
+#define GD_AREA_HEYUAN                 // 河源局要求
+#define GD_AREA_HEYUAN_KL              // 科陆河源局要求
+#define GD_AREA_GUANGZHOU_FTU          // 广州局要求
+#define GD_AREA_ZHAOQING               // 肇庆局要求
+#define GD_AREA_ZHUHAI_FTU             // 珠海FTU局要求
+#define GD_AREA_SHAOGUAN               // 韶关局要求
+#define GD_AREA_CHAOZHOUFENGXI         // 潮州枫溪局要求
+#define GD_AREA_CHAOZHOU_CHAOAN_FUYANG // 潮州潮安浮洋
+#define GD_AREA_YUNFU                  // 云浮
+#define GD_AREA_TEST_2020              // 广东送检2020标准
+#define GD_AREA_ZHAOQING_FENGKAI       // 肇庆封开县要求,科陆在梅州FTU基础上新增功能
+#define GD_AREA_SHANTOU                // 汕头局要求
+#define GD_AREA_JIEYANG_FTU            // 揭阳FTU要求
+#define GD_AREA_MAIN_2020              // 广东标准版2020
+#define GD_AREA_MAIN_2020_V2
+#define GD_AREA_ECZD_2020              // 2020广东配网终端二次功能指导意见
+#define GD_AREA_ZHONGSHAN_2020         // 中山局2020要求
+#define GD_AREA_ZHONGSHAN_2020_ZC      // 中山局2020要求正超版本
+#define GD_AREA_SHANWEI                // 汕尾局要求
+#define GD_AREA_FOS_2021               // 佛山21年新标准(针对环网柜)
+#define GD_AREA_HUIZHOU_2021           // 广东标准2020分支-惠州局要求
+#define GD_AREA_CHAOZHOU_2021          // 广东标准2020分支-潮州地区装置统一程序
+#define GD_AREA_HEYUAN_2021            // 广东标准2020分支-河源兼容20年硬件配置及19年非标需求
+#define GD_AREA_JIEYANG_2021           // 广东标准2020分支-揭阳
+#define GD_AREA_ECZD_MAOMING           // 广东标准2020分支-茂名局
+#define GD_AREA_DONGGUAN_2021          // 广东标准2020分支-东莞
+#define GD_AREA_MEIZHOU_2021           // 广东标准2020分支-梅州局
+#define GD_AREA_ECZD_MEIZHOU_2021      // 20二次指导意见梅州分支
+#define GD_AREA_PROTECTOR              // 分布式装置用作保护用
+#define GD_AREA_LIAONING_2021          // 辽宁供货程序(基于广东20年主线宏)
+#define GD_AREA_ECZD_CHAOZHOU_2021     ////潮州20二次指导意见分支
+#define GD_AREA_ECZD_FOS_2021          // 二次指导意见框架新增佛山分支		//暂未用,下次可直接借用,借用后将此注释删除
+#define GD_ECZD_FOS_FTU_2021           // 佛山21年新标准(针对柱上开关)
+#define GD_AREA_ECZD_SHAOGUAN_2021     // 韶关20二次指导意见分支
+#define GD_MAIN_2021                   // 广东标准2021,沿用20框架内容,新增小电流接地功能
+#define GD_MAIN_2021_TEST              // 广东标准2021,开普测试用
+#define GD_MAIN_2020_TEST              // 广东20年框架宏,用于科陆现场测试
+#define GD_AREA_ECZD_DONGGUAN_2021     // 东莞21年新增20年二次指导意见框架内容
+#define GD_AREA_ECZD_YUNFU_2021        // 云浮二次指导意见内容
+#define GD_AREA_TEST_2022              // 深圳基于南网送检版本新增线损功能
+#define GD_AREA_ECZD_JIEYANG_2022      // 揭阳二次指导意见内容
+#define GD_AREA_ECZD_JIANGMEN_2022     // 江门二次指导意见内容
+#define GD_AREA_ECZD_QINGYUAN_2022     // 广东20年二次指导意见分支-清远
+#define GD_AREA_ECZD_SHANWEI_2022      // 广东20年二次指导意见分支-汕尾
+#define GD_AREA_ECZD_CHAOZHOU_2022     // 广东20年二次指导意见分支-潮州-V2
+#define GD_AREA_ECZD_YUNFU_YUNAN_2022  // 广东20年二次指导意见分支-云浮-郁南
+#define GD_AREA_ECZD_ZHUHAI_2022       // 珠海共用20年二次指导意见程序,考虑到地区维护原因,单独新增珠海分支
+#define GD_AREA_ECZD_SHANTOU_2022      // 广东20年二次指导意见分支-汕头
+#define GD_AREA_ECZD_SHANWEI_2022_LUHE // 广东20年二次指导意见分支-汕尾陆河
+
+/**< 集中式DTU产品 */
+#define GW_AREA_MAIN_2021 // 国网集中式标准版DTU_2021
 #endif
 
 #if defined (CPU_AM335X) || defined (CPU_FUXI)
@@ -243,39 +232,36 @@
 #endif
 
 #if !defined CPU_FUXI && !defined CPU_AM335X
-#define ENCRYPT_SM2	//SM2加密
-#define ENCRYPT_X509	//X509加密
-#define LINELOSS_FILE 		//线损文件功能
-#define GPRS_FUNC 		//GPRS功能
-#define SNTP_FUNC 		//SNTP功能
+#define ENCRYPT_SM2   // SM2加密
+#define ENCRYPT_X509  // X509加密
+#define LINELOSS_FILE // 线损文件功能
+#define GPRS_FUNC     // GPRS功能
+#define SNTP_FUNC     // SNTP功能
 #endif
 
 #define FUN_HISFILE_FORMAT //added by sunxi: 20220718
 
-
-//默认开启以下宏定义开关
-#define PASSWORD_4_STR						// 默认密码四位数
-#define EQU_KERNEL_TYPE	KERNEL_TYPE_COMMON	// 默认为通用内核
-#define EQU_KERNEL_TYPE2 0xffffffff
-#define JX_YB_SEND_SOE						//默认检修压板发送带品质描述SOE
-//#define IECTABLE_NEWDPI_V106   // 转发表配合工具完成合并点和遥信单双点配合版本  0X01010106
-#define COMM_STATION_NR    //定义南瑞主站适应模式	,遥控报文优先上送
-#define YD_TEST_REALTIME_VALUE_DISPLAY     //远动测试遥信、遥测数据显示    
-//#define YX_POW_AC							//遥信电源交流
-#define FBS_GD_MAIN							//通用地区宏,给小电流接地功能用
-#define FUNC_FIT_QOS				//101/104通讯的预置取消报文不判断qos(设定命令限定词)位
-#define GEN_QUEUE			//录波相关
-#define RCD_STRAN_M			/*录波传输*/
-#define RCD_STRAN_S			/*录波传输*/
-#define SOE_RELINK_DISCOS	/*soe续传不传cos*/
-#define FUNC_MORE_PRESET			//支持遥调时多次预置,固化
-#define	MAIN_MEUN_POPOVER		//仅在主菜单液晶下运行才出现弹窗信息,非主菜单不弹窗
-#define FUNC_PRINT_PT_ERR	//PT断线时应报相关打印信息
-#define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
+// 默认开启以下宏定义开关
+#define PASSWORD_4_STR                     // 默认密码四位数
+#define JX_YB_SEND_SOE // 默认检修压板发送带品质描述SOE
+// #define IECTABLE_NEWDPI_V106   // 转发表配合工具完成合并点和遥信单双点配合版本  0X01010106
+#define COMM_STATION_NR                // 定义南瑞主站适应模式	,遥控报文优先上送
+#define YD_TEST_REALTIME_VALUE_DISPLAY // 远动测试遥信、遥测数据显示
+// #define YX_POW_AC							//遥信电源交流
+#define FBS_GD_MAIN       // 通用地区宏,给小电流接地功能用
+#define FUNC_FIT_QOS      // 101/104通讯的预置取消报文不判断qos(设定命令限定词)位
+#define GEN_QUEUE         // 录波相关
+#define RCD_STRAN_M       /*录波传输*/
+#define RCD_STRAN_S       /*录波传输*/
+#define SOE_RELINK_DISCOS /*soe续传不传cos*/
+#define FUNC_MORE_PRESET  // 支持遥调时多次预置,固化
+#define MAIN_MEUN_POPOVER // 仅在主菜单液晶下运行才出现弹窗信息,非主菜单不弹窗
+#define FUNC_PRINT_PT_ERR // PT断线时应报相关打印信息
+#define SOE_PARA_ALL_SAVE // 故障断面所有遥测全部显示
 #ifndef CPU_FUXI
 #define FUN_HMI_WATCH
 #endif
-
+#define BSP_DFTU
 
 // #define IEC_NOLINK_NO_CALLYX
 
@@ -288,10 +274,6 @@
  #ifdef GD_AREA_ZHONGSHAN	//中山局要求
  	#ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		3102          // 版本号3.102
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 		#define GD_AREA_GOOSE_DKY	//广东电科院测试互操作测试,goose信息发送时刻在故障判段时间后,每个厂家的理解不同,做成兼容设计
 	#else
 		#define VER_NUM			 		4102          // 版本号4.102
@@ -326,10 +308,6 @@
 #elif defined GD_AREA_JIANGMEN //江门局要求(09版本号之前规划为清远局,实际未用)
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		9201          // 版本号9.201
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				9101			// 版本号9.101		
 	#endif
@@ -337,14 +315,12 @@
 
 #elif defined GD_AREA_HUIZHOU//惠州局要求
 	#define VER_NUM			 		10101          	// 版本号10.101
-	#define	DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
 	#define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
 	#define DISP_MEA_CN				//液晶遥测名称显示中文
 	#undef JX_YB_SEND_SOE							//不发送带检修压板SOE
 
 #elif defined 	GD_AREA_HUIZHOU_DAYAWAN		//惠州大亚湾
 	#define VER_NUM			 		10102          	// 版本号10.102
-	#define	DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
 	#define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
 	#define DISP_MEA_CN				//液晶遥测名称显示中文
 	#undef JX_YB_SEND_SOE							//不发送带检修压板SOE
@@ -354,7 +330,6 @@
 
 #elif defined GD_AREA_HUIZHOU_TEST_2021
     #define VER_NUM 				10103			// 版本号10.103
-    #define DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
     #define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
     #define DISP_MEA_CN 			//液晶遥测名称显示中文
     #undef JX_YB_SEND_SOE							//不发送带检修压板SOE
@@ -365,7 +340,6 @@
 
 #elif defined GD_AREA_HUIZHOU_HUIDONG
     #define VER_NUM 				10104			// 版本号10.104
-    #define DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
     #define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
     #define DISP_MEA_CN 			//液晶遥测名称显示中文
     #undef JX_YB_SEND_SOE							//不发送带检修压板SOE
@@ -384,10 +358,6 @@
 #elif defined  GD_AREA_JIEYANG	//揭阳局要求
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		12201          // 版本号12.201
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				12101			// 版本号12.101		
 	#endif
@@ -415,7 +385,6 @@
 	#define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
 	#define DISP_MEA_CN				//液晶遥测名称显示中文
 	#define DISP_DYGD_JL			//电压过低解裂
-	#define AUTO_VOL_CAL_PQ			//自动选择电压计算PQ
 	#define EV_GL_STATR
 	#define EV_CHZ_FG
 	#define YB_STHD_CHECK
@@ -425,7 +394,6 @@
 
 #elif defined GD_AREA_HEYUAN_KL     //科陆河源
     #define VER_NUM 				16101			// 版本号16.101
-	#define	DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
 	#define SOE_RECORD_DELAY
 	#define GD_AREA_HEYUAN
 
@@ -455,10 +423,6 @@
 #elif defined GD_AREA_SHAOGUAN	    //韶关
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		20201          // 版本号20.201
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				20101			// 版本号20.101		
 	#endif
@@ -468,16 +432,11 @@
 
 #elif defined  GD_AREA_HEYUAN		//正超河源版本	
 	#define VER_NUM 				21101			// 版本号21.101
-	#define	DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
 	#define SOE_RECORD_DELAY
 
 #elif defined  GD_AREA_CHAOZHOUFENGXI		//正超潮州枫溪版本	
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		22201          // 版本号22.201
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				22101			// 版本号22.101		
 	#endif	
@@ -490,10 +449,6 @@
 	#define  GD_AREA_CHAOZHOUFENGXI		//正超潮州枫溪版本	
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		22202          // 版本号22.202
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				22102			// 版本号22.102		
 	#endif	
@@ -560,10 +515,6 @@
 #elif defined  GD_AREA_JIEYANG_FTU	//揭阳局FTU要求
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		27201          // 版本号27.201
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				27101			// 版本号27.101		
 	#endif
@@ -611,7 +562,6 @@
 #elif defined GD_AREA_HUIZHOU_2021	//广东标准2020分支-惠州局
     #define VER_NUM 				28104			// 版本号28.104
 	#define GD_AREA_HUIZHOU_DAYAWAN
-    #define DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
     #define SOE_PARA_ALL_SAVE		//故障断面所有遥测全部显示
 	#define DISP_MEA_CN 			//液晶遥测名称显示中文
     #define GD_AREA_HUIZHOU//惠州局要求-》大亚湾在原有惠州局基础上增加 
@@ -633,10 +583,6 @@
 #elif defined  GD_AREA_CHAOZHOU_2021	//广东标准2020分支-潮州
 	#ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		28205          // 版本号28.205
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				28105			// 版本号28.105
 	#endif
@@ -647,7 +593,6 @@
 
 #elif defined  GD_AREA_HEYUAN_2021	//广东标准2020分支-河源
 	#define VER_NUM 				    28106			// 版本号28.106
-	#define	DISP_SET_GL3			//维护工具&&液晶显示过流三段定值&时间
 	#define SOE_RECORD_DELAY
 	#define GD_AREA_HEYUAN
 	#define IEC_JXYB_DEAL				//“检修压板”此遥信点不受检修功能控制,即任何时刻变位都正常上送。
@@ -663,10 +608,6 @@
 #elif defined  GD_AREA_JIEYANG_2021	//广东标准2020分支-揭阳
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		28207          // 版本号28.207
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				28107			// 版本号28.107	
 	#endif
@@ -785,10 +726,6 @@
 #elif defined  GD_AREA_ECZD_CHAOZHOU_2021		////潮州20二次指导意见分支
 	#ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM 					31202			// 版本号31.202
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				31102			// 版本号31.102
 	#endif
@@ -831,7 +768,6 @@
 	#define RCD_STRAN_M				/*录波传输*/
 	#define RCD_STRAN_S				/*录波传输*/
 	#define DZ_STANDBY_ADJUSTABLE	//备用定值(增加最大值使之可调),共20个
-	#define	DISP_SET_GL3
 	#define SET_GL_GJ2				//相间过流告警II段
 	#define FUN_HCBS				//低频低压滑差功能
 	#define DISP_LIST_NUM		//列表类型定值显示定值选项的序号(如:"0:退出"、"1:投入")
@@ -872,10 +808,6 @@
 #elif defined  GD_AREA_ECZD_JIEYANG_2022	//揭阳-二次指导意见内容
     #ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		31208			//版本号31.208
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				31108			// 版本号31.108
 	#endif
@@ -901,10 +833,6 @@
 #elif defined  GD_AREA_ECZD_JIANGMEN_2022	//广东二次指导意见分支-江门局
 	#ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM 				31209			//版本号31.209
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				31109			// 版本号31.109
 	#endif
@@ -933,10 +861,6 @@
 #elif defined  GD_AREA_ECZD_CHAOZHOU_2022	//广东20年二次指导意见分支-潮州-V2
 	#ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM 					31212			// 版本号31.212
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM 				    31112			// 版本号31.112
 	#endif
@@ -1014,7 +938,6 @@
 	#else
 	#define VER_NUM 					32102			// 版本号32.102	
 	#endif
-	#define DISP_SET_GL3				//过流III段
 
  /**<******************************以下为国网集中式DTU5.0 ***********************************************/
 #elif defined GW_AREA_MAIN_2021			//国网集中式DTU2021
@@ -1022,22 +945,14 @@
 	#define VER_NUM 					50201			// 版本号50.201	
 	#else
 	#define VER_NUM 					50101			// 版本号50.101	
-	#endif
 	#define NET4_IP5            						//4Mac5IP
-	#define DEV_GPS_ATGM332D
-	#define DISP_SET_YYJB
-	#define YX_RESET_TIME
-	#define DISP_SET_LX3 
+	#endif
 #else
 	#ifndef AREA_MAIN
 		#error 未定义地区宏 export _AREA=-D******* 
 	#endif
 	#ifdef __IEC61850_GOOSE_FUNC__
 		#define VER_NUM			 		1101          	// 版本号01.101
-		#undef EQU_KERNEL_TYPE
-		#undef EQU_KERNEL_TYPE2 
-		#define EQU_KERNEL_TYPE2 KERNEL_TYPE_COMMON
-		#define EQU_KERNEL_TYPE	KERNEL_TYPE_GOOSE
 	#else
 		#define VER_NUM			 		2101          	// 版本号02.101
 	#endif
@@ -1080,7 +995,6 @@
     #define GD_AREA_GOOSE_DKY	//广东电科院测试互操作测试,goose信息发送时刻在故障判段时间后,每个厂家的理解不同,做成兼容设计
     #define YK_FA_S_L_ENBLE 	//分段联络遥控
     #define NET3_IP5			//3Mac5IP
-    #define DISP_DOUBLE_CN		//显示双位置储能(遥信和灯)
     #define DISP_SET_67KEY      //6键/7键压板切换
     #define LINK_ERR_LED		//级联灯异常
     #define TZ_STATE_LED		 //跳闸状态灯
@@ -1148,7 +1062,6 @@
 	#define EV_CHZ_FG
 	#define DISP_CHZOKCHR_2_SW
 	#define DO_KOUT_CHECK
-	#define DISP_SET_GL3
 	#define DISP_SET_LX3 
 	#define DISP_SET_DLYX
 	#define DISP_SET_YYJB
@@ -1192,7 +1105,7 @@
 
 //伏羲暂不支持can、伏羲加密S1芯片
 #ifdef  CPU_FUXI 
-	#define BSP_CAN_ENABLE		// can bsp
+	// #define BSP_CAN_ENABLE		// can bsp
 	#undef CAN_SLAVE_BOARD
 	#undef METERING_ENERGY
 	#undef ADD_MULTIPLE_FILE_WR_FUN
@@ -1214,10 +1127,8 @@
 #if defined CPU_COLDFIRE || defined CPU_AM335X
 #define TMP_CHIP_DS18B20
 #else
-#if defined CPU_FUXI
+#if defined GW_AREA_MAIN_2021
 #define TMP_CHIP_AHT20
-#else
-#define TMP_CHIP_GX21M15
 #endif
 #endif
 
@@ -1226,3 +1137,5 @@
 #endif
 
 #endif //_DEFINE_SYS_H
+
+#define NW_AREA_MAIN_2021

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

@@ -336,7 +336,7 @@ int down_program_recv(u8 *buf)
 
 
 /**************************************************************************
-函数名称:prog_send
+函数名称:down_program_send
 函数版本:1.00 
 作者:   
 创建日期:2013.05.18    

+ 17 - 17
dtu/dtu_main_t536/app/equ.c

@@ -266,10 +266,10 @@ int equ_init_file_config(void)
 	|| (ec->rsc_length != rsc_contrast.length)
 	|| (ec->rsc_crc != rsc_contrast.crc))
 	{
-		rt_printf("equ_version=%4x\trsc_version=%4x\r\n",ec->rsc_version, rsc_contrast.version);
-		rt_printf("equ_signature=%4x\trsc_signature=%4x\r\n",ec->rsc_signature, rsc_contrast.signature);
-		rt_printf("equ_length=%4x\trsc_length=%4x\r\n",ec->rsc_length, rsc_contrast.length);
-		rt_printf("equ_crc=%4x\trsc_crc=%4x\r\n",ec->rsc_crc, rsc_contrast.crc);
+		rt_printf("equ_version = 0x%8x, rsc_version = 0x%8x\r\n",ec->rsc_version, rsc_contrast.version);
+		rt_printf("equ_signature = 0x%8x, rsc_signature = 0x%8x\r\n",ec->rsc_signature, rsc_contrast.signature);
+		rt_printf("equ_length = 0x%8x, rsc_length = 0x%8x\r\n",ec->rsc_length, rsc_contrast.length);
+		rt_printf("equ_crc = 0x%8x, rsc_crc = 0x%8x\r\n",ec->rsc_crc, rsc_contrast.crc);
 		
 		rt_free(buf);
 		return -6;
@@ -409,17 +409,17 @@ int equ_config_check(void)
 	
 	const int bank_cfg[EQU_SLOT_NUM_MAX]=
 	{
-		BOARD_TYPE_AC,
-		BOARD_TYPE_AC,
-		BOARD_TYPE_DI60,
-		BOARD_TYPE_DO_2,
-		BOARD_TYPE_AUX,
-		BOARD_TYPE_MAIN,
+		BOARD_TYPE_FUXI_DI,
+		BOARD_TYPE_FUXI_DO,
+		BOARD_TYPE_FUXI_AC,
 		-1,
 		-1,
 		-1,
 		-1,
-		-1,					
+		-1,
+		-1,
+		-1,	
+		-1,			
 	};
 
 	for(i=0;i<EQU_SLOT_NUM_MAX;i++)
@@ -458,14 +458,14 @@ int equ_init(void)
 	// 得到装置地址和硬件版本
 	g_slot_addr = gpio_get_addr();
 	g_hw_version = gpio_get_version();
-	rt_printf("g_hw_version=0x%02x,g_slot_addr=0x%02x.\r\n",g_hw_version,g_slot_addr);
+	rt_printf("g_hw_version=0x%02x, g_slot_addr=0x%02x.\r\n",g_hw_version,g_slot_addr);
 
 	// 装置板卡资源
 	ret = equ_init_file_brd_res();
 	if(ret != 0)
 	{
 		rt_err_set(ERR_CODE_EQU_RESOURCE,0);
-		rt_printf("equ_init_file_resource err(ret=%d)\r\n",ret);
+		dp_err_n_c_rt("equ_init_file_resource err(ret=%d)\r\n",ret);
 		return -1;
 	}
 
@@ -474,7 +474,7 @@ int equ_init(void)
 	if(ret != 0)
 	{
 		rt_err_set(ERR_CODE_EQU_CONFIG,0);
-		rt_printf("equ_init_file_config err(ret=%d)\r\n",ret);
+		dp_err_n_c_rt("equ_init_file_config err(ret=%d)\r\n",ret);
 		return -2;
 	}
 
@@ -486,7 +486,7 @@ int equ_init(void)
 		if(equ_info_brd_type(g_equ_config->brd_type[i]) == 0)
 		{
 			equ_led_init();
-			rt_printf("板卡类型不存在(type=%d)!\r\n",g_equ_config->brd_type[i]);
+			dp_err_n_c_rt("板卡类型不存在(type=%d)!\r\n",g_equ_config->brd_type[i]);
 			return -3;
 		}
 		
@@ -495,7 +495,7 @@ int equ_init(void)
 		g_board_info[i].do_num = _equ_get_do_num(i);
 		g_board_info[i].ac_num = _equ_get_ac_num(i);
 
-		if((g_board_info[i].type < BOARD_TYPE_GROUP_RS) 
+        if((g_board_info[i].type < BOARD_TYPE_GROUP_RS) 
 			&& (g_board_info[i].di_num || g_board_info[i].do_num || g_board_info[i].ac_num))
 		{
 			// 板卡需要周期性的检查是否正常工作。
@@ -542,7 +542,7 @@ int equ_init(void)
 	ret = equ_config_check();
 	if(ret)
 	{
-		rt_printf("%s:ret=%d\r\n",__func__,ret);
+		dp_err_n_c_rt("%s:ret=%d\r\n",__func__,ret);
 		return -4;
 	}
 

+ 1 - 2
dtu/dtu_main_t536/app/fsx.c

@@ -10,7 +10,6 @@
 * 修改原因:  
 * 更新日志2:
 **************************************************************************/
-#ifndef GW_AREA_MAIN_2021
 #define __FSX_C
 
 #include "head.h"
@@ -368,6 +367,6 @@ void FSXCalc(int sw,FSXCS *pFsxcs, DWORD dIfz, bool bOCStart, DWORD dTStep)
     	}   
     	return;
 }
-#endif
+
 // = ========================= 本文件结束 =============================
 

+ 4 - 2
dtu/dtu_main_t536/app/head.h

@@ -146,14 +146,14 @@
 #include "bluetooth.h"
 
 // 线损相关头文件
-//#ifdef CAN_SLAVE_BOARD
+#ifdef CAN_SLAVE_BOARD
 #include "can_board.h"
 #include "can_metering_app.h"
 #include "CommPowerModule.h"
 #include "csv_rw.h"
 #include "energy_curve.h"
 #include "lineloss.h"
-//#endif
+#endif
 
  // x509证书解析
 #include "x509.h"
@@ -161,6 +161,8 @@
 #include "sc1161y.h"
 #include "encrypt_core.h"
 
+#include "debug_print.h"
+
 extern u32 g_tick_secs;
 extern u32 g_restart_count;
 

+ 5 - 42
dtu/dtu_main_t536/app/led.c

@@ -185,37 +185,7 @@ void _led_update_status(void)
 	{
 		led_set_pub(PUB_LED_RUN, LED_SLOW);
 	}
-#ifdef GW_AREA_MAIN_2021
-		// A相指示灯
-	if (g_run_stu.phayy)
-	{
-		led_set_pub(PUB_LED_PHA,LED_OFF);
-	}
-	else
-	{
-		led_set_pub(PUB_LED_PHA,LED_ON);
-	}
-
-	// B相指示灯
-	if (g_run_stu.phbyy)
-	{
-		led_set_pub(PUB_LED_PHB,LED_OFF);
-	}
-	else
-	{
-		led_set_pub(PUB_LED_PHB,LED_ON);
-	}
 
-	// C相指示灯
-	if (g_run_stu.phcyy)
-	{
-		led_set_pub(PUB_LED_PHC,LED_OFF);
-	}
-	else
-	{
-		led_set_pub(PUB_LED_PHC,LED_ON);
-	}
-#endif
 	//异常灯,以内部异常优先级高
 	exerr=0;
 #ifndef GD_AREA_ZHUHAI_V2	//未储能异常	
@@ -278,7 +248,7 @@ void _led_update_status(void)
     {
         RUN_STU_SW *prun=&g_tRelay[i].run_stu;
 
-        if (prun->exerr||prun->qyd||prun->qyd||tPT.uPT1DX.bFlag.bPTYC||tPT.uPT2DX.bFlag.bPTYC)
+        if (prun->exerr||prun->qyd_bs||prun->qyd_bs||tPT.uPT1DX.bFlag.bPTYC||tPT.uPT2DX.bFlag.bPTYC)
         {
             exerr =1;
             break;
@@ -592,7 +562,7 @@ void _led_update_status(void)
 			led_set_sw(i,SW_LED_DZ, LED_OFF);
 		}
 		#endif
-#ifndef GW_AREA_MAIN_2021
+
 		if(BH_GOOSE_EN(i))  //智能FA逻辑,联络开关自动查找
 		{
 			if(g_tRelay[i].tgoc.tllcd.sta.bFlag.bCD) //本开关为联络开关
@@ -890,7 +860,6 @@ void _led_update_status(void)
 				strcpy(m_Mode_chr,"----");
 			}
 		}
-#endif
 #ifdef GD_AREA_ZHONGSHAN_2020
 		if(soe_check(EV_GOOSE_QC_OK+i*EV_SW_NUM)==true		//切除OK
 			||soe_check(EV_GOOSE_GL_OK+i*EV_SW_NUM)==true	//隔离OK
@@ -933,20 +902,14 @@ void _led_update_status(void)
 		//储能/未储能灯需分合位合法(有对应遥信点)时才允许点亮
 		if(prun->wcn && (prun->sw != 0) && (prun->sw != 3))
 		{
-			led_set_sw(i,SW_LED_CN, LED_ON);
-		#ifdef DISP_DOUBLE_CN
-			led_set_sw(i,SW_LED_YCN, LED_OFF);
-		#endif
+			led_set_sw(i,SW_LED_WCN, LED_ON);
 		}
 		else if(!prun->wcn && (prun->sw != 0) && (prun->sw != 3))
 		{
-			led_set_sw(i,SW_LED_CN, LED_OFF);
-		#ifdef DISP_DOUBLE_CN
-			led_set_sw(i,SW_LED_YCN, LED_ON);
-		#endif
+			led_set_sw(i,SW_LED_WCN, LED_OFF);
 		}
 	#ifdef QYD_STATE_LED
-		if(prun->qyd) 
+		if(prun->qyd_bs) 
 			led_set_sw(i,SW_LED_QYD, LED_ON);
 		else
 			led_set_sw(i,SW_LED_QYD, LED_OFF);

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

@@ -186,6 +186,8 @@ int app_main (void *unused)
 	}
 #endif
 
+	rt_printf("SW_SET_NUMBER = %d, PARA_NUM = %d\r\n", SW_SET_NUMBER, PARA_NUM);
+
 	us0_sec = bsp_ustimer_get_origin();
 	while(1)
 	{
@@ -236,9 +238,7 @@ int app_main (void *unused)
 		Maintain_Applay();
 		net_debug_app(); 
 		IEC104_Ether_App();
-	#ifndef GW_AREA_MAIN_2021
 		FA_status_write();
-	#endif
 		sec_app();
 		clk_app();
 		AppPolling();		// 设备状态处理,如点灯等

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

@@ -86,7 +86,7 @@ void user_conf_init(void)
 	
 	g_h_boj[0].write = myuart_write;
 	
-	if((g_h_boj[0].fd==CFG_UART_485_0) ||(g_h_boj[0].fd==CFG_UART_485_1)  || (g_h_boj[0].fd==CFG_UART_485_2) )
+	if((g_h_boj[0].fd==CFG_UART_485_0) ||(g_h_boj[0].fd==CFG_UART_485_1))
 	{
 		g_h_boj[0].halfduplex=1;
 	}

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 3 - 1541
dtu/dtu_main_t536/app/oc.c


+ 1 - 89
dtu/dtu_main_t536/app/oc.h

@@ -21,94 +21,6 @@
 /*------------------------------ 类型结构 -------------------------------------
 */
 //电流保护标志
-#ifdef GW_AREA_MAIN_2021
-
-typedef union UOCFLAG
-{
-	DWORD  wfFlag;
-	struct
-	{
-		DWORD    bQD:1;     	// 启动      
-		DWORD    bGj:1;   	// 告警     
-		DWORD    bTz:1;       	// 跳闸    
-		DWORD    bXBbs:1;	// 谐波闭锁
-		DWORD    bBSCH:1;	// 闭锁重合
-		DWORD    bCYL:1;		// 曾有流
-		DWORD    bTripBak:1; // 跳闸动作备份    
-		DWORD    bTzhold:1;
-		DWORD    bJSBC:1;       // 加速保持
-		DWORD    bDzLed:1; 	// 动作灯
-		DWORD    bTzsbLed:1; // 跳闸失败灯
-		DWORD    bGjEvent:1;
-		DWORD    bTzEvent:1;
-		DWORD    bQDWave:1; // 幅值启动时,启动录波标志
-		DWORD    bGZBS:1; // 大电流闭锁重合
-	}bFlag;
-}UOCFLAG;
-
-/*------------------------------ 变量声明 -------------------------------------
-*/
-
-enum
-{
-	OC_GL1=0, 	// 过流1段
-	OC_GL2,		// 过流2段
-	OC_GL3,		// 过流3段
-	OC_DL,		// 短路故障
-	OC_LX1,		// 零序1段
-	OC_LX2,		// 零序2段
-	OC_LX3,		// 零序3段
-	OC_LL,		// 零流告警
-	OC_GLJS,	// 过流加速段
-	OC_LXJS,	// 零序加速段
-	OC_LYJS,	// 零压加速段
-	OC_GLBS,	// 过流闭锁段
-	OC_OVLOAD,	// 重载
-	OC_DLGZ,	// 过载
-	OC_DLYX,	// 越限
-	OC_NUMBER
-};
-
-typedef struct  TOC_T
-{
-	UOCFLAG        sta;			// 动作标志字
-	TIMERELAY	tFz25ms;  		// 幅值启动25ms
-	TIMERELAY 	tQDTime; 		// 时间继电器
-	TIMERELAY 	tDefer25_100ms; // 启动25ms,防干扰时间继电器,用于速断和零序加速,防止误出口
-	TIMERELAY 	tTzsbTime; 		// 跳闸失败
-	TIMERELAY 	tTzhold3s; 		// 跳闸信号保持时间
-	TIMERELAY	tGjEvRstTime;  	// 故障遥信保持时间
-	TIMERELAY	tTzEvRstTime;  	// 告警遥信保持时间
-	TIMERELAY 	tCYLTime; 		// 电流越下线 判断曾有流时间继电器
-
-}TOC_T;
-
-#if 1 //#if(EN_REC_MORE_WAVES==1)
-extern u16 g_record_GL_waves[];
-extern u16 g_record_LX_waves[];
-#endif
-
-/*------------------------------ 函数声明 -------------------------------------
-*/
-
-void Pro_OC(u32  dStep,int oc,int soe_no);
-void Pro_OC_SG(u32  dStep,int oc,int soe_no);
-void Pro_LX(u32  dStep,int oc,int soe_no);
-void Pro_LX_SG(u32  dStep,int oc,int soe_no);
-void Pro_Accheck(u32  dStep,int oc,int soe_no);
-void Pro_Accheck_SG(u32  dStep,int oc,int soe_no);
-void Pro_BSTZ(u32  dStep,int oc,int soe_no);
-void Pro_over_i(u32  dStep,int oc,int soe_no);
-void Pro_TFD(u32  dStep, int sw);	// 停复电巡检
-
-void Record_KGBW(u32  dStep, int sw);	// 开关变位启动录波
-void MultFz_BSHZ(u32  dStep, int sw);	// 多次分闸闭锁合闸巡检
-// void Inspection_KHDX(u32  dStep, int sw);	// 控回断线巡检
-void XBCalc(int sw);
-void Pro_CT_DX(u32  dStep, int sw);								// CT断线巡检
-int gl_soe_set_clr(u8 set_clr, int sw, u16 soe_no, u32 i_set,bool bfault);
-#else
-
 typedef union UOCFLAG
 {
 	DWORD  wfFlag;
@@ -236,7 +148,7 @@ bool CalDir_C(int sw,bool bQD,bool bInv);
 extern void xb_bs_soe(int sw,u32  dStep);
 
 #endif //_OC_H
-#endif //GW_AREA_MAIN_2021
+
 /*------------------------------ 文件结束 -------------------------------------
 */
 

+ 22 - 235
dtu/dtu_main_t536/app/protect.c

@@ -28,8 +28,6 @@ u16	wIQdCnt[SWITCH_NUM_MAX][SW_I_NUM];			// 突
 
 static DWORD dTAfterFault=0;
 
-u32 g_protect_restore;							// 手动遥控复归保护整组
-
 /*------------------------------ 函数声明 -------------------------------------
 */
 static int _protect_amp_qd(u32  dStep);
@@ -369,13 +367,10 @@ int protect_polling(void)
 	{
 		Pro_vol(dTDelta);		// 电压告警逻辑
 	#ifdef	XDL_ZT //小电流接地
-		// TODO 待适配  EWen
-		// xdl_protect(dTDelta);	// 小电流接地保护
+		xdl_protect(dTDelta);	// 小电流接地保护
 	#endif
 		PT_Check(dTDelta);	
-	#ifndef GW_AREA_MAIN_2021
 		FDL_Check(dTDelta);	
-	#endif
 #ifdef FUN_HCBS
 		hcbs_dataset();
 #endif
@@ -388,22 +383,14 @@ int protect_polling(void)
 
 		TRELAY_T *pR=&g_tRelay[g_protect.sw];	
 		_protect_rmt_sw(dTDelta);		// 遥控器,其手分或手合标志在其他保护逻辑中有使用,故放在最开始
-	#ifndef GW_AREA_MAIN_2021
-		XBCalc_goc(g_protect.sw);               // goose 谐波计算:处理标志:谐波闭锁动作		 //TODO 后续用到再开放
-	#endif
+		XBCalc_goc(g_protect.sw);               // goose 谐波计算:处理标志:谐波闭锁动作		
 		// 电流轮巡类
 		#ifdef DISP_SET_DLYX
 		Pro_over_i(g_protect.sw,dTDelta,BH_OVI_ZZ,EV_DLZZ);	// 电流重载
 		Pro_over_i(g_protect.sw,dTDelta,BH_OVI_GZ,EV_DLGZ);		// 电流过载
 		#endif
-		#ifndef GW_AREA_MAIN_2021
-		Pro_over_i(g_protect.sw,dTDelta,BH_OVI,EV_DLYX);		// 电流越限    	
+		Pro_over_i(g_protect.sw,dTDelta,BH_OVI,EV_DLYX);		// 电流越限
 		Pro_over_i0(g_protect.sw,dTDelta,BH_OVI0,EV_I0YX);		// 零序电流越限
-		#endif
-
-		Pro_over_i(dTDelta,OC_OVLOAD,EV_IAOV);	// 电流重载
-		Pro_over_i(dTDelta,OC_DLGZ,EV_DLGZ);		// 电流过载
-		Pro_over_i(dTDelta,OC_DLYX,EV_DLYX);		// 电流越限
 
 	#ifdef FUN_JDXX
 		jdxx_pro(g_protect.sw,dTDelta);
@@ -415,24 +402,15 @@ int protect_polling(void)
 		Pro_TQHz(g_protect.sw,dTDelta);				// 合环
 		Pro_TQBS(g_protect.sw,dTDelta);				//	手动闭锁
 		Pro_3U0(g_protect.sw,dTDelta);
-	#ifndef GW_AREA_MAIN_2021
 		vol_DYJL(g_protect.sw,dTDelta);	
 		vol_PLJL(g_protect.sw,dTDelta);	
 		fag_bh(g_protect.sw,dTDelta);
 		Pro_hzbs(g_protect.sw,dTDelta);
-	#endif
-		Pro_PTDxTz(g_protect.sw,dTDelta);
 		// 其他轮巡类
-	#ifdef GW_AREA_MAIN_2021
-		AutoReclose(dTDelta);			// 重合闸保护逻辑
-	#else
 		AutoReclose(g_protect.sw,dTDelta);			// 重合闸保护逻辑	
-	#endif
 
 		// 分段、联络就地馈线自动化逻辑,完成独立存在,不需要进入故障处理过程
-	#ifndef GW_AREA_MAIN_2021
 		FA_Run(dTDelta);		
-	#endif
 #ifdef	CUSTOMIZE_BZT //备自投
 		bzt_process(g_protect.sw,dTDelta);
 #endif	
@@ -492,37 +470,8 @@ int protect_polling(void)
 		yc_refresh_en(g_protect.sw);
 	#endif
 
-	#ifdef GW_AREA_MAIN_2021
-		Pro_OC_SG(dTDelta,OC_GL1,EV_GL1TZ);
-		Pro_OC_SG(dTDelta,OC_GL2,EV_GL2TZ);
-		Pro_OC_SG(dTDelta,OC_GL3,EV_GL3TZ);
-		Pro_OC_SG(dTDelta,OC_DL,EV_DL_TZ);
-		Pro_LX_SG(dTDelta,OC_LX1,EV_LX1TZ);
-		Pro_LX_SG(dTDelta,OC_LX2,EV_LX2TZ);
-		Pro_LX_SG(dTDelta,OC_LX3,EV_LX3TZ);
-		Pro_LX_SG(dTDelta,OC_LL,EV_LLTZ);
-		Pro_Accheck_SG(dTDelta,OC_GLJS,EV_GLJS);
-		Pro_Accheck_SG(dTDelta,OC_LXJS,EV_LXJS);
-		Pro_Accheck_SG(dTDelta,OC_LYJS,EV_U0JS);
-	#endif
-
 		_protect_alarm();						// 异常告警类逻辑
 		_protect_sfsh_clr();					// 清除手分、手合标志
-	#ifdef GW_AREA_MAIN_2021
-		// Inspection_KHDX(dTDelta, g_protect.sw); // 控回断线检测//TODO 待增加 EWen
-
-		// 多次分闸闭锁合闸巡检
-		MultFz_BSHZ(dTDelta, g_protect.sw);	
-
-		// 停复电巡检类	(优先级较低)
-		Pro_TFD(dTDelta, g_protect.sw);	
-		
-		// 突变录波
-		// mutation_wave_record(RECORD_TYPE_LLTB, g_protect.sw);//TODO 待增加 EWen
-		// mutation_wave_record(RECORD_TYPE_LYTB, g_protect.sw);//TODO 待增加 EWen
-		// 开关变位巡检类	(优先级最低)
-		Record_KGBW(dTDelta, g_protect.sw);	
-	#endif
 	}
 	
 	// 保护巡检完毕,检查事故总
@@ -799,57 +748,6 @@ static int _protect_amp_qd(u32  dStep)
 
 	bQD = 0;
 	//过流类启动
-#ifdef GW_AREA_MAIN_2021
-	for(i=OC_GL1;i<=OC_LYJS;i++)
-	{
-
-		TOC_T *pSW = &g_tRelay[sw].tOC[i];
-		OC_SET *pSet = &pRunSet->tSwSet[sw].tOcSet[i];
-		bool bY1=false;
- 		// 幅值启动 		
-		if (BH_ALL_EN(sw) && (pSet->bTT_Tz || pSet->bTT_Gj))
-		{
-			if(i==OC_LX1||i==OC_LX2||i==OC_LX3||i==OC_LL||i==OC_LXJS)
-			{
-				bY1 = OverRelay(g_ui[UI_SW_INDEX(sw,SW_AC_I0)].m2[0], pSet->dIgl, pSet->dIgl, false); 
-			}
-			else if(i==OC_LYJS)		// 零压启动幅值加速
-			{
-				if (pSet->dIgl < pRunSet->dOverU0)
-				{
-					// pSet->dIgl = pRunSet->dOverU0;
-					if(pRunSet->tSwSet[sw].bTT_Power_v2)
-					{
-						bY1 = OverRelay(g_ui[PUB_AC_U02].m2[0],pRunSet->dOverU0, pRunSet->dOverU0, false);
-					}
-					else
-					{
-						bY1 = OverRelay(g_ui[PUB_AC_U01].m2[0],pRunSet->dOverU0, pRunSet->dOverU0, false);
-					}
-				}
-				else
-				{
-					if(pRunSet->tSwSet[sw].bTT_Power_v2)
-					{
-						bY1 = OverRelay(g_ui[PUB_AC_U02].m2[0],pSet->dIgl, pSet->dIgl, false);
-					}
-					else
-					{
-						bY1 = OverRelay(g_ui[PUB_AC_U01].m2[0],pSet->dIgl, pSet->dIgl, false);
-					}
-				}
-			}
-			else
-			{
-				bY1 = OverRelay(g_sw[sw].m2_max, pSet->dIgl, pSet->dIgl, false); 
-			}
-		}
-		//幅值启动25ms延时
-		RunTR(&pSW->tFz25ms, bY1,  dStep);
-		bQD|=bY1;
-		bFZQD|=pSW->tFz25ms.boolTrip;		
-	}
-#else
 	for(i=BH_GL1;i<=FA_DLBS;i++)  
 	{
 		TOC_T *pSW = &g_tRelay[sw].tOC[i];
@@ -924,7 +822,6 @@ static int _protect_amp_qd(u32  dStep)
 #endif
 		
 	}	
-#endif
 	if (bQD)
 	{
 		if (!pR->fzqd)
@@ -957,12 +854,12 @@ static int _protect_amp_qd(u32  dStep)
 			||pR->tgoc.sta.bFlag.berrQD
 			||pR->tgoc.sta.bFlag.bextQD
 			||pR->tgoc.sta.bFlag.bllQD;
-#ifndef GW_AREA_MAIN_2021
+			
 		for(i=0;i<8;i++)
 		{
 			bY1|=pR->tFdl[i].sta.bFlag.bTz;
 		}	
-#endif
+
 #ifdef GD_AREA_ZHONGSHAN_2020
 		bY1|=pR->tgoc.tOc[FAG_GL1].sta.bFlag.bQD  // 启动
 			||pR->tgoc.tOc[FAG_GL2].sta.bFlag.bQD
@@ -975,11 +872,9 @@ static int _protect_amp_qd(u32  dStep)
 								|| pR->tXXTZ.uZOV.bFlag.bQD			// 选线跳闸
 								|| pR->tLostVot.uLostVot.bFlag.bQD	// 失压分闸
 								|| pR->tOVER_U0TZ.uZOV.bFlag.bTz   //过零序电压跳闸
-							#ifndef GW_AREA_MAIN_2021
 								|| pR->tOC[FA_GL].sta.bFlag.bQD
 								|| pR->tOC[FA_GL_II].sta.bFlag.bQD
-								|| pR->tOC[FA_LX].sta.bFlag.bQD		//零序电流启动	
-							#endif	
+								|| pR->tOC[FA_LX].sta.bFlag.bQD		//零序电流启动		
 							#ifdef FUN_JDXX
 								|| pR->tJD.sta.bFlag.bTz			// 接地选线跳
 							#endif
@@ -1061,58 +956,6 @@ static int _protect_gzcl_init(void)
 	}   	
    
 	// 初始化标志字与时间继电器
-#ifdef GW_AREA_MAIN_2021
-	for(oc=0;oc<OC_GLBS;oc++)
-	{
-
-		TOC_T *poc = &g_tRelay[sw].tOC[oc];
-		OC_SET *pSet = &pRunSet->tSwSet[sw].tOcSet[oc];
-
-		poc->sta.wfFlag=0;
-
-		InitTR(&poc->tQDTime,    pSet->dTgl,  PRO_RET_TIME); 
-
-		
- 		if(oc==OC_LXJS) // 零序加速
- 		{
-	   		InitTR(&poc->tDefer25_100ms, T_100ms, 0);
-
-		}
-		else if (oc==OC_LYJS) // 零压加速
-		{
-			InitTR(&poc->tDefer25_100ms, T_100ms, 0);
-		}
-		else if (oc==OC_GLJS)
-		{
-	   		InitTR(&poc->tDefer25_100ms, T_10ms*3, 0);
-
-		}
-		else
-		{
-	   		InitTR(&poc->tDefer25_100ms, T_25ms, 0);
-
-		}
-
-	    // 突变量启动时预置定时器,因为突变量启动会死等35个采样点的延时,但实际置的延时只是20ms附近,没有过于精准
-		if(pR->uBHQD.bFlag.bTBQD)
-		{
-			PreSetTime(&poc->tQDTime, T_20ms);  
-			PreSetTime(&poc->tDefer25_100ms, T_20ms);  
-		}
-
-		// if(pRunSet->dT_ZZFG>tRunPara.dTEventRst)
-		{
-			InitTR_Time(&pR->tTZZFG_5S0ms,  pRunSet->dT_ZZFG, 0);     	//无故障延时5s		整组复归
-			InitTR_Time(&pR->tTTFDFG_5S0ms,  pRunSet->dT_ZZFG, 0);
-		}
-		// else
-		// {
-		// 	InitTR_Time(&pR->tTZZFG_5S0ms,  tRunPara.dTEventRst, 0);     	//无故障延时5s		故障遥信复归
-		// 	InitTR_Time(&pR->tTTFDFG_5S0ms,  tRunPara.dTEventRst, 0);
-		// }
-	
-	}
-#else
 	for(oc=0;oc<=FA_DLBS;oc++)
 	{
 
@@ -1154,7 +997,7 @@ static int _protect_gzcl_init(void)
 		InitTR_Time(&pR->tTZZFG_5S0ms,  pRunSet->dT_ZZFG, 0);     	//无故障延时5s
 	#endif
 	}
-#endif
+
 	// 取得故障启动时刻,以便故障处理流程中,第一次计算的时间片是从故障启动时刻开始
 	pR->t_rcd_gz = pR->t_rcd_qd;
 
@@ -1241,21 +1084,6 @@ static int _protect_gzcl_process(void)
 	// 保护逻辑
 	if(pR->uBHQD.bFlag.bQD25ms)
 	{    
-#ifdef GW_AREA_MAIN_2021
-		XBCalc(g_protect.sw);  		// 谐波计算:处理标志:谐波闭锁动作
-		Pro_BSTZ(dTGZDelta,OC_GLBS,EV_BSTZ);
-		Pro_OC(dTGZDelta,OC_GL1,EV_GL1TZ);
-		Pro_OC(dTGZDelta,OC_GL2,EV_GL2TZ);
-		Pro_OC(dTGZDelta,OC_GL3,EV_GL3TZ);
-		Pro_OC(dTGZDelta,OC_DL,EV_DL_TZ);
-		Pro_LX(dTGZDelta,OC_LX1,EV_LX1TZ);
-		Pro_LX(dTGZDelta,OC_LX2,EV_LX2TZ);
-		Pro_LX(dTGZDelta,OC_LX3,EV_LX3TZ);
-		Pro_LX(dTGZDelta,OC_LL,EV_LLTZ);
-		Pro_Accheck(dTGZDelta,OC_GLJS,EV_GLJS);
-		Pro_Accheck(dTGZDelta,OC_LXJS,EV_LXJS);
-		Pro_Accheck(dTGZDelta,OC_LYJS,EV_U0JS);
-#else 
 	#ifdef BH_BSDL_ENBLE
 		Pro_BSTZ(sw,dTGZDelta,BH_DLBS,EV_BSTZ);
 	#endif
@@ -1274,7 +1102,6 @@ static int _protect_gzcl_process(void)
 		fag_oc_gl(sw,dTGZDelta);
 		fag_oc_lx(sw,dTGZDelta);
 		fsxGL(sw,dTGZDelta);   					//反时限过流
-#endif
 	}
 
 	// 保护跳合闸处理
@@ -1320,20 +1147,17 @@ static int _protect_zzfg_check(u32 dStep)
 	TRELAY_T *pR=&g_tRelay[sw];	
 	bool bY1=false;
 	int i;
-#ifdef GW_AREA_MAIN_2021
-	for(i=0;i<=OC_GLBS;i++)
-#else
+
 	for(i=0;i<=FA_DLBS;i++)
-#endif
 	{
 		bY1|=(pR->tOC[i].sta.bFlag.bQD||pR->tOC[i].sta.bFlag.bXBbs|| pR->tOC[i].sta.bFlag.bTz||pR->tOC[i].sta.bFlag.bGj);
 	}
-#ifndef GW_AREA_MAIN_2021
+
 	for(i=0;i<8;i++)
 	{
 		bY1|=pR->tFdl[i].sta.bFlag.bTz;
 	}	
-#endif
+
 #ifdef GD_AREA_ZHONGSHAN_2020
 	bY1|=pR->tgoc.tOc[FAG_GL1].sta.bFlag.bQD  // 复归
 		||pR->tgoc.tOc[FAG_GL2].sta.bFlag.bQD
@@ -1400,19 +1224,7 @@ static int _protect_zzfg(void)
 	TRELAY_T *pR=&g_tRelay[sw];	
 	int oc;
 
-#ifdef GW_AREA_MAIN_2021
-	for(oc=0;oc<=OC_GLBS;oc++)
-	{
-		TOC_T 	*poc=&pR->tOC[oc];// 过流保护相关
-		
-		poc->sta.wfFlag=0;
-	   	ResetTR(&poc->tQDTime);					
-	   	ResetTR(&poc->tDefer25_100ms);					
-	   	ResetTR(&poc->tTzsbTime);					
-	   	// ResetTR(&poc->tGjEvRstTime);					
-	   	// ResetTR(&poc->tTzEvRstTime);	
-	}
-#else
+
 	for(oc=0;oc<=FA_DLBS;oc++)
 	{
 		TOC_T 	*poc=&pR->tOC[oc];// 过流保护相关
@@ -1426,15 +1238,11 @@ static int _protect_zzfg(void)
 	   	ResetTR(&poc->tTzEvRstTime);
 	#endif
 	}
-#endif
-
 	 ResetTR(&pR->tgoc.tglFz25ms);	
 	 ResetTR(&pR->tgoc.tlxFz25ms);		
 	// 重合闸标志复归,定时器复归
-	pR->tCHZ.sta.wfFlag=0;
-	pR->tCHZ.wAR_ActTimes=0;	
-   	ResetTR(&pR->tCHZ.tTCHJD_HJS);
-#ifndef GW_AREA_MAIN_2021
+
+
 	if(soe_check(EV_GOOSE_QC_QD+sw*EV_SW_NUM)==true)   // 故障隔离启动
 	{				
 		soe_record_ev( EV_GOOSE_QC_QD+sw*EV_SW_NUM,0, 0,0,0 ); 
@@ -1471,7 +1279,7 @@ static int _protect_zzfg(void)
 	{				
 		soe_record_ev( EV_GOOSE_HZ_FAIL+sw*EV_SW_NUM,0, 0,0,0 ); 
 	}	
-#endif
+
 	//if(soe_check(EV_GOOSE_LL_UNOK+sw*EV_SW_NUM)==true)  // 自转电条件不满足返回
 	//{				
 	//	soe_record_ev( EV_GOOSE_LL_UNOK+sw*EV_SW_NUM,1, 0,0,0 ); 
@@ -1488,7 +1296,7 @@ static int _protect_zzfg(void)
 
 	// 合环标志复归,定时器复归
    	pR->tTQHz.uTQHz.wfFlag = 0;
-	ResetTR(&pR->tTQHz.tBSTQTime);
+
 	// 跳闸失败标志复归,定时器复归
    	ResetTR(&pR->tTripfail_2s);
 	pR->uBHDZ.bFlag.bTZSB = 0;
@@ -1559,31 +1367,23 @@ static int _protect_sw_tz(u32 dStep)
 	}
 
 	// 保护动作跳闸情况检测
-#ifdef GW_AREA_MAIN_2021
-	for(i=OC_GL1;i<OC_GLBS;i++)
-	{
-		bTz|=pR->tOC[i].sta.bFlag.bTz;
-	}
-#else
 	for(i=BH_GL1;i<=FA_LX;i++)
 	{
 		bTz|=pR->tOC[i].sta.bFlag.bTz;
 	}
-#endif
+
 #ifdef GD_AREA_ZHONGSHAN_2020
 	for(i=FAG_GL1;i<=FAG_LX;i++)
 	{
 		bTz|=pR->tgoc.tOc[i].sta.bFlag.bTz;  //跳闸
 	}
 #endif	
-#ifndef GW_AREA_MAIN_2021
 	for(i=0;i<8;i++)
 	{
 		bTz|=pR->tFdl[i].sta.bFlag.bTz;
 		if(pR->tFdl[i].sta.bFlag.bTz)
 			pR->tCHZ.sta.bFlag.bCDWC = false;	//重合闸放电
 	}	
-#endif
 	bTz|=pR->uGLFSX.bFlag.bFXDZ;
 	bTz|= (pR->tU0TZ.uZOV.bFlag.bTz		// 合后接地保护动作
 			||pR->tDYJL.sta.bFlag.bTz
@@ -1900,10 +1700,8 @@ void sw_op_fail(DWORD     dStep)
 		if(pSW->uSdhz_L.bFlag.bX_HZEvent)
 		{
 		#ifndef GD_AREA_ZHONGSHAN_2020 //中山2020不报分布式恢复失败SOE
-			#ifndef GW_AREA_MAIN_2021
 			if(soe_check(EV_GOOSE_HZ_FAIL+sw*EV_SW_NUM)==false)
-				soe_record_ev(EV_GOOSE_HZ_FAIL+sw*EV_SW_NUM, 1, 0,0,0 );
-			#endif	
+				soe_record_ev(EV_GOOSE_HZ_FAIL+sw*EV_SW_NUM, 1, 0,0,0 );	
 		#endif	
 		}
 		pSW->uSdhz_L.bFlag.bX_HZEvent = false;
@@ -1948,10 +1746,9 @@ void sw_op_fail(DWORD     dStep)
 			soe_record_ev(EV_HZFAIL+sw*EV_SW_NUM, 0, 0,0,0 );
 		if(soe_check(EV_SWFAIL+sw*EV_SW_NUM)==true)
 			soe_record_ev(EV_SWFAIL+sw*EV_SW_NUM, 0, 0,0,0 );
-	#ifndef GW_AREA_MAIN_2021
 		if(soe_check(EV_GOOSE_HZ_FAIL+sw*EV_SW_NUM)==true)			
 			soe_record_ev( EV_GOOSE_HZ_FAIL+sw*EV_SW_NUM,0, 0,0,0 ); 
-	#endif
+
 	#ifdef FUNC_DRIVE
 		if(soe_check(EV_DRIVE_HZ_FAIL+sw*EV_SW_NUM)==true)
 		{
@@ -2142,7 +1939,7 @@ static int _protect_alarm(void)
 
 	}
 
-#ifndef GW_AREA_MAIN_2021
+
 	if (pSW->uSWST.bFlag.bKZHL)
 	{
 		if(soe_check(EV_KZHL+sw*EV_SW_NUM)==false)
@@ -2157,7 +1954,7 @@ static int _protect_alarm(void)
 			soe_record_ev(EV_KZHL+sw*EV_SW_NUM, 0, 0,0,0 );
 		}
 	}		
-#endif
+
 
 	// 跳位有流告警
 	if (pSW->uSWST.bFlag.bTWYL && KZ_OUT_ALL_EN(sw))
@@ -2218,13 +2015,9 @@ static int _protect_rmt_sw(u32 dStep)
 	RunTR(&pR->tMb_yuk_time, g_run_stu.mb_yuk, dStep);//预置按键取消
 	if(pR->tMb_yuk_time.boolTrip)
 		g_run_stu.mb_yuk=0;
-	#ifndef GW_AREA_MAIN_2021
+
 	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))) //有手合信号
-	#else
-	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))
-	#endif
 	{
 		#ifdef TQ_SOFT_YB
 		if(pRunSet->tSwSet[sw].bTT_TQ && pRunstu->bTQ && pRunstu->safe_auto && !pRunstu->tytq &&pRunSet->bTT_TQ_YB )
@@ -2384,12 +2177,6 @@ static bool _protect_check_fault(int sw)
 	int i;
 	TRELAY_T *pR=&g_tRelay[sw];
 	bool bY1=false;
-#ifdef GW_AREA_MAIN_2021
-	for(i=0;i<=OC_GLBS;i++)
-	{
-		bY1|=(pR->tOC[i].sta.bFlag.bTz||pR->tOC[i].sta.bFlag.bGj);
-	}
-#else
 	for(i=BH_GL1;i<=FA_LX;i++)
 	{
 		bY1|=(pR->tOC[i].sta.bFlag.bTz||pR->tOC[i].sta.bFlag.bGj);
@@ -2398,7 +2185,7 @@ static bool _protect_check_fault(int sw)
 	{
 		bY1|=pR->tFdl[i].sta.bFlag.bTz;
 	}	
-#endif
+
 	bY1|=pR->tgoc.sta.bFlag.bglTz
 	#if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_MAIN_2020
 		||pR->tgoc.sta.bFlag.bgl2Tz

+ 3 - 149
dtu/dtu_main_t536/app/protect.h

@@ -15,26 +15,6 @@
 
 /*------------------------------- 宏定义 --------------------------------------
 */
-
-#ifdef GW_AREA_MAIN_2021
-
-// 保护总投退
-#define 	BH_ALL_EN(sw)		(pRunSet->tSwSet[sw].bTT_BH&&pRunSet->bTT_PUB_BH&&g_tRelay[sw].run_stu.bhtt)
-
-//重合闸压板
-#define     CHZ_ALL_EN(sw)  	(0)
-#define 	FUN_ALL_EN(sw)		(0)	
-//同期压板
-#define 	TQ_ALL_EN(sw)   	(0)
-
-#define 	KZ_OUT_ALL_EN(sw) 	(1)
-
-#define 	FA_ALL_EN(sw)		(0)
-
-#define 	BH_GOOSE_EN(sw)		(0)
-
-#else
-
 //控制出口总压板
 #ifdef JZS_FUNCTION
 	#define JZS_ALL_EN(sw)     (g_tRelay[sw].run_stu.jzs_tt && pRunSet->bTT_SOFT_JZS_YB)
@@ -169,7 +149,6 @@
 	#endif
 #endif
 
-#endif
 //定值时间判断
 #define 	BH_WAVETIME_EN(dSetTime)	((dSetTime>=(T_10ms*10))?1:0)
 
@@ -292,99 +271,9 @@ typedef struct URMTSW
 #endif
 }URMTSW;  
 
-// 过流故障信号量
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union UOCSG
-{
-    struct
-    {   
-		WORD    OC_GJ:1;    	
-		WORD    OC_TZ:1;    	
-		WORD    OC_GJ_EVENT:1;    	
-		WORD    OC_TZ_EVENT:1;    	
-    }bFlag;
-}UOCSG;
 
-// 零序故障信号量
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union ULXSG
-{
-    struct
-    {   
-		WORD    LX_GJ:1;    	
-		WORD    LX_TZ:1;    	
-		WORD    LX_GJ_EVENT:1;    	
-		WORD    LX_TZ_EVENT:1;    	
-    }bFlag;
-}ULXSG;
 
-// 加速故障信号量
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union UACSG
-{
-    struct
-    {   
-		WORD    AC_GJ:1;    	
-		WORD    AC_TZ:1;    	
-		WORD    AC_GJ_EVENT:1;    	
-		WORD    AC_TZ_EVENT:1;    	
-    }bFlag;
-}UACSG;
 
-// 停复电动作标志
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union UTFDDZ
-{
-    struct
-    {   
-		WORD    WL_CDWC:1;    	// 无流停复电充电标志
-		WORD    YL_CDWC:1;    	// 有流停复电充电标志
-		WORD    GZ_PowerCut:1;	// 故障停电标志
-		WORD    JH_PowerCut:1;  // 计划停电标志
-		WORD	RE_Power:1;		// 恢复供电标志
-		WORD	JY_Fault:1;		// 故障记忆标志
-		WORD	IS_Run:1;		// 正常运行标志
-    }bFlag;
-}UTFDDZ;
-
-// 多次分闸闭锁合闸
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union UFREFZ
-{
-    struct
-    {   
-		WORD    BS_HZ:1;    	// 闭锁合闸
-		WORD    JC_QD:1;    	// 检测启动
-		WORD    HW_JY:1;    	// 合位记忆
-		WORD    JS_QD:1;    	// 计时启动
-    }bFlag;
-}UFREFZ;
-
-// 控回断线信号量
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union UKHDX
-{
-    struct
-    {   
-		WORD    JCHZ_QD:1;    	
-		WORD    JCFZ_QD:1;    	
-		WORD    HZ_DX:1;    	
-		WORD    FZ_DX:1;    	
-		WORD    HZ_DX_EVENT:1;    	
-		WORD    FZ_DX_EVENT:1;    	
-    }bFlag;
-}UKHDX;
-
-// CT断线检测
-// 变量都是在一个WORD长度里变量按位(Bit)单元来分的
-typedef union UCTDX
-{
-    struct
-    {     	
-		WORD    bQD:1;    		// 
-		WORD    bGj:1;  		// 
-    }bFlag;
-}UCTDX;
 
 typedef struct TRELAY_T  // 开关逻辑结构体定义
 {
@@ -405,43 +294,9 @@ typedef struct TRELAY_T  // 
 	bool  bBSTZ;	// 闭锁跳闸
 
 	bool  bARSTFLT; //开关自动复归事故总202004
-#ifndef GW_AREA_MAIN_2021
-	TFDL_T tFdl[8];
+
+	TFDL_T tFdl[8];	
 	TOC_T 		tOC[BHOC_NUMBER];		// 过流保护相关
-#else
-	TOC_T 		tOC[OC_NUMBER];		// 过流保护相关
-
-	UOCSG		uOCSG[OC_NUMBER];	// 过流故障信号巡检
-	ULXSG		uLXSG[OC_NUMBER];	// 零序故障信号巡检
-	UACSG		uACSG[OC_NUMBER];	// 加速故障信号巡检
-
-	TVOL_T		tPTDX;				// PT断线
-
-	UTFDDZ		uTFDDZ;	// 停复电动作标志
-	TIMERELAY  	tFDU_Charge_30s;  		// 复电逻辑检压充电计时器	add by zhy
-	TIMERELAY  	tFDI_Charge_30s;  		// 复电逻辑检流充电计时器	add by zhy
-	TIMERELAY  	tCharge_30s;  			// 停电逻辑充电计时器		add by zhy
-	TIMERELAY  	tGZ_Powercut_30s;  		// 故障停电信号计时器	    add by zhy
-	TIMERELAY  	tJH_Powercut_30s;  		// 计划停电信号计时器	    add by zhy
-	TIMERELAY  	tFDU_Powerrestore_30s;  // 检压复电信号计时器	    add by zhy
-	TIMERELAY  	tFDI_Powerrestore_30s;  // 检流复电信号计时器	    add by zhy
-	TIMERELAY  	tTTFDFG_5S0ms; 			// 停复电信号复归计时器	    add by zhy
-
-	UFREFZ		uFREFZ;					// 多次分闸闭锁合闸
-	DWORD FRES_FZ;						// 多次分闸闭锁合闸分闸次数
-	u32 RUN_BSHZ;						// 多次分闸闭锁合闸闭锁状态
-	TIMERELAY  	tFRES_HZBS; 					// 多次分闸闭锁合闸计数器	    add by zhy
-
-	UKHDX		uKHDX;							// 控回断线检测
-	TIMERELAY  	tKHDX_HZ_5s; 					// 合闸控回断线检测计数器	    add by zhy
-	TIMERELAY  	tKHDX_FZ_5s; 					// 分闸控回断线检测计数器	    add by zhy
-	TIMERELAY  	tKHFG_HZ_5s; 					// 合闸控回断线复归计数器	    add by zhy
-	TIMERELAY  	tKHFG_FZ_5s; 					// 分闸控回断线复归计数器	    add by zhy
-
-	UCTDX		uCTDX;	// CT断线告警检测
-	TIMERELAY  	tCT_DX_5s; 					// CT断线延时计数器
-	TIMERELAY  	tTrip_BHT100MS;  		// 跳闸脉冲计时器,跳闸开出最短时间100MS
-#endif	
 	TCH_T 		tCHZ;				// 重合闸
 
 	UGLFSX	uGLFSX;										//过流反时限标志字
@@ -450,7 +305,6 @@ typedef struct TRELAY_T  // 
 #ifdef	CUSTOMIZE_BZT //备自投
 	TBZT_T		tBzt;
 #endif	
-
 	TLOSTVOT_T	tLostVot;   		//失压标志
 	TU0_T		tU0TZ;			//合后零压跳闸
 	TU0_T		tXXTZ;			//选线跳闸
@@ -500,7 +354,7 @@ extern TRELAY_T g_tRelay[];
 /*------------------------------ 变量声明 -------------------------------------
 */
 extern struct protect_stu g_protect;					// 保护整组处理过程	
-extern u32 g_protect_restore;							// 手动遥控复归保护整组
+
 /*------------------------------ 函数声明 -------------------------------------
 */
 int protect_init(void);

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

@@ -111,7 +111,7 @@ static int  pwrm_init_inf(pwdmodlue_def *pt)
 	pfile = rt_file_open("/app/data/pcolcfg.ini",O_RDONLY ,0);	/*打开文件*/
 	if(IS_ERR(pfile))
 	{
-		rt_printf("error! 无法打开 pcolcfg.ini\r\n");
+		dp_err_n_c_rt("error! 无法打开 pcolcfg.ini\r\n");
 		return -1;
 	}
 

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

@@ -16,624 +16,7 @@
 **************************************************************************/
 #define __RECLOSE_C
 #include  "head.h"
-
-#ifdef GW_AREA_MAIN_2021
-/**********************************************************************
-定义全局变量
-***********************************************************************/
-
-static bool g_print_charge_cdn = false;
-
-/*------------------------------ 函数声明 -------------------------------------
-*/
-static void AR_DataSet(void);
-static void AR_Recharge(DWORD  dStep);
-static void AR_Disable(void);
-static void AR_Start(DWORD  dStep);
-static void AR_Logic(DWORD  dStep);
-static void AR_Reset(DWORD  dStep);
-static int AR_Check(DWORD mode);			// 检同期		
-
-/**************************************************************************
-函数名称: AutoReclose
-函数版本:1.00 
-作者:    硬件部
-创建日期:2010.4.28    
-
-函数功能说明:重合闸功能块
-
-输入参数:
-输出参数:
-返回值: 
-***************************************************************************/
-void AutoReclose(DWORD  dStep)
-{
-	AR_DataSet();               	// 重合闸数据准备
-	AR_Recharge(dStep);             // 重合闸充电
-	AR_Disable();                   // 重合闸闭锁
-	AR_Start(dStep);                // 重合闸启动
-	AR_Logic(dStep);                // 重合闸逻辑
-	AR_Reset(dStep);                // 重合闸复归
-	return;
-}
-
-/**************************************************************************
-函数名称:AR_DataSet
-函数版本:1.00 
-函数版本:1.00 
-作者:    硬件部
-创建日期:2010.4.28    
-
-函数功能说明:重合闸数据准备
-
-输入参数:无
-
-输出参数:
-
-返回值: 无
-***************************************************************************/
-static void AR_DataSet(void)
-{
-	u16 wNo;
-	u32 sw = g_protect.sw;	
-	TRELAY_T *pR=&g_tRelay[sw];
-	TCH_T *pSW =&pR->tCHZ;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];
-
-	wNo=0;
-	if(pSW->wAR_ActTimes < MAX_AR_TIMES) // 根据重合次数,设置时间继电器
-	{
-		wNo = pSW->wAR_ActTimes;
-	}
-	InitTR_Time(&pSW->tTCHJD_ARDelay,	pSet->dTCH[wNo],		0   );         //重合闸延时
-	InitTR_Time(&pSW->tTCHFAIL_TW,		pSet->dTCH[wNo]+T_1s,	0   );         //重合闸延时
-}
-
-/**************************************************************************
-函数名称: AR_Disable
-函数版本:1.00 
-作者:    保护产品部 
-创建日期:2007.10.11    
-
-函数功能说明:重合闸闭锁判别,刷新"闭锁重合闸"标
-
-输入参数:
-输出参数:
-返回值: 
-***************************************************************************/
-static void AR_Disable(void)
-{
-	u32 sw = g_protect.sw;	
-	TRELAY_T *pR=&g_tRelay[sw];
-	TCH_T *pSW =& pR->tCHZ;
-
-	pSW->sta.bFlag.bBSCH = pR->tOC[OC_GL1].sta.bFlag.bBSCH		// 过流1闭锁重合闸
-						|| pR->tOC[OC_GL2].sta.bFlag.bBSCH 		// 过流2闭锁重合闸
-						|| pR->tOC[OC_GL3].sta.bFlag.bBSCH 		// 过流3闭锁重合闸
-						|| pR->tOC[OC_LX1].sta.bFlag.bBSCH 		// 零序1闭锁重合闸
-					    || pR->tOC[OC_LX2].sta.bFlag.bBSCH 		// 零序2闭锁重合闸
-						|| pR->tOC[OC_LX3].sta.bFlag.bBSCH 		// 零序3闭锁重合闸
-						|| pR->tOC[OC_GLJS].sta.bFlag.bBSCH 	// 过流加速闭锁重合闸
-						|| pR->tOC[OC_LXJS].sta.bFlag.bBSCH 	// 零序加速闭锁重合闸
-						|| pR->tOC[OC_LYJS].sta.bFlag.bBSCH 	// 零压加速闭锁重合闸
-			            || pR->tLostVot.uLostVot.bFlag.bTz		// 失压跳闸闭锁重合
-			            || pR->tXXTZ.uZOV.bFlag.bTz
-			            || pR->tU0TZ.uZOV.bFlag.bTz ;			// 零压分闸闭锁重合
-}	
-
-
-/**************************************************************************
-函数名称: AR_Recharge
-函数版本:1.00 
-函数版本:1.00 
-作者:    硬件部
-创建日期:2010.4.28    
-
-函数功能说明:重合闸充电,刷新"重合闸充电完成"标
-
-输入参数:
-输出参数:
-返回值: 
-***************************************************************************/
-static void AR_Recharge(DWORD  dStep)
-{                                                                      
-	u32 sw = g_protect.sw;	
-	TRELAY_T *pR=&g_tRelay[sw];
-	TCH_T *pSW =&pR->tCHZ;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];	
-	bool bHCD1,bHCD2,bHCD3,bHCD4;
-
-	// 放电条件
-	RunTR(&pSW->tTCHFAIL_TW, pR->tSWST.uSWST.bFlag.bTZWZ, dStep);    	// 三相跳位延时
-	bHCD1 = pSW->tTCHFAIL_TW.boolTrip;					// 放电标志1:三相跳位时间到
-
-	bHCD2 =  (pR->tSWST.uSWST.bFlag.bTZWZ || pR->uBHDZ.bFlag.bBHT) //此处保护跳标志,是有100ms保持的信号   
-							&& (!pSW->sta.bFlag.bCDWC);               // 放电标志2:充电未完成,跳位或保护动作
-	
-	bHCD3 = pR->uRmtSW.bHandTz							// 手动跳闸
-							|| pR->uRmtSW.bYTExecute                   	// 遥控跳闸
-							|| pR->uBHDZ.bFlag.bTZSB					// 跳闸失败
-							|| pR->tSWST.uSWST.bFlag.bTWYL				// 跳位有流
-							|| pR->tSWST.uSWST.bFlag.bWCN               // 弹簧未储能告警							
-							|| pSW->sta.bFlag.bBSCH					// 重合闸闭锁条件
-							|| pSW->sta.bFlag.bCHFD;                  // 重合闸动作放电
-	
-	pSW->sta.bFlag.bFDBZ = (!BH_ALL_EN(sw))							// 总保护未投入
-							|| (!pSet->bTT_CHZ)                         // 软压板: 重合闸未投入
-							|| (!pR->run_stu.chz)							// 重合闸硬压板未投入
-							|| bHCD1 
-							|| bHCD2
-							|| bHCD3;
-						
-	// 充电条件
-	bHCD4 = !pSW->sta.bFlag.bFDBZ                             // 重合放电标
-			&& (((!pR->uBHQD.bFlag.bZQD) && pR->tSWST.uSWST.bFlag.bHZWZ )    // 非保护启动 && 合闸位置
-			|| pSW->sta.bFlag.bCDWC);                          // 充电完成自保持
-
-	RunTR(&pSW->tTCHCD15s0s, bHCD4, dStep);                // 充电15秒
-	pSW->sta.bFlag.bCDWC = pSW->tTCHCD15s0s.boolTrip;
-
-	if(pSW->sta.bFlag.bCDWC)
-	{
-	#if 1
-		if(soe_check(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM)==false)
-		{
-			soe_record_ev(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM, 1, 0,0,0);
-		}
-	#else
-		//TODO 充电标志显示 EWen
-		if((g_disp_flag.chz_cd & (1<<sw)) == 0)
-		{
-			g_disp_flag.chz_cd |= 1<<sw;
-			rt_printf_time("开关%02d充电完成!\r\n",sw+1);
-
-			if(soe_check(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM)==false)
-			{
-				soe_record_ev(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM, 1, 0,0,0);
-			}
-		}
-	#endif
-	}
-	else
-	{
-	#if 1
-		if(soe_check(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM)==true)
-		{
-			soe_record_ev(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM, 0, 0,0,0);
-		}
-	#else
-		if((g_disp_flag.chz_cd & (1<<sw)))
-		{
-			g_disp_flag.chz_cd &= ~(1<<sw);
-			rt_printf_time("开关%02d放电完成!\r\n",sw+1);
-
-			if(soe_check(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM)==true)
-			{
-				soe_record_ev(EV_SW_AR_CHARGE_DONE+sw*EV_SW_NUM, 0, 0,0,0);
-			}
-		}
-	#endif
-	}
-
-	{
-		//打印充电条件
-		if(g_print_charge_cdn)
-		{
-			if(sw == g_sw_num - 1) g_print_charge_cdn = false;
-
-			rt_printf("开关%d充电启动条件:bHCD1=%d,bHCD2=%d,bHCD3=%d,bHCD4=%d\r\n",sw+1,bHCD1,bHCD2,bHCD3,bHCD4);
-			if(bHCD2) 
-			{
-				rt_printf("sw%d bTZWZ=%d,bBHT=%d\r\n",sw+1,pR->tSWST.uSWST.bFlag.bTZWZ,pR->uBHDZ.bFlag.bBHT);
-			}
-			if(bHCD3) 
-			{
-				rt_printf("sw%d bHandTz=%d,bYTExecute=%d,bTZSB=%d,bTWYL=%d,bWCN=%d,bBSCH=%d,bCHFD=%d",\
-								sw+1,pR->uRmtSW.bHandTz,pR->uRmtSW.bYTExecute,pR->uBHDZ.bFlag.bTZSB,\
-								pR->tSWST.uSWST.bFlag.bTWYL,pR->tSWST.uSWST.bFlag.bWCN,pSW->sta.bFlag.bBSCH,pSW->sta.bFlag.bCHFD);
-			}
-			
-			rt_printf("sw%d bFDBZ=%d,bZQD=%d,bHZWZ=%d\r\n",sw+1,pSW->sta.bFlag.bFDBZ,pR->uBHQD.bFlag.bZQD,pR->tSWST.uSWST.bFlag.bHZWZ);
-
-			if(pSW->sta.bFlag.bFDBZ) rt_printf("sw%d BH_ALL_EN=%d,bTT_CHZ=%d,stu.chz=%d\r\n",sw+1,BH_ALL_EN(sw),pSet->bTT_CHZ,pR->run_stu.chz);
-
-		}
-	}
-}
-
-/**************************************************************************
-函数名称: AR_Start
-函数版本:1.00 
-函数版本:1.00 
-作者:    硬件部
-创建日期:2010.4.28    
-
-函数功能说明:重合闸启动,刷新"三相偷跳启动重合闸"和"三跳启动重合闸"标
-
-输入参数:
-输出参数:
-返回值:
-***************************************************************************/
-static void AR_Start(DWORD  dStep)
-{
-	bool bCHQD_CHQD;    // 三相启动重合闸
-	u32 sw = g_protect.sw;	
-	TRELAY_T *pR=&g_tRelay[sw];
-	TCH_T *pSW =&pR->tCHZ;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];
-	bool bCQD1,bCQD2,bCQD3,bCQD4,bCQD5,bCQD6;
-
-    // 不对应启动
-    // 开关位置从合闸位置切换至分闸位置完成后,保留50ms展宽
-	RunTR(&pSW->tTCHQDHW0ms50ms, pR->tSWST.uSWST.bFlag.bHZWZ, dStep); 
-	bCQD1 = pSW->tTCHQDHW0ms50ms.boolTrip;                              
-
-	// 偷跳条件准备                                                                    
-	bCQD2 =   pSet->bTT_TTCH
-			                   && bCQD1                                         
-			                   && (!pR->tSWST.uSWST.bFlag.bHZWZ);                                     
-
-	// 保护启动	                           
-	// 保护动作后至保护动作返回,保留50ms展宽
-	RunTR(&pSW->tTCHQD0ms50ms, pR->uBHDZ.bFlag.bBHT, dStep); 
-	bCQD3 = pSW->tTCHQD0ms50ms.boolTrip;                              
-
-	// 重合已启动或保护启动,用于闭锁不对应启动                                                                    
-	bCQD4 = pSW->sta.bFlag.bCHQD ||bCQD3;
-	                                                                   
-	// 此处保护跳信号,是实时信号,即保护已返回
-	bCQD5 = bCQD3 && (!pR->uBHDZ.bFlag.bBHTrip);      
-
-	// 重合启动自保持
-	// 重合闸出口条件,用于防止重合闸合闸过程中,TWJ没有返回时,再次误发启动重合闸报文。
-	bCQD6 = pSW->sta.bFlag.bCDWC             				  // 重合充电完成
-		                   && pSW->sta.bFlag.bCHQD            // 三相启动重合闸
-		                   && (!pSW->sta.bFlag.bCHCK);        // 重合闸出口,取反
-	                                                                   
-	// 偷跳启动重合闸                                                   
-	pSW->sta.bFlag.bTTQD =  pSW->sta.bFlag.bCDWC         	  // 重合闸充电完成
-		                   && bCQD2            				  // 偷跳判断完成                
-		                   && (!bCQD4);        				  // 重合未启动,无保护跳过程
-
-
-	// 三跳启动重合闸                                                  
-	pSW->sta.bFlag.bTLQD =  pSW->sta.bFlag.bCDWC              // 重合闸充电完成
-							&& bCQD5
-							// TODO bXDLCH 对接 EWen
-		                //    &&(bCQD5 || pR->tXDLCHZ.sta.bFlag.bXDLCH)            // 有保护跳过程,而且保护已经返回,即故障已经解除
-		                   && (!pSW->sta.bFlag.bCHQD);        // 三相启动重合闸未启动
-
-	// 三相启动重合闸
-	bCHQD_CHQD =  pSW->sta.bFlag.bTTQD                        // 偷跳启动重合闸
-	           || pSW->sta.bFlag.bTLQD                        // 三跳启动重合闸
-	           || bCQD6;                       				  // 三相启动重合闸
-
-	if( bCHQD_CHQD )
-	{
-		if( !pSW->sta.bFlag.bCHQD )                           // 重合开出标尚未置位
-		{
-			pSW->sta.bFlag.bCHQD = true;					  // 此标志会一直维持到重合闸出口或充电标志放电
-			pSW->sta.bFlag.bQDFG=true;						  // 整组复归时有效
-			soe_record_ev(EV_AR_START+sw*EV_SW_NUM, 1, 0,0,0);// 重合启动SOE         
-			//rcd_start(sw,RECORD_TYPE_CHZ, RECORD_LEN_TZQD); 	//录波类型:跳闸类
-		}        
-	}
-	else
-	{
-		if( pSW->sta.bFlag.bCHQD )
-		{
-			pSW->sta.bFlag.bCHQD = false;
-			soe_record_ev(EV_AR_START+sw*EV_SW_NUM,0 ,0,0,0);   
-		}
-	}
-}
-
-/**************************************************************************
-函数名称: AR_Logic
-函数版本:1.00 
-函数版本:1.00 
-作者:    硬件部
-创建日期:2010.4.28    
-
-函数功能说明:重合闸逻辑判断
-
-输入参数:
-输出参数:
-返回值: 
-***************************************************************************/
-static void AR_Logic(DWORD  dStep)
-{
-	bool bWCN;
-	u32 sw = g_protect.sw;	
-	TRELAY_T *pR=&g_tRelay[sw];
-	TCH_T *pSW =&pR->tCHZ;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];
-
-	bool bHZL1,bHZL2,bHZL3,bHZL4,bHZL5,bHZL6,bHZL8,bHZL9;
-
-	// 重合闸条件准备
-	bHZL1 = BH_ALL_EN(sw)				// 总投退
-							&& pSet->bTT_CHZ         	// 软压板: 重合闸投
-							&& pR->run_stu.chz			// 重合闸硬压板投入
-							&& pSW->sta.bFlag.bCHQD   // 三相启动重合闸
-							&& pSW->sta.bFlag.bCDWC;  // 重合闸充电完成
-	                          
-	RunTR(&pSW->tTCHJD_ARDelay, bHZL1, dStep);    //重合延时
-	bHZL2 = pSW->tTCHJD_ARDelay.boolTrip;
-
-	// 弹簧未储能下降沿展宽30ms
-	bWCN = pR->run_stu.wcn && pSet->bTT_WCN;
-	RunTR(&pSW->tTCHJD_0ms30ms, bWCN, dStep);
-	bHZL3 = pSW->tTCHJD_0ms30ms.boolTrip;
-
-	// 重合闸检同期
-	bHZL9 =AR_Check(pSet->dCKModes);
-
-	// 重合闸条件准备好,弹簧储能OK,重合闸出口
-	pSW->sta.bFlag.bCHCK = (!bHZL3) && bHZL2 && bHZL9;
-	
-	// 重合闸开出自保持
-	bHZL4 = pSW->sta.bFlag.bHz || pSW->sta.bFlag.bCHCK;
-
-	// 重合开出持续200ms
-	RunTR(&pSW->tTCHJD_200ms0ms, bHZL4, dStep);    
-	bHZL5 = pSW->tTCHJD_200ms0ms.boolTrip;                        
-
-	// 重合闸开出,经过200ms后开出解除
-	pSW->sta.bFlag.bHz =bHZL4 && (!bHZL5);                   
-
-	// 重合闸指令发出后,且开关已经跳闸完成
-	bHZL6 = pSW->sta.bFlag.bHz || pSW->sta.bFlag.bHZL7;
-	pSW->sta.bFlag.bHZL7 = pR->tSWST.uSWST.bFlag.bTZWZ && bHZL6;
-
-	// 开放后加速允许有效延时200ms展宽
-	RunTR(&pSW->tTCHJD_HJS, pSW->sta.bFlag.bHZL7, dStep);                
-	bHZL8 = pSW->tTCHJD_HJS.boolTrip;	
-       pSW->sta.bFlag.bCHJS = pSW->tTCHJD_HJS.boolTrip
-                   			&& (!pR->tSWST.uSWST.bFlag.bTZWZ);
-
-	//出口及发信
-	if(pSW->sta.bFlag.bHz)
-	{
-		if(!pSW->sta.bFlag.bEvent)    //重合开出标尚未置位
-		{   				
-			//亮重合动作灯
-			pSW->sta.bFlag.bCHZLed = true;
-			
-			pSW->wAR_ActTimes++;    //重合动作次数
-			pSW->sta.bFlag.bEvent = true;
-			//pSW->uCHFG.wfFlag=0;			//每次重合出口后,清重合复归标志  修改时注意,此处需对标志字特殊处理
-
-			pSW->sta.bFlag.bCHDZ=false;    	//重合闸动作   
-			pSW->sta.bFlag.bBYSD=false;    	//重合闸闭锁时间到 
-			pSW->sta.bFlag.bCHFD=false;    	//重合闸动作放电   
-			pSW->sta.bFlag.bCHBS=false;    	//重合闸闭锁   
-			pSW->sta.bFlag.bCK=false;		//放电条件1			
-
-			// pR->tXDLCHZ.sta.bFlag.bXDLCH = false;								//清小电流动作标志
-
-			if(pSW->wAR_ActTimes==1)
-			{
-				soe_record_ev(EV_AR1+sw*EV_SW_NUM, 1, 0,0,0);                   //一次重合动作SOE
-			}
-			else if(pSW->wAR_ActTimes==2)
-			{
-				soe_record_ev(EV_AR2+sw*EV_SW_NUM, 1, 0,0,0);                   //二次重合动作SOE
-			}
-			else
-			{
-				soe_record_ev(EV_AR3+sw*EV_SW_NUM, 1, 0,0,0);                   //三次重合动作SOE
-			}
-			rcd_start(sw,RECORD_TYPE_CHZ,RECORD_LEN_TZQD);  
-			ResetTR(&pSW->tTCHFAIL_TW); 										// 重合出口后,重新复归时间继电器
-			ResetTR(&pSW->tTCHOKTime);											// 重合成功时间继电器,在重合出口后重新计数
-			ResetTR(&pSW->tTCHBSDelay);											// 闭锁重合延时继电器重新计数
-			
-		}
-	}
-	else
-	{
-		if( pSW->sta.bFlag.bEvent )                                    //重合开出标尚未置位
-		{   
-			pSW->sta.bFlag.bEvent = false;
-			
-			if(soe_check(EV_AR1+sw*EV_SW_NUM))
-			{
-				soe_record_ev(EV_AR1+sw*EV_SW_NUM, 0, 0,0,0  );        //重合1动作SOE返回
-			}
-			if(soe_check(EV_AR2+sw*EV_SW_NUM))
-			{
-				soe_record_ev(EV_AR2+sw*EV_SW_NUM, 0, 0,0,0  );        //重合2动作SOE返回
-			}
-			if(soe_check(EV_AR3+sw*EV_SW_NUM))
-			{
-				soe_record_ev(EV_AR3+sw*EV_SW_NUM, 0, 0,0,0  );        //重合3动作SOE返回
-			}	
-		}
-	}
-}
-
-/**************************************************************************
-函数名称: AR_Reset
-函数版本:1.00 
-函数版本:1.00 
-作者:    硬件部
-创建日期:2010.4.28    
-
-函数功能说明:重合闸复归逻辑
-
-输入参数:
-输出参数:
-返回值: 
-***************************************************************************/
-static void AR_Reset(DWORD  dStep)
-{  
-	u32 sw = g_protect.sw;	
-	TRELAY_T *pR=&g_tRelay[sw];
-	TCH_T *pSW =&pR->tCHZ;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];
-	bool bFD1;
-
-	// 重合闸动作后,即启动重合闸闭锁时间,在此时间内,有保护动作即闭锁重合闸
-	// 重合闸出口且重合闸动作次数<整定动作次数,重合闸闭锁
-	pSW->sta.bFlag.bCHDZ = (pSW->sta.bFlag.bCHCK && (pSW->wAR_ActTimes<pSet->dARTimes))       
-	                  		|| pSW->sta.bFlag.bCHBS;                              	
-
-	// 重合闸闭锁延时,从重合闸动作开始统计                                                                    
-	RunTR(&pSW->tTCHBSDelay, pSW->sta.bFlag.bCHDZ, dStep);
-	pSW->sta.bFlag.bBYSD = pSW->tTCHBSDelay.boolTrip;
-	                                                                     
-	pSW->sta.bFlag.bCHBS = (pSW->wAR_ActTimes<pSet->dARTimes) // 未到最后一次重合
-	                   		&& pSW->sta.bFlag.bCHDZ           // 一次重合闸动作
-	                   		&& (!pSW->sta.bFlag.bBYSD);       // 重合闸闭锁时间未到
-
-	// 重合闸出口后,经过重合闸确认时间,无保护动作,即放电,完成该次重合过程
-	// 如果在确认时间内,重合闭锁时间外,有保护动作,即进入下一计数重合
-	pSW->sta.bFlag.bCK = ((!pR->uBHDZ.bFlag.bBHT)
-						&& (pSW->sta.bFlag.bCHCK || pSW->sta.bFlag.bCK));	//重合出口及自保持
-	RunTR(&pSW->tTCHOKTime, pSW->sta.bFlag.bCK, dStep);
-	bFD1 = pSW->tTCHOKTime.boolTrip;	
-
-	// 重合闸闭锁时间内,有保护动作,放电
-	// 重合闸次数已到最大,放电
-	// 重合成功,重合闸确认时间内无保护动作,放电
-	pSW->sta.bFlag.bCHFD = (pR->uBHDZ.bFlag.bBHT && pSW->sta.bFlag.bCHBS)
-                   			|| (pSW->sta.bFlag.bCHCK && (pSW->wAR_ActTimes>=pSet->dARTimes))
-                   			|| bFD1;
-
-#if 0	
-	// 重合闸出口后,经过重合闸确认时间,无保护动作,不再放电,仅清除动作次数进行新一轮重合计数
-	// 此处处理有问题,重合闸动作次数清零后,重合闸成功后,不放电的话pSW->sta.bFlag.bQDFG一直为true
-	// 导致保护逻辑不能整组复归,遥控超时时间到了之后预置继电器分了,因没有整组复归所以触发保护动作时预置继电器控合不了导致不能控制开关动作
-	// if (bFD1)
-	// {
-	// 	pSW->wAR_ActTimes = 0;
-	// 	ResetTR(&pR->tCHZ.tTCHJD_HJS);
-	// }
-#endif
-	// 整组复归条件:(1)重合闸放电(2)重合已启动,但充电标志已清零
-	if(pSW->sta.bFlag.bCHFD					
-	 	|| (!pSW->sta.bFlag.bCDWC && pSW->sta.bFlag.bQDFG))
-	{
-	 	pSW->sta.bFlag.bQDFG = false;	
-	}
-}
-
-/**************************************************************************
-函数名称: AR_Check
-函数版本:1.00 
-函数版本:1.00 
-作者:    赵海洋
-创建日期:2021.06.10    
-
-函数功能说明:重合闸检同期
-			0:无检定;1:检一侧有压一侧无压;2:检同期;3:检一侧有压一侧无压+检同期		
-输入参数:
-输出参数:
-返回值: 
-***************************************************************************/
-static int AR_Check(DWORD mode)
-{
-	// 0:无检定;1:检一侧有压一侧无压;2:检同期;3:检一侧有压一侧无压+检同期
-	u32 sw = g_protect.sw;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];
-	TRELAY_T *pR=&g_tRelay[sw];
-	DWORD deltaU1=0,deltaU2=0,deltaU3=0;
-	bool Volt,Volt1,Volt2,Volt3,angle1,bFEQ=false;
-	bool bY1 ,bY2 , sp , bLock = false;
-	int ret = 0;
-
-	// bY1 = OverRelay(g_ui[PUB_AC_US1].m2[0], pRunSet->dUPower, pRunSet->dUPower_fh, false);
-	// bY2 = OverRelay(g_ui[PUB_AC_US2].m2[0], pRunSet->dUPower, pRunSet->dUPower_fh, false);
-	// bY1 = g_run_stu.pt1yy;
-	// bY2 = g_run_stu.pt2yy;
-
-	bY1= ((!g_run_stu.pt1yy) && g_run_stu.pt2yy); 
-	bY2= (g_run_stu.pt1yy && (!g_run_stu.pt2yy));
-	bLock = bY1 || bY2;
-
-	switch (mode)
-	{
-		case 0: 
-			ret =  1 ;
-			break;		
-		case 1: 
-			/* 检一侧有压一侧无压 */
-			ret = bLock;
-			break;
-		case 2:
-			/* 检同期 */
-			// 分别取出两侧各线电压压差
-			deltaU1 = _AbsL(g_ui[PUB_AC_UAB1].fz - g_ui[PUB_AC_UAB2].fz);
-			deltaU2 = _AbsL(g_ui[PUB_AC_UBC1].fz - g_ui[PUB_AC_UBC2].fz);
-			deltaU3 = _AbsL(g_ui[PUB_AC_UCA1].fz - g_ui[PUB_AC_UCA2].fz);
-
-			// 角差与定值比对
-			angle1 = SynAngle(g_ui[PUB_AC_UAB1].p, g_ui[PUB_AC_UAB2].p,pSet->dTQ_ANGLE_FZ);
-
-			// 频差与定值比对
-			bFEQ = SynFrequency(g_sw_pub.ac_in[PUB_AC_IN_F1],g_sw_pub.ac_in[PUB_AC_IN_F2],pSet->dTQ_FREQ_FZ);
-
-			// 压差与定值比对
-			Volt1 = LowRelay(deltaU1, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-			Volt2 = LowRelay(deltaU2, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-			Volt3 = LowRelay(deltaU3, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-
-			Volt = Volt1&&Volt2&&Volt3;
-
-			sp = Volt&&angle1&&bFEQ&&(!pR->tSWST.uSWST.bFlag.bDIHW);
-			ret = sp;
-			break;	
-		case 3: 
-			/* 检一侧有压一侧无压+检同期	 */
-			// 分别取出两侧各线电压压差
-			deltaU1 = _AbsL(g_ui[PUB_AC_UAB1].fz - g_ui[PUB_AC_UAB2].fz);
-			deltaU2 = _AbsL(g_ui[PUB_AC_UBC1].fz - g_ui[PUB_AC_UBC2].fz);
-			deltaU3 = _AbsL(g_ui[PUB_AC_UCA1].fz - g_ui[PUB_AC_UCA2].fz);
-
-			// 角差与定值比对
-			angle1 = SynAngle(g_ui[PUB_AC_UAB1].p, g_ui[PUB_AC_UAB2].p,pSet->dTQ_ANGLE_FZ);
-
-			// 频差与定值比对
-			bFEQ = SynFrequency(g_sw_pub.ac_in[PUB_AC_IN_F1],g_sw_pub.ac_in[PUB_AC_IN_F2],pSet->dTQ_FREQ_FZ);
-
-			// 压差与定值比对
-			Volt1 = LowRelay(deltaU1, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-			Volt2 = LowRelay(deltaU2, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-			Volt3 = LowRelay(deltaU3, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-
-			Volt = Volt1&&Volt2&&Volt3;
-
-			sp = Volt&&angle1&&bFEQ&&(!pR->tSWST.uSWST.bFlag.bDIHW);
-
-			if (bLock)
-			{
-				ret =1;
-			}
-			else if ((!bLock) && sp)
-			{
-				ret =1;
-			}
-			else
-			{
-				ret = 0;
-			}
-			// ret = (!bLock) && sp;
-			break;		
-		default:
-			ret = 0 ;
-			break;
-	}
-	return ret;
-}
-
-int enable_printf_charge_cdn(void)
-{
-	g_print_charge_cdn = true;
-	rt_printf("重合闸充电条件打印,dmesg查看!\r\n");
-	return 0;
-}
-#else
+    
 /**********************************************************************
 定义全局变量
 ***********************************************************************/
@@ -1393,7 +776,7 @@ static void AR_Reset(int sw,DWORD  dStep)
 	 	pSW->sta.bFlag.bQDFG = false;	
 	}
 }
-#endif /* GW_AREA_MAIN_2021 */
+
 /***************************************endfile**********************************************************/
 
 

+ 1 - 95
dtu/dtu_main_t536/app/reclose.h

@@ -8,100 +8,7 @@
 ****************************************************************************/
 #ifndef __RECLOSE_H
 #define __RECLOSE_H
-#ifdef GW_AREA_MAIN_2021
-typedef union UCHFLAG
-{
-    DWORD  wfFlag;
-    struct
-    {
-       DWORD    bTTQD:1;    //偷跳启动重合闸
-       DWORD    bTLQD:1;    //三跳启动重合闸
-       DWORD    bCHQD:1;    //三相启动重合闸
-       DWORD    bQDFG:1;	  //重合复归标志
-       DWORD    bBSCH:1;    //闭锁重合闸    
-	DWORD    bFDBZ:1;    //重合闸放电标   
-	DWORD    bCDWC:1;    //重合闸充电完成 
-	DWORD    bCHCK:1;    //重合闸出口       
-	DWORD    bCHJS:1;    //重合加速标     
-	DWORD    bHz:1;       // 重合合闸
-	DWORD    bHZL7:1;    //CHZLJ_07      // 逻辑7需自保持   
-	DWORD    bCHDZ:1;    	//重合闸动作   
-	DWORD    bBYSD:1;    	//重合闸闭锁时间到 
-	DWORD    bCHFD:1;    	//重合闸动作放电   
-	DWORD    bCHBS:1;    	//重合闸闭锁   
-	DWORD    bCK:1;		//放电条件1
-	DWORD    bCHZLed:1;  //动作灯
-	DWORD    bEvent:1;
-    }bFlag;
-}UCHFLAG;
-
-typedef struct TCH_T
-{
-	UCHFLAG    sta;                              // 重合闸启动标志字的位定义
-	WORD   	    wAR_ActTimes;                        // 重合闸动作次数
-	DWORD  	    dAR_DelayTime;                        // 三重延时
-	TIMERELAY tTCHFAIL_TW;                       // 三相跳位延时: 重合失败返回时间
-	TIMERELAY tTCHCD15s0s;                       // 充电15秒
-	TIMERELAY tTCHQDHW0ms50ms;                     // 合闸位置下降沿展宽50ms
-	TIMERELAY tTCHQD0ms50ms;                     // 跳闸开出下降沿展宽50ms
-	TIMERELAY tTCHJD_ARDelay;                    // 重合闸延时
-	TIMERELAY tTCHJD_0ms30ms;                    // 弹簧未储能下降沿展宽30ms
-	TIMERELAY tTCHJD_200ms0ms;                   // 重合开出宽度
-	TIMERELAY tTCHBSDelay;                       // 重合闭锁延时
-	TIMERELAY tTCHOKTime;                       // 重合成功时间
-	TIMERELAY tTCHJD_HJS;                        // 重合后加速延时
-}TCH_T;
 
-typedef union UXDLCHFLAG
-{
-    DWORD  wfFlag;
-    struct
-    {
-        DWORD    bTTQD:1;    //偷跳启动重合闸
-        DWORD    bTLQD:1;    //三跳启动重合闸
-        DWORD    bCHQD:1;    //三相启动重合闸
-        DWORD    bQDFG:1;	  //重合复归标志
-        DWORD    bBSCH:1;    //闭锁重合闸    
-        DWORD    bFDBZ:1;    //重合闸放电标   
-        DWORD    bCDWC:1;    //重合闸充电完成 
-        DWORD    bCHCK:1;    //重合闸出口       
-        DWORD    bCHJS:1;    //重合加速标     
-        DWORD    bHz:1;       // 重合合闸
-        DWORD    bHZL7:1;    //CHZLJ_07      // 逻辑7需自保持   
-        DWORD    bCHDZ:1;    	//重合闸动作   
-        DWORD    bBYSD:1;    	//重合闸闭锁时间到 
-        DWORD    bCHFD:1;    	//重合闸动作放电   
-        DWORD    bCHBS:1;    	//重合闸闭锁   
-        DWORD    bCK:1;		//放电条件1
-        DWORD    bCHZLed:1;  //动作灯
-        DWORD    bEvent:1;
-		DWORD    bXDLDZ:1;
-		DWORD    bXDLCHZWC:1;	// 小电流重合闸完成
-		DWORD    bXDLCH:1;		// 小电流启动常规重合闸
-    }bFlag;
-}UXDLCHFLAG;
-
-typedef struct TXDLCH_T
-{
-	UXDLCHFLAG    sta;                              // 重合闸启动标志字的位定义
-	WORD   	    wAR_ActTimes;                        // 重合闸动作次数
-	DWORD  	    dAR_DelayTime;                        // 三重延时
-	TIMERELAY tTXDLCHFAIL_TW;                       // 三相跳位延时: 重合失败返回时间
-	TIMERELAY tTXDLCHCD15s0s;                       // 充电15秒
-	TIMERELAY tTXDLCHQDHW0ms50ms;                     // 合闸位置下降沿展宽50ms
-	TIMERELAY tTXDLCHQD0ms50ms;                     // 跳闸开出下降沿展宽50ms
-	TIMERELAY tTXDLCHJD_ARDelay;                    // 重合闸延时
-	TIMERELAY tTXDLCHJD_0ms30ms;                    // 弹簧未储能下降沿展宽30ms
-	TIMERELAY tTXDLCHJD_200ms0ms;                   // 重合开出宽度
-	TIMERELAY tTXDLCHBSDelay;                       // 重合闭锁延时
-	TIMERELAY tTXDLCHOKTime;                       // 重合成功时间
-	TIMERELAY tTXDLCHJD_HJS;                        // 重合后加速延时
-	TIMERELAY tTXDLCHJLY_HJS;                        // 小电流重合检零压后加速延时
-}TXDLCH_T;
-
-void AutoReclose(DWORD  dStep);                             // 重合闸功能块
-int enable_printf_charge_cdn(void);
-#else
 typedef union UCHFLAG
 {
     DWORD  wfFlag;
@@ -183,6 +90,5 @@ typedef struct TCH_T
 
 void AutoReclose(int sw,DWORD  dStep);                             // 重合闸功能块
 
-#endif
-#endif /* GW_AREA_MAIN_2021 */
+    #endif
     //========================== 本文件结束 ===============================

+ 4 - 7
dtu/dtu_main_t536/app/record.c

@@ -1424,10 +1424,8 @@ int rcd_start(u32 sw, u32 type,u32 waves)
 			return -4;
 		}
 
-		// if((type == RECORD_TYPE_LLTB && pSet->bTT_xdlqd == XDL_QD_I0)
-		// || (type == RECORD_TYPE_LXDY && pSet->bTT_xdlqd == XDL_QD_U0))
-		// TODO 小电流录波类型判断 EWen
-		if(1)
+		if((type == RECORD_TYPE_LLTB && pSet->bTT_xdlqd == XDL_QD_I0)
+		|| (type == RECORD_TYPE_LXDY && pSet->bTT_xdlqd == XDL_QD_U0))
 		{
 		}
 		else
@@ -2572,9 +2570,8 @@ int _rcd_save(struct rcd *prcd)
 		{
 			TSETSW *pSet = &pRunSet->tSwSet[sw];
 			// 如果录波类型和启动类型一起,调用小电流接地判断函数
-			// if((prcd->type == RECORD_TYPE_LLTB && pSet->bTT_xdlqd == XDL_QD_I0)
-			// || (prcd->type == RECORD_TYPE_LXDY && pSet->bTT_xdlqd == XDL_QD_U0))
-			// TODO 小电流录波类型判断 EWen
+			if((prcd->type == RECORD_TYPE_LLTB && pSet->bTT_xdlqd == XDL_QD_I0)
+			|| (prcd->type == RECORD_TYPE_LXDY && pSet->bTT_xdlqd == XDL_QD_U0))
 			{
 				xdl_proc_adc(sw,prcd->dt_begin*ADC_REC_SAMPLE_RATE,&prcd->ts_begin);
 			}

+ 0 - 2
dtu/dtu_main_t536/app/record.h

@@ -32,8 +32,6 @@ enum
 	RECORD_TYPE_LXGL,		// 录波类型为零序过流
 	RECORD_TYPE_LLTB,   	// 录波类型为零流突变
 	RECORD_TYPE_CHZ,   		// 录波类型为重合闸
-	RECORD_TYPE_DLGZ,   	// 录波类型为短路故障
-	RECORD_TYPE_KGBW,   	// 录波类型为开关变位
 #ifdef FUN_JDXX
 	RECORD_TYPE_XDLJD,		// 录波类型为小电流接地
 #endif

+ 81 - 175
dtu/dtu_main_t536/app/run_status.c

@@ -218,36 +218,47 @@ int run_status_init(void)
 			prun->tzw = 0;
 		}
 
-	#ifdef SWITCH_GLJD_LED		
+#ifdef SWITCH_GLJD_LED		
 		// 隔离刀闸无配置,置无效
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_GLDZ1] == INDEX_INVALLID)
+		if ((short)g_sw[sw].di_cfg_index[SW_DI_GLDZ_HW] == INDEX_INVALLID && 
+            (short)g_sw[sw].di_cfg_index[SW_DI_GLDZ_FW] == INDEX_INVALLID)
 		{
 			prun->gldz = 0;
 		}
+
 		// 接地刀闸无配置,置无效
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_JDDZ] == INDEX_INVALLID)
+		if ((short)g_sw[sw].di_cfg_index[SW_DI_JDDZ_HW] == INDEX_INVALLID && 
+            (short)g_sw[sw].di_cfg_index[SW_DI_GLDZ_FW] == INDEX_INVALLID)
 		{
 			prun->jddz = 0;
 		}
 	#endif
-		
-		// 未储能无配置,置合
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_CN] == INDEX_INVALLID)
-		{
-			prun->wcn = 1;
-		}
-		//气压低为配置,置分
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_QYD] == INDEX_INVALLID)
-		{
-			prun->qyd = 0;
-		}
-		// 控制回路断线开入
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_KZDX] == INDEX_INVALLID)
-		{
-			prun->kzdx= 0;
-		}
-		
-		// PT1瞬压无配置,置无效
+
+        // 未储能无配置,置合
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_WCN] == INDEX_INVALLID)
+        {
+            prun->wcn = 1;
+        }
+
+        // 气压低为配置,置分
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_QYD_BS] == INDEX_INVALLID)
+        {
+            prun->qyd_bs = 0;
+        }
+
+        // 气压低为配置,置分
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_QYD_GJ] == INDEX_INVALLID)
+        {
+            prun->qyd_gj = 0;
+        }
+
+        // 控制回路断线开入
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_KZDX] == INDEX_INVALLID)
+        {
+            prun->kzdx = 0;
+        }
+
+        // PT1瞬压无配置,置无效
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_PT1SY] == INDEX_INVALLID)
 		{
 			prun->pt1uf = 0;
@@ -338,10 +349,8 @@ int run_status_init(void)
 		}
 		//  联络分段配置
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_FA_LS] == INDEX_INVALLID)
-		{				
-			#ifndef GW_AREA_MAIN_2021	
+		{					
 			prun->fa_ls = pRunSet->tSwSet[sw].bTT_fa_LL;
-			#endif
 		}	
 
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_BSCH] == INDEX_INVALLID)
@@ -624,10 +633,6 @@ int  run_status_check(u32 dStep)
 	g_run_stu.rmt_B = (g_rmt_op.key == (1<<RMT_B));
 	g_run_stu.rmt_C = (g_rmt_op.key == (1<<RMT_C));
 	g_run_stu.rmt_D = (g_rmt_op.key == (1<<RMT_D));
-
-	g_run_stu.phayy = OverRelay(g_ui[PUB_AC_UA1].fz, pRunSet->dUPowerFz, pRunSet->dUPowerFz_fh, g_run_stu.phayy);
-	g_run_stu.phbyy = OverRelay(g_ui[PUB_AC_UB1].fz, pRunSet->dUPowerFz, pRunSet->dUPowerFz_fh, g_run_stu.phbyy);
-	g_run_stu.phcyy = OverRelay(g_ui[PUB_AC_UC1].fz, pRunSet->dUPowerFz, pRunSet->dUPowerFz_fh, g_run_stu.phcyy);
 	
 	for(sw=0;sw<g_sw_num;sw++)
 	{
@@ -645,18 +650,21 @@ int  run_status_check(u32 dStep)
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_KRHW]];
 			prun->hw = dido_di_is_on(ecd->slot,ecd->index);
 		}
+
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_KRTW] != INDEX_INVALLID)
 		{
 			//g_run_stu.tw[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_KRTW))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_KRTW]];
 			prun->tw = dido_di_is_on(ecd->slot,ecd->index);
 		}
+
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_HZWZ] != INDEX_INVALLID)
 		{
 			//g_run_stu.hw[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_KRHW))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_HZWZ]];
 			prun->hzw = dido_di_is_on(ecd->slot,ecd->index);
 		}
+
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_TZWZ] != INDEX_INVALLID)
 		{
 			//g_run_stu.tw[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_KRTW))?1:0;
@@ -664,55 +672,70 @@ int  run_status_check(u32 dStep)
 			prun->tzw = dido_di_is_on(ecd->slot,ecd->index);
 		}
 
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_WCN] != INDEX_INVALLID)
+        {
+            ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_WCN]];
+            prun->wcn = dido_di_is_on(ecd->slot, ecd->index);
+        }
+        else if ((short)g_sw[sw].di_cfg_index[SW_DI_YCN] != INDEX_INVALLID && 
+                 (short)g_sw[sw].di_cfg_index[SW_DI_WCN] == INDEX_INVALLID) // 2020-10-8 只配置了已储能遥信
+        {
+            ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_YCN]];
+            prun->wcn = !dido_di_is_on(ecd->slot, ecd->index); // 已储能取反
+        }
+
 	#ifdef SWITCH_GLJD_LED
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_GLDZ1] != INDEX_INVALLID)
-		{
-			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_GLDZ1]];
-			prun->gldz = dido_di_is_on(ecd->slot,ecd->index);
-		}
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_JDDZ] != INDEX_INVALLID)
+    {
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_GLDZ_HW] != INDEX_INVALLID)
+        {
+            ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_GLDZ_HW]];
+            prun->gld = dido_di_is_on(ecd->slot, ecd->index);
+        }
+        else if ((short)g_sw[sw].di_cfg_index[SW_DI_GLDZ_FW] != INDEX_INVALLID)
+        {
+            ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_GLDZ_FW]];
+            prun->gld = (dido_di_is_on(ecd->slot, ecd->index) == 1) ? 1 : 0;
+        }
+
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_JDDZ_HW_HW] != INDEX_INVALLID)
 		{
-			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_JDDZ]];
-			prun->jddz = dido_di_is_on(ecd->slot,ecd->index);
+			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_JDDZ_HW_HW]];
+			prun->jdd = dido_di_is_on(ecd->slot,ecd->index);
 		}
+        else if ((short)g_sw[sw].di_cfg_index[SW_DI_JDDZ_HW_FW] != INDEX_INVALLID)
+        {
+            ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_JDDZ_HW_FW]];
+            prun->gld = (dido_di_is_on(ecd->slot, ecd->index) == 1) ? 1 : 0;
+        }
+    }
 	#endif
-	
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_CN] != INDEX_INVALLID)
-		{
-			//g_run_stu.wcn[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_CN))?1:0;
-			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_CN]];
-			prun->wcn = dido_di_is_on(ecd->slot,ecd->index);
-		}
-	#ifdef DISP_DOUBLE_CN
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_YCN] != INDEX_INVALLID&&(short)g_sw[sw].di_cfg_index[SW_DI_CN] == INDEX_INVALLID)//2020-10-8 只配置了已储能遥信
+
+        if ((short)g_sw[sw].di_cfg_index[SW_DI_QYD_BS] != INDEX_INVALLID)
 		{
-			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_YCN]];
-			prun->wcn = !dido_di_is_on(ecd->slot,ecd->index);//已储能取反
+            ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_QYD_BS]];
+            prun->qyd_bs= dido_di_is_on(ecd->slot,ecd->index);
 		}
-	#endif
-		if ((short)g_sw[sw].di_cfg_index[SW_DI_QYD] != INDEX_INVALLID)
+
+		if ((short)g_sw[sw].di_cfg_index[SW_DI_QYD_GJ] != INDEX_INVALLID)
 		{
-				ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_QYD]];
-				prun->qyd= dido_di_is_on(ecd->slot,ecd->index);
+			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_QYD_GJ]];
+			prun->qyd_gj = dido_di_is_on(ecd->slot,ecd->index);
 		}
 
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_KZDX] != INDEX_INVALLID)
 		{
-			//g_run_stu.wcn[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_CN))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_KZDX]];
 			prun->kzdx= dido_di_is_on(ecd->slot,ecd->index);
 		}
-
 		
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_PT1SY] != INDEX_INVALLID)
 		{
-			//g_run_stu.pt1uf[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_PT1SY))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_PT1SY]];
 			prun->pt1uf = dido_di_is_on(ecd->slot,ecd->index);
 		}
+
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_PT2SY] != INDEX_INVALLID)
 		{
-			//g_run_stu.pt2uf[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_PT2SY))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_PT2SY]];
 			prun->pt2uf = dido_di_is_on(ecd->slot,ecd->index);
 		}
@@ -720,7 +743,6 @@ int  run_status_check(u32 dStep)
 		sw_sh[sw] = 0;
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_SH] != INDEX_INVALLID)
 		{
-			//sw_sh[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_SH))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_SH]];
 			sw_sh[sw] = dido_di_is_on(ecd->slot,ecd->index);
 		}
@@ -728,7 +750,6 @@ int  run_status_check(u32 dStep)
 		sw_sf[sw] = 0;
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_SF] != INDEX_INVALLID)
 		{
-		//	sw_sf[sw] = (g_di_stu.sw_di[sw] & (1<<SW_DI_SF))?1:0;
 			ecd = &g_equ_config_di[g_sw[sw].di_cfg_index[SW_DI_SF]];
 			sw_sf[sw] = dido_di_is_on(ecd->slot,ecd->index);
 		}
@@ -856,9 +877,7 @@ int  run_status_check(u32 dStep)
 		}	
 		else
 		{
-			#ifndef GW_AREA_MAIN_2021
 			prun->fa_ls = pRunSet->tSwSet[sw].bTT_fa_LL;
-			#endif
 		}
 
 		if ((short)g_sw[sw].di_cfg_index[SW_DI_BSCH] != INDEX_INVALLID)
@@ -921,11 +940,10 @@ int  run_status_check(u32 dStep)
 
 	
 		// 曾有压判断,用于失压分闸
-		#ifndef GW_AREA_MAIN_2021
+
 		pt1cyy = OverRelay(g_sw_pub.m2_max[2], pRunSet->tSwSet[sw].dU_fa_YY,pRunSet->tSwSet[sw].dU_fa_YY_fh, prun->pt1yy);
 		//pt2cyy = OverRelay(g_sw_pub.m2_max[3], pRunSet->tSwSet[sw].dU_fa_YY, pRunSet->tSwSet[sw].dU_fa_YY_fh, prun->pt2yy);
 		pt2cyy = OverRelay(g_sw_pub.m2_max[3], pRunSet->tSwSet[sw].dU_fa_YY2, pRunSet->tSwSet[sw].dU_fa_YY2_fh, prun->pt2yy);
-		#endif
 		prun->pt1yy = pt1cyy;
 		prun->pt2yy = pt2cyy;
 		if(g_equ_config_ac[0].type-1==PUB_AC_UAB2 || g_equ_config_ac[0].type-1==PUB_AC_UA2)
@@ -952,7 +970,6 @@ int  run_status_check(u32 dStep)
 
 		bY1=pR->run_stu.kzdx&& pRunSet->tSwSet[sw].bTT_KZHL;
 	#else//控制回路断线 1、控制回路断线遥信输入 2、HQ&TQ错误态&未知态 3、开关位置错误态&未知态
-		#if 0 //控回断线 逻辑定值处理 EWen
 		if( ((short)g_sw[sw].di_cfg_index[SW_DI_HZWZ] != INDEX_INVALLID)&& ((short)g_sw[sw].di_cfg_index[SW_DI_TZWZ] != INDEX_INVALLID))//配置了HQ&TQ
 			bY = (((prun->tzw==0&&prun->hzw==0)||(prun->tzw==1&&prun->hzw==1))&& pRunSet->tSwSet[sw].bTT_KZHL);	//HQ&TQ错误
 		else if( ((short)g_sw[sw].di_cfg_index[SW_DI_KRHW] != INDEX_INVALLID)&& ((short)g_sw[sw].di_cfg_index[SW_DI_KRTW] != INDEX_INVALLID))//必须配置开关双位置状态
@@ -960,7 +977,6 @@ int  run_status_check(u32 dStep)
 		else
 			bY = false;
 		bY1=pR->run_stu.kzdx && pRunSet->tSwSet[sw].bTT_KZHL;
-		#endif
 	#endif
 		RunTR(&pSW->tTKZHLGJ1s, (bY||bY1), dStep);
 		pSW->uSWST.bFlag.bKZHL = pSW->tTKZHLGJ1s.boolTrip;		
@@ -1028,7 +1044,6 @@ int  run_status_check(u32 dStep)
 			}
 		}
 		// CT 异常判断 
-	#ifndef GW_AREA_MAIN_2021
 		{
 			bool bok,bCheck;
 			u16 soeno=EV_CTYC+sw*EV_SW_NUM;
@@ -1056,7 +1071,6 @@ int  run_status_check(u32 dStep)
 				}
 			}
 		}
-	#endif
 	#ifndef BAT_STATE_LED
 		{  //电池电压低判断:两路直流,任一路大于直流整定值的一半,小于整定值,3秒后报异常,若定值为0 ,退出判断
 			bool bCheck;
@@ -1282,113 +1296,6 @@ int app_action_result(void)
 		{
 			exerr = 1;
 		}
-#ifdef GW_AREA_MAIN_2021
-				// 保护过流
-		if (pR->tOC[OC_GL1].sta.bFlag.bDzLed
-			|| pR->tOC[OC_GL2].sta.bFlag.bDzLed
-			|| pR->tOC[OC_GL3].sta.bFlag.bDzLed
-			|| pR->tOC[OC_DL].sta.bFlag.bDzLed
-			|| pR->tOC[OC_GLJS].sta.bFlag.bDzLed
-			|| pR->tOC[OC_GLBS].sta.bFlag.bDzLed)  // 过流闭锁,点过流灯
-		{
-			gl = 1;
-			//TODO 状态记录 EWen
-			// g_file_led_write[sw].led_gl = gl;		   // 记录过流LED状态 1
-			// g_file_led_sign = 1;					   // 故障LED状态置位
-		}
-
-		// 保护过流跳闸失败
-		if (pR->tOC[OC_GL1].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_GL2].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_GL3].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_DL].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_GLJS].sta.bFlag.bTzsbLed)
-		{
-			gl = 2;
-			//TODO 状态记录 EWen
-			// g_file_led_write[sw].led_gl = gl;		   // 记录过流LED状态 2
-			// g_file_led_sign = 1;					   // 故障LED状态置位
-		}
-
-		// 保护接地
-		if (pR->tOC[OC_LX1].sta.bFlag.bDzLed
-			|| pR->tOC[OC_LX2].sta.bFlag.bDzLed
-			|| pR->tOC[OC_LX3].sta.bFlag.bDzLed
-			|| pR->tOC[OC_LL].sta.bFlag.bDzLed
-			|| pR->tOC[OC_LXJS].sta.bFlag.bDzLed
-			|| pR->tOC[OC_LYJS].sta.bFlag.bDzLed
-			|| xdl_is_dz(sw) // 增加小电流接地
-			|| pR->tXXTZ.bU0Led			//零序选线跳闸
-			|| pR->tU0TZ.bU0Led)
-		{
-			jd = 1;
-			//TODO 状态记录 EWen
-			// g_file_led_write[sw].led_jd = jd;		   // 记录接地LED状态 1
-			// g_file_led_sign = 1;					   // 故障LED状态置位
-		}
-
-		//失压跳闸
-		if (pR->tLostVot.bLostVotLed)
-		{
-			sy = 1;
-		}
-
-
-		// 保护零序过流跳闸失败
-		if (pR->tOC[OC_LX1].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_LX2].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_LX3].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_LL].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_LXJS].sta.bFlag.bTzsbLed
-			|| pR->tOC[OC_LYJS].sta.bFlag.bTzsbLed)
-		{
-			jd = 2;
-			//TODO 状态记录 EWen
-			// g_file_led_write[sw].led_jd = jd;		   // 记录接地LED状态 2
-			// g_file_led_sign = 1;					   // 故障LED状态置位
-		}
-		
-		// 重合闸动作
-		if (pR->tCHZ.sta.bFlag.bCHZLed)
-		{
-			chzdz = 1;
-		}
-
-		// 闭锁
-		if (	 pR->tSDHZ.bL_BSLed
-			|| pR->tSDHZ.bS_BSLed)
-		{
-			bs = 1;
-		}
-		
-		//电流越限
-		if (pR->tOC[OC_OVLOAD].sta.bFlag.bDzLed
-			|| pR->tOC[OC_DLGZ].sta.bFlag.bDzLed
-			|| pR->tOC[OC_DLYX].sta.bFlag.bDzLed)
-		{
-			gz = 1;  // 过载不点动作灯
-		}
-		prun->exerr = exerr;
-		prun->gl = gl;
-		prun->jd = jd;
-		prun->chzdz = chzdz;
-		prun->bs = bs;
-		if (gl || jd || chzdz ||sy) // 故障状态,动作灯常亮 (过流、接地、重合闸、过载,失压)
-		{
-			prun->dz = 1;
-		}
-		else if ( bs) //  X Y闭锁,动作灯闪烁
-		{
-			prun->dz = 2;  // 闪烁
-		}
-		bvol=false;
-		for(i=0;i<=VOL_DDY_Uca2;i++)
-		{
-			bvol|=g_tVol[i].sta.bFlag.bGj;
-		}
-		//g_run_stu.pubdz = bvol; // 电压越限不点动作灯,
-	}
-#else
 		prun->gj_led =0;
 		//告警的时候不亮动作灯
 		if(pR->tOC[BH_GL1].sta.bFlag.bGjLed	
@@ -1491,12 +1398,12 @@ int app_action_result(void)
 			prun->dz=RY_DZ_BHT;
 			prun->gj_led = 1;
 		}
-#ifndef GW_AREA_MAIN_2021
+
 		for(i=0;i<8;i++)
 		{
 			fdl|=pR->tFdl[i].sta.bFlag.bTz;
 		}	
-#endif
+
 		//失压跳闸+智能分布式越级跳,首端失压跳,故障隔离跳,通信异常跳,都亮动作灯
 		if (pR->tLostVot.bLostVotLed
 			|| pR->tgoc.bextTzLed
@@ -1577,7 +1484,6 @@ int app_action_result(void)
 
 	// 动作总
 	g_run_stu.pubdz= run_status_dz_all();
-#endif
 	return 0;
 }
 

+ 62 - 70
dtu/dtu_main_t536/app/run_status.h

@@ -118,87 +118,79 @@ struct run_stu
 #endif
 	u32 cd;
 	u8 led[CFG_UART_NUM_MAX*2+CFG_ETH_NUM_MAX];	
-
-	u8 phayy;		// A相有压
-	u8 phbyy;		// B相有压
-	u8 phcyy;		// C相有压
-	int us1;	//TODO 定值对接 Ewen
-	int us2;
 };
 
 
 // 内部状态结构体
 typedef struct run_stu_sw
 {
-	
-	u8 sw;		// 开关位置
-	u8 hw;		// 开关合位
-	u8 tw;		// 开关分位
-	u8 hw_change;
-	u8 tw_change;
-	
-	u8 hzw;
-	u8 tzw;
-	u8 wcn;		// 未储能
-	u8 qyd;		// 气压低
-	u8 pt1uf;	// PT1瞬压
-	u8 pt2uf;	// PT2瞬压
-	u8 sw_sh;	// 手合
-	u8 sw_sf;	// 手分
-	u8 bhztt;	//保护总投退
+    u8 sw; // 开关位置
+    u8 hw; // 开关合位
+    u8 tw; // 开关分位
+    u8 hw_change;
+    u8 tw_change;
+
+    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; // 保护总投退
 #ifdef GD_AREA_ZHONGSHAN_FTU
-	u8 bs_bhz;	//闭锁功能总
+    u8 bs_bhz; // 闭锁功能总
 #endif
 
 #ifdef JZS_FUNCTION
-	u8 jzs_tt;		//集中式投退
+    u8 jzs_tt; // 集中式投退
 #endif
-#ifdef GW_AREA_MAIN_2021
-	// TODO 赋值 EWen
-	u8 chz;		// 重合闸
-#endif
-	u8 bhtt;	// 常规保护投退
-	u8 fatt;  // fa功能跟投退
-	u8 fa_g_tt;  //智能 fa功能跟投退
-	u8 fa_ls;// 联络分段
-	u8 chzyb;		// 重合闸
-	u8 fa_start_hz;	//对侧开关位置信号,对侧合位后,B侧有压才有效。用于启动fa来电合闸信号
-	u8 safe_auto;//	安全自动压板
-	u8 freq_vol;
-	u8 kgyf;
-	u8 gl;		// 保护过流
-	u8 jd;		// 保护接地
-	u8 chzdz;	// 重合闸动作
-	u8 chzcd;	// 重合闸充电
-	u8 fa_ll_cd;   // 联络充电
-	u8 goose_glcd;
-	u8 goose_qccd;
-	u8 goose_ll_cd;
-	u8 gy;// 过压
-	u8 gj_led;
-	u8 dz;		// 保护动作
-	u8 bs;		// 闭锁	
-	u8 fgbs;	//智能分布式闭锁
-	u8 bsch;
-	u8 bTQ;  // 同期压板
-	u8 XT;
-	u8 YT;
-	u8 lock;
-	u8 exerr;		// 外部异常
-	u8 pt1yy;		// PT1有压
-	u8 pt2yy;		// PT2有压
-	u8 kzdx;          //控制回路断线 开入信号
-	u8 chzbs;
-	u8 tytq;    //停用同期
-	u8 bsfal;   //闭锁FA联络
-
-	u8 bh_yx;	// 常规保护遥信点
-	u8 fa_yx;  // fa功能遥信点
-	u8 fa_g_yx;  //智能 fa功能遥信点
-
-#ifdef SWITCH_GLJD_LED	
-	u8 gldz;		// 隔离刀闸
-	u8 jddz;		// 接地刀闸
+    u8 bhtt;        // 常规保护投退
+    u8 fatt;        // fa功能跟投退
+    u8 fa_g_tt;     // 智能 fa功能跟投退
+    u8 fa_ls;       // 联络分段
+    u8 chzyb;       // 重合闸
+    u8 fa_start_hz; // 对侧开关位置信号,对侧合位后,B侧有压才有效。用于启动fa来电合闸信号
+    u8 safe_auto;   // 安全自动压板
+    u8 freq_vol;
+    u8 kgyf;
+    u8 gl;       // 保护过流
+    u8 jd;       // 保护接地
+    u8 chzdz;    // 重合闸动作
+    u8 chzcd;    // 重合闸充电
+    u8 fa_ll_cd; // 联络充电
+    u8 goose_glcd;
+    u8 goose_qccd;
+    u8 goose_ll_cd;
+    u8 gy; // 过压
+    u8 gj_led;
+    u8 dz;   // 保护动作
+    u8 bs;   // 闭锁
+    u8 fgbs; // 智能分布式闭锁
+    u8 bsch;
+    u8 bTQ; // 同期压板
+    u8 XT;
+    u8 YT;
+    u8 lock;
+    u8 exerr; // 外部异常
+    u8 pt1yy; // PT1有压
+    u8 pt2yy; // PT2有压
+    u8 kzdx;  // 控制回路断线 开入信号
+    u8 chzbs;
+    u8 tytq;  // 停用同期
+    u8 bsfal; // 闭锁FA联络
+
+    u8 bh_yx;   // 常规保护遥信点
+    u8 fa_yx;   // fa功能遥信点
+    u8 fa_g_yx; // 智能 fa功能遥信点
+
+#ifdef SWITCH_GLJD_LED
+    u8 gldz; // 隔离刀闸
+    u8 jddz; // 接地刀闸
 #endif
 }RUN_STU_SW;
 

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 344 - 706
dtu/dtu_main_t536/app/set.c


+ 43 - 561
dtu/dtu_main_t536/app/set.h

@@ -67,9 +67,6 @@
 #define  TBLQDDSMK              5                   //突变量连续起动点数
 #define  QTQDTIME               SAMFREQ             //IA、IB、IC、I0或Ij启动时间,往前推一个周波
 
-//#define DISP_SET_CH_T3	//维护工具&&液晶显示重合闸三次
-//#define	DISP_SET_GL3		//维护工具&&液晶显示过流三段定值&时间
-
 // 开关类型,用于定值显示或隐藏
 // 体现在定值里,即以此顺序由低至高按BIT置1
 #define 	FTU_DLQ		(0x0001)	// FTU断路器型
@@ -138,23 +135,6 @@ enum
 enum
 {
 	GROUP_SET_BY=0,			// 备用组号,默认为0 ,维护工具判断组号为0 ,默认是展开的,和现在的处理模式不太匹配,定义一个为0的组号,不使用
-#ifdef GW_AREA_MAIN_2021
-	GROUP_SET_GL=1,   	// 过流
-	GROUP_SET_LX,		// 零序
-	GROUP_SET_LY,		// 零压
-	GROUP_SET_HJS,		//后加速
-	
-	GROUP_SET_DTB,		// 分布式
-	GROUP_SET_FA,			// 馈线自动化
-	GROUP_SET_CHZ,		// 重合闸
-	GROUP_SET_TQHZ,		// 合环功能
-	GROUP_SET_OVI,			// 电流越限
-	GROUP_SET_CT,			// ct变比
-	GROUP_SET_JD,			// 接地故障
-	GROUP_SET_RCD_WAVE,		// 录波
-	// GROUP_SET_U0GJ,			// U0告警
-	GROUP_SET_OTHERS,			// 其它
-#else
 
 //线路定值
 	GROUP_SET_BHTT,   			// 保护控制字
@@ -193,38 +173,30 @@ enum
 #ifdef FUNC_DRIVE_JY
 	GROUP_SET_DRIVE,	// 传动功能
 #endif
-#endif
+
 //公共定值
-#ifdef GW_AREA_MAIN_2021
-	GROUP_SET_SCT,
-	GROUP_SET_VOL,			// 电压参数
-	GROUP_SET_OVU,			// 电压越限
-	GROUP_SET_DY,			// 电源有压无压
-	GROUP_SET_PUB_DLYX,		//
-	GROUP_SET_OTHERS_PUB,	// 其它
-#else
-	#if defined GD_AREA_ECZD_2020 && !defined GD_AREA_ECZD_SHAOGUAN_2021 //2020二次指导意见 2020-9-9
-		GROUP_SET_SCT,		//定值区
-	#endif
-		GROUP_SET_EQPPARA,		//设备参数
-	#if defined GD_AREA_ECZD_2020 || defined FUNC_LINE_SEL_TY_SEL
-		GROUP_SET_PUBTT,		//控制字
-		GROUP_SET_PUBYB,		//软压板
-	#endif
-	#ifdef BH_FA_INONE_PUBLIC
-		GROUP_SET_FUNC, 		//功能选择部分
-	#endif
-		GROUP_SET_PUBSET,			//电压参数
-		GROUP_SET_FDL,			//非电量
-	#ifdef FUNC_XDLJD_PUB
-		#ifdef FUN_JDXX
-			GROUP_SET_JDXX, 		// 接地选线 
-		#endif
-	#endif
-	#ifdef DZ_STANDBY
-		GROUP_SET_STANDBY,	//备用定值
+#if defined GD_AREA_ECZD_2020 && !defined GD_AREA_ECZD_SHAOGUAN_2021 //2020二次指导意见 2020-9-9
+	GROUP_SET_SCT,		//定值区
+#endif
+	GROUP_SET_EQPPARA,		//设备参数
+#if defined GD_AREA_ECZD_2020 || defined FUNC_LINE_SEL_TY_SEL
+	GROUP_SET_PUBTT,		//控制字
+	GROUP_SET_PUBYB,		//软压板
+#endif
+#ifdef BH_FA_INONE_PUBLIC
+	GROUP_SET_FUNC, 		//功能选择部分
+#endif
+	GROUP_SET_PUBSET,			//电压参数
+	GROUP_SET_FDL,			//非电量
+#ifdef FUNC_XDLJD_PUB
+	#ifdef FUN_JDXX
+		GROUP_SET_JDXX, 		// 接地选线 
 	#endif
 #endif
+#ifdef DZ_STANDBY
+	GROUP_SET_STANDBY,	//备用定值
+#endif
+
 //装置参数
 	GROUP_PARA_PROTOCAL,	// 规约
 	GROUP_PARA_LINK,		// 级联
@@ -396,228 +368,6 @@ enum
 // 线路定值
 enum
 {
-#ifdef GW_AREA_MAIN_2021
-	SET_BH_TT=0,			// 保护投退
-	//过流保护
-	SET_LABLE_GL,
-	SET_GLZERO_TZ,			// 过流停电跳闸投退
-	SET_GL1_GJ,				// 过流1告警
-	SET_GL1_TZ,				// 过流1跳闸
-	SET_GL1_I,				// 过流1定值
-	SET_GL1_T,				// 过流1时间
-	SET_GL1_PATH,			// 过流1方向
-	SET_GL1_DIR,			// 过流1指向
-
-	SET_GL2_GJ,				// 过流2告警
-	SET_GL2_TZ,				// 过流2跳闸
-	SET_GL2_I,				// 过电流2定值
-	SET_GL2_T,				// 过电流2时间
-	SET_GL2_PATH,			// 过流2方向
-	SET_GL2_DIR,			// 过流2指向
-	
-	SET_GL3_GJ,				// 过流3告警
-	SET_GL3_TZ,				// 过流3跳闸
-	SET_GL3_I,				// 过电流3定值
-	SET_GL3_T,				// 过电流3时间
-	SET_GL3_PATH,			// 过流3方向
-	SET_GL3_DIR,			// 过流3指向
-
-	SET_DL_GJ_TT,			// 短路故障告警投退
-	SET_DL_TZ_TT,			// 短路故障跳闸投退
-	SET_DL_I,				// 短路电流定值
-	SET_DL_T,				// 短路电流时间
-	
-	SET_BSTZ_TT,			// 闭锁分闸电流,在负荷开关情况下使用(遮断电流闭锁)
-	SET_BSTZ_I,				// 闭锁分闸电流,在负荷开关情况下使用
-
-	//零序保护
-	SET_LABLE_LX,
-	SET_XDLGJ_TT,			// 小电流接地告警
-	SET_XDLTZ_TT,			// 小电流接地跳闸
-	SET_XDLSG_TT,			// 小电流接地事故总
-	SET_XDL_I,				// 小电流暂态电流
-	SET_XDL_T,				// 小电流跳闸时间
-	SET_XDL_GT,				// 小电流告警时间
-	SET_LXPOLAR_TT,			// 零序电流反极性投退
-
-	SET_LX1_GJ,				// 零序I段告警
-	SET_LX1_TZ,				// 零序I段跳闸
-	SET_LX1_I,				// 零序I段电流
-	SET_LX1_T,
-	
-	SET_LX2_GJ,				// 零序2段告警
-	SET_LX2_TZ,				// 零序2段跳闸
-	SET_LX2_I,				// 零序II段电流
-	SET_LX2_T,
-
-	SET_LX3_GJ,				// 零序3段告警
-	SET_LX3_TZ,				// 零序3段跳闸
-	SET_LX3_I,				// 零序III段电流
-	SET_LX3_T,
-
-	SET_LX_GJ_TT,			// 零流告警投退
-	SET_LX_TZ_TT,			// 零流跳闸投退
-	SET_LX_I,				// 零流告警定值
-	SET_LX_T,				// 零流告警时间
-
-	//零压保护
-	SET_LABLE_LY,
-	SET_LY_GJ_TT,			// 零压告警投退
-	SET_LY_TZ_TT,			// 零压跳闸投退
-	SET_LY_T,				// 零压告警时间
-
-	//后加速
-	SET_LABLE_HJS,
-	SET_GLJS_TT,			// 过流加速投退
-	SET_GLJS_I,				// 过电流加速定值
-	SET_GLJS_T,				// 过电流加速时间
-	
-	SET_LXJS_TT,			// 零序电流加速投退
-	SET_LXJS_I,				// 零序电流加速定值
-	SET_LXJS_T,				// 零序电流加速时间
-
-	SET_LYJS_TT,			// 零压加速投退
-	SET_LYJS_U,				// 零序电压加速定值
-	SET_LYJS_T,				// 零序电压加速时间
-	SET_JS_BH_T,			// 加速段保护开放时间
-
-	//重合闸
-	SET_LABLE_CHZ,
-	SET_CH_TT,				// 重合闸投退
-	SET_CH2_TT,				// 多次重合闸投退
-	SET_CH_TN,              // 非一次重合闸时间
-	SET_CH_T1,              // 一次重合闸时间
-	SET_CH_T2,              // 二次重合闸时间
-	SET_CH_T3,              // 三次重合闸时间
-	SET_CHBS_T,				// 重合闸闭锁时间
-	SET_CHOK_T,				// 重合闸确认时间
-	SET_AR_TIMES,			// 重合闸次数
-	SET_TTCH_TT,			// 偷跳启动重合闸
-	SET_CH_DLBS_TT,			// 大电流闭锁重投
-	SET_CH_DLBS_I,		    // 大电流闭锁重投定值
-	SET_CH_CKFS,		    // 重合闸出口方式 0:无检定 1:检一侧有压一侧无压 2:检同期 3:检一侧有压一侧无压+检同期
-	SET_CH_JYY_TT,			// 重合闸检有压投退
-	SET_CH_JYY_T,			// 重合闸检有压等待时间
-
-	//分布式
-	SET_LABLE_DTB,
-	SET_DTB_FAYB_TT,		// 分布式FA压板
-	SET_DTB_FASE_TT,		// 分布式FA隔离功能
-	SET_DTB_FASE_T,			// 分布式FA隔离跳闸延时
-	SET_DTB_FAGL_I,			// 分布式FA过流定值
-	SET_DTB_FAGL_T,			// 分布式FA过流时间
-	SET_DTB_FALX_I,			// 分布式FA零序过流定值
-	SET_DTB_FALX_T,			// 分布式FA零序过流时间
-	SET_DTB_FARE_TT,		// 分布式FA恢复功能
-	SET_AI_SLCD_T,			// 联络自投充电延时
-	SET_AI_SLHZ_T,			// 联络自投合闸延时
-	SET_DTB_OV_TT,			// 过载预判
-	SET_DTB_OV_I,			// 过载负荷限值
-	SET_DTB_FAPU_TT,		// 检线路有压投退(FA)
-	SET_DTB_POWER_U,		// 有压定值(FA)
-	SET_DTB_DOWN_U,			// 无压定值(FA)
-	SET_FA_LOSTU_TT,		// 首开关失压保护
-	SET_FA_LOSTU_T,			// 首开关失压跳闸延时
-	SET_LOSTU_GL_TT,		// 失压经过流闭锁投退
-	SET_LOSTU_GL_T,			// 过流闭锁记忆时间
-	SET_DTB_FAIL_TT,		// 失灵保护投退
-	SET_DTB_FAIL_T,			// 失灵判断延时
-	SET_DTB_NOCU_I,			// 无流定值
-
-
-	//就地馈线自动化
-	SET_LABLE_FA,
-	SET_FA_TT,				// 就地馈线自动化投退	
-	SET_FA_TYPE,			// 就地馈线自动化选型
-	SET_SL_F,				// 分段分界选择 : 0=分段联络 1=分界
-	SET_S_L,				// 联络分段模式 : 0=分段 1=联络
-	SET_FTU_TT,
-	SET_AUTOGL_TT,
-	SET_AUTOLX_TT,
-	SET_X_T,				// X时限
-	SET_Y_T,				// Y时限
-	SET_C_T,
-	SET_S_T,
-	SET_XXTZ_T,
-	SET_XXCH_T,
-	SET_LOST_TT,			// 失压投退
-	SET_LOST_T,				// 失压时间
-	SET_LOST_TIMES,			// 失压次数
-	SET_TT_OVERU0,			// 零压分闸投退
-	//合环功能
-	SET_LABLE_TQ,
-	SET_TT_TQ,				// 合环投退
-	SET_TQ_T,				// 合环时间
-	SET_TQ_U,				// 合环压差
-	SET_TQ_ANGLE,			// 合环角差
-	SET_TQ_FREQ,			// 合环频差
-
-	//电流越限
-	SET_LABLE_OVI,
-	SET_OVLOAD_TT,			// 电流重载
-	SET_OV_I,				// 
-	SET_OV_T,				// 
-	SET_DLGZ_TT,			// 电流过载
-	SET_GZ_I,				// 
-	SET_GZ_T,				// 
-
-	SET_DLYX_TT,			// 电流越限
-	SET_DLYX_I,				// 
-	SET_DLYX_T,				// 
-	
-	//CT变比
-	SET_LABLE_CT,
-	SET_CT_ONE,				// 相CT一次值
-	SET_CT_TWO,				// 相CT二次值
-	SET_I0CT_ONE,			// 零序CT一次值
-	SET_I0CT_TWO,			// 零序CT二次值
-	
-	// 接地故障
-	SET_LABLE_JD,
-	SET_JDGZ_TT,			// 间歇性单相接地故障检测
-	SET_JDGZ_ST,			// 间歇性单相接地短延时
-	SET_JDGZ_SNUM,			// 短延时接地故障次数
-	SET_JDGZ_LT,			// 间歇性单相接地长延时
-	SET_JDGZ_LNUM,			// 长延时接地故障次数
-	SET_JDTYPE,				// 系统接地方式
-
-	//录波
-	SET_LABLE_WAVE_RCD,
-	SET_WAVE_GLGZ_TT,		// 过流故障启动录波投退
-	SET_WAVE_XLSY_TT,		// 线路失压启动录波投退
-	SET_WAVE_LXDY_TT,		// 零序电压启动录波投退
-	SET_WAVE_LXGL_TT,		// 零序过流启动录波投退 
-	SET_WAVE_JDGZ_TT,		// 接地故障启动录波投退
-	SET_WAVE_LYTB_TT,		// 零压突变启动录波投退
-	SET_WAVE_LLTB_TT,		// 零流突变启动录波投退
-	SET_WAVE_CHZ_TT,		// 重合闸启动录波投退
-	SET_WAVE_KGBW_TT,		// 开关变位启动录波投退
-	SET_WAVE_DLGZ_TT,		// 短路故障启动录波投退
-	SET_U0_TB,				// 零序电压突变定值
-	SET_I0_TB,				// 零序电流突变定值
-
-	// 其他
-	SET_LABLE_OTHER,
-	SET_CURRENT_INV_TT ,	// 电流取反投退,涉及功率计算和小电流接地判断
-	SET_DIR_AUTO_TT ,		// 方向自适应判断选择投退
-	SET_POWER_V2_TT	,		// 功率计算是否选择第二路电压
-	SET_TT_TWCN,			// 弹簧未储能投退
-	SET_QYD_BS_TT,			// 低气压闭锁投退	
-	SET_YB_TT,				// 软压板投退	
-	SET_HZ_BS_TT,			// 多次分闸闭锁合闸投退
-	SET_FZ_FRE,				// 多次分闸次数
-	SET_FZ_TIME,			// 多次分闸时间
-	SET_2XBCOE,          	// 谐波闭锁制动系数
-	SET_TT_2XB,				// 二次谐波闭锁
-
-	SET_KHJC_TT,			// 控回断线检测
-	SET_KH_TIME,			// 控回检测时间
-
-	SET_TFD_TT,				// 湖南停复电逻辑
-
-	SET_CT_DX_TT,			// CT断线投退
-	SET_CT_DX_T,			// CT断线时间
-#else
 	//过流保护
 	SET_LABLE_BHTT,		//列表名
 #if !defined GD_AREA_ZHONGSHAN && !defined GD_AREA_ECZD_2020 && !defined FUNC_LINE_SEL_TY_SEL	//中山局/河源局将此定值放至公共定值 &&非二次指导意见
@@ -625,17 +375,13 @@ enum
 #endif	
 	SET_GL1_TT,			// 过流1投入
 	SET_GL2_TT,			// 过流2投入
-#ifdef DISP_SET_GL3	
 	SET_GL3_TT,			// 过流3投入
-#endif
 #ifdef GD_AREA_ECZD_SHAOGUAN_2021
 	SET_DLYX_TT,			  // 负荷越限
 #endif
 	SET_GL1_DIR,			// 过流1方向投入
 	SET_GL2_DIR,			// 过流2方向投入
-#ifdef DISP_SET_GL3	
 	SET_GL3_DIR,			// 过流3方向投入
-#endif	
 	SET_BH_PTDX,			// PT断线检查
 #ifdef GD_AREA_ECZD_SHAOGUAN_2021	
 	SET_TT_KZHL,			// 控制回路
@@ -688,10 +434,8 @@ enum
 	SET_GL1_T,				// 过流1时间
 	SET_GL2_I,				// 过流1定值
 	SET_GL2_T,				// 过流2时间
-#ifdef DISP_SET_GL3	
 	SET_GL3_I,				// 过流3定值
 	SET_GL3_T,				// 过流3时间
-#endif
 #ifdef GD_AREA_ECZD_SHAOGUAN_2021
 	SET_DLYX_I,				// 
 	SET_DLYX_T,				// 
@@ -1309,7 +1053,7 @@ enum
 	SET_DRIVE_I0_T, 	//传动零流时间
 	SET_DRIVE_AGAIN_T,	//再次传动时间
 #endif
-#endif
+
 	SET_NUM                 
 };
 
@@ -1317,79 +1061,7 @@ enum
 // 通用定值
 enum 
 {
-#ifdef GW_AREA_MAIN_2021
-	SET_LABLE_EQUSET=0,		//列表名
-	SET_SECTION,			//定值区
-
-	//电压参数
-	SET_LABLE_VOL,
-	SET_POWER_U,			// 线路有压定值, 电源有压无压、上电合闸、失压分闸定值均使用此定值
-	SET_DOWN_U,				// 线路无压定值	   电源无压、失压分闸定值均使用此定值		  // add by zhy 20211209
-	SET_PHLED_U,			// 带电指示定值	   		  								   // add by zhy 20211209
-	SET_PUB_U0_U,			// 零序过压定值    零压闭锁零流及合后零压判断均采用本电压
-	SET_PT1_U,				// PT1断线定值
-	SET_PT2_U,				// PT2断线定值
-	SET_PTDX_GJ_TT,			// PT断线告警投退
-	SET_PTDX_TZ_TT,			// PT断线跳闸投退
-	SET_PTDX_T,				// PT断线检测时间
-
-	//电压越限
-	SET_LABLE_OVU,
-	SET_GDY_TT,				//过电压判断
-	SET_GDY_U,
-	SET_GDY_T,
-	SET_DDY_TT,				// 低电压判断
-	SET_DDY_U,
-	SET_DDY_T,
-	SET_SYGJ_TT,			// 失压告警判断
-	SET_SYGJ_U,
-	SET_SYGJ_T,
-
-	//电源判断
-	SET_LABLE_DY,
-	SET_YY_TT,				// 有压鉴别投退
-	SET_YY_T,				// PT有压延时
-	SET_WY_TT,				// 无压鉴别投退
-	SET_WY_T,				// PT无压延时
-	// SET_PTDX1_TT,			// PT1断线鉴别投退
-	// SET_PTDX1_T,			// PT1断线延时
-	// SET_PTDX2_TT,			// PT2断线鉴别投退
-	// SET_PTDX2_T,			// PT2断线延时
-	SET_FA_POW1,			// FA电源1选择
-	SET_FA_POW2,			// FA电源2选择
-
-	//零压定值
-	// SET_LABLE_U0GJ,
-	// SET_U0GJ_TT,			// 零序过压告警投退
-	// SET_U0GJ_T,				// 零序过压时间
-
-	//电流越限
-	SET_LABLE_PUB_OVI,
-	SET_PUB_TO_SW_TT,			// 同步定值到开关
-	SET_PUB_OVLOAD_TT,			// 电流重载
-	SET_PUB_OV_I,				// 
-	SET_PUB_OV_T,				// 
-	SET_PUB_DLGZ_TT,			// 电流过载
-	SET_PUB_GZ_I,				// 
-	SET_PUB_GZ_T,				// 
-	SET_PUB_DLYX_TT,			// 电流越限
-	SET_PUB_DLYX_I,				// 
-	SET_PUB_DLYX_T,				// 
-
-	// 其他
-	SET_TT_OTHER_PUB,		
-	SET_ZYB_TT,				// 软压板投退 
-	SET_ZBHYB_TT,			// 总保护软压板投退	
-	SET_ZYKYB_TT,			// 总遥控软压板投退
-	SET_TT_GZJD,			// 经高阻接地投退
-	SET_TBLTYPE,			// 小电流突变方式
-	SET_FILTER,				// 小电流信号滤波方式
-	SET_WAVETYPE,			// 小波类型
-	SET_WAVE_ORDER,			// 小波分解阶数
-	SET_HILBERT,			// H 变换
-	SET_PUB_BH_TT,			// 常规保护投退
-#else
-/* 以下为南网相关定值 */
+	//电压参数	
 #if defined GD_AREA_ECZD_2020 && !defined GD_AREA_ECZD_SHAOGUAN_2021//2020二次指导意见 2020-9-8
 	SET_LABLE_SEC_SET=0,		//列表名
 	SET_SECTION,			//定值区
@@ -1622,7 +1294,6 @@ enum
 		CSSET_BY59, 	//备用定值59
 		CSSET_BY60, 	//备用定值60
 	#endif
-	#endif
 #endif
 	SET_PUB_NUM 
 };
@@ -1645,7 +1316,7 @@ enum
 	PARA_101LINKADDR,		// 101链路地址
 	PARA_101APPADDR,		// 101应用地址
 	PARA_101COT,			// 101传送原因
-	PARA_104_Client,			// 104端口	是服务器还是客户端
+	PARA_104_Client,		// 104端口	是服务器还是客户端
 	PARA_104_PORT,			// 104端口	
 	PARA_104_ACK_TIME,		// 104确认超时	
 	PARA_104_TEST_TIME,		// 104测试超时
@@ -1667,7 +1338,7 @@ enum
 	PARA_IP_104LINK8,		// 104级联IP2
 	
 	//串行口通道组
-	PARA_LABEL_SERIAL,			//列表名
+	PARA_LABEL_SERIAL,		//列表名
 	PARA_PROTOCOL_S1,		// 规约类型
 	PARA_BAUD_S1,			// 波特率
 	PARA_PARITY_S1,			// 校验方式
@@ -1680,31 +1351,19 @@ enum
 	PARA_PROTOCOL_S4,		// 规约类型
 	PARA_BAUD_S4,			// 波特率
 	PARA_PARITY_S4,			// 校验方式
-	PARA_PROTOCOL_S5,		// 规约类型
-	PARA_BAUD_S5,			// 波特率
-	PARA_PARITY_S5,			// 校验方式	
-	PARA_PROTOCOL_S6_GPS,	// 规约类型
-	PARA_BAUD_S6_GPS,		// 波特率
-	PARA_PARITY_S6_GPS,		// 校验方式	
+	PARA_PROTOCOL_S5_GPS,   // 规约类型
+	PARA_BAUD_S5_GPS,       // 波特率
+	PARA_PARITY_S5_GPS,     // 校验方式	
+	PARA_PROTOCOL_S6,	    // 规约类型
+	PARA_BAUD_S6,		    // 波特率
+	PARA_PARITY_S6,		    // 校验方式	
 	PARA_PROTOCOL_S7,		// 规约类型
 	PARA_BAUD_S7,			// 波特率
 	PARA_PARITY_S7,			// 校验方式	
-	PARA_PROTOCOL_S8,		// 规约类型
-	PARA_BAUD_S8,			// 波特率
-	PARA_PARITY_S8,			// 校验方式	
-	PARA_PROTOCOL_S9,		// 规约类型
-	PARA_BAUD_S9,			// 波特率
-	PARA_PARITY_S9,			// 校验方式	
-	PARA_PROTOCOL_S10,		// 规约类型
-	PARA_BAUD_S10,			// 波特率
-	PARA_PARITY_S10,			// 校验方式	
-	PARA_PROTOCOL_S11,		// 规约类型
-	PARA_BAUD_S11,			// 波特率
-	PARA_PARITY_S11,			// 校验方式	
-#ifdef FUN_FUXI_ESAM
-	PARA_PROTOCOL_S7_GPS,	// 规约类型
-	PARA_BAUD_S7_GPS,		// 波特率
-	PARA_PARITY_S7_GPS,		// 校验方式	
+#ifdef FUN_FUXI_ESAM 
+	PARA_PROTOCOL_S8_S1,	// 规约类型
+	PARA_BAUD_S8_S1,		// 波特率
+	PARA_PARITY_S8_S1,		// 校验方式	
 #endif
 
 	//以太网通道组
@@ -1743,10 +1402,6 @@ enum
 #endif	
 	PARA_GATE_NET,			// 网关
 
-	//卫星模块组
-	// PARA_LABEL_STATELLITE,	
-	// PARA_STATELLITE_MODE,	// 卫星模块工作模式 
-
 	//对时组
 	PARA_LABEL_TIME,		//列表名
 	PARA_TIMETYPE,			// 对时方式
@@ -2043,15 +1698,6 @@ typedef struct NET_PARA
 
 typedef struct OC_SET
 {
-#ifdef GW_AREA_MAIN_2021
-	DWORD   dIgl;        			// 过流定值
-	DWORD   dIgl_fh;        		// 过流定值返回值
-	DWORD   dTgl;         			// 过流时间
-	bool	bTT_Tz;					// 跳闸
-	bool 	bTT_Gj;					// 告警
-	bool	bTT_Path;				// 方向
-	bool 	bTT_Dir;				// 指向
-#else
 	DWORD   dI;        			//越限定值
 	DWORD   dI_fh;        		//越限定值返回值
 //#ifdef GD_AREA_ECZD_2020
@@ -2065,7 +1711,6 @@ typedef struct OC_SET
 	bool	bTz;			// 跳闸
 	bool 	bGj;				// 告警
 	bool    bDir;		//方向投入
-#endif
 }OC_SET;
 
 
@@ -2102,136 +1747,11 @@ typedef struct GOC_SET                //
 #endif
 }GOC_SET;
 
-typedef struct VOL_SET
-{
-	DWORD   dUVol;				// 电压定值
-	DWORD   dUVol_fh;			// 电压定值返回
-	DWORD	dTVol;			
-	bool    bTT;
-	bool    bTz;
-}VOL_SET;
+
 
 
 typedef struct TSETSW
 {
-#ifdef GW_AREA_MAIN_2021
-
-	OC_SET	tOcSet[OC_NUMBER];
-	VOL_SET tU0Set;						//零压定值
-
-	DWORD	dTCH[MAX_AR_TIMES];     	//重合1时间
-	DWORD   dTCHBS;              		//重合闸闭锁时间
-	DWORD   dTCHOK;              		//重合闸确认时间
-	DWORD   dTCHZK;              		//重合闸加速展宽时间
-	DWORD   dARTimes;				//重合闸次数
-	DWORD   dCKModes;				//重合闸出口方式
-	bool    bTT_GZBSCH;				// 大电流闭锁重合
-	DWORD   dICH;        			// 大电流闭锁重合定值
-	DWORD   dICH_fh;        		// 大电流闭锁重合返回值
-
-	bool    bTT_xdlgj;				// 小电流接地告警
-	bool    bTT_xdltz;				// 小电流接地跳闸
-	bool    bTT_xdlsg;				// 小电流接地事故总
-	DWORD	dI_xdl;					// 小电流接地电流
-	float 	dT_xdl_T;				// 小电流跳闸时间			modify by zhy 20220322
-	float 	dT_xdl_GT;				// 小电流告警时间			add by zhy 20220322
-	DWORD	dI_xdl_fh;				// 小电流接地返回电流
-	DWORD	dI_xdl_zt;				// 小电流接地暂态电流
-	DWORD	dT_xdl_hjs;     		// 小电流零压后加速时间
-#if (defined RECORD_SW_U0TB)
-	DWORD 	dU_xdl_u0TB;      		// 小电流零压突变定值
-	DWORD 	dU_xdl_u0TB_fh;			// 小电流零压突变返回定值
-#endif
-
-	bool    bTT_lxpolar;				// 零序电流反极性投退
-
-	bool 	bTT_FA;					// 就地FA功能投退
-	bool 	bSW_F;					// 分界功能
-	bool 	bSW_L;					// 开关分段、联络选择 ==0为分段,默认
-	bool 	bFA_VI;				//电压时间
-	bool 	bFA_VIT;				//电压电流型
-	bool 	bFA_auto;				//自适应型	
-	u8		FA_type;	
-	
-	bool		bFTU;					//首端FTU
-	bool        bauto_gl;
-	bool        bauto_lx;
-
-	DWORD	dT_X;					// X时间	
-	DWORD	dT_Y;					// Y时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
-	DWORD	dT_C;					// C时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
-	DWORD	dT_S;					// S时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
-	//DWORD	dT_Z;				// W时间,用于合后故障确认
-	DWORD   dT_xxtz;
-	DWORD   dT_xxch;
-	DWORD dIHH_GL;	//合后故障电流
-	DWORD dIHH_GLfh;
-	
-	
-
-	bool		bTT_LostVot;			// 失压分闸投退
-	DWORD	dlvTimes;				//失压次数
-	DWORD	dTlostvot;      			// 失压时间
-
-
-	bool		bTT_OverU0;				// 合后接地故障  零序过压投退
-	bool		bTT_BSHH;				// 合环闭锁功能	
-	bool		bTT_TQ;					// 合环
-	DWORD	dT_TQ;					// 合环时间
-	DWORD	dTQ_U_FZ;				// 合环压差
-	DWORD	dTQ_U_FZ_fh;			// 合环压差返回值
-	qs16	dTQ_ANGLE_FZ;			// 合环角差
-	qs16	dTQ_FREQ_FZ;			// 合环频差		
-
-
-	DWORD   dCT1;					//CT一次值
-	DWORD	dCT2;					//CT二次值
-	DWORD   dI0CT1;					//零序CT一次值
-	DWORD	dI0CT2;					//零序CT二次值
-
-	u8		CTDX_type;				// CT断线类型
-	DWORD	dCTDX_T;				// CT断线时间  
-
-	bool	bTT_InterJd;			// 间歇性单相接地故障投退
-	DWORD	dTJDSTimes;				// 间歇性单相接地故障短延时
-	DWORD	dNJDSNum;      			// 短延时单相接地故障次数
-	DWORD	dTJDLTimes;				// 间歇性单相接地故障长延时
-	DWORD	dNJDLNum;      			// 长延时单相接地故障次数
-	
-	WORD	dJDTYPE;				// 系统接地方式
-
-	bool 	bTT_BH;					// 保护总投退
-	bool 	bTT_TzZero;				//无压无流跳闸	
-	bool		bTT_CHZ;				// 重合闸
-	bool		bTT_TTCH;				// 偷跳启动重合
-	bool    	bTT_WCN;				// 弹簧未储能告警投退	
-
-	
-	bool    	bTT_Current_Inv;		// 电流取反投退,涉及功率计算和小电流接地判断
-	bool    	bTT_Dir_Auto;			// 方向自适应判断 投退
-	bool    	bTT_Power_v2;			// 功率计算是否选择第二路电压
-	bool		bTT_QYD_BS;				// 气压低闭锁
-	bool		bTT_YB;					// 遥控软压板
-	bool		bTT_HZ_BS;				// 多次分闸闭锁合闸投退
-	DWORD   	dFZNum;					// 多次分闸次数
-	DWORD   	dFZTimes;				// 多次分闸时间
-
-	bool		bTT_KH_JC;				// 控回断线检测投退
-	DWORD   	dKHJCTimes;				// 控回检测时间
-
-	DWORD   dXBCOE;					// 谐波系数
-	bool	bTT_2XBBS;				// 二次谐波制动
-
-	bool	bTT_TFD;				// 湖南停复电逻辑投退
-	
-	bool	bTT_rcd_type[RECORD_TYPE_NUM];	//录波投退项
-
-	DWORD 	dU_u0TB;      			// 零压突变录波定值
-	DWORD 	dU_u0TB_fh;				// 零压突变录波返回定值
-	DWORD 	dI_i0TB;      			// 零流突变录波定值
-	DWORD 	dI_i0TB_fh;				// 零流突变录波返回定值
-
-#else
 
 	OC_SET   toc[BHOC_NUMBER];
 	GOC_SET tGocSet;			// goose 过流
@@ -2518,48 +2038,20 @@ typedef struct TSETSW
 	DWORD dT_fz_end;	//结束传动时间
 	DWORD dT_hz_end;	//合闸结束传动时间
 #endif
-
-#endif
 }TSETSW;
 
+typedef struct VOL_SET
+{
+	DWORD   dUVol;				// 电压定值
+	DWORD   dUVol_fh;			// 电压定值返回
+	DWORD	dTVol;			
+	bool        bTT;
+}VOL_SET;
 
 //保护定值结构
 typedef struct TSET
 {	
-#ifdef GW_AREA_MAIN_2021
-	// VOL_SET tVolSet[VOL_NUMBER];		//电压定值 含 过电压、低电压、电源有压,电源无压 U0告警
-	VOL_SET tPTSet;						//PT断线
-	
-	WORD  	wPwr1Sel;				//Power1 选择
-	WORD  	wPwr2Sel;				//Power2 选择
-	DWORD	dOverU0;
-	DWORD	dOverU0_fh;
-
-	DWORD	dUPower;				// 上电合闸电压定值
-	DWORD	dUPower_fh;				// 上电合闸返回值为定值的0.9倍
-	DWORD	dUPowerLost;			// 失压分闸返回值为定值的1.1倍		
-	DWORD	dUPowerLost_fh;			// 失压分闸返回值为定值的1.1倍	
-	DWORD	dUPowerFz;				// 有压定值幅值
-	DWORD	dUPowerFz_fh;			// 有压定值幅值返回值为定值的0.9倍	
-	
-	DWORD	dU0Jxjd;				//间歇接地 电压定值
-	DWORD	dU0Jxjd_fh;				//间歇接地 返回值为定值的0.9倍
-
 
-	bool	bTT_ZYB;				// 总软压板
-	bool	bTT_ZBHYB;				// 保护总软压板
-	bool	bTT_ZYKYB;				// 遥控总软压板
-
-	bool	bTT_GZJD;				// 经高阻接地投退
-	WORD	bTT_TBLTYPE;			// 小电流突变方式
-	WORD	bTT_FILTER;				// 小电流信号滤波方式
-	BYTE	bTT_WAVE[8];			// 小波类型
-	WORD	bTT_WAVE_ORDER;			// 小波分解阶数
-	bool	bTT_HILEBERT;			// H 变换
-	bool	bTT_PUB_BH;				// 常规保护
-
-	bool 	bTT_PUB_SET_TO_SW;		// 同步公共定值到开关
-#endif
 	u8  section;  //定值区
 	float  ct_one; //保护ct一次值
 	float  ct_two;//保护ct二次值
@@ -2607,12 +2099,6 @@ typedef struct TSET
 #ifdef	CUSTOMIZE_BZT //备自投	
 	VOL_SET tVolLostSet;
 #endif	
-#ifdef GW_AREA_MAIN_2021
-	bool	bTT_GLBSCH;			// 过负荷闭锁重合
-	bool    bTT_LXBSCH;				// 零序闭锁重合	
-	bool    bTT_LYBSCH;				// 零压闭锁重合
-#endif
-
  	float		fFZLBXS;			// 幅值滤波系数
  	DWORD  	dTBLValue[SWITCH_NUM_MAX];// 突变量定值
 	DWORD 	dIWL_SQR[SWITCH_NUM_MAX];// 无流定值
@@ -2747,11 +2233,9 @@ typedef struct TSET
 	bool bKG2_DP_DELTAF;	//低频滑差闭锁投 =1投入 =0 退出
 	DWORD dU_U0BS;
 	DWORD dU_DDYBS;
-#ifndef GW_AREA_MAIN_2021
 	bool bTT_FDLTz[8];		//非电量保护
 	bool bTT_FDLGj[8];		//非电量保护
 	DWORD dTFDL[8];		//非电量保护
-#endif
 #ifdef XDL_ZT
 	bool    bTT_xdl;				// 小电流接地投入,只要任一线路小电流接地投入就投入
 	DWORD 	dU_xdl_u0[2];      		// 小电流零压定值
@@ -2815,8 +2299,6 @@ volatile	DWORD 	ip104Link[CFG_LINK_104_NUM];		// 104
 	SERIAL_PARA	tUartPara[CFG_UART_NUM_MAX];		//串口参数
 	NET_PARA	tNetPara[CFG_ETH_MAX_LOGIC];	//逻辑网络参数
 	
-	WORD 	GPS_Mode;		// 卫星模块工作模式
-
 	bool    bGPS;			// 对时方式
 
 	DWORD	dTBatBegin;		// 电池活化启动时间

+ 113 - 147
dtu/dtu_main_t536/app/switch.c

@@ -41,7 +41,6 @@ int 		g_ui_angle0;	// 
 int  		g_prot_index;	// 保护计算时,采样通道中采样点的索引
 
 struct sw g_sw[SWITCH_NUM_EXT];	// 开关综合结构
-struct sw_t g_sw_temp[SWITCH_NUM_EXT];	// 临时数据结构
 struct sw_public g_sw_pub;		// 开关公共部分综合结构
 
 int g_mea_cnt = 0;	// 测量计数
@@ -55,116 +54,100 @@ float g_harmonic_factor[CFG_ADC_DOTS_PER_PERIOD/2] =
 };
 
 // 开关开入名称
-const s8 * g_sw_di_name[SW_DI_NUM] =
+const s8 *g_sw_di_name[SW_DI_NUM] =
 {
-	"合位开入",  // 1
-	"分位开入",// 2
-	"隔离刀闸",  // 3
-	"接地刀闸",  // 4
-#ifdef DISP_DOUBLE_CN
-	"弹簧未储能",  // 5
-	"弹簧已储能",  // 5
+    "合位",       // 1
+    "分位",
+    "弹簧未储能",
+    "弹簧已储能",
+    "隔离刀合位", // 5
+    "隔离刀分位",
+    "接地刀合位",
+    "接地刀分位",
+    "气压低告警",
+    "气压低闭锁", // 10
+    "HQ开入",
+    "TQ开入",
+    "电源侧瞬压",
+    "负荷侧瞬压",
+    "母线侧硬件残压", // 15
+    "线路侧硬件残压",
+    "手动合闸",
+    "手动分闸",
+    "自动化投入",
+    "常规保护",
+    "重合闸投入",
+    "重合闸停用",
+    "馈线自动化",
+    "智能分布式",
+    "联络/分段模式",
+    "开关远方",
+#if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020 // 2020指导意见使用停用FA及保护
+    "同期停用",
 #else
-	"弹簧储能位",  // 5
-#endif	
-	"气压低",			  // 6
-	"HQ开入",  // 7
-	"TQ开入",	  // 8
-	"电源侧瞬压",  // 9
-	"负荷侧瞬压",  // 10
-	"手动合闸",  // 11
-	"手动分闸",  // 12
-//#ifdef GD_AREA_ECZD_2020//2020指导意见使用停用FA及保护
-#if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020//2020指导意见使用停用FA及保护
-	"停用FA及保护",
-#else
-	"保护总功能投入",
+    "同期投入",
 #endif
-
+    "控制回路断线",
+    "合闸回路监视",
+    "分闸回路监视",
+    "分闸出口压板状态",
+    "合闸出口压板状态",
+    "脉冲计数1",
+    "脉冲计数2",
+    "就地FA闭锁",
 #ifdef GD_AREA_MAIN_2020
-    "常规保护压板", //13
-    "重合闸投入压板",  // 14
-    "馈线自动化压板",  // 15
-    "智能分布式压板",  // 16
-#elif defined GD_AREA_ECZD_2020 && !defined GD_AREA_ZHONGSHAN_2020
-	"常规保护压板", //13
-	"重合闸投入压板",  // 14
-	"常规FA压板",  // 15
-	"智能分布式FA压板",  // 16
+    "自动解列停用",
 #else
-	"常规保护压板", //13
-	"重合闸投入压板",  // 14
-	"就地FA压板",  // 15
-	"智能FA压板",  // 16
+    "自动解列投入",
 #endif
 
-	"联络/分段模式",  // 17
-	"开关远方",  // 18
-	"闭锁重合闸",  // 19
-//#ifdef GD_AREA_ECZD_2020
-#if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020//2020指导意见使用停用FA及保护
-	"停用同期压板",  // 20
+#ifdef TYTQ_DI_YB
+    "停用检同期",
 #else
-	"同期压板",  // 20
+    "开入1",
 #endif
-	"控制回路断线", // 21
-	"脉冲计数1",  // 22
-	"脉冲计数2",  // 23	
-	"就地FA闭锁压板",//"开入8",// 31
-#ifdef GD_AREA_ECZD_2020//2020指导意见使用停用解列压板
-	"停用自动解列功能压板",
-#elif defined GD_AREA_MAIN_2020
-    "停用解列功能压板",
-#else
-	"频率电压解列压板",
-#endif
-
-	#ifdef TYTQ_DI_YB
-    "停用检同期压板",     // 24
-    #else
-	"开入1",     // 24
-    #endif	
 
 #ifdef JZS_FUNCTION
-	"集中式投退压板",	//
+    "集中式",
 #else
-	"开入2",		// 25
-#endif	
+    "开入2",
+#endif
 
 #ifdef DO_KOUT_CHECK
-	"开出自检",
+    "开出自检",
 #else
-	"开入3",// 26
+    "开入3",
 #endif
-//#ifdef GD_AREA_ZHUHAI_V2
-#if	defined GD_AREA_ZHUHAI_V2 || defined GD_AREA_JIEYANG || defined GD_AREA_LIAONING_2021
-	"对侧开关位置",
+// #ifdef GD_AREA_ZHUHAI_V2
+#if defined GD_AREA_ZHUHAI_V2 || defined GD_AREA_JIEYANG || defined GD_AREA_LIAONING_2021
+    "对侧开关位置",
 #else
-	"开入4",// 27
+    "开入4",
 #endif
-	
-	"安全自动控制压板",
+
+    "安全自动化控制",
 #ifdef BS_FAL_DI_YB
-	"闭锁FA联络压板",
+    "闭锁FA联络",
 #endif
 
-#ifdef	CUSTOMIZE_BZT //备自投
-	"备自投开入",
-	"#1进线合位开入",
-	"#1进线分位开入",
-	"#2进线合位开入", 	
-	"#2进线分位开入",
-	"备自投-合位开入",
-	"备自投-分位开入",
-	"闭锁备自投",	
-	"备自投-失压分闸"
+#ifdef CUSTOMIZE_BZT // 备自投
+    "备自投",
+    "#1进线合位",
+    "#1进线分位",
+    "#2进线合位",
+    "#2进线分位",
+    "备自投-合位",
+    "备自投-分位",
+    "闭锁备自投",
+    "备自投-失压分闸"
 #endif
 #ifdef GD_AREA_ECZD_QINGYUAN_2022
-	"保护合闸出口",
-	"保护跳闸出口",
-	"遥控/电动合闸",
-	"遥控/电动分闸",
+    "保护合闸出口",
+    "保护跳闸出口",
+    "遥控/电动合闸",
+    "遥控/电动分闸",
 #endif
+    "带电显示器有压",
 };
 
 // 开关开出名称
@@ -230,12 +213,7 @@ const s8 * g_sw_led_name[SW_LED_NUM]=
 	"YT灯",
 	"动作灯",
 	"重合闭锁灯",
-#ifdef DISP_DOUBLE_CN
 	"未储能灯",
-	"已储能灯",
-#else
-	"储能灯",
-#endif	
 	"联络灯",
 	"分段灯",
 	"重合+FA闭锁灯",
@@ -288,10 +266,6 @@ const s8 * g_sw_led_name[SW_LED_NUM]=
 #ifdef FUNC_DRIVE
 	"开关传动灯",
 #endif
-
-#ifdef GW_AREA_MAIN_2021
-	"线路故障灯",
-#endif
 };
 
 // 开关模拟量名称
@@ -353,7 +327,6 @@ const struct mea_desc g_sw_ac_desc[SW_AC_NUM_ALL] =
 	{"CI_UNB",UNIT_Per,UNIT_NULL},
 	{"脉冲计数1",UNIT_GE,UNIT_NULL},
 	{"脉冲计数2",UNIT_GE,UNIT_NULL},
-#ifndef GW_AREA_MAIN_2021
 	{"速断电流定值",UNIT_NULL,UNIT_NULL}, 
 	{"速断保护时间",UNIT_NULL,UNIT_NULL}, 
 	{"过流电流定值",UNIT_NULL,UNIT_NULL}, 
@@ -366,7 +339,7 @@ const struct mea_desc g_sw_ac_desc[SW_AC_NUM_ALL] =
 	{"得电闭合时间",UNIT_NULL,UNIT_NULL}, 
 	{"无压分闸闭锁时间",UNIT_NULL,UNIT_NULL}, 
 	{"工作模式",UNIT_NULL,UNIT_NULL}, 	
-#endif
+
 #ifdef METERING_ENERGY
 	{"计量UAB",UNIT_V220,UNIT_NULL},	// yc 17
 	{"计量UBC",UNIT_V220,UNIT_NULL},
@@ -465,54 +438,51 @@ const struct mea_desc g_dd_desc[SW_DD_NUM_ALL]=
 };
 
 // 开关公共开入名称
-const s8 * g_pub_di_name[PUB_DI_NUM] =
+const s8 *g_pub_di_name[PUB_DI_NUM] =
 {
-	"远方",					//  1
-	"就地",					//  2
-	"柜门位置",				//  3
-	"信号复归",				//  4
-	"交流失电告警",		// 5
-	"电池电源故障",		// 6
-	"电池欠压",				// 7
-	"电池活化状态",		// 8
-	"电容器动作",			// 9
-	"FA解锁",					// 10
-	"装置复位",       			//  11
-	"功能总压板",     		//  12
-//#ifdef GD_AREA_ECZD_2020
+    "远方",
+    "就地",
+    "柜门打开",
+    "复归信号",
+    "交流失电",
+    "电源模块故障",
+    "电池欠压",
+    "电池活化状态",
+    "电容器动作",
+    "FA解锁",
+    "装置复位",
+    "功能总压板",
 #if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020
-	"检修状态压板",			//	13
+    "检修状态压板",
 #else
-	"遥信屏蔽压板",   		//  13
-#endif	
-#ifndef GW_AREA_MAIN_2021
-	"非电量1开入",    		//  14
-	"非电量2开入",   		// 15 
-	"非电量3开入",   		 // 16 
-	"非电量4开入",    		// 17 
-	"非电量5开入",    		// 18 
-	"非电量6开入",    		// 19 
-	"非电量7开入",    		// 20
-	"非电量8开入",			//  21
+    "遥信屏蔽压板",
 #endif
-	"开入1",          				//  22
-	"开入2",          				//  23
-	"开入3",          //  24
-	"开入4",          // 25 
-	"开入5",          // 26 
-	"开入6",          // 27 
+    "非电量1",
+    "非电量2",
+    "非电量3",
+    "非电量4",
+    "非电量5",
+    "非电量6",
+    "非电量7",
+    "非电量8",
+    "开入1",
+    "开入2",
+    "开入3",
+    "开入4",
+    "开入5",
+    "开入6",
 #ifdef YX_DI_ERROR
-	"遥信自检",
+    "遥信自检",
 #else
-	"开入7",          // 28 
+    "开入7",
 #endif
 
-#ifdef KZ_OUT_TT	
-	"控制出口压板",
+#ifdef KZ_OUT_TT
+    "控制出口压板",
 #else
-	"开入8",          // 29 
+    "开入8",
 #endif
-	"信号复归+FA解锁",          // 30
+    "信号复归+FA 解锁",
 };
 
 // 开关公共开出名称
@@ -539,10 +509,8 @@ const s8 * g_pub_do_name[PUB_DO_NUM] =
 #ifdef YK_FG_FAJS
 	"远方复归&FA解锁",	// 远方复归+FA解锁
 #endif
-#ifndef GW_AREA_MAIN_2021
 	"重合软压板合",
 	"重合软压板分",
-#endif
 #if defined BHFA_YB_YK || defined BHFAGS_YB_YK
 	//#ifdef GD_AREA_ECZD_2020
 	#if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020
@@ -565,7 +533,6 @@ const s8 * g_pub_do_name[PUB_DO_NUM] =
 		#endif
 	#endif
 #else
-	#ifndef GW_AREA_MAIN_2021
     //#ifdef GD_AREA_ECZD_2020
     #if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020
 	"停用保护总软压板合",
@@ -576,7 +543,6 @@ const s8 * g_pub_do_name[PUB_DO_NUM] =
 	#endif
 	"保护投入软压板合",
 	"保护投入软压板分",
-	#endif
 #endif
 #ifdef TQ_SOFT_YB
     #if defined GD_AREA_ECZD_2020 || defined GD_AREA_MAIN_2020
@@ -683,11 +649,6 @@ const s8 * g_pub_led_name[PUB_LED_NUM]=
 #ifdef	LINK_ERR_LED
 	"级联异常灯",
 #endif
-#ifdef GW_AREA_MAIN_2021
-	"A相指示灯",
-	"B相指示灯",
-	"C相指示灯",
-#endif
 };
 
 // 开关公共模拟量名称
@@ -1514,7 +1475,7 @@ int sw_do(u32 sw,u32 index,int type)
 
 	// 气压低闭锁分合闸
 	if(pRunSet->tSwSet[sw].bTT_QYD_BS 
-		&& (g_sw[sw].di[SW_DI_QYD] == SW_DI_TYPE_ON)
+		&& (g_sw[sw].di[SW_DI_QYD_BS] == SW_DI_TYPE_ON)
 		&& (index == SW_DO_HZ || index == SW_DO_FZ||index == SW_DO_YKH||index == SW_DO_YKT||index ==SW_DO_BHH||index ==SW_DO_BHT))
 	{
 		return -2;
@@ -2456,7 +2417,8 @@ int sw_auto_adjust(int ui_angle0)
 		{
 			factor_p_c_set(g_equ_config_ac[cfg_index].slot,g_equ_config_ac[cfg_index].index,factor);
 		}
-		
+
+#if defined TMP_CHIP_DS18B20 || defined TMP_CHIP_GX21M15 || defined TMP_CHIP_AHT20
 		// 保存校正温度和基准值
 		factor_temp_set(g_equ_config_ac[cfg_index].slot,
 					#if defined TMP_CHIP_DS18B20
@@ -2467,6 +2429,8 @@ int sw_auto_adjust(int ui_angle0)
 							aht20_get_temp()
 					#endif						
 						);
+#endif
+
 		if(i < PUB_AC_NUM)
 		{
 			base_v = baseValue;
@@ -4673,6 +4637,7 @@ int sw_ui_temp(void)
 	int i;
 	float t;
 
+#if defined TMP_CHIP_DS18B20 || defined TMP_CHIP_GX21M15 || defined TMP_CHIP_AHT20
 	rt_printf("温度校正系数[当前温度:%f]:\r\n",
 #if defined TMP_CHIP_DS18B20		
 		ds18b20_get_temp()
@@ -4682,6 +4647,7 @@ int sw_ui_temp(void)
 		aht20_get_temp()
 #endif		
 		);
+#endif	
 	
 	for(i=0; i<EQU_SLOT_AC_NUM;i++)
 	{

+ 104 - 128
dtu/dtu_main_t536/app/switch.h

@@ -50,84 +50,90 @@ enum
 
 enum
 {
-	SW_DI_KRHW = 0,	// 合位
-	SW_DI_KRTW,		// 跳位
-	SW_DI_GLDZ1,		// 隔离刀闸
-	SW_DI_JDDZ,		// 接地刀闸
-	SW_DI_CN,		// 弹簧未储能	
-#ifdef DISP_DOUBLE_CN
-	SW_DI_YCN,		// 弹簧已储能
-#endif
-	SW_DI_QYD,		// SF6气压低
-	SW_DI_TZWZ,
-	SW_DI_HZWZ,
-	SW_DI_PT1SY,	// PT1瞬压
-	SW_DI_PT2SY,	// PT2瞬压
-	SW_DI_SH,		// 手动合闸
-	SW_DI_SF,		// 手动分闸
-	SW_DI_BHZTT,	// 保护总功能投退压板
-	SW_DI_BHTT,		// 常规保护投退压板
-	SW_DI_CHZ,		// 重合闸压板
-	SW_DI_FA_TT,		// 就地FA压板
-	SW_DI_FA_GOOSE,	//智能FA压板
-	SW_DI_FA_LS,
-	SW_DI_KGYF, 	// 开关远方
-	SW_DI_BSCH, 	// 闭锁重合闸开入
-	SW_DI_TQ, 	// 同期压板
-	SW_DI_KZDX, //控制回路断线
-	SW_DI_IMP1,
-	SW_DI_IMP2,	// 23
-	SW_DI_FA_BS_TT,//就地FA闭锁压板//SW_DI_31,
-	SW_DI_FREQ_VOL,	//频率电压解列功能投入
+    SW_DI_KRHW = 0, // 合位
+    SW_DI_KRTW,     // 分位
+    SW_DI_WCN,      // 弹簧未储能
+    SW_DI_YCN,      // 弹簧已储能
+    SW_DI_GLDZ_HW,  // 隔离刀合位
+    SW_DI_GLDZ_FW,  // 隔离刀分位
+    SW_DI_JDDZ_HW,  // 接地刀合位
+    SW_DI_JDDZ_FW,  // 接地刀分位
+    SW_DI_QYD_GJ,   // SF6气压低告警
+    SW_DI_QYD_BS,   // SF6气压低闭锁
+    SW_DI_TZWZ,     // 跳闸位置
+    SW_DI_HZWZ,     // 合闸位置
+    SW_DI_PT1SY,    // 电源侧瞬压
+    SW_DI_PT2SY,    // 负荷侧瞬压
+    SW_DI_YJCY_A,   // 母线侧硬件残压
+    SW_DI_YJCY_B,   // 线路侧硬件残压
+    SW_DI_SH,       // 手动合闸
+    SW_DI_SF,       // 手动分闸
+    SW_DI_BHZTT,    // 自动化投入
+    SW_DI_BHTT,     // 常规保护
+    SW_DI_CHZ,      // 重合闸投入
+    SW_DI_BSCH,     // 重合闸停用
+    SW_DI_FA_TT,    // 馈线自动化
+    SW_DI_FA_GOOSE, // 智能分布式
+    SW_DI_FA_LS,    // 联络/分段模式
+    SW_DI_KGYF,     // 开关远方
+    SW_DI_TQ,       // 同期
+    SW_DI_KZDX,     // 控制回路断线
+    SW_DI_HZHLJS,   // 合闸回路监视
+    SW_DI_FZHLJS,   // 分闸回路监视
+    SW_DI_YB_FZ,    // 分闸出口压板状态
+    SW_DI_YB_HZ,    // 合闸出口压板状态
+    SW_DI_IMP1,     // 脉冲计数1
+    SW_DI_IMP2,     // 脉冲计数2
+    SW_DI_FA_BS_TT, // 就地FA闭锁
+    SW_DI_FREQ_VOL, // 自动解列
 #ifdef TYTQ_DI_YB
-    SW_DI_TYTQ,   //停用检同期
+    SW_DI_TYTQ, // 停用
 #else
-	SW_DI_24,           //开入1
+    SW_DI_24, // 开入1
 #endif
 
 #ifdef JZS_FUNCTION
-	SW_DI_JZS_TT,	//集中式投退压板
+    SW_DI_JZS_TT, // 集中式
 #else
-	SW_DI_25,
+    SW_DI_25,
 #endif
 
 #ifdef DO_KOUT_CHECK
-	SW_DI_KOCHK,
+    SW_DI_KOCHK, // 开出自检
 #else
-	SW_DI_26,
+    SW_DI_26,
 #endif
 
-//#ifdef GD_AREA_ZHUHAI_V2	
-#if	defined GD_AREA_ZHUHAI_V2 || defined GD_AREA_JIEYANG || defined GD_AREA_LIAONING_2021
-
-	SW_DI_B_SW,		//B侧开关位置
+#if defined GD_AREA_ZHUHAI_V2 || defined GD_AREA_JIEYANG || defined GD_AREA_LIAONING_2021
+    SW_DI_B_SW, // 对侧开关位置
 #else
-	SW_DI_27,
+    SW_DI_27,
 #endif
-	SW_DI_SAFE_AUTO,	//安全自动控制
+    SW_DI_SAFE_AUTO, // 安全自动化控制
 
 #ifdef BS_FAL_DI_YB
-    SW_DI_BS_FAL,         //闭锁FA联络
+    SW_DI_BS_FAL, // 闭锁FA联络
+#endif
+
+#ifdef CUSTOMIZE_BZT // 备自投
+    SW_DI_BZT,       // 备自投
+    SW_DI_DL1_HW,    // #1进线合位
+    SW_DI_DL1_TW,    // 1进线分位
+    SW_DI_DL2_HW,    // 2进线合位
+    SW_DI_DL2_TW,    // 2进线分位
+    SW_DI_DL3_HW,    // 备自投-合位
+    SW_DI_DL3_TW,    // 备自投-分位
+    SW_DI_BSBZT,     // 闭锁备自投
+    SW_DI_BZT_SY,    // 备自投-失压分闸
 #endif
-	
-#ifdef	CUSTOMIZE_BZT //备自投
-	SW_DI_BZT,
-	SW_DI_DL1_HW,
-	SW_DI_DL1_TW,
-	SW_DI_DL2_HW,
-	SW_DI_DL2_TW,
-	SW_DI_DL3_HW,
-	SW_DI_DL3_TW,
-	SW_DI_BSBZT,
-	SW_DI_BZT_SY,   //备自投-失压分闸开入
-#endif	
 #ifdef GD_AREA_ECZD_QINGYUAN_2022
-	SW_PRO_HZ,	//保护合闸出口
-	SW_PRO_FZ,	//保护跳闸出口
-	SW_YK_HZ,	//遥控/电动合闸
-	SW_YK_FZ,	//遥控/电动分闸
+    SW_PRO_HZ, // 保护合闸出口
+    SW_PRO_FZ, // 保护跳闸出口
+    SW_YK_HZ,  // 遥控/电动合闸
+    SW_YK_FZ,  // 遥控/电动分闸
 #endif
-	SW_DI_NUM
+    SW_DI_YYXH, // 带电显示器有压
+    SW_DI_NUM
 };
 
 #define SW_DI_NUM_ALL (SW_DI_NUM + EV_SW_NUM)
@@ -194,10 +200,7 @@ enum
 	SW_LED_YT,		// YT灯
 	SW_LED_DZ,		// 动作灯
 	SW_LED_CHZBS,	// 重合闸闭锁灯
-	SW_LED_CN,		// 未储能灯
-#ifdef DISP_DOUBLE_CN
-	SW_LED_YCN,		// 已储能灯
-#endif
+	SW_LED_WCN,		// 未储能灯
 	SW_LED_LL,	// 联络
 	SW_LED_FD,	// 分段	
 	SW_LED_CHZBS_LOCK,	// 重合闸闭锁灯+FA闭锁合闸
@@ -247,9 +250,6 @@ enum
 	SW_LED_DRIVE,	//开关传动灯
 #endif
 
-#ifdef GW_AREA_MAIN_2021
-	SW_LED_XLGZ,
-#endif
 	SW_LED_NUM
 };
 
@@ -288,7 +288,7 @@ enum
 	SW_AC_IN_CI_UNBALANCE,// 电流不平衡度
 	SW_AC_IN_IMP1,
 	SW_AC_IN_IMP2,
-#ifndef GW_AREA_MAIN_2021
+
 	SW_AC_IN_SET_BEGIN,
 	SW_AC_IN_SET2,
 	SW_AC_IN_SET3,
@@ -301,7 +301,7 @@ enum
 	SW_AC_IN_SET10,
 	SW_AC_IN_SET11,
 	SW_AC_IN_SET_END,
-#endif
+
 #ifdef METERING_ENERGY	
 	SW_AC_IN_XS_UAB,
 	SW_AC_IN_XS_UBC,
@@ -407,51 +407,48 @@ enum
 
 enum
 {
-	PUB_DI_YF = 0,	// 远方
-	PUB_DI_JD,		// 就地
-	PUB_DI_GMDK,	// 柜门打开
-	PUB_DI_RST,		// 复归信号
-	PUB_DI_DCJLSD,	// 电池交流失电
-	PUB_DI_DCDYGZ,	// 电池电源故障
-	PUB_DI_DCQY,	// 电池欠压
-	PUB_DI_DCHHZT,	// 电池活化状态
-	PUB_DI_CAP,
-	PUB_DI_JS,
-	PUB_DI_REBOOT,
-	PUB_DI_BHALL,
-	PUB_DI_JX,
-#ifndef GW_AREA_MAIN_2021
-	PUB_DI_FDL1,
-	PUB_DI_FDL2,
-	PUB_DI_FDL3,
-	PUB_DI_FDL4,
-	PUB_DI_FDL5,
-	PUB_DI_FDL6,
-	PUB_DI_FDL7,
-	PUB_DI_FDL8,
-#endif	
-	PUB_DI_1,
-	PUB_DI_2,
-	PUB_DI_3,
-	PUB_DI_4,
-	PUB_DI_5,
-	PUB_DI_6,
-#ifdef YX_DI_ERROR	
-	PUB_DI_ERROR,		//遥信自检
+    PUB_DI_YF = 0, // 远方
+    PUB_DI_JD,     // 就地
+    PUB_DI_GMDK,   // 柜门打开
+    PUB_DI_RST,    // 复归信号
+    PUB_DI_DCJLSD, // 交流失电
+    PUB_DI_DCDYGZ, // 电源模块故障
+    PUB_DI_DCQY,   // 电池欠压
+    PUB_DI_DCHHZT, // 电池活化状态
+    PUB_DI_CAP,    // 电容器动作
+    PUB_DI_JS,     // FA解锁
+    PUB_DI_REBOOT, // 装置复位
+    PUB_DI_BHALL,  // 功能总压板
+    PUB_DI_JX,     // 检修状态压板 \ 遥信屏蔽压板
+    PUB_DI_FDL1,   // 非电量1
+    PUB_DI_FDL2,   // 非电量2
+    PUB_DI_FDL3,   // 非电量3
+    PUB_DI_FDL4,   // 非电量4
+    PUB_DI_FDL5,   // 非电量5
+    PUB_DI_FDL6,   // 非电量6
+    PUB_DI_FDL7,   // 非电量7
+    PUB_DI_FDL8,   // 非电量8
+    PUB_DI_1,
+    PUB_DI_2,
+    PUB_DI_3,
+    PUB_DI_4,
+    PUB_DI_5,
+    PUB_DI_6,
+#ifdef YX_DI_ERROR
+    PUB_DI_ERROR, // 遥信自检
 #else
-	PUB_DI_7,
-#endif	
+    PUB_DI_7,
+#endif
 #ifdef KZ_OUT_TT
-	PUB_KZ_OUT_TT,
+    PUB_KZ_OUT_TT, // 控制出口压板
 #else
-	PUB_DI_8,
+    PUB_DI_8,
 #endif
 
-	PUB_DI_RST_JS,
-	PUB_DI_NUM
+    PUB_DI_RST_JS, // 信号复归+FA解锁
+    PUB_DI_NUM
 };
 
-
 #define PUB_DI_NUM_ALL (PUB_DI_NUM + EV_PUB_NUM)
 
 enum
@@ -477,10 +474,8 @@ enum
 #ifdef YK_FG_FAJS
 	PUB_DO_RST_FAJS, 	// 远方复归+FA解锁
 #endif
-#ifndef GW_AREA_MAIN_2021
 	PUB_CHYB_HZ,		// 虚遥控,重合闸压板
 	PUB_CHYB_FZ,		// 虚遥控,分闸压板	
-#endif
 #if defined BHFA_YB_YK || defined BHFAGS_YB_YK
 	PUB_BHYB_HZ,		// 虚遥控,分闸压板
 	PUB_BHYB_FZ,		// 虚遥控,分闸压板
@@ -497,13 +492,11 @@ enum
 		#endif
 	#endif
 #else
-#ifndef GW_AREA_MAIN_2021
 	PUB_BHYB_HZ,		// 虚遥控,分闸压板
 	PUB_BHYB_FZ,		// 虚遥控,分闸压板
 	PUB_KZYB_HZ,		// 虚遥控,控制出口合闸压板(线路保护投停&&保护投入软压板)
 	PUB_KZYB_FZ,		// 虚遥控,控制出口分闸压板(线路保护投停&&保护投入软压板)
 #endif
-#endif
 
 #ifdef TQ_SOFT_YB
 	PUB_TQ_YB_HZ,	//虚遥控,检同期软压板
@@ -602,11 +595,7 @@ enum
 #ifdef	LINK_ERR_LED
 	PUB_LED_LINK_ERR,	//"级联异常灯",
 #endif
-#ifdef GW_AREA_MAIN_2021
-	PUB_LED_PHA,
-	PUB_LED_PHB,
-	PUB_LED_PHC,
-#endif
+
 	PUB_LED_NUM,
 };
 
@@ -765,18 +754,6 @@ struct sw
 	u16	 led_cfg_index[SW_LED_NUM];
 };
 
-struct sw_t
-{
-	// 过流标识
-	u32		overI_flags[3];
-
-	// 方向
-	u32		dir_flags[3];
-
-	// 测量值
-	qs16  	ac_in[3];
-	float 	ac_in_acc[3];
-};
 
 struct sw_public
 {
@@ -893,7 +870,6 @@ extern struct ui_p0 g_ui_p0[SWITCH_NUM_MAX]; //
 
 extern struct sw_public g_sw_pub;
 extern struct sw g_sw[];
-extern struct sw_t g_sw_temp[];
 extern struct ui120 Us1_120,Us2_120;
 
 extern const s8 * g_sw_di_name[];

+ 25 - 381
dtu/dtu_main_t536/app/vol.c

@@ -37,17 +37,14 @@ void vol_over(DWORD  dStep,int vno,int index,int soeno)
 	bool  bQDD=false; 	
 	TVOL_T *pvol = &g_tVol[vno];
 	VOL_SET *pSet = &pRunSet->tVolSet[vno];
-#ifndef GW_AREA_MAIN_2021
-	#ifdef DISP_SET_YYJB
-		if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2)&&(vno!=VOL_WY_POW1)&&(vno!=VOL_WY_POW2))
-	#else
-		if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
-	#endif
+
+#ifdef DISP_SET_YYJB
+	if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2)&&(vno!=VOL_WY_POW1)&&(vno!=VOL_WY_POW2))
 #else
-	if((vno!=VOL_WY_POW1)&&(vno!=VOL_WY_POW2))
+	if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
 #endif
 	{
-		#if defined DISP_SET_YYJB && !defined GW_AREA_MAIN_2021
+		#ifdef DISP_SET_YYJB
            if(vno==VOL_YY_POW1)
 	       {
 		       bQDD = OverRelay(g_sw_pub.m2_max[2], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
@@ -78,7 +75,7 @@ void vol_over(DWORD  dStep,int vno,int index,int soeno)
 		if(soe_check(soeno)==false)	
 		{
 			DWORD Uab;
-			#if defined DISP_SET_YYJB && !defined GW_AREA_MAIN_2021
+			#ifdef DISP_SET_YYJB
 	           if(vno==VOL_YY_POW1)
 		       {			      
 				   Uab = _Mul_Div_U(sqrt_32fix(g_sw_pub.m2_max[2]), 256, g_ui[index].m2_factor_k);
@@ -112,11 +109,10 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 	TVOL_T *pvol = &g_tVol[vno];
 	VOL_SET *pSet = &pRunSet->tVolSet[vno];
 	static bool bCYY_bk[VOL_NUMBER]={false},bQD_bk[VOL_NUMBER]={false},bGj_bk[VOL_NUMBER]={false},bQDD_H_bk[VOL_NUMBER]={false};
-#ifndef GW_AREA_MAIN_2021
+	
 	if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
-#endif
 	{
-		#if defined DISP_SET_YYJB && !defined GW_AREA_MAIN_2021
+		#ifdef DISP_SET_YYJB
            if(vno==VOL_WY_POW1)
 	       {
 		       bQDD_H = OverRelay(g_sw_pub.m2_max[2], pSet->dUVol,pSet->dUVol,false);
@@ -133,12 +129,11 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 		   bQDD_H = OverRelay(g_ui[index].m2[0], pSet->dUVol,pSet->dUVol,false); 
 		#endif
 	}
-#ifndef GW_AREA_MAIN_2021
 	else if((vno==VOL_DDY_DC1)||(vno==VOL_DDY_DC2))
 	{
 		bQDD_H = OverRelay(_AbsL(g_sw_pub.ac_in[index]), pSet->dUVol,pSet->dUVol,false); 
 	}
-#endif
+
 	//有压充电
 	RunTR(&pvol->tCYYTime, (bQDD_H|pvol->sta.bFlag.bCYY), dStep);		
 	pvol->sta.bFlag.bCYY = pvol->tCYYTime.boolTrip&&pSet->bTT;
@@ -148,11 +143,10 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 	{
 		pvol->sta.bFlag.bQDWave=false;
 	}	
-#ifndef GW_AREA_MAIN_2021
+
 	if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
-#endif
 	{
-		#if defined DISP_SET_YYJB && !defined GW_AREA_MAIN_2021
+		#ifdef DISP_SET_YYJB
            if(vno==VOL_WY_POW1)
 	       {
 		       bQDD = LowRelay(g_sw_pub.m2_max[2], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
@@ -169,19 +163,17 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 		   bQDD = LowRelay(g_ui[index].m2[0], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);  
 		#endif
 	}
-#ifndef GW_AREA_MAIN_2021
 	else if((vno==VOL_DDY_DC1)||(vno==VOL_DDY_DC2))
 	{
 		bQDD = LowRelay(_AbsL(g_sw_pub.ac_in[index]), pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD); 
 	}
-#endif
+
 	pvol->sta.bFlag.bQD = (pSet->bTT&&bQDD&&pvol->sta.bFlag.bCYY);
 	if(pvol->sta.bFlag.bQD)
 	{
 		if(!pvol->sta.bFlag.bQDWave)
 		{
 			int sw;
-		#ifndef GW_AREA_MAIN_2021
 			if(vno==VOL_DDY_Uab1||vno==VOL_DDY_Ubc1||vno==VOL_DDY_Uca1)
 			{
 
@@ -206,33 +198,7 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 						rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); 	// 线路低电压,启动开关录波
 					}
 				}
-			}	
-		#else	
-			if(vno==VOL_SYGJ_Uab1||vno==VOL_SYGJ_Ubc1||vno==VOL_SYGJ_Uca1)
-			{
-				bool bY1;
-				bY1 = g_tVol[VOL_SYGJ_Uab1].sta.bFlag.bQDWave
-					||g_tVol[VOL_SYGJ_Ubc1].sta.bFlag.bQDWave
-					||g_tVol[VOL_SYGJ_Uca1].sta.bFlag.bQDWave;  // 判断是否启动失压告警
-				for(sw=0;sw<g_sw_num;sw++)
-				{
-					if(!pRunSet->tSwSet[sw].bTT_Power_v2&&!bY1)
-						rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); 	// 线路失压告警,启动开关录波
-				}
-			}
-			if(vno==VOL_SYGJ_Uab2||vno==VOL_SYGJ_Ubc2||vno==VOL_SYGJ_Uca2)
-			{
-				bool bY1;
-				bY1 = g_tVol[VOL_SYGJ_Uab2].sta.bFlag.bQDWave
-					||g_tVol[VOL_SYGJ_Ubc2].sta.bFlag.bQDWave
-					||g_tVol[VOL_SYGJ_Uca2].sta.bFlag.bQDWave;  // 判断是否启动失压告警
-				for(sw=0;sw<g_sw_num;sw++)
-				{
-					if(pRunSet->tSwSet[sw].bTT_Power_v2&&!bY1)
-						rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); 	// 线路失压告警,启动开关录波
-				}
-			}
-		#endif
+			}		
 			pvol->sta.bFlag.bQDWave=true;
 		}
 	}
@@ -240,7 +206,7 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 	/***********动作*********************************/
 	RunTR(&pvol->tQDTime, pvol->sta.bFlag.bQD, dStep);		
 	pvol->sta.bFlag.bGj = pvol->tQDTime.boolTrip;
-#ifndef GW_AREA_MAIN_2021
+
 	if(vno==VOL_DDY_DC1)
 	{
 		if((bCYY_bk[VOL_DDY_DC1]!=pvol->sta.bFlag.bCYY)
@@ -287,7 +253,7 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 			bQDD_H_bk[VOL_DDY_DC2]=bQDD_H;
 		}		
 	}
-#endif
+
 	
 	/************事件记录及出口****************************/
 	if(pvol->sta.bFlag.bGj) 
@@ -297,11 +263,10 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 		if(soe_check(soeno)==false)	
 		{
 			DWORD Uab;
-		#ifndef GW_AREA_MAIN_2021
+
 			if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
-		#endif
 			{
-				#if defined DISP_SET_YYJB && !defined GW_AREA_MAIN_2021
+				#ifdef DISP_SET_YYJB
 		           if(vno==VOL_WY_POW1)
 			       {			      
 					   Uab = _Mul_Div_U(sqrt_32fix(g_sw_pub.m2_max[2]), 256, g_ui[index].m2_factor_k);
@@ -318,13 +283,12 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 				   Uab = _Mul_Div_U(sqrt_32fix(g_ui[index].m2[0]), 256, g_ui[index].m2_factor_k);
 				#endif
 			}
-		#ifndef GW_AREA_MAIN_2021
 			else if((vno==VOL_DDY_DC1)||(vno==VOL_DDY_DC2))
 			{
 				Uab = g_sw_pub.ac_in[index];
 			}
-		#endif
-		#ifndef GW_AREA_MAIN_2021
+			
+
 			if(vno==VOL_DDY_Uab1||vno==VOL_DDY_Ubc1||vno==VOL_DDY_Uca1)
 			{
 				bool bY1;
@@ -351,46 +315,7 @@ void vol_low(DWORD  dStep,int vno,int index,int soeno)
 					}
 				}
 			}	
-		#else
-			if(vno==VOL_SYGJ_Uab1||vno==VOL_SYGJ_Ubc1||vno==VOL_SYGJ_Uca1)
-			{
-				bool bY1;
-				bY1 = soe_check(EV_UAB1SYGJ) ||soe_check(EV_UBC1SYGJ) ||soe_check(EV_UCA1SYGJ);  // 判断是否启动失压告警
-				for(sw=0;sw<g_sw_num;sw++)
-				{
-					if(!pRunSet->tSwSet[sw].bTT_Power_v2)
-					{
-						if(!bY1 && BH_WAVETIME_EN(pSet->dTVol))
-						{
-						#if(EN_REC_MORE_WAVES==1)
-							rcd_start(sw,RECORD_TYPE_XLSY, g_record_XLSY_waves);
-						#else
-							rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); 	// 线路低电压,启动开关录波
-						#endif
-						}
-					}
-				}
-			}
-			if(vno==VOL_SYGJ_Uab2||vno==VOL_SYGJ_Ubc2||vno==VOL_SYGJ_Uca2)
-			{
-				bool bY1;
-				bY1 = soe_check(EV_UAB2SYGJ)||soe_check(EV_UBC2SYGJ) ||soe_check(EV_UCA2SYGJ);  // 判断是否启动失压告警
-				for(sw=0;sw<g_sw_num;sw++)
-				{
-					if(pRunSet->tSwSet[sw].bTT_Power_v2)
-					{
-						if(!bY1 && BH_WAVETIME_EN(pSet->dTVol))
-						{
-						#if(EN_REC_MORE_WAVES==1)
-							rcd_start(sw,RECORD_TYPE_XLSY, g_record_XLSY_waves);
-						#else
-							rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); 	// 线路低电压,启动开关录波
-						#endif
-						}
-					}
-				}
-			}
-		#endif
+
 			soe_record_ev(soeno,1, Uab,0,0); 
 			
 		}
@@ -420,13 +345,8 @@ void Pro_vol(DWORD  dStep)
 	vol_over(dStep,VOL_GDY_Ubc2,	PUB_AC_UBC2,	EV_UBC2GDY);
 	vol_over(dStep,VOL_GDY_Uca2,	PUB_AC_UCA2,	EV_UCA2GDY);
 #ifdef DISP_SET_YYJB
-	#ifdef GW_AREA_MAIN_2021
-	vol_over(dStep,VOL_YY_POW1,		g_run_stu.us1,	EV_POW1YY);
-	vol_over(dStep,VOL_YY_POW2,		g_run_stu.us2,  EV_POW2YY);
-	#else
 	vol_over(dStep,VOL_YY_POW1,		PUB_AC_US1,	    EV_POW1YY);
 	vol_over(dStep,VOL_YY_POW2,		PUB_AC_US2,  	EV_POW2YY);
-	#endif
 #endif
 	vol_low(dStep,VOL_DDY_Uab1,		PUB_AC_UAB1,	EV_UAB1DDY);
 	vol_low(dStep,VOL_DDY_Ubc1,		PUB_AC_UBC1,	EV_UBC1DDY);
@@ -435,20 +355,13 @@ void Pro_vol(DWORD  dStep)
 	vol_low(dStep,VOL_DDY_Ubc2,		PUB_AC_UBC2,	EV_UBC2DDY);
 	vol_low(dStep,VOL_DDY_Uca2,		PUB_AC_UCA2,	EV_UCA2DDY);
 #ifdef DISP_SET_YYJB
-	#ifdef GW_AREA_MAIN_2021
-	vol_low(dStep,VOL_WY_POW1,		g_run_stu.us1,	EV_POW1WY);
-	vol_low(dStep,VOL_WY_POW2,		g_run_stu.us1,	EV_POW2WY);
-	#else
 	vol_low(dStep,VOL_WY_POW1,		PUB_AC_US1,	    EV_POW1WY);
 	vol_low(dStep,VOL_WY_POW2,		PUB_AC_US2,	    EV_POW2WY);
-	#endif
 #endif
-#ifndef GW_AREA_MAIN_2021
 	vol_low(dStep,VOL_DDY_DC1,		PUB_AC_IN_UZ1,	EV_DC1DDY);
 #ifndef DC_TEST_ONE
 	vol_low(dStep,VOL_DDY_DC2,		PUB_AC_IN_UZ2,	EV_DC2DDY);
 #endif
-#endif
 }
 
 /**************************************************************************
@@ -465,176 +378,6 @@ void Pro_vol(DWORD  dStep)
 ***************************************************************************/
 void Pro_TQHz(int sw,DWORD  dStep)
 {
-#ifdef GW_AREA_MAIN_2021
-	bool Volt1,Volt2,Volt3,bQD,bLock,bTQ=false,bAQ=false,bFEQ=false;
-	bool bY1, bY2;
-	DWORD deltaU1=0,deltaU2=0,deltaU3=0;
-	TRELAY_T *pR=&g_tRelay[sw];
-	TTQHZ_T *pSW = &pR->tTQHz;
-	TSETSW *pSet = &pRunSet->tSwSet[sw];
-
-	if(pR->uRmtSW.bTQHz)
-	{
-		pR->uRmtSW.bTQHz = false;
-		bTQ = true;
-	}
-
- 	if (!BH_ALL_EN(sw) || !(pSet->bTT_BSHH || pSet->bTT_TQ))
- 	{
-		if (!pSW->uTQHz.bFlag.bDISENDZ || !pSW->uTQHz.bFlag.bDISENBS)
-		{
-			pSW->uTQHz.wfFlag = 0;
-			if(soe_check(EV_BSTQHZ+sw*EV_SW_NUM)==true)
-			{
-				soe_record_ev(EV_BSTQHZ+sw*EV_SW_NUM, 0, 0,0,0 ); 
-			}
-			if(soe_check(EV_TQHZ+sw*EV_SW_NUM)==true)
-			{
-				soe_record_ev(EV_TQHZ+sw*EV_SW_NUM, 0, 0,0,0 ); 
-			}
-			if(soe_check(EV_TQJC+sw*EV_SW_NUM)==true)
-			{
-				soe_record_ev(EV_TQJC+sw*EV_SW_NUM, 0, 0,0,0);
-			}
-			pSW->uTQHz.bFlag.bDISENDZ = 1;
-			pSW->uTQHz.bFlag.bDISENBS = 1;
-		}
-		
-		return; 		
- 	}
-	else
-	{
-		pSW->uTQHz.bFlag.bDISENDZ = 0;
-		pSW->uTQHz.bFlag.bDISENBS = 0;
-	}
-
-	bY1 = OverRelay(g_ui[PUB_AC_US1].m2[0], pRunSet->dUPower, pRunSet->dUPower_fh, pSW->uTQHz.bFlag.bLock);
-	bY2 = OverRelay(g_ui[PUB_AC_US2].m2[0], pRunSet->dUPower, pRunSet->dUPower_fh, pSW->uTQHz.bFlag.bLock);
-	bLock = bY1 && bY2;
-	
-	RunTR(&pSW->tTQQDTime, bTQ, dStep);
-
-	// 闭锁合环
-	if (pSet->bTT_BSHH)
-	{
-		pSW->uTQHz.bFlag.bQD = (BH_ALL_EN(sw)
-								&& pSet->bTT_BSHH						// 合环闭锁投入
-								&& (!bLock)							// 两侧均有电压条件不具备
-								&& pSW->tTQQDTime.boolTrip);		// 有启动标志
-		// 无闭锁,启动合闸
-		pSW->uTQHz.bFlag.bHz = pSW->uTQHz.bFlag.bQD;	
-
-		if (pSW->uTQHz.bFlag.bHz)
-		{
-			ResetTR(&pSW->tTQQDTime);
-		}
-
-		pSW->uTQHz.bFlag.bLock = (BH_ALL_EN(sw)
-								&& pSet->bTT_BSHH					// 合环闭锁投入
-								&& bLock							// 两侧均有电压,
-								&& pSW->tTQQDTime.boolTrip);		// 有启动标志
-
-		// 有闭锁,取消合闸,并弹闭锁事件
-		RunTR(&pSW->tBSTQTime, pSW->uTQHz.bFlag.bLock, dStep);			
-		
-		if (pSW->tBSTQTime.boolTrip)
-		{
-			if (!pSW->uTQHz.bFlag.bEvent)
-			{
-				soe_record_ev(EV_BSTQHZ+sw*EV_SW_NUM, 1, 0,0,0 );
-				pSW->bBSTQLed = true;
-				pSW->uTQHz.bFlag.bEvent = true;
-				ResetTR(&pSW->tTQQDTime);
-			}
-		}
-		else
-		{
-			if (pSW->uTQHz.bFlag.bEvent)
-			{
-				soe_record_ev(EV_BSTQHZ+sw*EV_SW_NUM, 0, 0,0,0 );
-				pSW->uTQHz.bFlag.bEvent = false;
-			}
-		}
-	}
-	// 合环合闸
-	if (pSet->bTT_TQ)
-	{		
-		// 分别取出两侧各线电压压差
-		deltaU1 = _AbsL(g_ui[PUB_AC_UAB1].fz - g_ui[PUB_AC_UAB2].fz);
-		deltaU2 = _AbsL(g_ui[PUB_AC_UBC1].fz - g_ui[PUB_AC_UBC2].fz);
-		deltaU3 = _AbsL(g_ui[PUB_AC_UCA1].fz - g_ui[PUB_AC_UCA2].fz);
-
-		// 角差与定值比对
-		bAQ = SynAngle(g_ui[PUB_AC_UAB1].p, g_ui[PUB_AC_UAB2].p,pSet->dTQ_ANGLE_FZ);
-
-		// 频差与定值比对
-		bFEQ = SynFrequency(g_sw_pub.ac_in[PUB_AC_IN_F1],g_sw_pub.ac_in[PUB_AC_IN_F2],pSet->dTQ_FREQ_FZ);
-
-		// 压差与定值比对
-		Volt1 = LowRelay(deltaU1, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-		Volt2 = LowRelay(deltaU2, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-		Volt3 = LowRelay(deltaU3, pSet->dTQ_U_FZ, pSet->dTQ_U_FZ_fh, false); 
-
-		bQD = Volt1&&Volt2&&Volt3; 
-		
-		pSW->uTQHz.bFlag.bQD = (BH_ALL_EN(sw)
-								&& pSet->bTT_TQ						// 合环合闸投入
-								&& bQD								// 压差小于定值
-								&& bAQ								// 角差小于定值
-								&& bFEQ								// 频差小于定值
-								&& (!bLock)							// 两侧电压不同时有压
-								&& pSW->tTQQDTime.boolTrip);		// 有外部同期需求
-		// 内部同期检测
-		pSW->uTQHz.bFlag.bQD1 = (BH_ALL_EN(sw)
-								&& pSet->bTT_TQ						// 合环合闸投入
-								&& bQD								// 压差小于定值
-								&& bAQ								// 角差小于定值
-								&& bFEQ								// 频差小于定值
-								&& (!bLock)							// 两侧电压不同时有压
-								&& (!pR->tSWST.uSWST.bFlag.bDIHW));	// 开关状态不在合位
-
-		if (pSW->uTQHz.bFlag.bQD1)
-		{
-			if(soe_check(EV_TQJC+sw*EV_SW_NUM)==false)		// 条件满足置合环检测信号
-			{
-				soe_record_ev(EV_TQJC+sw*EV_SW_NUM, 1, 0,0,0);
-			}
-		}
-		else
-		{
-			if(soe_check(EV_TQJC+sw*EV_SW_NUM)==true)
-			{
-				soe_record_ev(EV_TQJC+sw*EV_SW_NUM, 0, 0,0,0);
-			}
-		}
-		
-		RunTR(&pSW->tTQTime, pSW->uTQHz.bFlag.bQD, dStep);
-
-		pSW->uTQHz.bFlag.bHz = pSW->tTQTime.boolTrip;
-	
-		if(pSW->uTQHz.bFlag.bHz)
-		{
-			if (!pSW->uTQHz.bFlag.bEvent)
-			{
-				if(!pR->uRmtSW.bHandHz)
-				{
-			       	pR->uRmtSW.bHandHz = true;
-			    }
-				soe_record_ev(EV_TQHZ+sw*EV_SW_NUM, 1, 0,0,0 );
-				pSW->uTQHz.bFlag.bEvent = true;
-			}
-		}
-		else
-		{
-			if (pSW->uTQHz.bFlag.bEvent)
-			{
-				soe_record_ev(EV_TQHZ+sw*EV_SW_NUM, 0, 0,0,0 );
-				pSW->uTQHz.bFlag.bEvent = false;
-				ResetTR(&pSW->tTQTime);
-			}
-		}
-	}
-#else
 	bool bQD,bTQ=false;
 	TRELAY_T *pR=&g_tRelay[sw];
 	TTQHZ_T *pSW = &pR->tTQHz;
@@ -777,12 +520,10 @@ void Pro_TQHz(int sw,DWORD  dStep)
 			}
 		}
 	}
-#endif
 }
 //手动操作同期合闸检测
 void Pro_TQBS(int sw,DWORD  dStep)
 {
-#ifndef GW_AREA_MAIN_2021//TODO 看需求开放 ? EWen
 	bool bQD,bTQ=false;
 	TRELAY_T *pR=&g_tRelay[sw];
 	//TTQHZ_T *pSW = &pR->tTQHz;
@@ -835,7 +576,6 @@ void Pro_TQBS(int sw,DWORD  dStep)
 	else
 		sw_do(sw,SW_DI_TQBS_CLOSE,SW_DO_TYPE_OFF);//同期
 #endif	
-#endif
 }
 
 #ifdef FUN_HCBS
@@ -963,7 +703,7 @@ bool hcbs_freq(int sw) //频
 
 #endif
 
-#ifndef GW_AREA_MAIN_2021 // 解列的相关逻辑国网暂时没有用到,后续根据需求开放 EWen 
+
 //获取电压通道信息
 static int get_vol_index(int ac_index)
 {
@@ -1284,14 +1024,13 @@ void vol_PLJL(int sw,DWORD  dStep)   // 频
 	pJL->sta.bFlag.bQD=pJL->sta.bFlag.bQD_H||pJL->sta.bFlag.bQD_L||pJL->sta.bFlag.bQD_D;
 
 }
-#endif
+
 
 
  TPTCHECK_T	tPT;
 #define ANG_PHASEYC  (15*65536)
 void PT_Check(DWORD  dStep)
 {
-#ifndef GW_AREA_MAIN_2021
 	bool bsxyl=false;
 #ifdef GD_AREA_ECZD_CHAOZHOU_2022
 	DWORD Umin_tmp=0;
@@ -1557,12 +1296,10 @@ void PT_Check(DWORD  dStep)
 		tPT.uPT2DX.bFlag.bPTYC=false;
 	}
 #endif
-
-#endif
 }
 
 
-#ifndef GW_AREA_MAIN_2021
+
 void FDL_Check(DWORD    dStep)
 {
 	int i;
@@ -1616,10 +1353,9 @@ void FDL_Check(DWORD    dStep)
 	}
 
 }
-#endif
+
 void Pro_3U0(int sw,DWORD  dStep)
 {
-#ifndef GW_AREA_MAIN_2021
 	bool  bQDD; 			
 	TRELAY_T *pR=&g_tRelay[sw];
 	TU0_T *pSW=&pR->tOVER_U0TZ;
@@ -1691,7 +1427,7 @@ void Pro_3U0(int sw,DWORD  dStep)
 			pSW->uZOV.bFlag.bU0Ov = false;
 		}
 	} 
-#endif
+
 }
 
 
@@ -1772,98 +1508,6 @@ void vol_lost_tz(int sw, DWORD      dStep)  // 失压
 	} 
 }
 #endif
-
-/**************************************************************************
-函数名称:Pro_PTDxTz
-函数版本:1.00 
-作者:    赵海洋
-创建日期:2022.2.28   
-函数功能说明:PT断线跳闸默认检测一段线电压UAB
-输入参数:
-其他输入:
-输出参数:
-返回值: 
-***************************************************************************/
-#ifdef GW_AREA_MAIN_2021
-void Pro_PTDxTz(int sw,DWORD  dStep)
-{
-	bool Volt,Volt1=false,Volt2=false,Volt3=false,bQDD,bQDD1=false,bQDD2=false,
-	bQDD3=false,bQDD4=false; 
-	TRELAY_T *pR=&g_tRelay[sw];
-	TSWST *pSW =&pR->tSWST;
-	TVOL_T *pvol = &pR->tPTDX;
-	VOL_SET *pSet = &pRunSet->tPTSet;
-	DWORD deltaU1=0,deltaU2=0,deltaU3=0;
-	
-	
-	bQDD1 = LowRelay(g_ui[PUB_AC_UAB1].fz, pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD); 
-	bQDD2 = LowRelay(g_ui[PUB_AC_UBC1].fz, pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD); 
-	bQDD3 = LowRelay(g_ui[PUB_AC_UCA1].fz, pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD); 
-
-	// 压差
-	deltaU1 = _AbsL(g_ui[PUB_AC_UAB1].fz - g_ui[PUB_AC_UBC1].fz);
-	deltaU2 = _AbsL(g_ui[PUB_AC_UAB1].fz - g_ui[PUB_AC_UCA1].fz);
-	deltaU3 = _AbsL(g_ui[PUB_AC_UBC1].fz - g_ui[PUB_AC_UCA1].fz);
-
-	// 压差与定值比对
-	Volt1 = OverRelay(deltaU1, pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD); 
-	Volt2 = OverRelay(deltaU2, pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD); 
-	Volt3 = OverRelay(deltaU3, pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD); 
-	
-	// 三相有流
-	bQDD4 |= (!pSW->uSWST.bFlag.bSXWL);
-	
-	Volt = Volt1||Volt2||Volt3;
-	bQDD = (bQDD1&&bQDD2&&bQDD3&&bQDD4)||Volt;
-	pvol->sta.bFlag.bQD = ((pSet->bTT||pSet->bTz)&& bQDD);
-
-	/***********动作*********************************/
-	RunTR(&pvol->tQDTime, pvol->sta.bFlag.bQD, dStep);		
-	pvol->sta.bFlag.bGj = pvol->tQDTime.boolTrip&&pSet->bTT;
-	pvol->sta.bFlag.bTz = pvol->tQDTime.boolTrip&&pSet->bTz;
-	
-	/************事件记录及出口****************************/
-	if(pvol->sta.bFlag.bGj) 
-	{
-		if(soe_check(EV_PTDX_GJ+sw*EV_SW_NUM)==false)	
-		{
-			DWORD Uab=0,Ubc=0,Uca=0;
-			
-			Uab = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UAB1].m2[0]), 256, g_ui[PUB_AC_UAB1].m2_factor_k);
-			Ubc = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UBC1].m2[0]), 256, g_ui[PUB_AC_UBC1].m2_factor_k);
-			Uca = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UCA1].m2[0]), 256, g_ui[PUB_AC_UCA1].m2_factor_k);
-			soe_record_ev(EV_PTDX_GJ+sw*EV_SW_NUM,1, Uab,Ubc,Uca);                                          
-		}
-	}
-	else
-	{
-		if(soe_check(EV_PTDX_GJ+sw*EV_SW_NUM)==true)			
-		{
-			soe_record_ev(EV_PTDX_GJ+sw*EV_SW_NUM,0, 0,0,0 );                                          
-		}			
-	} 
-
-	if(pvol->sta.bFlag.bTz) 
-	{
-		if(soe_check(EV_PTDX_TZ+sw*EV_SW_NUM)==false)	
-		{
-			DWORD Uab=0,Ubc=0,Uca=0;
-			
-			Uab = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UAB1].m2[0]), 256, g_ui[PUB_AC_UAB1].m2_factor_k);
-			Ubc = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UBC1].m2[0]), 256, g_ui[PUB_AC_UBC1].m2_factor_k);
-			Uca = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UCA1].m2[0]), 256, g_ui[PUB_AC_UCA1].m2_factor_k);
-			soe_record_ev(EV_PTDX_TZ+sw*EV_SW_NUM,1, Uab,Ubc,Uca);                                          
-		}
-	}
-	else
-	{
-		if(soe_check(EV_PTDX_TZ+sw*EV_SW_NUM)==true)			
-		{
-			soe_record_ev(EV_PTDX_TZ+sw*EV_SW_NUM,0, 0,0,0 );                                          
-		}			
-	} 
-}
-#endif
 // = ========================= 本文件结束 =============================
 
 

+ 1 - 11
dtu/dtu_main_t536/app/vol.h

@@ -31,16 +31,8 @@ enum
 	VOL_DDY_Uab2, 		// Uab2低电压
 	VOL_DDY_Ubc2, 		// Ubc2低电压
 	VOL_DDY_Uca2, 		// Uca2低电压
-	VOL_SYGJ_Uab1, 		// Uab1失压告警
-	VOL_SYGJ_Ubc1, 		// Ubc1失压告警
-	VOL_SYGJ_Uca1, 		// Uca1失压告警
-	VOL_SYGJ_Uab2, 		// Uab2失压告警
-	VOL_SYGJ_Ubc2, 		// Ubc2失压告警
-	VOL_SYGJ_Uca2, 		// Uca2失压告警
-#ifndef GW_AREA_MAIN_2021
 	VOL_DDY_DC1,		// 直流电源1低电压
 	VOL_DDY_DC2,		// 直流电源2低电压
-#endif
 #ifdef DISP_SET_YYJB
 	VOL_YY_POW1,		// 电源1上电
 	VOL_YY_POW2,		// 电源2上电
@@ -175,9 +167,7 @@ void Pro_TQBS(int sw,DWORD  dStep);
 void vol_DYJL(int sw,DWORD  dStep);   // 电压解列
 void vol_PLJL(int sw,DWORD  dStep);   // 电压解列
 void PT_Check(DWORD  dStep);
-#ifndef GW_AREA_MAIN_2021
 void FDL_Check(DWORD  dStep);
-#endif
 void Pro_3U0(int sw,DWORD  dStep);
 #ifdef	CUSTOMIZE_BZT //备自投
 void vol_lost_tz(int sw, DWORD      dStep);  // 失压跳闸
@@ -188,6 +178,6 @@ void hcbs_init(void);
 void hcbs_dataset(void);
 #endif
 
-void Pro_PTDxTz(int sw,DWORD  dStep);
+
 #endif
 //========================== 本文件结束 ===============================

+ 1 - 10
dtu/dtu_main_t536/app/xdljd.c

@@ -10,15 +10,6 @@
 */
 /*------------------------------- 头文件 --------------------------------------
 */
-#ifdef GW_AREA_MAIN_2021
-// 用回DTU4算法待移植
-// 临时定义
-int xdl_is_dz(int sw)
-{
-	return 0;
-}
-
-#else
 #include "head.h"
 #ifdef XDL_ZT
 /*------------------------------- 宏定义 --------------------------------------
@@ -1892,7 +1883,7 @@ int xdl_proc_highz(int sw)  // 
 
 
 
-#endif
+
 /*------------------------------ 文件结束 -------------------------------------
 */
 

+ 1 - 1
dtu/dtu_main_t536/main_mod.c

@@ -326,7 +326,7 @@ int di_do_adc (void *unused)
 
 	// 装置类型us_machine_type (分布式:1,集中式:2)
 	struct t_shmdata_machine_type machine_type = {0};
-	machine_type.us_machine_type = 2;
+	machine_type.us_machine_type = 1;
 	shm_packet_write_v2(SHM_ADDR_R_MACHINETYPE, (uint8_t *)&machine_type, sizeof(struct t_shmdata_machine_type));	
 	// printf("write SHM_ADDR_R_MACHINETYPE::0x%X -> us_updata: %d, us_op: %d, us_op_bk: %d, us_machine_type: %d, us_crc: 0x%04x\n\n", 
 	// 		SHM_ADDR_R_MACHINETYPE, machine_type.us_updata, machine_type.us_op, machine_type.us_op_bk, machine_type.us_machine_type, machine_type.us_crc);

+ 11 - 2
dtu/dtu_main_t536/sh/t536/Makefile

@@ -60,7 +60,7 @@ OBJS =  main_mod.o \
 		tmp/fuxi_bsp/source/dspi.o \
 		tmp/fuxi_bsp/source/e2prom_24lc.o \
 		tmp/fuxi_bsp/source/e2prom_emu.o \
-		tmp/fuxi_bsp/source/equ_dtu.o \
+ 		tmp/fuxi_bsp/source/equ_fuxi.o \
 		tmp/fuxi_bsp/source/factor.o \
 		tmp/fuxi_bsp/source/flash_at45db321.o \
 		tmp/fuxi_bsp/source/freq.o \
@@ -207,5 +207,14 @@ $(app_name): $(OBJS)
 
 	
 clean:
-	rm -rf tmp/ *.o *.swp ko/*
+	echo "start cleaning..."
+	rm -rf ../../tmp/
+	rm -f  ../../*.o
+	rm -f  ../../*.swp
+	rm -rf ../../ko/*
+	rm -rf ../../ko/*
+	rm -rf ../../dtu_t536
+	echo "remaining files:"
+	ls -la ../../
+# 	rm -rf ../../tmp/ ../../*.o ../../*.swp ../../ko/*
 

+ 1 - 1
dtu/dtu_main_t536/sh/t536/mybuild_for_jiangmen_t536

@@ -1,6 +1,6 @@
 #!/bin/sh
 
 if [ -e ./mybuild_for_gw_public_t536 ]; then
-	./mybuild_for_gw_public_t536 GuoWang DGW_AREA_MAIN_2021 DCPU_FUXI DMACHINE_NULL
+	./mybuild_for_gw_public_t536 GuoWang DGD_MAIN_2021 DCPU_FUXI DMACHINE_NULL
 fi
 

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно