/****************************************************************************** 版权所有: 文件名称: switch.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2013-04-15 功能说明: DTU核心处理程序以开关为单位,循环处理。 其它说明: 修改记录: */ #ifndef _SWITCH_H #define _SWITCH_H /*------------------------------- 头文件 -------------------------------------- */ #include "fft.h" /*------------------------------- 宏定义 -------------------------------------- */ #define INDEX_INVALLID (-1) #define DC_BOARD_150V 1 #define CFG_NAME_LEN 16 #ifdef DC_BOARD_150V #define DC_AJUST_0 20.0 #define DC_AJUST_1 100.0 #else #define DC_AJUST_0 10.0 #define DC_AJUST_1 50.0 #endif /*------------------------------ 类型结构 ------------------------------------- */ enum { SW_DI_TYPE_00 = 0, SW_DI_TYPE_OFF, SW_DI_TYPE_ON, SW_DI_TYPE_11 }; enum { SW_DO_TYPE_OFF = 0, SW_DO_TYPE_ON, SW_DO_TYPE_SELECT_OFF, SW_DO_TYPE_SELECT_ON }; enum { 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_BHZTT, // 自动化投退 SW_DI_BHTT, // 常规保护 SW_DI_JZS_TT, // 集中式 SW_DI_CHZ, // 重合闸投入 SW_DI_BSCH, // 重合闸停用 SW_DI_FA_TT, // 馈线自动化 SW_DI_FA_GOOSE, // 智能分布式 SW_DI_FA_BS_TT, // 就地FA闭锁 SW_DI_FA_LS, // 联络/分段模式 SW_DI_YYXH, // 带电显示器有压 SW_DI_YB_FZ, // 分闸出口压板状态 SW_DI_YB_HZ, // 合闸出口压板状态 SW_DI_SH, // 手动合闸 SW_DI_SF, // 手动分闸 SW_DI_DRIVE_ERR, // 驱动器异常 SW_DI_YJCY_A, // 母线侧硬件残压 SW_DI_YJCY_B, // 线路侧硬件残压 SW_DI_KZDX, // 控制回路断线 SW_DI_HZHLJS, // 合闸回路监视 SW_DI_FZHLJS, // 分闸回路监视 SW_DI_TZWZ, // 跳闸位置 30 SW_DI_HZWZ, // 合闸位置 SW_DI_PT1SY, // 电源侧瞬压 SW_DI_PT2SY, // 负荷侧瞬压 SW_DI_KGYF, // 开关远方 SW_DI_IMP1, // 脉冲计数1 SW_DI_IMP2, // 脉冲计数2 #ifdef DO_KOUT_CHECK SW_DI_KOCHK, // 开出自检 #else SW_DI_26, #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 SW_DI_NUM }; #define SW_DI_NUM_ALL (SW_DI_NUM + EV_SW_NUM) enum { SW_DO_BHH = 0, // 保护合闸 SW_DO_BHT, // 保护分闸 SW_DO_YKH, // 遥控合闸 SW_DO_YKT, // 遥控分闸 SW_RST_SY, // 瞬压复归 SW_RST_SY1, // 瞬压复归 SW_FBT_SY, // 瞬压闭锁 SW_DO_CN, // 储能信号 SW_DO_BHDZ, // 保护动作开出 SW_DO_TQBS, // 同期合闸开出 #ifdef CUSTOMIZE_BZT // 备自投 SW_DO_DL1_HZ, // 备自投-#1进线合闸 SW_DO_DL1_FZ, // 备自投-#1进线分闸 SW_DO_DL2_HZ, // 备自投-#2进线合闸 SW_DO_DL2_FZ, // 备自投-#2进线分闸 SW_DO_FD_HZ, // 备自投-分段合闸 SW_DO_FD_FZ, // 备自投-分段分闸 SW_DO_JX1_SY, // 备自投-进线1失压分闸 SW_DO_JX2_SY, // 备自投-进线2失压分闸 #endif #if defined SW_FAIL_SINGLE_OUT SW_DO_UNSTUCK_SINGLE, // 开关失灵 #endif SW_DO_NUM }; // 开关类LED类型 enum { SW_LED_HW = 0, // 合位灯 SW_LED_TW, // 分位灯 SW_LED_WCN, // 未储能灯 SW_LED_GL, // 过流灯 SW_LED_JD, // 接地灯 SW_LED_MODE_BH, // 常规保护灯 SW_LED_MODE_FA, // 就地FA灯 SW_LED_MODE_JZFA, // 集中FA灯 SW_LED_MODE_GOOSE, // 分布式灯 SW_LED_CHZ, // 重合闸灯 SW_LED_CHZ_CD, // 重合闸充电灯(之前的充电灯包含联络和分布式的充电状态,非单独的重合闸充电灯) SW_LED_TZ, // 跳闸灯 SW_LED_FAULT_GJ, // 故障告警灯 SW_LED_LOCK, // 闭锁灯 SW_LED_DZ, // 动作灯 SW_LED_CHZBS, // 重合闸闭锁灯 SW_LED_CHZBS_LOCK, // 重合闸闭锁灯+FA闭锁合闸 SW_LED_DRIVE, // 开关传动灯 SW_LED_LL, // 联络 SW_LED_FD, // 分段 SW_LED_CD, // 充电灯(包含重合闸、联络和分布式的充电) SW_LED_GLDZ, // 隔离刀闸灯 SW_LED_JDDZ, // 接地刀闸灯 #if !defined CPU_FUXI SW_LED_ZHHW, // 综合合位灯,以一个灯代表双点灯 SW_LED_ZHTW, // 综合合位灯,以一个灯代表双点灯 SW_LED_XT, // XT灯 SW_LED_YT, // YT灯 SW_LED_X_YT, SW_LED_ZDJL, //"自动解列功能", SW_LED_TQHZ, //"同期合闸功能", SW_LED_TYBHTT, //"停用保护及FA", SW_LED_TYZDJL, //"停用自动解列", SW_LED_TYTQHZ, //"停用同期合闸", #endif SW_LED_NUM }; #define SW_DO_LED_NUM (SW_DO_NUM + SW_LED_NUM) enum { SW_AC_IA = 0, // IA SW_AC_IB, // IB SW_AC_IC, // IC SW_AC_I0, // I0 #ifdef SW_AC_I0S_SAMPLE SW_AC_I0s, #endif SW_AC_CIA, // 测量IA SW_AC_CIB, // 测量IB SW_AC_CIC, // 测量IC SW_AC_NUM }; enum { SW_AC_IN_P = SW_AC_NUM, SW_AC_IN_Pa, SW_AC_IN_Pb, SW_AC_IN_Pc, SW_AC_IN_Q, SW_AC_IN_Qa, SW_AC_IN_Qb, SW_AC_IN_Qc, #ifdef FUN_YC_POWER_S SW_AC_IN_S, #endif SW_AC_IN_COS, SW_AC_IN_BI_UNBALANCE, // 电流不平衡度 SW_AC_IN_CI_UNBALANCE, // 电流不平衡度 SW_AC_IN_IMP1, SW_AC_IN_IMP2, SW_AC_IN_SET_BEGIN, SW_AC_IN_SET2, SW_AC_IN_SET3, SW_AC_IN_SET4, SW_AC_IN_SET5, SW_AC_IN_SET6, SW_AC_IN_SET7, SW_AC_IN_SET8, SW_AC_IN_SET9, SW_AC_IN_SET10, SW_AC_IN_SET11, SW_AC_IN_SET_END, #ifdef METERING_ENERGY SW_AC_IN_XS_UAB, SW_AC_IN_XS_UBC, SW_AC_IN_XS_UCA, SW_AC_IN_XS_UA, SW_AC_IN_XS_UB, SW_AC_IN_XS_UC, SW_AC_IN_XS_IA, SW_AC_IN_XS_IB, SW_AC_IN_XS_IC, SW_AC_IN_XS_I0, SW_AC_IN_XS_P, SW_AC_IN_XS_PA, SW_AC_IN_XS_PB, SW_AC_IN_XS_PC, SW_AC_IN_XS_Q, SW_AC_IN_XS_QA, SW_AC_IN_XS_QB, SW_AC_IN_XS_QC, SW_AC_IN_XS_S, SW_AC_IN_XS_SA, SW_AC_IN_XS_SB, SW_AC_IN_XS_SC, SW_AC_IN_XS_COS, SW_AC_IN_XS_COSA, SW_AC_IN_XS_COSB, SW_AC_IN_XS_COSC, SW_AC_IN_XS_FREQ, #else SW_AC_IN_YC1, SW_AC_IN_YC2, SW_AC_IN_YC3, SW_AC_IN_YC4, SW_AC_IN_YC5, SW_AC_IN_YC6, SW_AC_IN_YC7, SW_AC_IN_YC8, SW_AC_IN_YC9, SW_AC_IN_YC10, SW_AC_IN_YC11, SW_AC_IN_YC12, #endif SW_AC_NUM_ALL }; #ifdef SW_AC_I0S_SAMPLE #define SW_AC_MENU_NUM (SW_AC_IN_IMP2) // 开关测量值在菜单中显示数目 #else #define SW_AC_MENU_NUM (SW_AC_IN_IMP2 + 1) // 开关测量值在菜单中显示数目 #endif enum { SW_DD_NOW1 = 0, SW_DD_NOW2, SW_DD_NOW3, SW_DD_NOW4, SW_DD_NOW5, SW_DD_NOW6, SW_DD_NOW7, SW_DD_NOW8, SW_DD_15M1, SW_DD_15M2, SW_DD_15M3, SW_DD_15M4, SW_DD_15M5, SW_DD_15M6, SW_DD_15M7, SW_DD_15M8, SW_DD_DAY1, SW_DD_DAY2, SW_DD_DAY3, SW_DD_DAY4, SW_DD_DAY5, SW_DD_DAY6, SW_DD_DAY7, SW_DD_DAY8, SW_DD_CHA1, SW_DD_CHA2, SW_DD_CHA3, SW_DD_CHA4, SW_DD_CHA5, SW_DD_CHA6, SW_DD_CHA7, SW_DD_CHA8, #ifdef METERING_ENERGY SW_DD_EPA, SW_DD_EPB, SW_DD_EPC, SW_DD_EPAP, SW_DD_EPBP, SW_DD_EPCP, SW_DD_EPAN, SW_DD_EPBN, SW_DD_EPCN, SW_DD_EP, SW_DD_EQ, #endif SW_DD_NUM_ALL, }; enum { PUB_DI_YF = 0, // 远方 PUB_DI_JD, // 就地 PUB_DI_JX, // 检修状态投入 PUB_DI_GMDK, // 柜门打开 PUB_DI_RST, // 复归信号 PUB_DI_DCJLSD, // 交流失电 PUB_DI_DCHHZT, // 电池活化状态 PUB_DI_DCQY, // 电池欠压 PUB_DI_DCDYGZ, // 电源模块故障 PUB_DI_CAP, // 电容器动作 PUB_DI_ZLDYQY, // 直流电源欠压 PUB_DI_NZYC, // 内阻异常 PUB_DI_JS, // FA解锁 PUB_DI_REBOOT, // 装置复位 PUB_DI_BHALL, // 功能总压板 PUB_DI_RST_JS, // 信号复归+FA解锁 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_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 #ifdef KZ_OUT_TT PUB_KZ_OUT_TT, // 控制出口压板 #else PUB_DI_8, #endif PUB_DI_NUM }; #define PUB_DI_NUM_ALL (PUB_DI_NUM + EV_PUB_NUM) enum { PUB_DO_DCHH = 0, // 电池活化 PUB_DO_HHTC, // 活化退出 PUB_QUA_CLR, PUB_DO_YK, // 预控 PUB_DO_JS, // 解除闭锁 PUB_DO_RESTART, // 远方重启 PUB_DO_RST, // 远方复归 #ifdef YK_FG_FAJS PUB_DO_RST_FAJS, // 远方复归+FA解锁 #endif PUB_CHYB_HZ, // 虚遥控,重合闸压板 PUB_CHYB_FZ, // 虚遥控,分闸压板 #if defined BHFA_YB_YK PUB_BHYB_HZ, // 虚遥控,分闸压板 PUB_BHYB_FZ, // 虚遥控,分闸压板 PUB_KZYB_HZ, // 虚遥控,控制出口合闸压板(线路保护投停&&保护投入软压板) PUB_KZYB_FZ, // 虚遥控,控制出口分闸压板(线路保护投停&&保护投入软压板) PUB_BHYBTT_HZ, // 虚遥控,常规保护投退合闸压板(线路保护投停&&保护投入软压板) PUB_BHYBTT_FZ, // 虚遥控,常规保护投退分闸压板(线路保护投停&&保护投入软压板) PUB_FAYBTT_HZ, // 虚遥控,FA保护投退合闸压板(线路保护投停&&保护投入软压板) PUB_FAYBTT_FZ, // 虚遥控,FA保护投退分闸压板(线路保护投停&&保护投入软压板) PUB_GOOSEYBTT_HZ, // 虚遥控,goose保护投退合闸压板(线路保护投停&&保护投入软压板) PUB_GOOSEYBTT_FZ, // 虚遥控,goose保护投退分闸压板(线路保护投停&&保护投入软压板) #else PUB_BHYB_HZ, // 虚遥控,分闸压板 PUB_BHYB_FZ, // 虚遥控,分闸压板 PUB_KZYB_HZ, // 虚遥控,控制出口合闸压板(线路保护投停&&保护投入软压板) PUB_KZYB_FZ, // 虚遥控,控制出口分闸压板(线路保护投停&&保护投入软压板) #endif PUB_TQ_YB_HZ, // 虚遥控,同期合闸软压板 PUB_TQ_YB_FZ, // 虚遥控,同期合闸软压板 PUB_JZS_YB_HZ, // 虚遥控,集中式软压板 PUB_JZS_YB_FZ, // 虚遥控,集中式软压板 #ifdef YK_SOFT_YB PUB_YK_YB_HZ, // 虚遥控,遥控软压板 PUB_YK_YB_FZ, // 虚遥控,遥控软压板 #endif #ifdef YK_FA_ENBLE PUB_YK_BS_FA_HZ, // FA遥控闭锁-合, PUB_YK_BS_FA_FZ, // FA遥控闭锁-分, #endif #ifdef YK_FA_S_L_ENBLE PUB_YK_FA_S_L_HZ, // 分段/联络-合, PUB_YK_FA_S_L_FZ, // 分段/联络-分, #endif PUB_JL_YB_HZ, // 虚遥控,自动解列软压板 PUB_JL_YB_FZ, // 虚遥控,自动解列软压板 #ifdef METERING_ENERGY PUB_DD_CLR, // 虚遥控,电度清零 PUB_LLSOE_CLR, // 虚遥控,线损事件清零 #endif #ifdef FUNC_DRIVE PUB_DRIVE_YB_ON, // 不停电传动软压板投入 PUB_DRIVE_YB_OFF, // 不停电传动软压板退出 PUB_DRIVE_HZ, // 不停电传动指令 #endif #ifdef FUNC_DRIVE_JY PUB_UNSTOP_V_DRI_HZ, // 不停电传动功能 #endif #ifdef FUNC_RESET_EQU PUB_RESET_EQU, // 重启装置 #endif PUB_DO_01, PUB_DO_02, PUB_DO_03, PUB_DO_04, PUB_DO_05, PUB_DO_06, PUB_DO_07, PUB_DO_08, PUB_DO_09, PUB_DO_10, PUB_DO_NUM, }; // 公共类LED类型 enum { PUB_LED_POWER = 0, // 电源灯 PUB_LED_RUN, // 运行灯 PUB_LED_COMM, // 通信灯 PUB_LED_COMM_STATUS, // 通信状态灯 PUB_LED_BAT, // 电池灯 PUB_LED_ERR, // 异常灯 #if defined GD_AREA_ECZD_2020 PUB_LED_RUN_GJ, // 运行告警,PT断线、气压低、GOOSE通信异常 #endif PUB_LED_DZ, // 动作灯,例如电压类动作 PUB_LED_YF, // 远方灯 PUB_LED_JD, // 就地灯 PUB_LED_SP1, // 串口 PUB_LED_SP2, PUB_LED_SP3, PUB_LED_SP4, PUB_LED_NET1, // 网口 PUB_LED_NET2, PUB_LED_NET3, PUB_LED_JL_ERR, // 级联异常 PUB_LED_JG_1, // 间隔通信 PUB_LED_JG_2, PUB_LED_JG_3, PUB_LED_JG_4, PUB_LED_JG_5, PUB_LED_JG_6, PUB_LED_IEC_ERR, // 规约通信异常灯, #ifdef KZ_OUT_TT PUB_LED_KZ_OUT, #endif PUB_LED_NUM, }; #define PUB_DO_LED_NUM (PUB_DO_NUM + PUB_LED_NUM) enum { PUB_AC_UA1 = 0, PUB_AC_UB1, PUB_AC_UC1, PUB_AC_UAB1, PUB_AC_UBC1, PUB_AC_UCA1, PUB_AC_U01, PUB_AC_US1, PUB_AC_UA2, PUB_AC_UB2, PUB_AC_UC2, PUB_AC_UAB2, PUB_AC_UBC2, PUB_AC_UCA2, PUB_AC_U02, PUB_AC_US2, PUB_AC_NUM }; enum { PUB_AC_IN_V_UNBALANCE1 = PUB_AC_NUM, // 电压组1不平衡度 PUB_AC_IN_V_UNBALANCE2, // 电压组2不平衡度 PUB_AC_IN_F1, PUB_AC_IN_F2, PUB_AC_IN_UZ1, PUB_AC_IN_UZ2, PUB_AC_IN_DLTUAB, PUB_AC_IN_DLTUBC, PUB_AC_IN_DLTUCA, PUB_AC_IN_ARGUAB, PUB_AC_IN_ARGUBC, PUB_AC_IN_ARGUCA, PUB_AC_IN_TEMP, #ifdef TMP_CHIP_AHT20 PUB_AC_IN_HUMI, #endif PUB_AC_IN_VER, #ifdef BATTERY_WITH_COMM PUB_AC_BATT_ACT_T_MAX, // 电池活化最大放电时长 PUB_AC_BATT_ACT_T_NOW, // 电池活化当前放电时长 #endif #ifdef DEV_GPS_ATGM332D #ifndef GPS_JWD_SPLIT PUB_AC_GPS_LONGITUDE, PUB_AC_GPS_LATITUDE, #else PUB_AC_GPS_LONGITUDE_D, PUB_AC_GPS_LONGITUDE_M, PUB_AC_GPS_LONGITUDE_S, PUB_AC_GPS_LATITUDE_D, PUB_AC_GPS_LATITUDE_M, PUB_AC_GPS_LATITUDE_S, #endif PUB_AC_GPS_NUM_SV, // 卫星个数 #endif PUB_AC_YC1, PUB_AC_YC2, PUB_AC_YC3, PUB_AC_YC4, PUB_AC_YC5, PUB_AC_YC6, PUB_AC_YC7, PUB_AC_YC8, PUB_AC_YC9, PUB_AC_YC10, PUB_AC_YC11, PUB_AC_YC12, #ifdef BATTERY_BP_L500 PUB_AC_BATT_R, // 电池内阻 PUB_AC_BATT_TEMP, // 电池温度 PUB_AC_BATT_RT_POWER, // 电池实时电量 PUB_AC_BATT_DISCHARGE_CURRENT, // 电池放电电流 PUB_AC_BATT_RECHARGE_CURRENT, // 电池充电电流 #endif PUB_AC_NUM_ALL }; #define PUB_AC_IN_UDC PUB_AC_IN_UZ1 #define UI_NUM (PUB_AC_NUM + SW_AC_NUM * SWITCH_NUM_MAX) #define PUB_AC_MENU_NUM (PUB_AC_IN_TEMP + 1) // 公共测量值在菜单中显示数目 #define MEA_MENU_MAX (SW_AC_MENU_NUM + PUB_AC_MENU_NUM) // g_ui使用的和开关对应的索引 #define UI_SW_INDEX_BEGIN(sw) (PUB_AC_NUM + (sw) * SW_AC_NUM) #define UI_SW_INDEX(sw, sw_index) (PUB_AC_NUM + (sw) * SW_AC_NUM + (sw_index)) #define UI_FLAGS_MAKE_LV1 0X0001 // 线电压1自产 #define UI_FLAGS_MAKE_LV2 0X0002 // 线电压2自产 #define UI_FLAGS_MAKE_I0 0X0004 // I0自产 #define UI_FLAGS_MAKE_IB 0X0008 // IB自产 #define UI_FLAGS_3M 0X0010 // 3表法 #define UI_FLAGS_MAKE_UCA1 0X0020 // 线电压UCA1自产 #define UI_FLAGS_MAKE_UCA2 0X0040 // 线电压UCA2自产 #define UI_FLAGS_MAKE_U01 0X0080 // 线电压UCA2自产 #define UI_FLAGS_MAKE_U02 0X0100 // 线电压UCA2自产 #define UI_FLAGS_MAKE_CIB 0X0200 // 测量 IB自产 /*------------------------------ 类型结构 ------------------------------------- */ struct mea_desc { char *name; u8 unit; u8 unit_angle; }; struct dd_v { float fv; struct rtc_time_t ct; bool bchanged; }; struct sw { u32 ui_flags; // 测量值 qs16 ac_in[SW_AC_NUM_ALL]; u8 link_qds[SW_AC_NUM_ALL]; qs16 ac_in_buf[SW_AC_NUM_ALL]; float ac_in_acc[SW_AC_NUM_ALL]; // 电度 struct dd_v dd[SW_DD_NUM_ALL]; // 遥信值 u8 di[SW_DI_NUM + EV_SW_NUM]; // 最大最小值 u32 m2_min; u32 m2_max; u32 fz_min; u32 fz_max; // 配置索引 u16 di_cfg_index[SW_DI_NUM]; u16 do_cfg_index[SW_DO_NUM]; u16 ac_cfg_index[SW_AC_NUM]; 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 { u32 ui_flags; // 测量值 qs16 ac_in[PUB_AC_NUM_ALL]; qs16 ac_in_buf[PUB_AC_NUM_ALL]; float ac_in_acc[PUB_AC_NUM_ALL]; // 遥信值 u8 di[PUB_DI_NUM + EV_PUB_END - EV_PUB_START]; // 最大最小值 u32 m2_min[4]; u32 m2_max[4]; u32 fz_min[2]; u32 fz_max[2]; // 配置索引 u16 di_cfg_index[PUB_DI_NUM]; u16 do_cfg_index[PUB_DO_NUM]; u16 ac_cfg_index[PUB_AC_NUM]; u16 led_cfg_index[PUB_LED_NUM]; u32 vol_qua_run_time[2]; // 电压合格率 统计运行时间 u32 vol_qua_ok_time[2]; // 电压合格率 统计合格时间 bool bclearqua; }; struct ui { int chn_index; // 实际的ADC通道,如果没有则为CFG_ADC_CHANNEL_ZERO int ui_base_make; // 合成UI的基础ui索引 // 保护值 struct ri_s32 ri; u32 m2[CFG_ADC_DOTS_PER_PERIOD / 2]; // 模值的平方 // qs08 m2_factor; // 幅值自动校准后的修正系数/幅值的理论变换系数 qs08 m2_factor_k; // 幅值的理论变换系数 #ifdef PROTECT_AC_ADJUST int m2_factor_c; // 幅值自动校准后的修正系数 #else qs16 m2_factor_c; // 幅值自动校准后的修正系数 #endif struct rt_stat m2_stat; u32 fz; // 辐值 // 测量谐波 complex h[CFG_ADC_DOTS_PER_PERIOD / 2]; // 谐波 // 测量有效值 qu16 e; // 有效值 float e_acc; // 有效值累加值 float e_factor0; // 幅值自动校准后的修正系数/幅值的理论变换系数(不带温度补偿) float e_factor; // 幅值自动校准后的修正系数/幅值的理论变换系数 float e_ps; // 一二次变比 struct rt_stat e_stat; // 测量相角 qs16 p; // 相角 qs16 p_acc; // 相角累加值 float p_factor; // 相角的理论变换系数 + 相角自动校准后的修正系数 int p_mark; // 角度标志,0:没有初始化;1:角度在1、4象限;-1:角度在2、3象限. struct rt_stat p_stat; // 测量PQ float pq_factor[2]; // 通道名称 char name[CFG_NAME_LEN]; }; struct ui_jy { struct ri_s32 ri; u32 m2; // 模值的平方 }; // 正序,负序及零序 // 电压,电流的实部和虚部 struct ui120 { DWORD vect1; // 正序分量幅值平方 DWORD vect2; // 负序分量幅值平方 }; struct ui_p0 // 零序功率计算 { float p; // 零序有功功率 float q; // 零序无功功率 float ps; // 零序有功功率 float qs; // 零序无功功率 float Pea; // 零序有功功率积分 float Per; // 零序无功功率积分 float Peas; // 零序有功功率积分 float Pers; // 零序无功功率积分 }; extern int g_harmonic_num; extern float g_harmonic_factor[CFG_ADC_DOTS_PER_PERIOD / 2]; extern int g_sw_init; extern struct ui g_ui[UI_NUM]; extern int g_prot_index; // 保护计算时,采样通道中采样点的索引 extern struct ui_jy g_ui_jy[3]; 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[]; extern const s8 *g_sw_di_name_en[SW_DI_NUM]; extern const s8 *g_sw_do_name[]; extern const s8 *g_sw_led_name[]; extern const struct mea_desc g_sw_ac_desc[]; extern const s8 *g_pub_di_name[]; extern const s8 *g_pub_di_name_en[PUB_DI_NUM]; extern const s8 *g_pub_do_name[]; extern const s8 *g_pub_led_name[]; extern const struct mea_desc g_pub_ac_desc[]; extern const struct mea_desc g_dd_desc[]; /*------------------------------ 函数声明 ------------------------------------- */ int sw_init(void); int sw_exit(void); int sw_di_set(u32 sw, u32 no, u8 v); int sw_di_get(u32 sw, u32 no); int sw_do(u32 sw, u32 index, int type); int sw_do_pub(u32 index, int type); float sw_v_m2_factor_k(int id); float _sw_p2(float Ur, float Ui, float Ir, float Ii, float k1, float k2); float _sw_q2(float Ur, float Ui, float Ir, float Ii, float k1, float k2); void sw_cal_protect(void); // 计算全周故障量 int sw_cal_app(void); int sw_auto_adjust(int ui_angle0); int sw_adjust_dc_0(void); int sw_adjust_dc_1(void); int sw_stat_reset(void); int sw_pub_printf(void); int sw_pub_printf_v(void); int sw_printf(void); int sw_printf_v(void); int sw_ui_printf(void); int sw_ui_printf_e(void); int sw_ui_printf_m(void); int sw_ui_printf_p(void); int sw_get_chnl_ps(int index, bool prim); int sw_ext_init(void); void _sw_cal_Xfl120(int ui_index, struct ui120 *pII); extern void transform_msts_to_tts(uint64_t _ull_timestamp_ms, struct timespec *_t_ts); #endif //_SWITCH_H /*------------------------------ 文件结束 ------------------------------------- */