switch.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  1. /******************************************************************************
  2. 版权所有:
  3. 文件名称: switch.h
  4. 文件版本: 01.01
  5. 创建作者: sunxi
  6. 创建日期: 2013-04-15
  7. 功能说明: DTU核心处理程序以开关为单位,循环处理。
  8. 其它说明:
  9. 修改记录:
  10. */
  11. #ifndef _SWITCH_H
  12. #define _SWITCH_H
  13. /*------------------------------- 头文件 --------------------------------------
  14. */
  15. #include "fft.h"
  16. /*------------------------------- 宏定义 --------------------------------------
  17. */
  18. #define INDEX_INVALLID (-1)
  19. #define DC_BOARD_150V 1
  20. #define CFG_NAME_LEN 16
  21. #ifdef DC_BOARD_150V
  22. #define DC_AJUST_0 20.0
  23. #define DC_AJUST_1 100.0
  24. #else
  25. #define DC_AJUST_0 10.0
  26. #define DC_AJUST_1 50.0
  27. #endif
  28. /*------------------------------ 类型结构 -------------------------------------
  29. */
  30. enum
  31. {
  32. SW_DI_TYPE_00 = 0,
  33. SW_DI_TYPE_OFF,
  34. SW_DI_TYPE_ON,
  35. SW_DI_TYPE_11
  36. };
  37. enum
  38. {
  39. SW_DO_TYPE_OFF = 0,
  40. SW_DO_TYPE_ON,
  41. SW_DO_TYPE_SELECT_OFF,
  42. SW_DO_TYPE_SELECT_ON
  43. };
  44. enum
  45. {
  46. SW_DI_KRHW = 0, // 合位
  47. SW_DI_KRTW, // 分位
  48. SW_DI_WCN, // 弹簧未储能
  49. SW_DI_YCN, // 弹簧已储能
  50. SW_DI_GLDZ_HW, // 隔离刀合位
  51. SW_DI_GLDZ_FW, // 隔离刀分位
  52. SW_DI_JDDZ_HW, // 接地刀合位
  53. SW_DI_JDDZ_FW, // 接地刀分位
  54. SW_DI_QYD_GJ, // SF6低气压告警
  55. SW_DI_QYD_BS, // SF6低气压闭锁
  56. SW_DI_BHZTT, // 自动化投退
  57. SW_DI_BHTT, // 常规保护
  58. SW_DI_JZS_TT, // 集中式
  59. SW_DI_CHZ, // 重合闸投入
  60. SW_DI_BSCH, // 重合闸停用
  61. SW_DI_FA_TT, // 馈线自动化
  62. SW_DI_FA_GOOSE, // 智能分布式
  63. SW_DI_FA_BS_TT, // 就地FA闭锁
  64. SW_DI_FA_LS, // 联络/分段模式
  65. SW_DI_YYXH, // 带电显示器有压
  66. SW_DI_YB_FZ, // 分闸出口压板状态
  67. SW_DI_YB_HZ, // 合闸出口压板状态
  68. SW_DI_SH, // 手动合闸
  69. SW_DI_SF, // 手动分闸
  70. SW_DI_DRIVE_ERR, // 驱动器异常
  71. SW_DI_YJCY_A, // 母线侧硬件残压
  72. SW_DI_YJCY_B, // 线路侧硬件残压
  73. SW_DI_KZDX, // 控制回路断线
  74. SW_DI_HZHLJS, // 合闸回路监视
  75. SW_DI_FZHLJS, // 分闸回路监视
  76. SW_DI_TZWZ, // 跳闸位置 30
  77. SW_DI_HZWZ, // 合闸位置
  78. SW_DI_PT1SY, // 电源侧瞬压
  79. SW_DI_PT2SY, // 负荷侧瞬压
  80. SW_DI_KGYF, // 开关远方
  81. SW_DI_IMP1, // 脉冲计数1
  82. SW_DI_IMP2, // 脉冲计数2
  83. #ifdef DO_KOUT_CHECK
  84. SW_DI_KOCHK, // 开出自检
  85. #else
  86. SW_DI_26,
  87. #endif
  88. #ifdef CUSTOMIZE_BZT // 备自投
  89. SW_DI_BZT, // 备自投
  90. SW_DI_DL1_HW, // #1进线合位
  91. SW_DI_DL1_TW, // 1进线分位
  92. SW_DI_DL2_HW, // 2进线合位
  93. SW_DI_DL2_TW, // 2进线分位
  94. SW_DI_DL3_HW, // 备自投-合位
  95. SW_DI_DL3_TW, // 备自投-分位
  96. SW_DI_BSBZT, // 闭锁备自投
  97. SW_DI_BZT_SY, // 备自投-失压分闸
  98. #endif
  99. SW_DI_NUM
  100. };
  101. #define SW_DI_NUM_ALL (SW_DI_NUM + EV_SW_NUM)
  102. enum
  103. {
  104. SW_DO_BHH = 0, // 保护合闸
  105. SW_DO_BHT, // 保护分闸
  106. SW_DO_YKH, // 遥控合闸
  107. SW_DO_YKT, // 遥控分闸
  108. SW_RST_SY, // 瞬压复归
  109. SW_RST_SY1, // 瞬压复归
  110. SW_FBT_SY, // 瞬压闭锁
  111. SW_DO_CN, // 储能信号
  112. SW_DO_BHDZ, // 保护动作开出
  113. SW_DO_TQBS, // 同期合闸开出
  114. #ifdef CUSTOMIZE_BZT // 备自投
  115. SW_DO_DL1_HZ, // 备自投-#1进线合闸
  116. SW_DO_DL1_FZ, // 备自投-#1进线分闸
  117. SW_DO_DL2_HZ, // 备自投-#2进线合闸
  118. SW_DO_DL2_FZ, // 备自投-#2进线分闸
  119. SW_DO_FD_HZ, // 备自投-分段合闸
  120. SW_DO_FD_FZ, // 备自投-分段分闸
  121. SW_DO_JX1_SY, // 备自投-进线1失压分闸
  122. SW_DO_JX2_SY, // 备自投-进线2失压分闸
  123. #endif
  124. #if defined SW_FAIL_SINGLE_OUT
  125. SW_DO_UNSTUCK_SINGLE, // 开关失灵
  126. #endif
  127. SW_DO_NUM
  128. };
  129. // 开关类LED类型
  130. enum
  131. {
  132. SW_LED_HW = 0, // 合位灯
  133. SW_LED_TW, // 分位灯
  134. SW_LED_WCN, // 未储能灯
  135. SW_LED_GL, // 过流灯
  136. SW_LED_JD, // 接地灯
  137. SW_LED_MODE_BH, // 常规保护灯
  138. SW_LED_MODE_FA, // 就地FA灯
  139. SW_LED_MODE_JZFA, // 集中FA灯
  140. SW_LED_MODE_GOOSE, // 分布式灯
  141. SW_LED_CHZ, // 重合闸灯
  142. SW_LED_CHZ_CD, // 重合闸充电灯(之前的充电灯包含联络和分布式的充电状态,非单独的重合闸充电灯)
  143. SW_LED_TZ, // 跳闸灯
  144. SW_LED_FAULT_GJ, // 故障告警灯
  145. SW_LED_LOCK, // 闭锁灯
  146. SW_LED_DZ, // 动作灯
  147. SW_LED_CHZBS, // 重合闸闭锁灯
  148. SW_LED_CHZBS_LOCK, // 重合闸闭锁灯+FA闭锁合闸
  149. SW_LED_DRIVE, // 开关传动灯
  150. SW_LED_LL, // 联络
  151. SW_LED_FD, // 分段
  152. SW_LED_CD, // 充电灯(包含重合闸、联络和分布式的充电)
  153. SW_LED_GLDZ, // 隔离刀闸灯
  154. SW_LED_JDDZ, // 接地刀闸灯
  155. #if !defined CPU_FUXI
  156. SW_LED_ZHHW, // 综合合位灯,以一个灯代表双点灯
  157. SW_LED_ZHTW, // 综合合位灯,以一个灯代表双点灯
  158. SW_LED_XT, // XT灯
  159. SW_LED_YT, // YT灯
  160. SW_LED_X_YT,
  161. SW_LED_ZDJL, //"自动解列功能",
  162. SW_LED_TQHZ, //"同期合闸功能",
  163. SW_LED_TYBHTT, //"停用保护及FA",
  164. SW_LED_TYZDJL, //"停用自动解列",
  165. SW_LED_TYTQHZ, //"停用同期合闸",
  166. #endif
  167. SW_LED_NUM
  168. };
  169. #define SW_DO_LED_NUM (SW_DO_NUM + SW_LED_NUM)
  170. enum
  171. {
  172. SW_AC_IA = 0, // IA
  173. SW_AC_IB, // IB
  174. SW_AC_IC, // IC
  175. SW_AC_I0, // I0
  176. #ifdef SW_AC_I0S_SAMPLE
  177. SW_AC_I0s,
  178. #endif
  179. SW_AC_CIA, // 测量IA
  180. SW_AC_CIB, // 测量IB
  181. SW_AC_CIC, // 测量IC
  182. SW_AC_NUM
  183. };
  184. enum
  185. {
  186. SW_AC_IN_P = SW_AC_NUM,
  187. SW_AC_IN_Pa,
  188. SW_AC_IN_Pb,
  189. SW_AC_IN_Pc,
  190. SW_AC_IN_Q,
  191. SW_AC_IN_Qa,
  192. SW_AC_IN_Qb,
  193. SW_AC_IN_Qc,
  194. #ifdef FUN_YC_POWER_S
  195. SW_AC_IN_S,
  196. #endif
  197. SW_AC_IN_COS,
  198. SW_AC_IN_BI_UNBALANCE, // 电流不平衡度
  199. SW_AC_IN_CI_UNBALANCE, // 电流不平衡度
  200. SW_AC_IN_IMP1,
  201. SW_AC_IN_IMP2,
  202. SW_AC_IN_SET_BEGIN,
  203. SW_AC_IN_SET2,
  204. SW_AC_IN_SET3,
  205. SW_AC_IN_SET4,
  206. SW_AC_IN_SET5,
  207. SW_AC_IN_SET6,
  208. SW_AC_IN_SET7,
  209. SW_AC_IN_SET8,
  210. SW_AC_IN_SET9,
  211. SW_AC_IN_SET10,
  212. SW_AC_IN_SET11,
  213. SW_AC_IN_SET_END,
  214. #ifdef METERING_ENERGY
  215. SW_AC_IN_XS_UAB,
  216. SW_AC_IN_XS_UBC,
  217. SW_AC_IN_XS_UCA,
  218. SW_AC_IN_XS_UA,
  219. SW_AC_IN_XS_UB,
  220. SW_AC_IN_XS_UC,
  221. SW_AC_IN_XS_IA,
  222. SW_AC_IN_XS_IB,
  223. SW_AC_IN_XS_IC,
  224. SW_AC_IN_XS_I0,
  225. SW_AC_IN_XS_P,
  226. SW_AC_IN_XS_PA,
  227. SW_AC_IN_XS_PB,
  228. SW_AC_IN_XS_PC,
  229. SW_AC_IN_XS_Q,
  230. SW_AC_IN_XS_QA,
  231. SW_AC_IN_XS_QB,
  232. SW_AC_IN_XS_QC,
  233. SW_AC_IN_XS_S,
  234. SW_AC_IN_XS_SA,
  235. SW_AC_IN_XS_SB,
  236. SW_AC_IN_XS_SC,
  237. SW_AC_IN_XS_COS,
  238. SW_AC_IN_XS_COSA,
  239. SW_AC_IN_XS_COSB,
  240. SW_AC_IN_XS_COSC,
  241. SW_AC_IN_XS_FREQ,
  242. #else
  243. SW_AC_IN_YC1,
  244. SW_AC_IN_YC2,
  245. SW_AC_IN_YC3,
  246. SW_AC_IN_YC4,
  247. SW_AC_IN_YC5,
  248. SW_AC_IN_YC6,
  249. SW_AC_IN_YC7,
  250. SW_AC_IN_YC8,
  251. SW_AC_IN_YC9,
  252. SW_AC_IN_YC10,
  253. SW_AC_IN_YC11,
  254. SW_AC_IN_YC12,
  255. #endif
  256. SW_AC_NUM_ALL
  257. };
  258. #ifdef SW_AC_I0S_SAMPLE
  259. #define SW_AC_MENU_NUM (SW_AC_IN_IMP2) // 开关测量值在菜单中显示数目
  260. #else
  261. #define SW_AC_MENU_NUM (SW_AC_IN_IMP2 + 1) // 开关测量值在菜单中显示数目
  262. #endif
  263. enum
  264. {
  265. SW_DD_NOW1 = 0,
  266. SW_DD_NOW2,
  267. SW_DD_NOW3,
  268. SW_DD_NOW4,
  269. SW_DD_NOW5,
  270. SW_DD_NOW6,
  271. SW_DD_NOW7,
  272. SW_DD_NOW8,
  273. SW_DD_15M1,
  274. SW_DD_15M2,
  275. SW_DD_15M3,
  276. SW_DD_15M4,
  277. SW_DD_15M5,
  278. SW_DD_15M6,
  279. SW_DD_15M7,
  280. SW_DD_15M8,
  281. SW_DD_DAY1,
  282. SW_DD_DAY2,
  283. SW_DD_DAY3,
  284. SW_DD_DAY4,
  285. SW_DD_DAY5,
  286. SW_DD_DAY6,
  287. SW_DD_DAY7,
  288. SW_DD_DAY8,
  289. SW_DD_CHA1,
  290. SW_DD_CHA2,
  291. SW_DD_CHA3,
  292. SW_DD_CHA4,
  293. SW_DD_CHA5,
  294. SW_DD_CHA6,
  295. SW_DD_CHA7,
  296. SW_DD_CHA8,
  297. #ifdef METERING_ENERGY
  298. SW_DD_EPA,
  299. SW_DD_EPB,
  300. SW_DD_EPC,
  301. SW_DD_EPAP,
  302. SW_DD_EPBP,
  303. SW_DD_EPCP,
  304. SW_DD_EPAN,
  305. SW_DD_EPBN,
  306. SW_DD_EPCN,
  307. SW_DD_EP,
  308. SW_DD_EQ,
  309. #endif
  310. SW_DD_NUM_ALL,
  311. };
  312. enum
  313. {
  314. PUB_DI_YF = 0, // 远方
  315. PUB_DI_JD, // 就地
  316. PUB_DI_JX, // 检修状态投入
  317. PUB_DI_GMDK, // 柜门打开
  318. PUB_DI_RST, // 复归信号
  319. PUB_DI_DCJLSD, // 交流失电
  320. PUB_DI_DCHHZT, // 电池活化状态
  321. PUB_DI_DCQY, // 电池欠压
  322. PUB_DI_DCDYGZ, // 电源模块故障
  323. PUB_DI_CAP, // 电容器动作
  324. PUB_DI_ZLDYQY, // 直流电源欠压
  325. PUB_DI_NZYC, // 内阻异常
  326. PUB_DI_JS, // FA解锁
  327. PUB_DI_REBOOT, // 装置复位
  328. PUB_DI_BHALL, // 功能总压板
  329. PUB_DI_RST_JS, // 信号复归+FA解锁
  330. PUB_DI_FDL1, // 非电量1
  331. PUB_DI_FDL2, // 非电量2
  332. PUB_DI_FDL3, // 非电量3
  333. PUB_DI_FDL4, // 非电量4
  334. PUB_DI_FDL5, // 非电量5
  335. PUB_DI_FDL6, // 非电量6
  336. PUB_DI_1,
  337. PUB_DI_2,
  338. PUB_DI_3,
  339. PUB_DI_4,
  340. PUB_DI_5,
  341. PUB_DI_6,
  342. #ifdef YX_DI_ERROR
  343. PUB_DI_ERROR, // 遥信自检
  344. #else
  345. PUB_DI_7,
  346. #endif
  347. #ifdef KZ_OUT_TT
  348. PUB_KZ_OUT_TT, // 控制出口压板
  349. #else
  350. PUB_DI_8,
  351. #endif
  352. PUB_DI_NUM
  353. };
  354. #define PUB_DI_NUM_ALL (PUB_DI_NUM + EV_PUB_NUM)
  355. enum
  356. {
  357. PUB_DO_DCHH = 0, // 电池活化
  358. PUB_DO_HHTC, // 活化退出
  359. PUB_QUA_CLR,
  360. PUB_DO_YK, // 预控
  361. PUB_DO_JS, // 解除闭锁
  362. PUB_DO_RESTART, // 远方重启
  363. PUB_DO_RST, // 远方复归
  364. #ifdef YK_FG_FAJS
  365. PUB_DO_RST_FAJS, // 远方复归+FA解锁
  366. #endif
  367. PUB_CHYB_HZ, // 虚遥控,重合闸压板
  368. PUB_CHYB_FZ, // 虚遥控,分闸压板
  369. #if defined BHFA_YB_YK
  370. PUB_BHYB_HZ, // 虚遥控,分闸压板
  371. PUB_BHYB_FZ, // 虚遥控,分闸压板
  372. PUB_KZYB_HZ, // 虚遥控,控制出口合闸压板(线路保护投停&&保护投入软压板)
  373. PUB_KZYB_FZ, // 虚遥控,控制出口分闸压板(线路保护投停&&保护投入软压板)
  374. PUB_BHYBTT_HZ, // 虚遥控,常规保护投退合闸压板(线路保护投停&&保护投入软压板)
  375. PUB_BHYBTT_FZ, // 虚遥控,常规保护投退分闸压板(线路保护投停&&保护投入软压板)
  376. PUB_FAYBTT_HZ, // 虚遥控,FA保护投退合闸压板(线路保护投停&&保护投入软压板)
  377. PUB_FAYBTT_FZ, // 虚遥控,FA保护投退分闸压板(线路保护投停&&保护投入软压板)
  378. PUB_GOOSEYBTT_HZ, // 虚遥控,goose保护投退合闸压板(线路保护投停&&保护投入软压板)
  379. PUB_GOOSEYBTT_FZ, // 虚遥控,goose保护投退分闸压板(线路保护投停&&保护投入软压板)
  380. #else
  381. PUB_BHYB_HZ, // 虚遥控,分闸压板
  382. PUB_BHYB_FZ, // 虚遥控,分闸压板
  383. PUB_KZYB_HZ, // 虚遥控,控制出口合闸压板(线路保护投停&&保护投入软压板)
  384. PUB_KZYB_FZ, // 虚遥控,控制出口分闸压板(线路保护投停&&保护投入软压板)
  385. #endif
  386. PUB_TQ_YB_HZ, // 虚遥控,同期合闸软压板
  387. PUB_TQ_YB_FZ, // 虚遥控,同期合闸软压板
  388. PUB_JZS_YB_HZ, // 虚遥控,集中式软压板
  389. PUB_JZS_YB_FZ, // 虚遥控,集中式软压板
  390. #ifdef YK_SOFT_YB
  391. PUB_YK_YB_HZ, // 虚遥控,遥控软压板
  392. PUB_YK_YB_FZ, // 虚遥控,遥控软压板
  393. #endif
  394. #ifdef YK_FA_ENBLE
  395. PUB_YK_BS_FA_HZ, // FA遥控闭锁-合,
  396. PUB_YK_BS_FA_FZ, // FA遥控闭锁-分,
  397. #endif
  398. #ifdef YK_FA_S_L_ENBLE
  399. PUB_YK_FA_S_L_HZ, // 分段/联络-合,
  400. PUB_YK_FA_S_L_FZ, // 分段/联络-分,
  401. #endif
  402. PUB_JL_YB_HZ, // 虚遥控,自动解列软压板
  403. PUB_JL_YB_FZ, // 虚遥控,自动解列软压板
  404. #ifdef METERING_ENERGY
  405. PUB_DD_CLR, // 虚遥控,电度清零
  406. PUB_LLSOE_CLR, // 虚遥控,线损事件清零
  407. #endif
  408. #ifdef FUNC_DRIVE
  409. PUB_DRIVE_YB_ON, // 不停电传动软压板投入
  410. PUB_DRIVE_YB_OFF, // 不停电传动软压板退出
  411. PUB_DRIVE_HZ, // 不停电传动指令
  412. #endif
  413. #ifdef FUNC_DRIVE_JY
  414. PUB_UNSTOP_V_DRI_HZ, // 不停电传动功能
  415. #endif
  416. #ifdef FUNC_RESET_EQU
  417. PUB_RESET_EQU, // 重启装置
  418. #endif
  419. PUB_DO_01,
  420. PUB_DO_02,
  421. PUB_DO_03,
  422. PUB_DO_04,
  423. PUB_DO_05,
  424. PUB_DO_06,
  425. PUB_DO_07,
  426. PUB_DO_08,
  427. PUB_DO_09,
  428. PUB_DO_10,
  429. PUB_DO_NUM,
  430. };
  431. // 公共类LED类型
  432. enum
  433. {
  434. PUB_LED_POWER = 0, // 电源灯
  435. PUB_LED_RUN, // 运行灯
  436. PUB_LED_COMM, // 通信灯
  437. PUB_LED_COMM_STATUS, // 通信状态灯
  438. PUB_LED_BAT, // 电池灯
  439. PUB_LED_ERR, // 异常灯
  440. #if defined GD_AREA_ECZD_2020
  441. PUB_LED_RUN_GJ, // 运行告警,PT断线、气压低、GOOSE通信异常
  442. #endif
  443. PUB_LED_DZ, // 动作灯,例如电压类动作
  444. PUB_LED_YF, // 远方灯
  445. PUB_LED_JD, // 就地灯
  446. PUB_LED_SP1, // 串口
  447. PUB_LED_SP2,
  448. PUB_LED_SP3,
  449. PUB_LED_SP4,
  450. PUB_LED_NET1, // 网口
  451. PUB_LED_NET2,
  452. PUB_LED_NET3,
  453. PUB_LED_JL_ERR, // 级联异常
  454. PUB_LED_JG_1, // 间隔通信
  455. PUB_LED_JG_2,
  456. PUB_LED_JG_3,
  457. PUB_LED_JG_4,
  458. PUB_LED_JG_5,
  459. PUB_LED_JG_6,
  460. PUB_LED_IEC_ERR, // 规约通信异常灯,
  461. #ifdef KZ_OUT_TT
  462. PUB_LED_KZ_OUT,
  463. #endif
  464. PUB_LED_NUM,
  465. };
  466. #define PUB_DO_LED_NUM (PUB_DO_NUM + PUB_LED_NUM)
  467. enum
  468. {
  469. PUB_AC_UA1 = 0,
  470. PUB_AC_UB1,
  471. PUB_AC_UC1,
  472. PUB_AC_UAB1,
  473. PUB_AC_UBC1,
  474. PUB_AC_UCA1,
  475. PUB_AC_U01,
  476. PUB_AC_US1,
  477. PUB_AC_UA2,
  478. PUB_AC_UB2,
  479. PUB_AC_UC2,
  480. PUB_AC_UAB2,
  481. PUB_AC_UBC2,
  482. PUB_AC_UCA2,
  483. PUB_AC_U02,
  484. PUB_AC_US2,
  485. PUB_AC_NUM
  486. };
  487. enum
  488. {
  489. PUB_AC_IN_V_UNBALANCE1 = PUB_AC_NUM, // 电压组1不平衡度
  490. PUB_AC_IN_V_UNBALANCE2, // 电压组2不平衡度
  491. PUB_AC_IN_F1,
  492. PUB_AC_IN_F2,
  493. PUB_AC_IN_UZ1,
  494. PUB_AC_IN_UZ2,
  495. PUB_AC_IN_DLTUAB,
  496. PUB_AC_IN_DLTUBC,
  497. PUB_AC_IN_DLTUCA,
  498. PUB_AC_IN_ARGUAB,
  499. PUB_AC_IN_ARGUBC,
  500. PUB_AC_IN_ARGUCA,
  501. PUB_AC_IN_TEMP,
  502. #ifdef TMP_CHIP_AHT20
  503. PUB_AC_IN_HUMI,
  504. #endif
  505. PUB_AC_IN_VER,
  506. #ifdef BATTERY_WITH_COMM
  507. PUB_AC_BATT_ACT_T_MAX, // 电池活化最大放电时长
  508. PUB_AC_BATT_ACT_T_NOW, // 电池活化当前放电时长
  509. #endif
  510. #ifdef DEV_GPS_ATGM332D
  511. #ifndef GPS_JWD_SPLIT
  512. PUB_AC_GPS_LONGITUDE,
  513. PUB_AC_GPS_LATITUDE,
  514. #else
  515. PUB_AC_GPS_LONGITUDE_D,
  516. PUB_AC_GPS_LONGITUDE_M,
  517. PUB_AC_GPS_LONGITUDE_S,
  518. PUB_AC_GPS_LATITUDE_D,
  519. PUB_AC_GPS_LATITUDE_M,
  520. PUB_AC_GPS_LATITUDE_S,
  521. #endif
  522. PUB_AC_GPS_NUM_SV, // 卫星个数
  523. #endif
  524. PUB_AC_YC1,
  525. PUB_AC_YC2,
  526. PUB_AC_YC3,
  527. PUB_AC_YC4,
  528. PUB_AC_YC5,
  529. PUB_AC_YC6,
  530. PUB_AC_YC7,
  531. PUB_AC_YC8,
  532. PUB_AC_YC9,
  533. PUB_AC_YC10,
  534. PUB_AC_YC11,
  535. PUB_AC_YC12,
  536. #ifdef BATTERY_BP_L500
  537. PUB_AC_BATT_R, // 电池内阻
  538. PUB_AC_BATT_TEMP, // 电池温度
  539. PUB_AC_BATT_RT_POWER, // 电池实时电量
  540. PUB_AC_BATT_DISCHARGE_CURRENT, // 电池放电电流
  541. PUB_AC_BATT_RECHARGE_CURRENT, // 电池充电电流
  542. #endif
  543. PUB_AC_NUM_ALL
  544. };
  545. #define PUB_AC_IN_UDC PUB_AC_IN_UZ1
  546. #define UI_NUM (PUB_AC_NUM + SW_AC_NUM * SWITCH_NUM_MAX)
  547. #define PUB_AC_MENU_NUM (PUB_AC_IN_TEMP + 1) // 公共测量值在菜单中显示数目
  548. #define MEA_MENU_MAX (SW_AC_MENU_NUM + PUB_AC_MENU_NUM)
  549. // g_ui使用的和开关对应的索引
  550. #define UI_SW_INDEX_BEGIN(sw) (PUB_AC_NUM + (sw) * SW_AC_NUM)
  551. #define UI_SW_INDEX(sw, sw_index) (PUB_AC_NUM + (sw) * SW_AC_NUM + (sw_index))
  552. #define UI_FLAGS_MAKE_LV1 0X0001 // 线电压1自产
  553. #define UI_FLAGS_MAKE_LV2 0X0002 // 线电压2自产
  554. #define UI_FLAGS_MAKE_I0 0X0004 // I0自产
  555. #define UI_FLAGS_MAKE_IB 0X0008 // IB自产
  556. #define UI_FLAGS_3M 0X0010 // 3表法
  557. #define UI_FLAGS_MAKE_UCA1 0X0020 // 线电压UCA1自产
  558. #define UI_FLAGS_MAKE_UCA2 0X0040 // 线电压UCA2自产
  559. #define UI_FLAGS_MAKE_U01 0X0080 // 线电压UCA2自产
  560. #define UI_FLAGS_MAKE_U02 0X0100 // 线电压UCA2自产
  561. #define UI_FLAGS_MAKE_CIB 0X0200 // 测量 IB自产
  562. /*------------------------------ 类型结构 -------------------------------------
  563. */
  564. struct mea_desc
  565. {
  566. char *name;
  567. u8 unit;
  568. u8 unit_angle;
  569. };
  570. struct dd_v
  571. {
  572. float fv;
  573. struct rtc_time_t ct;
  574. bool bchanged;
  575. };
  576. struct sw
  577. {
  578. u32 ui_flags;
  579. // 测量值
  580. qs16 ac_in[SW_AC_NUM_ALL];
  581. u8 link_qds[SW_AC_NUM_ALL];
  582. qs16 ac_in_buf[SW_AC_NUM_ALL];
  583. float ac_in_acc[SW_AC_NUM_ALL];
  584. // 电度
  585. struct dd_v dd[SW_DD_NUM_ALL];
  586. // 遥信值
  587. u8 di[SW_DI_NUM + EV_SW_NUM];
  588. // 最大最小值
  589. u32 m2_min;
  590. u32 m2_max;
  591. u32 fz_min;
  592. u32 fz_max;
  593. // 配置索引
  594. u16 di_cfg_index[SW_DI_NUM];
  595. u16 do_cfg_index[SW_DO_NUM];
  596. u16 ac_cfg_index[SW_AC_NUM];
  597. u16 led_cfg_index[SW_LED_NUM];
  598. };
  599. struct sw_t
  600. {
  601. // 过流标识
  602. u32 overI_flags[3];
  603. // 方向
  604. u32 dir_flags[3];
  605. // 测量值
  606. qs16 ac_in[3];
  607. float ac_in_acc[3];
  608. };
  609. struct sw_public
  610. {
  611. u32 ui_flags;
  612. // 测量值
  613. qs16 ac_in[PUB_AC_NUM_ALL];
  614. qs16 ac_in_buf[PUB_AC_NUM_ALL];
  615. float ac_in_acc[PUB_AC_NUM_ALL];
  616. // 遥信值
  617. u8 di[PUB_DI_NUM + EV_PUB_END - EV_PUB_START];
  618. // 最大最小值
  619. u32 m2_min[4];
  620. u32 m2_max[4];
  621. u32 fz_min[2];
  622. u32 fz_max[2];
  623. // 配置索引
  624. u16 di_cfg_index[PUB_DI_NUM];
  625. u16 do_cfg_index[PUB_DO_NUM];
  626. u16 ac_cfg_index[PUB_AC_NUM];
  627. u16 led_cfg_index[PUB_LED_NUM];
  628. u32 vol_qua_run_time[2]; // 电压合格率 统计运行时间
  629. u32 vol_qua_ok_time[2]; // 电压合格率 统计合格时间
  630. bool bclearqua;
  631. };
  632. struct ui
  633. {
  634. int chn_index; // 实际的ADC通道,如果没有则为CFG_ADC_CHANNEL_ZERO
  635. int ui_base_make; // 合成UI的基础ui索引
  636. // 保护值
  637. struct ri_s32 ri;
  638. u32 m2[CFG_ADC_DOTS_PER_PERIOD / 2]; // 模值的平方
  639. // qs08 m2_factor; // 幅值自动校准后的修正系数/幅值的理论变换系数
  640. qs08 m2_factor_k; // 幅值的理论变换系数
  641. #ifdef PROTECT_AC_ADJUST
  642. int m2_factor_c; // 幅值自动校准后的修正系数
  643. #else
  644. qs16 m2_factor_c; // 幅值自动校准后的修正系数
  645. #endif
  646. struct rt_stat m2_stat;
  647. u32 fz; // 辐值
  648. // 测量谐波
  649. complex h[CFG_ADC_DOTS_PER_PERIOD / 2]; // 谐波
  650. // 测量有效值
  651. qu16 e; // 有效值
  652. float e_acc; // 有效值累加值
  653. float e_factor0; // 幅值自动校准后的修正系数/幅值的理论变换系数(不带温度补偿)
  654. float e_factor; // 幅值自动校准后的修正系数/幅值的理论变换系数
  655. float e_ps; // 一二次变比
  656. struct rt_stat e_stat;
  657. // 测量相角
  658. qs16 p; // 相角
  659. qs16 p_acc; // 相角累加值
  660. float p_factor; // 相角的理论变换系数 + 相角自动校准后的修正系数
  661. int p_mark; // 角度标志,0:没有初始化;1:角度在1、4象限;-1:角度在2、3象限.
  662. struct rt_stat p_stat;
  663. // 测量PQ
  664. float pq_factor[2];
  665. // 通道名称
  666. char name[CFG_NAME_LEN];
  667. };
  668. struct ui_jy
  669. {
  670. struct ri_s32 ri;
  671. u32 m2; // 模值的平方
  672. };
  673. // 正序,负序及零序
  674. // 电压,电流的实部和虚部
  675. struct ui120
  676. {
  677. DWORD vect1; // 正序分量幅值平方
  678. DWORD vect2; // 负序分量幅值平方
  679. };
  680. struct ui_p0 // 零序功率计算
  681. {
  682. float p; // 零序有功功率
  683. float q; // 零序无功功率
  684. float ps; // 零序有功功率
  685. float qs; // 零序无功功率
  686. float Pea; // 零序有功功率积分
  687. float Per; // 零序无功功率积分
  688. float Peas; // 零序有功功率积分
  689. float Pers; // 零序无功功率积分
  690. };
  691. extern int g_harmonic_num;
  692. extern float g_harmonic_factor[CFG_ADC_DOTS_PER_PERIOD / 2];
  693. extern int g_sw_init;
  694. extern struct ui g_ui[UI_NUM];
  695. extern int g_prot_index; // 保护计算时,采样通道中采样点的索引
  696. extern struct ui_jy g_ui_jy[3];
  697. extern struct ui_p0 g_ui_p0[SWITCH_NUM_MAX]; // 零序功率
  698. extern struct sw_public g_sw_pub;
  699. extern struct sw g_sw[];
  700. extern struct sw_t g_sw_temp[];
  701. extern struct ui120 Us1_120, Us2_120;
  702. extern const s8 *g_sw_di_name[];
  703. extern const s8 *g_sw_di_name_en[SW_DI_NUM];
  704. extern const s8 *g_sw_do_name[];
  705. extern const s8 *g_sw_led_name[];
  706. extern const struct mea_desc g_sw_ac_desc[];
  707. extern const s8 *g_pub_di_name[];
  708. extern const s8 *g_pub_di_name_en[PUB_DI_NUM];
  709. extern const s8 *g_pub_do_name[];
  710. extern const s8 *g_pub_led_name[];
  711. extern const struct mea_desc g_pub_ac_desc[];
  712. extern const struct mea_desc g_dd_desc[];
  713. /*------------------------------ 函数声明 -------------------------------------
  714. */
  715. int sw_init(void);
  716. int sw_exit(void);
  717. int sw_di_set(u32 sw, u32 no, u8 v);
  718. int sw_di_get(u32 sw, u32 no);
  719. int sw_do(u32 sw, u32 index, int type);
  720. int sw_do_pub(u32 index, int type);
  721. float sw_v_m2_factor_k(int id);
  722. float _sw_p2(float Ur, float Ui, float Ir, float Ii, float k1, float k2);
  723. float _sw_q2(float Ur, float Ui, float Ir, float Ii, float k1, float k2);
  724. void sw_cal_protect(void); // 计算全周故障量
  725. int sw_cal_app(void);
  726. int sw_auto_adjust(int ui_angle0);
  727. int sw_adjust_dc_0(void);
  728. int sw_adjust_dc_1(void);
  729. int sw_stat_reset(void);
  730. int sw_pub_printf(void);
  731. int sw_pub_printf_v(void);
  732. int sw_printf(void);
  733. int sw_printf_v(void);
  734. int sw_ui_printf(void);
  735. int sw_ui_printf_e(void);
  736. int sw_ui_printf_m(void);
  737. int sw_ui_printf_p(void);
  738. int sw_get_chnl_ps(int index, bool prim);
  739. int sw_ext_init(void);
  740. void _sw_cal_Xfl120(int ui_index, struct ui120 *pII);
  741. extern void transform_msts_to_tts(uint64_t _ull_timestamp_ms, struct timespec *_t_ts);
  742. #endif //_SWITCH_H
  743. /*------------------------------ 文件结束 -------------------------------------
  744. */