Appconfig.c 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767
  1. /*************************************************************************
  2. * 版权所有:
  3. * 文件版本: V1.00
  4. * 文件名称:config.c装置特定变量定义
  5. * 生成日期: 2008年7月1日
  6. * 作 者: xxxxxx
  7. * 功 能: 定义本装置的应用配置
  8. * 更新信息:
  9. * 更新日志1:
  10. * 日期:
  11. * 修改者:
  12. * 修改内容:
  13. * 修改原因:
  14. * 更新日志2:
  15. **************************************************************************/
  16. #include "head.h"
  17. struct unit g_unit[UNIT_NUM] =
  18. {
  19. // 名称 额定值 归零值
  20. {" ", 0, 0}, // UNIT_NULL
  21. {"V", 100, 0.5*65536}, // UNIT_V100
  22. {"V", 220, 0.5*65536}, // UNIT_V220
  23. {"V", 50, 0.3*65536}, // UNIT_V050
  24. {"A", 5, 0.005*65536},// UNIT_A5
  25. {"A", 5, 0.005*65536},// UNIT_BIA
  26. {"W", 866, 1.0*65536}, // UNIT_W
  27. {"A", 5, 0.01*65536},// UNIT_I0A
  28. {"Hz", 50, 0 }, // UNIT_Hz
  29. {"个", 0, 0 }, // UNIT_GE
  30. {"Var", 866, 1.0*65536}, // UNIT_Var
  31. {"kV", 1, 0.5*65536}, // UNIT_kV
  32. {"kA", 1, 0.01*65536},// UNIT_kA
  33. {"kW", 1, 1.0*65536}, // UNIT_kW
  34. {"kWh", 1, 1.0*65536}, // UNIT_kWh
  35. {"kVar",1, 1.0*65536}, // UNIT_kVar
  36. {"kVarh",1, 1.0*65536}, // UNIT_kVarh
  37. {"%", 1, 0}, // UNIT_Per
  38. {"°", 360, 0}, // UNIT_ANG
  39. {"Hz/s",1, 0}, // UNIT_Hz_S
  40. {" " , 1, 0}, // UNIT_DIR
  41. {"℃" , 100, 0}, // UNIT_TEMP
  42. {"V", 1, 0.03}, // UNIT_V001
  43. {"A", 1, 0}, // UNIT_A1
  44. {" ", 1, 0}, // UNIT_COS
  45. {"h", 1, 0}, // UINT_Hour
  46. #ifdef BATTERY_BP_L500
  47. {"mΩ", 1, 0}, // UINT_mΩ
  48. {"mA", 1, 0}, // UINT_mA
  49. #endif
  50. #ifdef TMP_CHIP_AHT20
  51. {"%RH",100, 0}, // UNIT_HUMI
  52. #endif
  53. };
  54. /*事件参数定义表 不要超过32个*/
  55. const NAME_DEF ev_para[]=
  56. {
  57. /* 单位 名称*/
  58. {0, 0 , ""}, // 0
  59. {UNIT_A5, SW_AC_IA, "Ia"}, // 2
  60. {UNIT_A5, SW_AC_IB, "Ib"}, // 3
  61. {UNIT_A5, SW_AC_IC, "Ic"}, // 4
  62. {UNIT_A5, SW_AC_I0, "3I0"}, // 5
  63. {UNIT_A5, SW_AC_IA, "XBa"}, // 谐波
  64. {UNIT_A5, SW_AC_IB, "XBb"}, //
  65. {UNIT_A5, SW_AC_IC, "XBc"}, //
  66. {UNIT_V100, PUB_AC_UAB1, "Uab"}, // 5
  67. {UNIT_V100, PUB_AC_UBC1, "Ubc"}, // 6
  68. {UNIT_V100, PUB_AC_UCA1, "Uca"}, //7
  69. {UNIT_V220, PUB_AC_US1, "Us1"}, //xj 2016.09.02
  70. {UNIT_V220, PUB_AC_US2, "Us2"}, //
  71. {UNIT_V100, PUB_AC_U01, "3U0"}, // 8
  72. {UNIT_V100, 0, "Ux"}, // 9
  73. {UNIT_W, SW_AC_IN_P, "P"}, // 9
  74. {UNIT_Var, SW_AC_IN_Q, "Q"}, // 9
  75. {UNIT_NULL, SW_AC_IN_COS, "COS"}, // 9
  76. {UNIT_Hz, PUB_AC_IN_F1, "f"}, // 10
  77. #ifdef METERING_ENERGY
  78. {UNIT_kWh, 0, "当前电度值"}, // 10
  79. {UNIT_NULL, 0, "变化总次数"}, // 10
  80. {UNIT_NULL, 0, "板卡号"}, // 10
  81. #endif
  82. {UNIT_NULL, 0, "配置"}, // 11
  83. {UNIT_NULL, 0, "通道"}, // 12
  84. {UNIT_NULL, 0, "遥控"}, // 13
  85. {UINT_Hour, 0, "时长"},
  86. };
  87. const char *ev_back[]=
  88. {
  89. "返回",
  90. "消失",
  91. "恢复",
  92. "退出",
  93. " ",
  94. };
  95. /***************************************************************************
  96. 类型定义
  97. Bit.7 ==1 故障记录上送
  98. Bit.6 ==1 作为关键记录,单独保存 by sunxi 20190925
  99. Bit.5 备用
  100. Bit.4 ==1 全参数保存
  101. Bit.3 备用
  102. Bit.2 备用
  103. Bit.[10] 事件返回后,显示描述的索引
  104. 索引定义:
  105. {
  106. "返回", // ==0
  107. "消失", // ==1
  108. "恢复", // ==2
  109. }
  110. 参数属性 ;
  111. Bit.[7-5] 显示属性
  112. 默认为0为定点数,高16位整数低16位小数,保留3位小数点
  113. #define PARA_TYPE_INT (1<<5)//事件显示,类型定义:整数显示
  114. #define PARA_TYPE_YK (2<<5)//遥控点号
  115. #define PARA_TYPE_YB (3<<5)//事件显示,类型定义:压板操作
  116. Bit.[0-4] 参数表的索引, =0为没有参数。
  117. ********************************************************************************/
  118. const SOE_DEF tAllSOE[]=
  119. {
  120. /* 代码 类型 参数1 参数2 参数3 名称 */
  121. /*保护专用事件*/
  122. // 开关事件
  123. {0x04, {0, 0, 0}, "保护动作总"},
  124. {0x04, {0, 0, 0}, "故障总"},
  125. {0x04, {0, 0, 0}, "短路故障"},
  126. {0x04, {0, 0, 0}, "接地故障"},
  127. {0x14, {EV_PARA_Ia, 0, 0}, "A相短路故障"},
  128. {0x14, {EV_PARA_Ib, 0, 0}, "B相短路故障"},
  129. {0x14, {EV_PARA_Ic, 0, 0}, "C相短路故障"},
  130. {0x14, {EV_PARA_Ia, EV_PARA_Ib, 0}, "AB相短路故障"},
  131. {0x14, {EV_PARA_Ib, EV_PARA_Ic, 0}, "BC相短路故障"},
  132. {0x14, {EV_PARA_Ia, EV_PARA_Ic, 0}, "AC相短路故障"},
  133. {0x14, {EV_PARA_Ia, EV_PARA_Ib, EV_PARA_Ic}, "ABC相短路故障"},
  134. {0x04, {0, 0, 0}, "分段模式"},
  135. {0x04, {0, 0, 0}, "联络模式"},
  136. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流I段动作"},
  137. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流I段告警"},
  138. #ifdef EV_GL_STATR
  139. {0x04, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流I段启动"},
  140. #endif
  141. #ifdef ADD_FD_GL_FX_BH_FUN
  142. {0x14, {EV_PARA_Ia, 0, 0}, "过流I段A相短路故障"},
  143. {0x14, {EV_PARA_Ib, 0, 0}, "过流I段B相短路故障"},
  144. {0x14, {EV_PARA_Ic, 0, 0}, "过流I段C相短路故障"},
  145. #endif
  146. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流II段动作"},
  147. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流II段告警"},
  148. #ifdef EV_GL_STATR
  149. {0x04, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流II段启动"},
  150. #endif
  151. #ifdef ADD_FD_GL_FX_BH_FUN
  152. {0x14, {EV_PARA_Ia, 0, 0}, "过流II段A相短路故障"},
  153. {0x14, {EV_PARA_Ib, 0, 0}, "过流II段B相短路故障"},
  154. {0x14, {EV_PARA_Ic, 0, 0}, "过流II段C相短路故障"},
  155. #endif
  156. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流Ⅲ段动作"},
  157. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流Ⅲ段告警"},
  158. #ifdef EV_GL_STATR
  159. {0x04, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流Ⅲ段启动"},
  160. #endif
  161. #ifdef ADD_FD_GL_FX_BH_FUN
  162. {0x14, {EV_PARA_Ia, 0, 0}, "过流Ⅲ段A相短路故障"},
  163. {0x14, {EV_PARA_Ib, 0, 0}, "过流Ⅲ段B相短路故障"},
  164. {0x14, {EV_PARA_Ic, 0, 0}, "过流Ⅲ段C相短路故障"},
  165. #endif
  166. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_I0, EV_PARA_U0, 0}, "零流I段动作"},
  167. {0xD4, {EV_PARA_I0, EV_PARA_U0, 0}, "零流I段告警"},
  168. #ifdef EV_GL_STATR
  169. {0x04, {EV_PARA_U0,EV_PARA_I0, 0}, "零流I段启动"},
  170. #endif
  171. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_I0, EV_PARA_U0, 0}, "零流II段动作"},
  172. {0xD4, {EV_PARA_I0, EV_PARA_U0, 0}, "零流II段告警"},
  173. #ifdef EV_GL_STATR
  174. {0x04, {EV_PARA_U0,EV_PARA_I0, 0}, "零流II段启动"},
  175. #endif
  176. #ifdef DISP_SET_LX3
  177. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_I0, EV_PARA_U0, 0}, "零流III段动作"},
  178. {0xD4, {EV_PARA_I0, EV_PARA_U0, 0}, "零流III段告警"},
  179. #ifdef EV_GL_STATR
  180. {0x04, {EV_PARA_U0,EV_PARA_I0, 0}, "零流III段启动"},
  181. #endif
  182. #endif
  183. #if defined FUN_JDXX ||defined XDL_ZT
  184. {0x84, {EV_PARA_U0, 0, 0}, "小电流接地零压1告警"},
  185. {0x84, {EV_PARA_U0, 0, 0}, "小电流接地零压2告警"},
  186. {0x84, {0, 0, 0}, "小电流接地启动"},
  187. {0xC4, {0, 0, 0}, "小电流接地区内告警"},
  188. {0xC4, {0, 0, 0}, "小电流接地区内跳闸"},
  189. {0x84, {0, 0, 0}, "小电流接地区外故障"},
  190. {0x84, {EV_PARA_I0, EV_PARA_U0, 0}, "接地故障总"},
  191. {0x0, {EV_PARA_Ia, 0, 0}, "A相接地故障"},
  192. {0x0, {EV_PARA_Ib, 0, 0}, "B相接地故障"},
  193. {0x0, {EV_PARA_Ic, 0, 0}, "C相接地故障"},
  194. #endif
  195. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "过流加速动作"},
  196. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_I0, EV_PARA_U0, 0}, "零序加速动作"},
  197. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_I0, EV_PARA_U0, 0}, "零压加速动作"},
  198. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "反时限过流动作"},
  199. #if defined GD_AREA_ECZD_2020 // 合后电流两段处理
  200. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "合后故障过流I段动作"},
  201. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "合后故障过流II段动作"},
  202. #else
  203. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "合后故障过流动作"},
  204. #endif
  205. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_I0, EV_PARA_U0, 0}, "合后故障零序动作"},
  206. {0x94, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "相间过流告警"},
  207. {0x94, {EV_PARA_I0, EV_PARA_U0, 0}, "接地告警"},
  208. #ifdef EV_GL_STATR
  209. {0x04, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "相间I段启动"},
  210. #ifdef GD_AREA_ECZD_2020
  211. {0x04, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "相间II段启动"},
  212. #endif
  213. {0x04, {EV_PARA_U0,EV_PARA_I0, 0}, "接地过流启动"},
  214. #endif
  215. {0x00, {0, 0, 0}, "重合闸启动"},
  216. {0x44|SOE_TYPE_DELAY_FHZ, {0, 0, 0}, "一次重合动作"},
  217. {0x44|SOE_TYPE_DELAY_FHZ, {0, 0, 0}, "二次重合动作"},
  218. {0x44|SOE_TYPE_DELAY_FHZ, {0, 0, 0}, "三次重合动作"},
  219. {0x44, {0, 0, 0}, "重合闸闭锁"},
  220. {0x44, {0, 0, 0}, "大电流闭锁重合闸"},
  221. {0x04, {0, 0, 0}, "重合闸充电完成"},
  222. #ifdef FUN_CHZ_TOPEN
  223. {0x04, {0, 0, 0}, "终止重合闸过程"},
  224. #endif
  225. {0xD4|SOE_TYPE_DELAY_FHZ, {EV_PARA_U0, EV_PARA_I0, 0}, "零序电压跳闸"},
  226. {0xD4, {EV_PARA_U0, EV_PARA_I0, 0}, "零序电压告警"},
  227. #ifdef EV_GL_STATR
  228. {0x04, {EV_PARA_U0, EV_PARA_I0, 0}, "零序电压启动"},
  229. #endif
  230. {0x44, {0, 0, 0}, "涌流谐波闭锁"},
  231. {0x44, {0, 0, 0}, "闭锁合闸"},
  232. {0x04, {EV_PARA_Us1, EV_PARA_Us2,0}, "母线侧有压"},
  233. {0x04, {EV_PARA_Us1, EV_PARA_Us2,0}, "线路侧有压"},
  234. {0x04, {EV_PARA_Us1, EV_PARA_Us2,0}, "双侧失压"},
  235. #ifdef GD_TEST_2021
  236. {0x44, {0, 0, 0}, "A侧X闭锁"},
  237. {0x44, {0, 0, 0}, "B侧X闭锁"},
  238. {0x44, {0, 0, 0}, "A侧Y闭锁"},
  239. {0x44, {0, 0, 0}, "B侧Y闭锁"},
  240. {0x44, {0, 0, 0}, "A侧残压闭锁"},
  241. {0x44, {0, 0, 0}, "B侧残压闭锁"},
  242. #else
  243. {0x44, {0, 0, 0}, "母线侧X闭锁"},
  244. {0x44, {0, 0, 0}, "线路侧X闭锁"},
  245. {0x44, {0, 0, 0}, "母线侧Y闭锁"},
  246. {0x44, {0, 0, 0}, "线路侧Y闭锁"},
  247. {0x44, {0, 0, 0}, "母线侧残压闭锁"},
  248. {0x44, {0, 0, 0}, "线路侧残压闭锁"},
  249. #endif
  250. {0x54|SOE_TYPE_DELAY_FHZ, {EV_PARA_U0, EV_PARA_I0, 0}, "合后零压动作"},
  251. {0x44, {EV_PARA_U0, 0, 0}, "合前零压闭锁"},
  252. {0x04, {EV_PARA_U0, 0, 0}, "合前零压"},
  253. #ifdef EV_GL_STATR
  254. {0x04, {EV_PARA_U0,EV_PARA_I0, 0}, "FA电压启动"},
  255. #endif
  256. {0x44|SOE_TYPE_DELAY_FHZ, {0, 0, 0}, "手分/遥分闭锁合闸"},
  257. {0x44, {0, 0, 0}, "手合/遥合闭锁失压分"},
  258. {0x44, {0, 0, 0}, "双电源闭锁合闸"},
  259. {0x04|SOE_TYPE_DELAY_FHZ, {0, 0, 0}, "合后故障"},
  260. #ifdef GD_TEST_2021
  261. {0x44, {0, 0, 0}, "A侧合后故障"},
  262. {0x44, {0, 0, 0}, "B侧合后故障"},
  263. #else
  264. {0x44, {0, 0, 0}, "母线侧合后故障"},
  265. {0x44, {0, 0, 0}, "线路侧合后故障"},
  266. #endif
  267. {0x44, {0, 0, 0}, "闭锁失压分闸"},
  268. {0x04, {0, 0, 0}, "合闸解锁"},
  269. {0x04, {0, 0, 0}, "人工解锁"},
  270. {0x04, {0, 0, 0}, "单侧来电解锁"},
  271. {0x04, {0, 0, 0}, "联络有压解锁"},
  272. {0x04, {0, 0, 0}, "联络单侧失压时间到"},
  273. #ifdef GD_TEST_2021
  274. {0x04, {0, 0, 0}, "联络A侧失压告警"},
  275. {0x04, {0, 0, 0}, "联络B侧失压告警"},
  276. {0x04, {0, 0, 0}, "联络A侧失压合闸"},
  277. {0x04, {0, 0, 0}, "联络B侧失压合闸"},
  278. #endif
  279. {0x44|SOE_TYPE_DELAY_FHZ, {EV_PARA_Us1, EV_PARA_Us2,0}, "得电合闸"},
  280. {0x04, {EV_PARA_Us1, EV_PARA_Us2,0}, "母线侧得电合闸"},
  281. {0x04, {EV_PARA_Us1, EV_PARA_Us2,0}, "线路侧得电合闸"},
  282. {0xC4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Us1, EV_PARA_Us2,0}, "联络合闸"},
  283. {0xC4|SOE_TYPE_DELAY_FHZ, {EV_PARA_Us1, EV_PARA_Us2,0}, "失电分闸"},
  284. {0x44, {0, 0, 0}, "联络充电完成"},
  285. {0x44, {0, 0, 0}, "联络合闸成功"},
  286. {0x44, {0, 0, 0}, "联络合闸失败"},
  287. {0x44, {0, 0, 0}, "联络开关充电完成"},
  288. #ifdef GD_AREA_ZHONGSHAN_2020
  289. {0x44, {0, 0, 0}, "电压电流型转供电成功"},
  290. {0x44, {0, 0, 0}, "电压电流型转供电失败"},
  291. #endif
  292. {0x44, {0, 0, 0}, "手动合闸"},
  293. {0x44, {0, 0, 0}, "手动分闸"},
  294. {0x44, {0, 0, 0}, "开关就地合闸"},
  295. {0x44, {0, 0, 0}, "开关就地分闸"},
  296. {0x44, {0, 0, 0}, "遥控合闸"},
  297. {0x44|SOE_TYPE_DELAY_FHZ, {0, 0, 0}, "遥控分闸"},
  298. {0x44, {0, 0, 0}, "多次分闸闭锁合闸"},
  299. {0x44, {0, 0, 0}, "上电拒合"},
  300. #ifdef YK_FA_ENBLE
  301. {0x44, {0, 0, 0}, "遥控闭锁FA"},
  302. #endif
  303. #ifdef FA_OC_COUNT
  304. {0x44, {0, 0, 0}, "过流脉冲计数闭锁"}, //
  305. #endif
  306. {0x44, {0, 0, 0}, "同期合闸"},
  307. //
  308. {0xD4, {EV_PARA_Uab, EV_PARA_Ubc, EV_PARA_Uca}, "电压过高解列"},
  309. {0xD4, {EV_PARA_Uab, EV_PARA_Ubc, EV_PARA_Uca}, "电压过低解列"},
  310. {0xD4, {EV_PARA_Uab, EV_PARA_Ubc, EV_PARA_Uca}, "高电压自动解列"},
  311. {0xD4, {EV_PARA_Uab, EV_PARA_Ubc, EV_PARA_Uca}, "低电压自动解列"},
  312. {0xD4, {EV_PARA_f, 0,0}, "频率过低解列"},
  313. {0xD4, {EV_PARA_f, 0,0}, "高频自动解列"},
  314. {0xD4, {EV_PARA_f, 0,0}, "低频自动解列"},
  315. {0xC4, {0,0, 0}, "智能分布式切除动作"},
  316. {0xC4, {0,0, 0}, "智能分布式切除成功"},
  317. {0xC4, {0,0, 0}, "智能分布式切除失败"},
  318. {0xC4, {0, 0,0}, "分布式故障隔离动作"},
  319. {0xC4, {0, 0,0}, "分布式故障隔离成功"},
  320. {0xC4, {0, 0,0}, "分布式故障隔离失败"},
  321. {0xC4, {0, 0,0}, "分布式供电恢复动作"},
  322. {0xC4, {0, 0,0}, "分布式供电恢复成功"},
  323. {0xC4, {0, 0,0}, "分布式供电恢复失败"},
  324. #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020
  325. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "分布式过流I段跳闸"},
  326. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "分布式过流II段跳闸"},
  327. #else
  328. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "分布式过流跳闸"},
  329. #endif
  330. {0xD4, {EV_PARA_I0, 0,0}, "分布式零序跳闸"},
  331. {0x44, {0, 0,0}, "首端失压分闸"},
  332. {0x44, {0, 0,0}, "通信异常失压分闸"},
  333. {0x44, {0, 0, 0}, "装置越级跳闸"},
  334. #ifdef GD_AREA_ZHONGSHAN_2020
  335. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "分布式合后I段跳闸"},
  336. {0xD4, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "分布式合后II段跳闸"},
  337. {0xD4, {EV_PARA_I0, 0,0}, "分布式合后零序跳闸"},
  338. #endif
  339. {0x44, {EV_PARA_Ia, EV_PARA_Ib, EV_PARA_Ic}, "遮断电流闭锁"},
  340. #ifdef DISP_SET_DLYX
  341. {0x84, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "电流重载告警"},
  342. // {0x04, {EV_PARA_Ia, 0, 0}, "Ia重载告警"},
  343. // {0x04, {EV_PARA_Ib, 0, 0}, "Ib重载告警"},
  344. // {0x04, {EV_PARA_Ic, 0, 0}, "Ic重载告警"},
  345. {0x84, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "电流过载告警"},
  346. // {0x04, {EV_PARA_Ia, 0, 0}, "Ia过载告警"},
  347. // {0x04, {EV_PARA_Ib, 0, 0}, "Ib过载告警"},
  348. // {0x04, {EV_PARA_Ic, 0, 0}, "Ic过载告警"},
  349. {0x84, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "负荷越限告警"},
  350. // {0x04, {EV_PARA_Ia, 0, 0}, "Ia越限告警"},
  351. // {0x04, {EV_PARA_Ib, 0, 0}, "Ib越限告警"},
  352. // {0x04, {EV_PARA_Ic, 0, 0}, "Ic越限告警"},
  353. #else
  354. {0x84, {EV_PARA_Ia,EV_PARA_Ib, EV_PARA_Ic}, "电流越限告警"},
  355. {0x04, {EV_PARA_Ia, 0, 0}, "Ia越限告警"},
  356. {0x04, {EV_PARA_Ib, 0, 0}, "Ib越限告警"},
  357. {0x04, {EV_PARA_Ic, 0, 0}, "Ic越限告警"},
  358. #endif
  359. {0x84, {EV_PARA_I0,0, 0}, "零序电流越限告警"},
  360. {0x44, {0, 0, 0}, "跳闸失败"},
  361. {0x44, {0, 0, 0}, "合闸失败"},
  362. {0x44, {0, 0, 0}, "开关拒动"},
  363. #ifdef CUSTOMIZE_BZT //备自投
  364. {0x44, {0, 0, 0}, "1#开关自投跳闸" },
  365. {0x44, {0, 0, 0}, "2#开关自投跳闸" },
  366. {0x44, {0, 0, 0}, "3#开关自投跳闸" },
  367. {0x44, {0, 0, 0}, "1#开关自投合闸" },
  368. {0x44, {0, 0, 0}, "2#开关自投合闸" },
  369. {0x44, {0, 0, 0}, "3#开关自投合闸" },
  370. {0x44, {0, 0, 0}, "1#开关跳闸失败" },
  371. {0x44, {0, 0, 0}, "2#开关跳闸失败" },
  372. {0x44, {0, 0, 0}, "3#开关跳闸失败" },
  373. {0x44, {0, 0, 0}, "1#开关合闸失败" },
  374. {0x44, {0, 0, 0}, "2#开关合闸失败" },
  375. {0x44, {0, 0, 0}, "3#开关合闸失败" },
  376. #endif
  377. {0x04, {0, 0, 0}, "跳位有流告警"},
  378. {0x07, {0, 0, 0}, "保护投入软压板"},
  379. #if defined GD_AREA_ECZD_2020
  380. {0x07, {0, 0, 0}, "重合闸投入软压板"},
  381. #else
  382. {0x07, {0, 0, 0}, "停用重合闸软压板"},
  383. #endif
  384. {0x07, {0, 0, 0}, "保护出口投入软压板"},
  385. #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020
  386. {0x07, {0, 0, 0}, "远方修改定值软压板"},
  387. #else
  388. {0x07, {0, 0, 0}, "远方投入软压板"},
  389. #endif
  390. {0x07, {0, 0, 0}, "智能分布式软压板"},
  391. {0x07, {0, 0, 0}, "电压电流型软压板"},
  392. {0x07, {0, 0, 0}, "电流型软压板"},
  393. {0x07, {0, 0, 0}, "集中式软压板"},
  394. {0x07, {0, 0, 0}, "同期合闸软压板"},
  395. {0x07, {0, 0, 0}, "自动解列软压板"},
  396. #ifdef XDL_ZT
  397. {0x84, {EV_PARA_I0, EV_PARA_U0, 0}, "小电流接地启动"},
  398. {0x84, {EV_PARA_I0, EV_PARA_U0, 0}, "小电流接地动作"},
  399. {0x84, {EV_PARA_I0, EV_PARA_U0, 0}, "小电流接地告警"},
  400. {0x05, {EV_PARA_U0, 0, 0}, "小电流零压1告警"},
  401. {0x05, {EV_PARA_U0, 0, 0}, "小电流零压2告警"},
  402. #endif
  403. #ifdef YB_STHD_CHECK
  404. {0x47, {0, 0, 0}, "功能总压板不一致"},
  405. {0x47, {0, 0, 0}, "重合闸压板不一致"},
  406. {0x47, {0, 0, 0}, "分布式压板不一致"},
  407. {0x47, {0, 0, 0}, "就地FA压板不一致"},
  408. {0x47, {0, 0, 0}, "电流型压板不一致"},
  409. #endif
  410. {0x05, {0, 0, 0}, "未储能告警"},
  411. {0x45, {0, 0, 0}, "控制回路异常"},
  412. {0x05, {0, 0, 0}, "M侧节点故障01"},
  413. {0x05, {0, 0, 0}, "M侧节点故障02"},
  414. {0x05, {0, 0, 0}, "M侧节点故障03"},
  415. {0x05, {0, 0, 0}, "M侧节点故障04"},
  416. {0x05, {0, 0, 0}, "M侧节点故障05"},
  417. {0x05, {0, 0, 0}, "M侧节点故障06"},
  418. {0x05, {0, 0, 0}, "M侧节点故障07"},
  419. {0x05, {0, 0, 0}, "M侧节点故障08"},
  420. {0x05, {0, 0, 0}, "N侧节点故障01"},
  421. {0x05, {0, 0, 0}, "N侧节点故障02"},
  422. {0x05, {0, 0, 0}, "N侧节点故障03"},
  423. {0x05, {0, 0, 0}, "N侧节点故障04"},
  424. {0x05, {0, 0, 0}, "M侧故障隔离成功01"},
  425. {0x05, {0, 0, 0}, "M侧故障隔离成功02"},
  426. {0x05, {0, 0, 0}, "M侧故障隔离成功03"},
  427. {0x05, {0, 0, 0}, "M侧故障隔离成功04"},
  428. {0x05, {0, 0, 0}, "M侧故障隔离成功05"},
  429. {0x05, {0, 0, 0}, "M侧故障隔离成功06"},
  430. {0x05, {0, 0, 0}, "M侧故障隔离成功07"},
  431. {0x05, {0, 0, 0}, "M侧故障隔离成功08"},
  432. {0x05, {0, 0, 0}, "N侧故障隔离成功01"},
  433. {0x05, {0, 0, 0}, "N侧故障隔离成功02"},
  434. {0x05, {0, 0, 0}, "N侧故障隔离成功03"},
  435. {0x05, {0, 0, 0}, "N侧故障隔离成功04"},
  436. {0x05, {0, 0, 0}, "M侧开关拒跳01"},
  437. {0x05, {0, 0, 0}, "M侧开关拒跳02"},
  438. {0x05, {0, 0, 0}, "M侧开关拒跳03"},
  439. {0x05, {0, 0, 0}, "M侧开关拒跳04"},
  440. {0x05, {0, 0, 0}, "M侧开关拒跳05"},
  441. {0x05, {0, 0, 0}, "馈线开关拒跳01"},
  442. {0x05, {0, 0, 0}, "馈线开关拒跳02"},
  443. {0x05, {0, 0, 0}, "馈线开关拒跳03"},
  444. {0x05, {0, 0, 0}, "N侧开关拒跳01"},
  445. {0x05, {0, 0, 0}, "N侧开关拒跳02"},
  446. {0x05, {0, 0, 0}, "N侧开关拒跳03"},
  447. {0x05, {0, 0, 0}, "馈线开关拒跳04"},
  448. {0x05, {0, 0, 0}, "馈线开关过流闭锁01"},
  449. {0x05, {0, 0, 0}, "馈线开关过流闭锁02"},
  450. {0x05, {0, 0, 0}, "馈线开关过流闭锁03"},
  451. {0x05, {0, 0, 0}, "馈线开关过流闭锁04"},
  452. {0x05, {0, 0, 0}, "馈线开关过流闭锁05"},
  453. {0x05, {0, 0, 0}, "馈线开关过流闭锁06"},
  454. {0x05, {0, 0, 0}, "馈线开关过流闭锁07"},
  455. {0x05, {0, 0, 0}, "馈线开关过流闭锁08"},
  456. {0x05, {0, 0, 0}, "馈线开关过流闭锁09"},
  457. {0x05, {0, 0, 0}, "馈线开关过流闭锁10"},
  458. {0x05, {0, 0, 0}, "馈线开关过流闭锁11"},
  459. {0x05, {0, 0, 0}, "馈线开关过流闭锁12"},
  460. {0x85, {0, 0, 0}, "CT断线"},
  461. {0x85, {0, 0, 0}, "CT相序异常"},
  462. {0x44, {0, 0, 0}, "自转电功能投入"},
  463. {0x44, {0, 0, 0}, "分布式供电恢复未满足"},
  464. {0x44, {0, 0, 0}, "分布式故障闭锁合闸"},
  465. {0x44, {0, 0, 0}, "分布式分闸闭锁合闸"},
  466. {0xC4, {EV_PARA_U0, EV_PARA_I0, 0}, "合后零序电压告警"},
  467. #ifdef FUNC_DRIVE
  468. {0x04, {0, 0, 0}, "不停电传动软压板"},
  469. {0x04, {0, 0, 0}, "传动开始"},
  470. {0x04, {0, 0, 0}, "传动跳闸失败"},
  471. {0x04, {0, 0, 0}, "传动合闸失败"},
  472. #endif
  473. #ifdef FUNC_DRIVE_JY
  474. {0x04, {0, 0, 0}, "不停电传动启动失败"},
  475. {0x04, {0, 0, 0}, "不停电传动成功"},
  476. {0x04, {0, 0, 0}, "不停电传动开关拒分"},
  477. {0x04, {0, 0, 0}, "不停电传动开关拒合"},
  478. {0x04, {0, 0, 0}, "不停电传动投退异常"},
  479. {0x04, {0, 0, 0}, "传动补发合闸"},
  480. {0x04, {0, 0, 0}, "不停电传动结束"},
  481. #endif
  482. #ifdef FUNC_YL_FZ_SOE
  483. {0x44, {0, 0, 0}, "联络Y闭锁"},
  484. #endif
  485. // 公共事件
  486. {0x04, {EV_PARA_Uab, 0, 0}, "Uab1过电压告警"},
  487. {0x04, {EV_PARA_Ubc, 0, 0}, "Ubc1过电压告警"},
  488. {0x04, {EV_PARA_Uca, 0, 0}, "Uca1过电压告警"},
  489. {0x04, {EV_PARA_Uab, 0, 0}, "Uab1低电压告警"},
  490. {0x04, {EV_PARA_Ubc, 0, 0}, "Ubc1低电压告警"},
  491. {0x04, {EV_PARA_Uca, 0, 0}, "Uca1低电压告警"},
  492. {0x04, {EV_PARA_Uab, 0, 0}, "Uab2过电压告警"},
  493. {0x04, {EV_PARA_Ubc, 0, 0}, "Ubc2过电压告警"},
  494. {0x04, {EV_PARA_Uca, 0, 0}, "Uca2过电压告警"},
  495. {0x04, {EV_PARA_Uab, 0, 0}, "Uab2低电压告警"},
  496. {0x04, {EV_PARA_Ubc, 0, 0}, "Ubc2低电压告警"},
  497. {0x04, {EV_PARA_Uca, 0, 0}, "Uca2低电压告警"},
  498. {0x04, {EV_PARA_Us1, 0, 0}, "A侧有压"},
  499. {0x04, {EV_PARA_Us2, 0, 0}, "B侧有压"},
  500. {0x04, {EV_PARA_Us1, 0, 0}, "A侧无压"},
  501. {0x04, {EV_PARA_Us2, 0, 0}, "B侧无压"},
  502. {0x85, {0, 0, 0}, "电源模块状态"},
  503. #ifdef BATTERY_WITH_COMM
  504. #ifdef FUNC_SEL_BAT_MODULE
  505. {0x04, {0, 0, 0}, "电池过压告警"},
  506. {0x04, {0, 0, 0}, "电池离线告警"},
  507. {0x04, {0, 0, 0}, "电池反接告警"},
  508. {0x04, {0, 0, 0}, "备用输入交流失电"},
  509. {0x04, {0, 0, 0}, "电池容量故障"},
  510. #endif
  511. {0x04, {0, 0, 0}, "电池活化状态"},
  512. {0x04, {0, 0, 0}, "交流失电信号"},
  513. #endif
  514. {0x44, {EV_PARA_Uab, EV_PARA_Ubc, EV_PARA_Uca}, "PT1断线"},
  515. {0x44, {EV_PARA_Uab, EV_PARA_Ubc, EV_PARA_Uca}, "PT2断线"},
  516. {0x04, {0, 0, 0}, "PT1相序异常"},
  517. {0x04, {0, 0, 0}, "PT2相序异常"},
  518. {0x04, {0, 0,0}, "电池电压低"},
  519. {0x04, {0, 0,0}, "电池电压高"},
  520. {0x04, {0, 0,0}, "DC1低电压告警"},
  521. {0x04, {0, 0,0}, "DC2低电压告警"},
  522. #ifdef CUSTOMIZE_BZT //备自投
  523. {0x04, {EV_PARA_Us1, EV_PARA_Us2,0}, "备自投失电分闸"},
  524. #endif
  525. #ifdef METERING_ENERGY
  526. {0x04, {EV_PARA_DD, 0, 0}, "电度清零"},
  527. {0x04, {EV_PARA_DD, EV_PARA_DIR_NUM|0x20, 0}, "潮流变化"},
  528. #endif
  529. {0x05, {0, 0, 0}, "板卡故障"},
  530. {0x05, {0, 0, 0}, "板卡通信异常"},
  531. {0x05, {0, 0, 0}, "面板通信异常"},
  532. #if defined CAN_SLAVE_BOARD && defined METERING_ENERGY
  533. {0x05, {EV_PARA_CAN_SLOT|0x20, 0, 0}, "线损板通信异常"},
  534. #endif
  535. {0x04, {0, 0, 0}, "装置硬件故障"},
  536. {0x04, {0, 0, 0}, "装置软件故障"},
  537. {0x45, {0, 0, 0}, "本机goose通信异常"},
  538. {0x05, {0, 0, 0}, "goose数据异常"},
  539. {0x45, {0, 0, 0}, "goose系统通信异常"},
  540. {0x05, {0, 0, 0}, "61850平台库异常"},
  541. #ifdef GOOSE_NETTYPE_SET
  542. {0x45, {0, 0, 0}, "单网通讯异常NET1"},
  543. {0x45, {0, 0, 0}, "单网通讯异常NET2"},
  544. {0x45, {0, 0, 0}, "N侧通讯异常"},
  545. {0x45, {0, 0, 0}, "M侧通讯异常"},
  546. {0x45, {0, 0, 0}, "Goose网络类型错误"},
  547. #endif
  548. #if defined GD_AREA_ZHONGSHAN_2020
  549. {0x05, {0, 0, 0}, "分布式配置异常"},
  550. #endif
  551. {0x00, {0, 0, 0}, "事故总"},
  552. {0x04, {0, 0, 0}, "电池自动活化投退"},
  553. {0x04, {0, 0, 0}, "备用电源投入"},
  554. {0x04, {0, 0, 0}, "非电量1跳闸"},
  555. {0x04, {0, 0, 0}, "非电量2跳闸"},
  556. {0x04, {0, 0, 0}, "非电量3跳闸"},
  557. {0x04, {0, 0, 0}, "非电量4跳闸"},
  558. {0x04, {0, 0, 0}, "非电量5跳闸"},
  559. {0x04, {0, 0, 0}, "非电量6跳闸"},
  560. {0x04, {0, 0, 0}, "非电量7跳闸"},
  561. {0x04, {0, 0, 0}, "非电量8跳闸"},
  562. {0x04, {0, 0, 0}, "非电量1告警"},
  563. {0x04, {0, 0, 0}, "非电量2告警"},
  564. {0x04, {0, 0, 0}, "非电量3告警"},
  565. {0x04, {0, 0, 0}, "非电量4告警"},
  566. {0x04, {0, 0, 0}, "非电量5告警"},
  567. {0x04, {0, 0, 0}, "非电量6告警"},
  568. {0x04, {0, 0, 0}, "非电量7告警"},
  569. {0x04, {0, 0, 0}, "非电量8告警"},
  570. {0x04, {0, 0, 0}, "串口1通信异常"},
  571. {0x04, {0, 0, 0}, "串口2通信异常"},
  572. {0x04, {0, 0, 0}, "串口3通信异常"},
  573. {0x04, {0, 0, 0}, "串口4通信异常"},
  574. {0x04, {0, 0, 0}, "串口5通信异常"},
  575. {0x04, {0, 0, 0}, "串口6通信异常"},
  576. {0x04, {0, 0, 0}, "网络1通信异常"},
  577. {0x04, {0, 0, 0}, "网络2通信异常"},
  578. {0x04, {0, 0, 0}, "级联装置1异常"},
  579. {0x04, {0, 0, 0}, "级联装置2异常"},
  580. {0x04, {0, 0, 0}, "级联装置3异常"},
  581. {0x04, {0, 0, 0}, "级联装置4异常"},
  582. {0x04, {0, 0, 0}, "级联装置5异常"},
  583. {0x04, {0, 0, 0}, "级联装置6异常"},
  584. {0x04, {0, 0, 0}, "级联装置7异常"},
  585. {0x04, {0, 0, 0}, "级联装置8异常"},
  586. {0x04, {0, 0, 0}, "级联装置9异常"},
  587. {0x04, {0, 0, 0}, "级联装置10异常"},
  588. {0x04, {0, 0, 0}, "面板合闸"},
  589. {0x04, {0, 0, 0}, "面板分闸"},
  590. /*下面不需要上送后台的操作或提示类的信息*/
  591. {0x00, {0, 0, 0}, "装置上电"},
  592. /*装置状态切换*/
  593. {0x00, {0, 0, 0}, "进入测试模式"},
  594. {0x00, {0, 0, 0}, "进入运行模式"},
  595. /*通道校正记录*/
  596. {0x00, {0, 0, 0}, "幅值手校成功"},
  597. {0x00, {0, 0, 0}, "角度手校成功"},
  598. {0x00, {0, 0, 0}, "通道自校成功"},
  599. /*遥控操作类*/
  600. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控合闸预置成功"},
  601. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控合闸预置失败"},
  602. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控合闸预置超时"},
  603. {0x44, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控合闸执行成功"},
  604. {0x44, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控合闸执行失败"},
  605. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控合闸终止"},
  606. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控分闸预置成功"},
  607. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控分闸预置失败"},
  608. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控分闸预置超时"},
  609. {0x44, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控分闸执行成功"},
  610. {0x44, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控分闸执行失败"},
  611. {0x40, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "遥控分闸终止"},
  612. /*遥控操作类*/
  613. {0x00, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "PLC合"},
  614. {0x00, {PARA_TYPE_YK|EV_PARA_YK, PARA_TYPE_YK|EV_PARA_YK, 0}, "PLC分"},
  615. {0x04, {0, 0, 0}, "手动合闸"},
  616. {0x04, {0, 0, 0}, "手动分闸"},
  617. {0x04, {0, 0, 0}, "无线遥控合闸"},
  618. {0x04, {0, 0, 0}, "无线遥控分闸"},
  619. {0x04, {0, 0, 0}, "PDA遥控合闸"},
  620. {0x04, {0, 0, 0}, "PDA遥控分闸"},
  621. {0x04, {0, 0, 0}, "短信合闸"},
  622. {0x04, {0, 0, 0}, "短信分闸"},
  623. {0x04, {0, 0, 0}, "电池自动活化"},
  624. {0x04, {0, 0, 0}, "电池活化启动"},
  625. {0x04, {0, 0, 0}, "电池活化退出"},
  626. {0x04, {0, 0, 0}, "电池手动退出"},
  627. /*定值操作类*/
  628. {0x00, {0, 0, 0}, "定值整定成功"},
  629. {0x00, {0, 0, 0}, "定值整定失败"},
  630. {0x00, {0, 0, 0}, "公共定值整定成功"},
  631. {0x00, {0, 0, 0}, "公共定值整定失败"},
  632. {0x00, {0, 0, 0}, "软压板整定成功"},
  633. {0x00, {0, 0, 0}, "软压板整定失败"},
  634. /*内部定值操作类*/
  635. {0x00, {0, 0, 0}, "内部定值成功"},
  636. {0x00, {0, 0, 0}, "内部定值失败"},
  637. {0x00, {0, 0, 0}, "RTC内存初始化"},
  638. /*参数操作*/
  639. {0x00, {0, 0, 0}, "参数整定成功"},
  640. {0x00, {0, 0, 0}, "参数整定失败"},
  641. {0x00, {0, 0, 0}, "信号复归"},
  642. {0x00, {0, 0, 0}, "事件记录清除"},
  643. {0x00, {0, 0, 0}, "操作记录清除"},
  644. {0x00, {0, 0, 0}, "恢复出厂设置"},
  645. {0x00, {0, 0, 0}, "录波溢出"},
  646. {0x00, {0, 0, 0}, "定值修改"},
  647. #if defined(CPU_AM335X)
  648. {0x00, {0, 0, 0}, "恢复APP分区"},
  649. #endif
  650. };
  651. const WORD SOENumber=sizeof(tAllSOE)/sizeof(SOE_DEF); // 测量值个数
  652. /*========================== 本文件结束 =============================*/