FA.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. /*******************************************************************************
  2. 版权所有:
  3. 版本号: 1.00
  4. 文件名: vol.h
  5. 生成日期:2010-04-25
  6. 作者: 电力产品开发部
  7. 功能说明:电压控制文件
  8. ****************************************************************************/
  9. /*------------------------------- 头文件 --------------------------------------
  10. */
  11. #ifndef __VOL_LS_H
  12. #define __VOL_LS_H
  13. /*------------------------------- 宏定义 --------------------------------------
  14. */
  15. enum
  16. {
  17. FA_TYPE_S = 0, // 分段开关
  18. FA_TYPE_L, // 联络开关
  19. };
  20. enum
  21. {
  22. S_INIT = 1, // 初始状态
  23. S_TEMP, // 临时状态,用于检测瞬时电压
  24. S_BSFLASH, // 瞬时电压闭锁状态
  25. S_XTIME, // X时限计数状态
  26. S_X_ZTIME, // X时限计数中发生的Z时限计数状态
  27. S_BSXTIME, // X时限闭锁状态
  28. S_YTIME, // Y时限计数状态
  29. S_Y_ZTIME, // Y时限计数中发生的Z时限计数状态
  30. S_BSYTIME, // Y时限闭锁状态
  31. S_USUAL, // 正常运行状态
  32. S_BSDOUBLE, // 双电源闭锁状态
  33. S_BSHHGZ, // 合后故障闭锁状态
  34. S_BSFZ, // 合后闭锁分闸状态
  35. S_BSDL, // 大电流闭锁分闸状态
  36. // S_D_ZTIME, //双电源闭锁状态中发生的Z时限计数状态
  37. S_BS_SW, //
  38. };
  39. enum
  40. {
  41. L_INIT = 1, // 初始状态
  42. L_BS_STATE, // 联络闭锁,待双侧YL有压解锁
  43. L_Y_ZTIME, // Y时限计数状态中发生的Z时限计数状态
  44. L_USUAL, // 正常运行状态
  45. L_XLTIME, // X时限计数状态
  46. L_XL_ZTIME, // X时限计数中发生的Z时限计数状态
  47. L_RELAYON, // 开关合运行状态
  48. L_YL_TIME, // 合闸成功Y计时
  49. };
  50. struct vol_stu
  51. {
  52. u32 status; // 当前状态
  53. u32 shangdiance; // 当前上电侧
  54. u32 S_lockstatus; // 分段模式合闸闭锁状态
  55. u32 L_lockstatus; // 联络模式合闸闭锁状态
  56. u32 L_status; // 联络模式当前状态
  57. };
  58. /*------------------------------ 类型结构 -------------------------------------
  59. */
  60. typedef union UVOT_U
  61. {
  62. WORD wfFlag;
  63. struct
  64. {
  65. WORD bQD : 1; // 失压启动
  66. WORD bQD1 : 1; // 失压启动
  67. WORD bTz : 1; // 跳闸动作
  68. WORD bHz : 1; // 合闸动作
  69. WORD bLock : 1; // 合后故障闭锁失压分闸标志
  70. WORD bGL : 1; // 合后故障闭锁失压分闸标志
  71. WORD bJD : 1; // 合后接地故障闭锁失压分闸标志
  72. WORD bGLQD : 1; // 过流启动 暂时没用
  73. WORD bStartLock : 1; // 暂时没用
  74. WORD bDISENDZ : 1; // 暂时没用
  75. WORD bDISENBS : 1; // 暂时没用
  76. WORD bEvent : 1; // 事件记录
  77. WORD bFault : 1; // 计数完成
  78. WORD bTz1 : 1; // 计数完成
  79. WORD bSHWY : 1; // 手合无压标志
  80. } bFlag;
  81. } UVOT_U;
  82. typedef struct TLOSTVOT_T
  83. {
  84. UVOT_U uLostVot; // 失压标志
  85. TIMERELAY tLostVotTime; // 失压跳闸时间继电器
  86. TIMERELAY tCYY25ms0ms; // 曾有压标志
  87. TIMERELAY tLostVLockTime; // 闭锁分闸复归时间
  88. bool bLostVotLed; // 失压跳闸
  89. WORD losttimes; // 失压次数
  90. WORD wfFlagsave; // 暂时没用
  91. } TLOSTVOT_T;
  92. typedef struct TTQHZ_T
  93. {
  94. UVOT_U uTQHz; // 同期合闸
  95. TIMERELAY tTQTime; // 同期合闸时间继电器
  96. TIMERELAY tTQQDTime; // 同期合闸时间继电器
  97. bool bBSTQLed;
  98. } TTQHZ_T;
  99. typedef union UU0_U
  100. {
  101. WORD wfFlag;
  102. struct
  103. {
  104. WORD bQD : 1; // 失压启动
  105. WORD bTz : 1; // 告警动作
  106. WORD bEvent : 1; // 事件记录
  107. WORD bLock : 1; // 合后故障闭锁失压分闸标志
  108. WORD bGJQD : 1; // 失压启动
  109. WORD bGJ : 1; // 告警动作
  110. WORD bU0Ov : 1; // 合后故障闭锁失压分闸标志
  111. WORD bGJEvent : 1; // 告警事件记录
  112. WORD bDISENGJ : 1; // 保护退出
  113. WORD bDISENDZ : 1; // 暂时没用
  114. } bFlag;
  115. } UU0_U;
  116. typedef struct TU0_T // 定义零序过压保护处理结构体
  117. {
  118. UU0_U uZOV; // 零序过压标志
  119. TIMERELAY tZOVTime; // 零序过压跳闸时间继电器
  120. TIMERELAY tU0TzTime; // 零序过压跳闸时间继电器
  121. bool bU0Led; // 零压跳闸led
  122. bool bU0GjLed; // 零压告警led
  123. } TU0_T;
  124. typedef union USDHZ_U
  125. {
  126. DDWORD wfFlag;
  127. struct
  128. {
  129. DDWORD bUABYY : 1; // UAB有压标志
  130. DDWORD bUBCYY : 1; // UBC有压标志
  131. DDWORD bUABFlash : 1; // 1
  132. DDWORD bUBCFlash : 1; // 2
  133. DDWORD bPower : 1; // 上电记录标志 Uab1侧,电源侧
  134. DDWORD bYY : 1; // 有压标志
  135. DDWORD bCYY : 1; // FA曾有压
  136. DDWORD bDBYY : 1; // 两侧有压标志
  137. DDWORD bOneLostV : 1; // 一侧失压标志
  138. DDWORD bOppositeYY : 1; // 对侧有压标志
  139. DDWORD bPowerYY : 1; // 电源侧有压标志
  140. DDWORD bPowerZ : 1; // 停电时间 DWORD bLockX:1; //X时间闭锁
  141. DDWORD bLockY : 1; // Y时间闭锁
  142. DDWORD bLockUFlash : 1; // 瞬时加压闭锁
  143. DDWORD bRLONFLAG : 1; // 开关合命令标志
  144. DDWORD bHz : 1; // 告警动作
  145. DDWORD bHZEvent : 1; // 合闸事件
  146. DDWORD bX_HZEvent : 1; // x合闸事件
  147. DDWORD bGL2 : 1; // 故障记忆 xj 2016.08.25
  148. DDWORD bJD2 : 1; // 接地记忆
  149. DDWORD bGL_II : 1;
  150. DDWORD bGL : 1; // 故障记忆 xj 2016.08.25
  151. DDWORD bJD : 1; // 接地记忆
  152. DDWORD bOverU0 : 1; // 零序过压标志
  153. DDWORD bXOverUo : 1; // X 时间有U0
  154. DDWORD bUabflashDI; // 失电过程中的Uab瞬压标志
  155. DDWORD bUbcflashDI; // 失电过程中的Uab瞬压标志
  156. // DDWORD bGjEvent:1; //合闸事件
  157. DDWORD bSaveStatus : 1; // 状态保护标志
  158. DDWORD bSNChange : 1; // 上电记录标志
  159. DDWORD bTempJS : 1; // 临时解锁标志// DWORD bxdljd:1; //暂态判断小电流接地
  160. DDWORD bOCing : 1; // FA过流状态
  161. DDWORD bJS : 1; // 满足解锁条件已解锁状态
  162. #if defined GD_AREA_ECZD_2020 && !defined GD_AREA_ZHONGSHAN_2020
  163. DDWORD bHhgz : 1; // 合后故障
  164. #endif
  165. #ifdef FUNC_NYY_NWY
  166. DDWORD bUAB_NYY_NWY : 1; // UAB非有压非无压态
  167. DDWORD bUBC_NYY_NWY : 1; // UBC非有压非无压态
  168. #endif
  169. DDWORD bYtOn : 1; // 进入过Y计时标志
  170. } bFlag;
  171. } USDHZ_U;
  172. typedef struct TSDHZ_T
  173. {
  174. USDHZ_U uSdhz_S; // 分段开关标志
  175. USDHZ_U uSdhz_L; // 联络开关标志
  176. WORD S_Status; // 分段开关运行中的状态标志
  177. WORD L_Status; // 联络开关运行中的状态标志
  178. DWORD s_flag_save; // 分段关标志备份
  179. DWORD l_flag_save; // 联络标志备份
  180. WORD S_Status_save; // 分段开关运行中的状态标志
  181. WORD L_Status_save; // 联络开关运行中的状态标志
  182. #ifdef FA_OC_COUNT
  183. WORD fa_oc_count; // 过流次数
  184. TIMERELAY tFaOcCountTime; // 过流脉冲复归继电器
  185. #endif
  186. bool bDL_Tz; // 手分闭锁标志
  187. bool bDL_Hz; // 手合标志
  188. bool bInitUF; // 瞬压标志
  189. bool bSDHZinit; // 上电合闸初始化:无压后启动S上电合闸 1--初始化,0--未初始化
  190. TIMERELAY tOnXSTime; // X时间继电器
  191. TIMERELAY tOnYSTime; // Y时间继电器
  192. TIMERELAY tOnZSTime; // Z时间继电器
  193. TIMERELAY tOnXLTime; // XL时间继电器
  194. TIMERELAY tOnYLTime; // YL时间继电器
  195. TIMERELAY tOnLLCDYLTime; // 联络充电时间继电器
  196. TIMERELAY tOnZLTime; // ZL时间继电器
  197. TIMERELAY tOnOCingTime; // FA过流状态继电器
  198. TIMERELAY tOnLXingTime; // FA零序状态继电器
  199. TIMERELAY tOnJSTime; // 单侧来电解锁时间继电器
  200. TIMERELAY tOnY_JSTime; // 正向闭锁后,反向来电合闸双侧有压时间继电器,中山局要求3S
  201. TIMERELAY tOnBSTZTime; // 合闸成功闭锁跳闸时间
  202. TIMERELAY tOnHW_FA_JSTime; // 合位直接解锁时间 默认1s
  203. TIMERELAY tUABS25ms; // AB有压
  204. TIMERELAY tUBCS25ms; // BC有压
  205. #ifdef FUNC_NYY_NWY
  206. TIMERELAY tUABS_NYY_NWY_50ms; // 两个有压
  207. TIMERELAY tUBCS_NYY_NWY_50ms; // 两个有压
  208. TIMERELAY tUABL_NYY_NWY_50ms; // 两个有压
  209. TIMERELAY tUBCL_NYY_NWY_50ms; // 两个有压
  210. #endif
  211. TIMERELAY tUDBS100ms; // 暂时没用
  212. TIMERELAY tUFABL80ms; // 残压
  213. TIMERELAY tUFBCL80ms; // 残压
  214. TIMERELAY tUFDBTime; // 瞬压判断时间
  215. TIMERELAY tUABL25ms; // 电压计时器
  216. TIMERELAY tUBCL25ms; // 电压计时器
  217. TIMERELAY tUFABS80ms; // 计时器
  218. TIMERELAY tUFBCS80ms; // 计时器
  219. TIMERELAY tUFABS25ms; // 计时器
  220. TIMERELAY tUFBCS25ms; // 计时器
  221. TIMERELAY tUFABL25ms; // 计时器
  222. TIMERELAY tUFBCL25ms; // 计时器
  223. TIMERELAY tFREQAB25ms_SCY; // 用于S模式电源侧残压的频率判断
  224. TIMERELAY tFREQBC25ms_SCY; // 用于S模式线路侧残压的频率判断
  225. TIMERELAY tFREQAB25ms_LCY; // 用于L模式电源侧残压的频率判断
  226. TIMERELAY tFREQBC25ms_LCY; // 用于L模式线路侧残压的频率判断
  227. TIMERELAY tFREQSAB25ms; // 用于S模式电源侧得电合闸的频率判断
  228. TIMERELAY tFREQSBC25ms; // 用于S模式线路侧得电合闸的频率判断
  229. TIMERELAY tFREQLAB25ms; // 用于L模式电源侧得电合闸的频率判断
  230. TIMERELAY tFREQLBC25ms; // 用于L模式线路侧得电合闸的频率判断
  231. TIMERELAY tL_RELAYONL3s; // 合闸确认
  232. TIMERELAY tHzS100ms; // 合闸
  233. TIMERELAY tTSDHzHJS; // 上电合闸后加速延时
  234. TIMERELAY tOpsiteYY100ms; // 对侧来电计时器
  235. TIMERELAY tPowerYY100ms; // 上电侧来电计时器
  236. TIMERELAY tGZJYRstGL_II_Time; // 故障记忆复归时间
  237. TIMERELAY tGZJYRstGLTime; // 故障记忆复归时间
  238. TIMERELAY tGZJYRstJDTime; // 故障记忆复归时间
  239. TIMERELAY tGZJYRstGL2Time; // 故障记忆复归时间
  240. TIMERELAY tGZJYRstJD2Time; // 故障记忆复归时间
  241. TIMERELAY tHw100ms100ms; // 合位计时器
  242. TIMERELAY tTw100ms100ms; // 跳位计时器
  243. TIMERELAY tHz0ms1s; // 合闸
  244. TIMERELAY tTz0ms1s; // 跳闸
  245. TIMERELAY tHz0ms2s; // 合闸
  246. TIMERELAY tTz0ms2s; // 跳闸
  247. bool bS_BSLed; // 分段闭锁led
  248. bool bL_BSLed; // 联络闭锁led
  249. #ifdef FUNC_REBOOT_BS_HA_JS_3S
  250. TIMERELAY tHW_JS_HA_3STime; // 合位解锁手分/遥分闭锁时间 默认3S
  251. #endif
  252. } TSDHZ_T;
  253. typedef struct _bRTCSAVE
  254. {
  255. WORD bSig; // 存储签名
  256. BYTE bStatus; // 当前状态
  257. BYTE bShangDianCe; // 当前上电侧
  258. WORD bCrc; // crc校验码
  259. } bRTCSAVE;
  260. typedef struct THZBS_T
  261. {
  262. TIMERELAY tBSHZTime; // 同期合闸时间继电器
  263. TIMERELAY tTw100ms100ms;
  264. WORD fztimes;
  265. } THZBS_T;
  266. /*------------------------------ 函数声明 -------------------------------------
  267. */
  268. extern TLOSTVOT_T tLostVot[SWITCH_NUM_MAX]; // 失压标志
  269. extern TTQHZ_T tTQHz[SWITCH_NUM_MAX]; // 同期合闸标志
  270. extern TSDHZ_T tSDHZ[SWITCH_NUM_MAX]; // 上电合闸标志
  271. extern u8 g_volfile_open;
  272. extern bool gb_wake_soe;
  273. void FA_Run(DWORD dStep);
  274. void FA_Init(void);
  275. void FA_lostvotTz(int sw, DWORD dStep); // 失压跳闸判断
  276. void FA_OverU0Tz(int sw, DWORD dStep);
  277. int vol_stu_printf(void);
  278. int FA_status_write(void);
  279. int FA_exit(void);
  280. void Pro_hzbs(int sw, DWORD dStep);
  281. bool fa_bs_hz(int sw);
  282. bool fa_bs_fz(int sw);
  283. void fa_s_state_change(int sw, int state);
  284. #ifdef FUN_JDXX
  285. bool get_power_on_dir(int sw);
  286. #endif
  287. #endif //
  288. /*------------------------------ 文件结束 -------------------------------------
  289. */