UnitsLib.c 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282
  1. /*************************************************************************
  2. * 版权所有:
  3. * 文件版本: V1.00
  4. * 文件名称: DILogic.c
  5. * 生成日期: 2008年11月15日
  6. * 作 者:
  7. * 功 能: 开入逻辑功能
  8. * 更新信息:
  9. * 更新日志1:
  10. * 日期:
  11. * 修改者:
  12. * 修改内容:
  13. * 修改原因:
  14. * 更新日志2:
  15. **************************************************************************/
  16. #include "head.h"
  17. /******************************************************************************
  18. 函数名称: ProtectRelayInit
  19. 函数版本: 01.01
  20. 创建作者:
  21. 创建日期: 2013-08-08
  22. 函数说明: 上电时初始化保护相关的定时器,包括定值设置的、固定的
  23. 参数说明:
  24. 返回值:
  25. 修改记录:
  26. */
  27. void ProtectRelayInit(void)
  28. {
  29. int sw,i;
  30. for(sw=0;sw<g_sw_num;sw++)
  31. {
  32. TRELAY_T *pR=&g_tRelay[ sw];
  33. TSETSW *pSet = &pRunSet->tSwSet[sw];
  34. int i;
  35. #ifdef CUSTOMIZE_BZT //备自投
  36. BztTimerInit(sw);
  37. #endif
  38. #ifdef GW_AREA_MAIN_2021
  39. for(i=0;i<OC_NUMBER;i++)
  40. {
  41. TOC_T *poc=&pR->tOC[i];
  42. InitTR(&poc->tQDTime, pSet->tOcSet[i].dTgl, PRO_RET_TIME);
  43. if(pRunSet->dT_ZZFG>tRunPara.dTEventRst)
  44. {
  45. InitTR(&poc->tTzEvRstTime, pRunSet->dT_ZZFG, 0); // 故障遥信复归时间
  46. InitTR(&poc->tGjEvRstTime, pRunSet->dT_ZZFG, 0); // 故障遥信复归时间
  47. }
  48. else
  49. {
  50. InitTR(&poc->tTzEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG), 0); // 故障遥信复归时间
  51. InitTR(&poc->tGjEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG), 0); // 故障遥信复归时间
  52. }
  53. InitTR(&poc->tFz25ms, T_25ms, 0);
  54. InitTR(&poc->tTzsbTime, T_1s*2, 0);
  55. InitTR(&poc->tTzhold3s, 0, T_1s*3);
  56. InitTR(&poc->tCYLTime, T_1s, 0);
  57. if(i==OC_GLJS)
  58. {
  59. InitTR(&poc->tDefer25_100ms, T_10ms*3, 0); //30毫秒延时,加速出口的最短时间
  60. }
  61. else if(i==OC_LXJS)
  62. {
  63. InitTR(&poc->tDefer25_100ms, T_100ms, 0); //120毫秒延时,加速出口的最短时间
  64. }
  65. else if(i==OC_LYJS)
  66. {
  67. InitTR(&poc->tDefer25_100ms, T_100ms, 0); //120毫秒延时,加速出口的最短时间
  68. }
  69. else
  70. {
  71. InitTR(&poc->tDefer25_100ms, T_25ms, 0);
  72. }
  73. if(i==OC_GLBS)
  74. {
  75. InitTR(&poc->tQDTime, 0, T_200ms); // 过流闭锁时间定值
  76. }
  77. if(i>=OC_OVLOAD)
  78. {
  79. InitTR(&poc->tQDTime, pSet->tOcSet[i].dTgl, WRN_RET_TIME); // 过载及重载,返回时间为1秒
  80. }
  81. }
  82. //重合闸
  83. InitTR(&pR->tCHZ.tTCHCD15s0s, pSet->dTCHOK,0 ); //充电15秒
  84. InitTR(&pR->tCHZ.tTCHQDHW0ms50ms, 0,T_10ms*5); //合闸位置下降沿展宽50ms
  85. InitTR(&pR->tCHZ.tTCHQD0ms50ms, 0,T_10ms*5 ); //跳闸开出下降沿展宽50ms
  86. InitTR(&pR->tCHZ.tTCHJD_0ms30ms, 0,T_10ms*3 ); //弹簧未储能下降沿展宽30ms
  87. InitTR(&pR->tCHZ.tTCHJD_200ms0ms, T_200ms,0 ); //重合开出宽度
  88. InitTR(&pR->tCHZ.tTCHJD_ARDelay, pSet->dTCH[0],0 ); //重合闸延时
  89. InitTR(&pR->tCHZ.tTCHFAIL_TW, pSet->dTCH[0]+T_1s, 0 ); //三相跳位延时: 重合失败返回时间
  90. InitTR(&pR->tCHZ.tTCHBSDelay, pSet->dTCHBS,0 ); //重合闭锁延时
  91. InitTR(&pR->tCHZ.tTCHOKTime, pSet->dTCHOK,0 ); //重合确认延时
  92. InitTR(&pR->tCHZ.tTCHJD_HJS, 0, pSet->dTCHZK); // zhy 20210823,后加速有效展宽,从1s改为3s,适应标准
  93. InitTR(&pR->tTrip_BHT100MS, 0, T_100ms); //跳闸脉冲最短时间1000ms // TODO 对接 EWen
  94. // 小电流重合闸
  95. // TODO EWen
  96. // InitTR(&pR->tXDLCHZ.tTXDLCHCD15s0s, T_1s*15,0 ); //充电15秒
  97. // InitTR(&pR->tXDLCHZ.tTXDLCHQDHW0ms50ms, 0,T_10ms*5); //合闸位置下降沿展宽50ms
  98. // InitTR(&pR->tXDLCHZ.tTXDLCHQD0ms50ms, 0,T_10ms*5 ); //跳闸开出下降沿展宽50ms
  99. // InitTR(&pR->tXDLCHZ.tTXDLCHJD_ARDelay, T_1s*10,0 ); //小电流重合闸延时
  100. // InitTR(&pR->tXDLCHZ.tTXDLCHFAIL_TW, T_1s*11, 0 );
  101. // InitTR(&pR->tXDLCHZ.tTXDLCHBSDelay, 0,0 ); //小电流重合闭锁延时
  102. // InitTR(&pR->tXDLCHZ.tTXDLCHOKTime, 10*T_1s,0 ); //重合成功确认时间
  103. // InitTR(&pR->tXDLCHZ.tTXDLCHJD_0ms30ms, 0,T_10ms*3 ); //弹簧未储能下降沿展宽30ms
  104. // InitTR(&pR->tXDLCHZ.tTXDLCHJD_200ms0ms, T_200ms,0 ); //小电流重合开出宽度
  105. // InitTR(&pR->tXDLCHZ.tTXDLCHJD_HJS, 0, T_1s*3);
  106. // InitTR(&pR->tXDLCHZ.tTXDLCHJLY_HJS, pSet->dT_xdl_hjs, 0); //小电流检零压跳闸
  107. #else
  108. for(i=0;i<BHOC_NUMBER;i++)
  109. {
  110. TOC_T *poc=&pR->tOC[i];
  111. #ifdef YX_RESET_TIME
  112. InitTR(&poc->tTzEvRstTime, tRunPara.dTEventRst, 0); // 遥信复归时间
  113. InitTR(&poc->tGjEvRstTime, tRunPara.dTEventRst, 0); // 遥信复归时间
  114. #endif
  115. InitTR(&poc->tQDTime, pSet->toc[i].dT, PRO_RET_TIME); //CorrectTR(&poc->tQDTime);
  116. InitTR(&poc->tXBTime, T_20ms, 0);
  117. InitTR(&poc->tXBQD25ms, T_25ms*2, 0);
  118. InitTR(&poc->tFz25ms, T_25ms, 0);
  119. if(i>=BH_OVI)
  120. {
  121. InitTR(&poc->tQDTime, pSet->toc[i].dT, WRN_RET_TIME); // 过载及重载,返回时间为1秒
  122. }
  123. }
  124. {
  125. TGOC_T *poc=&pR->tgoc;
  126. GOC_SET *pgset=&pSet->tGocSet;
  127. DWORD dTsytime;
  128. dTsytime=((pgset->dTgzgl>pgset->dTsdlost)?pgset->dTgzgl:pgset->dTsdlost)+T_300ms;
  129. if(pRunSet->bTT_goose_send_after)
  130. {
  131. InitTR(&poc->tTZX_300ms, pgset->dTgl, pRunSet->dT_sendext); //
  132. InitTR(&poc->tTFX_300ms, pgset->dTgl, pRunSet->dT_sendext); //
  133. InitTR(&poc->tTWX_300ms, pgset->dTgl, pRunSet->dT_sendext); //
  134. InitTR(&poc->tTLX_300ms, pgset->dTlx, pRunSet->dT_sendext); //
  135. }
  136. else
  137. {
  138. InitTR(&poc->tTZX_300ms, T_5ms, pRunSet->dT_sendext); //
  139. InitTR(&poc->tTFX_300ms, T_5ms, pRunSet->dT_sendext); //
  140. InitTR(&poc->tTWX_300ms, T_5ms, pRunSet->dT_sendext); //
  141. InitTR(&poc->tTLX_300ms, T_5ms, pRunSet->dT_sendext); //
  142. }
  143. InitTR(&poc->tTGLBS_300ms, T_5ms, pRunSet->dT_sendext); //
  144. InitTR(&poc->tglFz25ms, T_25ms, 0);
  145. InitTR(&poc->tlxFz25ms, T_25ms, 0);
  146. InitTR(&poc->tglQD25ms, T_25ms, 0);
  147. InitTR(&poc->tlxQD25ms, T_25ms, 0);
  148. InitTR(&poc->tTHz1s, T_1s, 0);
  149. InitTR(&poc->tgoose15ms_gzgl, pRunSet->dT_goosecheck, 0); //
  150. InitTR(&poc->tqccd.tCDTime,pRunSet->dT_cd, 0);
  151. InitTR(&poc->tqccd.tWYTime,pRunSet->dT_glfd, 0);
  152. InitTR(&poc->tglcd.tCDTime,pRunSet->dT_cd, 0);
  153. InitTR(&poc->tglcd.tWYTime,pRunSet->dT_glfd, 0);
  154. if(pRunSet->dT_cd==0)
  155. {
  156. InitTR(&poc->tllcd.tCDTime,T_1s*15, 0);
  157. }
  158. else
  159. {
  160. InitTR(&poc->tllcd.tCDTime,pRunSet->dT_cd, 0);
  161. }
  162. InitTR(&poc->tllcd.tWYTime,pRunSet->dT_llfd, 0);
  163. if(pRunSet->bTT_goose_send_after)
  164. {
  165. InitTR(&poc->tglQDTime, pgset->dTgl+pRunSet->dT_goosecheck, PRO_RET_TIME); //
  166. InitTR(&poc->tlxQDTime, pgset->dTlx+pRunSet->dT_goosecheck, PRO_RET_TIME); //
  167. }
  168. else
  169. {
  170. InitTR(&poc->tglQDTime, ((pgset->dTgl>pRunSet->dT_goosecheck)?pgset->dTgl:pRunSet->dT_goosecheck), PRO_RET_TIME); //
  171. InitTR(&poc->tlxQDTime, ((pgset->dTlx>pRunSet->dT_goosecheck)?pgset->dTlx:pRunSet->dT_goosecheck), PRO_RET_TIME); //
  172. }
  173. InitTR(&poc->tgzglTime, pgset->dTgzgl, 0); //
  174. InitTR(&poc->tsdlostTime, pgset->dTsdlost, 0); //
  175. InitTR(&poc->terrlostTime, pgset->dTgzgl, 0); //
  176. InitTR(&poc->tllhzTime, pgset->dTll, 0); //
  177. InitTR(&poc->tllQdTime, pgset->dTll+((pgset->dTgzgl>pgset->dTsdlost)?pgset->dTgzgl:pgset->dTsdlost)+T_1s, 0); //
  178. InitTR(&poc->tglslowTime, 0,pgset->dTgl+T_1s); //
  179. InitTR(&poc->tlxslowTime, 0,pgset->dTlx+T_1s); //
  180. #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020
  181. InitTR(&poc->tgl2Fz25ms, T_25ms, 0);
  182. InitTR(&poc->tgl2QD25ms, T_25ms, 0);
  183. InitTR(&poc->tgl2slowTime, 0,pgset->dTgl2+T_1s); //#ifdef GD_AREA_GDDKY_TEST
  184. if(pRunSet->bTT_goose_send_after)
  185. {
  186. InitTR(&poc->tgl2QDTime, pgset->dTgl2+pRunSet->dT_goosecheck, PRO_RET_TIME); //
  187. InitTR(&poc->tTZX2_300ms, pgset->dTgl2, pRunSet->dT_sendext); //
  188. InitTR(&poc->tTFX2_300ms, pgset->dTgl2, pRunSet->dT_sendext); //
  189. InitTR(&poc->tTWX2_300ms, pgset->dTgl2, pRunSet->dT_sendext); //
  190. }
  191. else
  192. {
  193. InitTR(&poc->tgl2QDTime, ((pgset->dTgl2>pRunSet->dT_goosecheck)?pgset->dTgl2:pRunSet->dT_goosecheck), PRO_RET_TIME); //
  194. InitTR(&poc->tTZX2_300ms, T_5ms, pRunSet->dT_sendext); //
  195. InitTR(&poc->tTFX2_300ms, T_5ms, pRunSet->dT_sendext); //
  196. InitTR(&poc->tTWX2_300ms, T_5ms, pRunSet->dT_sendext); //
  197. }
  198. #endif
  199. InitTR(&poc->tTzcheckTime, pRunSet->dT_TZSB, 0); //开关失灵判断时间
  200. InitTR(&poc->tHzcheckTime, pRunSet->dT_HZSB, 0); //开关失灵判断时间
  201. InitTR(&poc->ttzsbextTime, 0,pRunSet->dT_sendext); // 跳闸失败(开关失灵)展宽时间
  202. InitTR(&poc->tgzglokextTime, 0,pRunSet->dT_sendext); // 发送展宽 300毫秒
  203. InitTR(&poc->tgzglokForbitTime, 0,pRunSet->dT_frobit); //发送故障隔离成功后闭锁时间
  204. InitTR(&poc->tCYY3sdelayms, T_1s*3,dTsytime);
  205. InitTR(&poc->tgoosedelayms_ll, dTsytime+pRunSet->dT_TZSB*2, 0);
  206. InitTR(&poc->tllWY1Time, T_100ms, T_100ms);
  207. InitTR(&poc->tllWY2Time, T_100ms, T_100ms);
  208. InitTR(&poc->tllYY1Time, T_100ms, T_100ms+T_20ms);
  209. InitTR(&poc->tllYY2Time, T_100ms, T_100ms+T_20ms);
  210. InitTR(&poc->textbsTime, 0, pRunSet->dT_sendext+T_100ms);
  211. }
  212. //重合闸
  213. InitTR(&pR->tCHZ.tTCHQDHW0ms50ms, 0,T_10ms*5); //合闸位置下降沿展宽50ms
  214. InitTR(&pR->tCHZ.tTCHQD0ms50ms, 0,T_10ms*5 ); //跳闸开出下降沿展宽50ms
  215. InitTR(&pR->tCHZ.tTCHJD_0ms30ms, 0,T_10ms*3 ); //弹簧未储能下降沿展宽30ms
  216. InitTR(&pR->tCHZ.tTCHJD_200ms0ms, T_200ms,0 ); //重合开出宽度
  217. InitTR(&pR->tCHZ.tTCHCD15s0s, pSet->dT_chz_cd,0 ); //充电15秒
  218. InitTR(&pR->tCHZ.tTCHJD_ARDelay, pSet->dT_chz[0],0 ); //重合闸延时
  219. InitTR(&pR->tCHZ.tTCHFAIL_TW, pSet->dT_chz[0]+T_1s, 0 ); //三相跳位延时: 重合失败返回时间
  220. InitTR(&pR->tCHZ.tTCHBSDelay, pSet->dT_chz_bs,0 ); //重合闭锁延时
  221. InitTR(&pR->tCHZ.tTCHOKTime, pSet->dT_chz_ok,0 ); //重合闭锁延时
  222. //InitTR(&pR->tCHZ.tTCHJD_HJS, 0, T_1s); // zwg20151019,后加速有效展宽,从200ms改为1s,方便测试
  223. InitTR(&pR->tCHZ.tTCHJD_HJS, 0, T_300ms ); // 2020-07-23 分位持续检测时间改为1s,按照广东标准2020 手合开放检测时间,将3s时间改为0.3s,即分闸持续1S以上,手合0.3秒内可启动后加速
  224. InitTR(&pR->tCHZ.tTCHJBSTime, 0,pSet->dT_chz_ok ); //重合闭锁时间
  225. InitTR(&pR->tCHZ.tTCHJBSHw, T_100ms, 0); // 开关合位100ms确认
  226. #endif
  227. #ifdef GD_AREA_YUNFU
  228. InitTR(&pR->tCHZ.tTCH_UO_BS, T_100ms, 0 ); //;零序电压重合闭锁延时
  229. #endif
  230. #ifdef FUN_CHZ_TOPEN
  231. InitTR(&pR->tCHZ.tTCHOPENTime, pSet->dT_chz_Topen, 0 ); //;重合开放时间
  232. #endif
  233. #ifdef SELF_OPEN_RELEASE
  234. InitTR(&pR->tTripBHTKeep, 0, tRunPara.wYXFD*T_5ms/5+T_40ms);
  235. #endif
  236. // 保护跳闸脉宽
  237. InitTR(&pR->tTrip_BHT40MS, 0, T_40ms); //跳闸脉冲最短时间40ms ,以前为100ms,在做多次重合闸是,若时间整定为100ms左右,会有异常
  238. //配网功能定值
  239. #ifndef GW_AREA_MAIN_2021
  240. InitTR(&pR->tSDHZ.tOnXSTime, pSet->dT_X,0);
  241. InitTR(&pR->tSDHZ.tOnYSTime, pSet->dT_Y,0);
  242. InitTR(&pR->tSDHZ.tOnZSTime, T_100ms*35,0); // 3.5秒
  243. InitTR(&pR->tSDHZ.tOnXLTime, pSet->dT_XL,0);
  244. InitTR(&pR->tSDHZ.tOnYLTime, pSet->dT_Y,0);
  245. #ifdef GD_AREA_ZHONGSHAN_2020
  246. InitTR(&pR->tSDHZ.tOnLLCDYLTime, pSet->dT_LL_CD,0);
  247. #endif
  248. InitTR(&pR->tSDHZ.tOnBSTZTime, pSet->dT_fa_bsTz,0);
  249. InitTR(&pR->tSDHZ.tOnZLTime, T_100ms*35,0); // 3.5秒
  250. InitTR(&pR->tSDHZ.tOnOCingTime, pSet->dT_fa_ocing,pSet->dT_Y);
  251. InitTR(&pR->tSDHZ.tOnLXingTime, pSet->dT_fa_lxing,pSet->dT_Y);
  252. InitTR(&pR->tSDHZ.tOnJSTime, pRunSet->dT_ldjs, 0); ////初始化单侧来电解锁计时器
  253. #ifdef GD_AREA_ZHONGSHAN_2020
  254. InitTR(&pR->tSDHZ.tOnY_JSTime, 0, 0);
  255. #elif defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN
  256. InitTR(&pR->tSDHZ.tOnY_JSTime, T_1s*6, 0);
  257. #else
  258. InitTR(&pR->tSDHZ.tOnY_JSTime, T_1s*3, 0);
  259. #endif
  260. #if defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN
  261. #if defined GD_AREA_ECZD_JIEYANG_2022 || defined GD_AREA_ECZD_ZHUHAI_2022 || defined GD_AREA_ECZD_2020
  262. #if defined FUNC_SET_FA_JS
  263. InitTR(&pR->tSDHZ.tOnHW_FA_JSTime, pRunSet->dT_FA_JS, 0);
  264. #elif defined GD_AREA_ECZD_MAOMING
  265. InitTR(&pR->tSDHZ.tOnHW_FA_JSTime, 3*T_1s, 0);
  266. #else
  267. InitTR(&pR->tSDHZ.tOnHW_FA_JSTime, 5*T_10ms, 0);
  268. #endif
  269. #else
  270. InitTR(&pR->tSDHZ.tOnHW_FA_JSTime, T_1s*6, 0);
  271. #endif
  272. #else
  273. InitTR(&pR->tSDHZ.tOnHW_FA_JSTime, T_1s, 0);
  274. #endif
  275. #ifdef FA_OC_COUNT
  276. InitTR(&pR->tSDHZ.tFaOcCountTime, pSet->fa_oc_conut_time, 0);
  277. #endif
  278. if(pSet->toc[FA_GL].dT>T_FA_TZ_MIN_TIME)
  279. {
  280. InitTR(&pR->tSDHZ.tGZJYRstGLTime,pSet->toc[FA_GL].dT,pSet->dT_Y);
  281. }
  282. else
  283. {
  284. InitTR(&pR->tSDHZ.tGZJYRstGLTime,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  285. }
  286. if(pSet->toc[FA_GL_II].dT>T_FA_TZ_MIN_TIME)
  287. {
  288. InitTR(&pR->tSDHZ.tGZJYRstGL_II_Time,pSet->toc[FA_GL_II].dT,pSet->dT_Y);
  289. }
  290. else
  291. {
  292. InitTR(&pR->tSDHZ.tGZJYRstGL_II_Time,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  293. }
  294. if(pSet->toc[FA_GL2].dT>T_FA_TZ_MIN_TIME)
  295. InitTR(&pR->tSDHZ.tGZJYRstGL2Time,pSet->toc[FA_GL2].dT,T_20ms);
  296. else
  297. InitTR(&pR->tSDHZ.tGZJYRstGL2Time,T_FA_TZ_MIN_TIME,T_20ms);
  298. #ifdef SET_GL_GJ2
  299. if(pSet->toc[FA_GL2_II].dT>T_FA_TZ_MIN_TIME)
  300. InitTR(&pR->tSDHZ.tGZJYRstGL2Time1,pSet->toc[FA_GL2_II].dT,T_20ms);
  301. else
  302. InitTR(&pR->tSDHZ.tGZJYRstGL2Time1,T_FA_TZ_MIN_TIME,T_20ms);
  303. #endif
  304. if(pSet->toc[FA_LX].dT>T_FA_TZ_MIN_TIME)
  305. {
  306. InitTR(&pR->tSDHZ.tGZJYRstJDTime,pSet->toc[FA_LX].dT,pSet->dT_Y);
  307. }
  308. else
  309. {
  310. InitTR(&pR->tSDHZ.tGZJYRstJDTime,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  311. }
  312. if(pSet->toc[FA_LX2].dT>T_FA_TZ_MIN_TIME)
  313. InitTR(&pR->tSDHZ.tGZJYRstJD2Time,pSet->toc[FA_LX2].dT,pSet->dT_Y);
  314. else
  315. InitTR(&pR->tSDHZ.tGZJYRstJD2Time,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  316. InitTR(&pR->tSDHZ.tL_RELAYONL3s, pSet->dT_Y, 0);
  317. InitTR(&pR->tSDHZ.tHzS100ms,0, T_200ms);
  318. InitTR(&pR->tSDHZ.tUDBS100ms,T_100ms, 0);
  319. InitTR(&pR->tSDHZ.tUABS25ms,pSet->dT_fa_YY, T_25ms*2);
  320. InitTR(&pR->tSDHZ.tUBCS25ms,pSet->dT_fa_YY, T_25ms*2);
  321. #ifdef FUNC_NYY_NWY
  322. InitTR(&pR->tSDHZ.tUABS_NYY_NWY_50ms,T_25ms*2, T_25ms*2);
  323. InitTR(&pR->tSDHZ.tUBCS_NYY_NWY_50ms,T_25ms*2, T_25ms*2);
  324. InitTR(&pR->tSDHZ.tUABL_NYY_NWY_50ms,T_25ms*2, T_25ms*2);
  325. InitTR(&pR->tSDHZ.tUBCL_NYY_NWY_50ms,T_25ms*2, T_25ms*2);
  326. #endif
  327. InitTR(&pR->tSDHZ.tUFABL80ms,pRunSet->dT_XCY, pSet->dT_Y-T_1s);
  328. InitTR(&pR->tSDHZ.tUFBCL80ms,pRunSet->dT_XCY, pSet->dT_Y-T_1s);
  329. InitTR(&pR->tSDHZ.tUFDBTime,pRunSet->dT_XCY, 0);
  330. InitTR(&pR->tSDHZ.tUABL25ms,pSet->dT_fa_YY, T_25ms*2);
  331. InitTR(&pR->tSDHZ.tUBCL25ms,pSet->dT_fa_YY, T_25ms*2);
  332. #ifdef GD_AREA_HUIZHOU_2021
  333. InitTR(&pR->tSDHZ.tUFABS80ms,pRunSet->dT_XCY, pSet->dT_X);
  334. InitTR(&pR->tSDHZ.tUFBCS80ms,pRunSet->dT_XCY, pSet->dT_X);
  335. #else
  336. InitTR(&pR->tSDHZ.tUFABS80ms,pRunSet->dT_XCY, pSet->dT_Y-T_1s);
  337. InitTR(&pR->tSDHZ.tUFBCS80ms,pRunSet->dT_XCY, pSet->dT_Y-T_1s);
  338. #endif
  339. InitTR(&pR->tSDHZ.tUFABS25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  340. InitTR(&pR->tSDHZ.tUFBCS25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  341. InitTR(&pR->tSDHZ.tUFABL25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  342. InitTR(&pR->tSDHZ.tUFBCL25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  343. #ifdef FA_PL_PJ
  344. InitTR(&pR->tSDHZ.tFREQAB25ms_SCY,T_25ms*2, T_25ms*2);
  345. InitTR(&pR->tSDHZ.tFREQBC25ms_SCY,T_25ms*2, T_25ms*2);
  346. InitTR(&pR->tSDHZ.tFREQAB25ms_LCY,T_25ms*2, T_25ms*2);
  347. InitTR(&pR->tSDHZ.tFREQBC25ms_LCY,T_25ms*2, T_25ms*2);
  348. InitTR(&pR->tSDHZ.tFREQSAB25ms,T_25ms, T_25ms*2);
  349. InitTR(&pR->tSDHZ.tFREQSBC25ms,T_25ms, T_25ms*2);
  350. InitTR(&pR->tSDHZ.tFREQLAB25ms,T_25ms, T_25ms*2);
  351. InitTR(&pR->tSDHZ.tFREQLBC25ms,T_25ms, T_25ms*2);
  352. #endif
  353. InitTR(&pR->tSDHZ.tOpsiteYY100ms,0, 0);
  354. InitTR(&pR->tSDHZ.tPowerYY100ms,0, 0);
  355. InitTR(&pR->tSDHZ.tHw100ms100ms,T_100ms,T_100ms);
  356. InitTR(&pR->tSDHZ.tTw100ms100ms,T_100ms,T_100ms);
  357. InitTR(&pR->tSDHZ.tHz0ms1s,0,tRunPara.wFAHZT*T_5ms/5+T_1s);
  358. InitTR(&pR->tSDHZ.tTz0ms1s,0,tRunPara.wFAFZT*T_5ms/5+T_1s);
  359. InitTR(&pR->tSDHZ.tHz0ms2s,pRunSet->dT_HZSB,0);
  360. InitTR(&pR->tSDHZ.tTz0ms2s,pRunSet->dT_TZSB,0);
  361. InitTR(&pR->tSDHZ.tTSDHzHJS, 0, pSet->dT_Y); //上电合闸加速判断
  362. #endif
  363. // TODO pSet对接,但国网目前没有用到FA逻辑,晚点再合 EWen
  364. // InitTR(&pR->tU0TZ.tZOVTime, pSet->dT_OverU0, T_20ms);
  365. // InitTR(&pR->tOVER_U0TZ.tZOVTime, pSet->dBHTOverU0, T_20ms);
  366. // //InitTR(&pR->tGdy.tQDTime, pSet->dT_gy, T_20ms);
  367. // InitTR(&pR->tLostVot.tCYY25ms0ms, T_25ms, 0);
  368. // InitTR(&pR->tLostVot.tLostVotTime, pSet->dT_Z, T_20ms);
  369. // InitTR(&pR->tLostVot.tLostVLockTime,0,pSet->dT_fa_bsTz);
  370. // InitTR(&pR->tTQHz.tTQTime,pSet->dT_tq,0); //同期
  371. InitTR(&pR->tSDHZ.tHz0ms2s,pRunSet->dT_HZSB,0);
  372. InitTR(&pR->tSDHZ.tTz0ms2s,pRunSet->dT_TZSB,0);
  373. #ifdef ADD_TQ_FH_TIME_SET
  374. InitTR(&pR->tTQHz.tTQQDTime,0, pRunSet->dT_tq_fh);
  375. #else
  376. InitTR(&pR->tTQHz.tTQQDTime,0, T_1s*10);//xj 2015.5.25
  377. #endif
  378. //解列
  379. #ifndef GW_AREA_MAIN_2021
  380. InitTR(&pR->tDYJL.tDdyTime, pSet->dT_jl_ddy, T_20ms); //CorrectTR(&pR->tDYJL.tDdyTime); CorrectTR(&pR->tDYJL.tDdyTime);
  381. InitTR(&pR->tDYJL.tGdyTime, pSet->dT_jl_gdy, T_20ms); //CorrectTR(&pR->tDYJL.tGdyTime); CorrectTR(&pR->tDYJL.tGdyTime);
  382. InitTR(&pR->tDYJL.tHighTime, pSet->dT_jl_ggdy, T_20ms); //CorrectTR(&pR->tDYJL.tHighTime); CorrectTR(&pR->tDYJL.tHighTime);
  383. InitTR(&pR->tDYJL.tLowTime, pSet->dT_jl_gddy, T_20ms);
  384. InitTR(&pR->tPLJL.tDhzTime, pSet->dT_jl_dhz, T_40ms); //CorrectTR(&pR->tPLJL.tDhzTime); CorrectTR(&pR->tPLJL.tDhzTime);
  385. InitTR(&pR->tPLJL.tHighTime, pSet->dT_jl_ghz, T_40ms); //CorrectTR(&pR->tPLJL.tHighTime); CorrectTR(&pR->tPLJL.tHighTime);
  386. InitTR(&pR->tPLJL.tLowTime, pSet->dT_jl_lowhz, T_40ms);//CorrectTR(&pR->tPLJL.tLowTime); CorrectTR(&pR->tPLJL.tLowTime);
  387. InitTR(&pR->tDYJL.thcbs1_0ms_100ms, 0, T_100ms); // 滑差闭锁延迟返回继电器
  388. InitTR(&pR->tDYJL.thcbs2_0ms_100ms, 0, T_100ms);
  389. InitTR(&pR->tPLJL.thcbs1_0ms_100ms, 0, T_100ms);
  390. InitTR(&pR->tPLJL.thcbs2_0ms_100ms, 0, T_100ms);
  391. #endif
  392. //手合加速
  393. //#if defined GD_AREA_MAIN_2020 || defined GD_AREA_ECZD_2020
  394. InitTR(&pR->tSWST.tTRunST_20s1s, T_1s, T_300ms ); // 2020-07-23 分位持续检测时间改为1s,按照广东标准2020 手合开放检测时间,将3s时间改为0.3s,即分闸持续1S以上,手合0.3秒内可启动后加速
  395. //#else
  396. // InitTR(&pR->tSWST.tTRunST_20s1s, T_1s, T_1s*3 ); // 2020-3-19 分位持续检测时间改为1s,手合开放检测时间按行业标准,将1s时间改为3s,即分闸持续1S以上,手合三秒内可启动后加速
  397. //#endif
  398. #if defined GD_AREA_ECZD_2020 ||defined GD_AREA_MAIN_2020
  399. InitTR(&pR->tSWST.tSHz3s10ms, T_1s, T_10ms);
  400. #else
  401. InitTR(&pR->tSWST.tSHz3s10ms, T_1s*3, T_10ms);
  402. #endif
  403. InitTR(&pR->tSWST.tSTz3s10ms, T_1s*3, T_10ms);
  404. InitTR(&pR->tSWST.tSf3s, T_1s*3, 0);
  405. InitTR(&pR->tSWST.tTTWYL_10S1S,T_1s*10, T_1s);
  406. InitTR(&pR->tSWST.tTWCNGJ1s, pRunSet->dWCN_T, WRN_RET_TIME);
  407. InitTR(&pR->tSWST.tTKZHLGJ1s, T_1s*10, WRN_RET_TIME);
  408. #ifdef FUNC_LARGECURRENT_BS_CHZ
  409. InitTR(&pR->tSWST.tIBSCHZ, T_25ms, WRN_RET_TIME);// T_1s
  410. #endif
  411. InitTR(&pR->tTripfail_2s, pRunSet->dT_TZSB, 0); //跳闸失败时间继电器
  412. InitTR(&pR->tTripfail_hz, 0 , pRunSet->dT_TZSB); //跳闸失败时间继电器
  413. InitTR(&pR->tSWST.tCTXXYC, T_1s*3, WRN_RET_TIME); // CT相序异常
  414. InitTR(&pR->tSWST.tCTYC, T_1s*10, WRN_RET_TIME); // CT断线
  415. InitTR(&pR->tSWST.tBatChk, T_1s*3, WRN_RET_TIME); // 电池电压低
  416. InitTR(&pR->tSWST.tBatOver, T_1s*3, WRN_RET_TIME);
  417. InitTR(&pR->tMb_yuk_time, T_1s*5, 0);
  418. InitTR(&pR->tTZZFG_5S0ms, pRunSet->dT_ZZFG, 0); //无故障延时5s
  419. // InitTR(&pR->thzbs.tBSHZTime, pSet->dT_hzbs, T_20ms); // 分闸次数过多,闭锁合闸 // TODO EWen
  420. InitTR(&pR->thzbs.tTw100ms100ms,T_100ms,T_100ms);
  421. #ifndef GW_AREA_MAIN_2021
  422. for(i=0;i<8;i++)
  423. {
  424. if(pRunSet->bTT_FDLTz[i])
  425. {
  426. InitTR(&pR->tFdl[i].tFdlTime,pRunSet->dTFDL[i], PRO_RET_TIME);
  427. }
  428. else
  429. {
  430. InitTR(&pR->tFdl[i].tFdlTime,pRunSet->dTFDL[i], WRN_RET_TIME);
  431. }
  432. }
  433. fresh_set_soe(EV_TYPE_S, !g_tRelay[sw].run_stu.fa_ls,true,sw);
  434. fresh_set_soe(EV_TYPE_L, g_tRelay[sw].run_stu.fa_ls,true,sw);
  435. //自供电功能投入
  436. {
  437. //bool bll;
  438. //bll=(g_tRelay[sw].run_stu.fa_ls&&pRunSet->tSwSet[sw].bTT_FA&&FA_ALL_EN(sw))
  439. // ||(g_tRelay[sw].tgoc.tllcd.sta.bFlag.bCD&&BH_GOOSE_EN(sw));
  440. //fresh_set_soe(EV_FA_LL_EN,(g_tRelay[sw].tgoc.tllcd.sta.bFlag.bCD&&BH_GOOSE_EN(sw)),true,sw);
  441. }
  442. //soft_yb set
  443. fresh_set_soe(EV_KZ_YB, pRunSet->bTT_KZ_YB, true,sw);
  444. fresh_set_soe(EV_EDIT_YB, pRunSet->bTT_EDIT_YB, true,sw);
  445. //#ifdef GD_AREA_FOS
  446. #if defined GD_AREA_FOS || defined GD_AREA_MAIN_2020 || defined GD_AREA_ECZD_2020 || defined GD_AREA_FOS_2021
  447. fresh_set_soe(EV_CHZ_YB,CHZ_ALL_EN(sw) , true,sw);//重合闸投入
  448. #else
  449. fresh_set_soe(EV_CHZ_YB,!CHZ_ALL_EN(sw) , true,sw);//停用重合闸
  450. #endif
  451. #ifdef GD_AREA_MAIN_2020
  452. fresh_set_soe(EV_BH_YB, !FUN_ALL_EN(sw), true,sw); //停用保护和FA
  453. #else
  454. fresh_set_soe(EV_BH_YB, FUN_ALL_EN(sw), true,sw);
  455. #endif
  456. #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
  457. fresh_set_soe(EV_BH_YBTT, BH_ALL_EN(sw), true,sw);
  458. fresh_set_soe(EV_FA_YBTT, FA_ALL_EN(sw), true,sw);
  459. fresh_set_soe(EV_GOOSE_YBTT, BH_GOOSE_EN(sw), true,sw);
  460. #endif
  461. #ifdef GD_AREA_JIEYANG
  462. fresh_set_soe(EV_TQHZ_YBTT, TQ_ALL_EN(sw), true,sw);
  463. #endif
  464. #ifdef TQ_SOFT_YB
  465. fresh_set_soe(EV_TQ_YBTT,TYTQ_ALL_EN(sw),true,sw);
  466. #endif
  467. #ifdef JL_SOFT_YB
  468. fresh_set_soe(EV_JL_YBTT,!JL_ALL_EN(sw),true,sw);//停用自动解列
  469. #endif
  470. #endif
  471. #ifdef FUNC_DRIVE_JY
  472. InitTR(&gb_drive.tDriveUa1Time,pSet->dT_drive_ua1, 0);
  473. InitTR(&gb_drive.tDriveUa2Time,pSet->dT_drive_ua2, 0);
  474. InitTR(&gb_drive.tDriveU0Time,pSet->dT_drive_u0, 0);
  475. InitTR(&gb_drive.tDriveITime,pSet->dT_drive_i, 0);
  476. InitTR(&gb_drive.tDriveI0Time,pSet->dT_drive_i0, 0);
  477. InitTR(&gb_drive.tDriveAgainTime,pSet->dT_drive_again, 0);
  478. InitTR(&gb_drive.tDriveFaBSTime,T_25ms*2, 0);
  479. #endif
  480. #ifdef FUNC_DRIVE
  481. InitTR(&gb_drive.tQDTime_hz,pRunSet->tSwSet[sw].dT_Drive_hz, 0);
  482. InitTR(&gb_drive.tQDTime_fz,pRunSet->tSwSet[sw].dT_Drive_fz, 0);
  483. InitTR(&gb_drive.tQDTime_fz_end,pRunSet->tSwSet[sw].dT_fz_end, 0);
  484. InitTR(&gb_drive.tQDTime_hz_end,pRunSet->tSwSet[sw].dT_hz_end, 0);
  485. #endif
  486. #ifdef FUNC_REBOOT_BS_HA_JS_3S
  487. InitTR(&pR->tSDHZ.tHW_JS_HA_3STime, T_1s*3, 0);
  488. #endif
  489. // PT断线
  490. #ifdef GW_AREA_MAIN_2021
  491. InitTR(&pR->tPTDX.tQDTime, pRunSet->tPTSet.dTVol, 0);
  492. // 零压跳闸
  493. InitTR(&pR->tU0GZ.tQDTime, pRunSet->tSwSet[sw].tU0Set.dTVol, 0);
  494. #endif
  495. }
  496. for(i=0;i<VOL_NUMBER;i++)
  497. {
  498. InitTR(&g_tVol[i].tQDTime,pRunSet->tVolSet[i].dTVol, WRN_RET_TIME);
  499. InitTR(&g_tVol[i].tCYYTime,T_40ms, 0);
  500. InitTR(&g_tVol[i].tWaveYYTime,T_40ms, 0);
  501. }
  502. InitTR(&g_rmt_op.tTULK3STime, T_1s*3, 0);
  503. InitTR(&g_tJLSDTime,pRunSet->dSDYX_T, T_1s*5);
  504. InitTR(&tPT.tTPT1DXTime,T_1s*10, WRN_RET_TIME);
  505. InitTR(&tPT.tTPT2DXTime,T_1s*10, WRN_RET_TIME);
  506. SetTR_TRTT(&tPT.tTPT1DXTime, WRN_RET_TIME);
  507. SetTR_TRTT(&tPT.tTPT2DXTime, WRN_RET_TIME);
  508. InitTR(&tPT.tBatOnTime,T_1s*2, WRN_RET_TIME);
  509. InitTR(&tPT.tTPT1XXYC,T_1s*3, WRN_RET_TIME);
  510. InitTR(&tPT.tTPT2XXYC,T_1s*3, WRN_RET_TIME);
  511. #ifdef IEC_NOLINK_NO_CALLYX
  512. InitTR(&g_link_comm.tLinkBreak,T_1s*60*3, 0);
  513. #endif
  514. #ifdef FUN_JDXX
  515. jdxx_relayinit();
  516. #endif
  517. }
  518. /******************************************************************************
  519. 函数名称: ProtectRelayInit1
  520. 函数版本: 01.01
  521. 创建作者:
  522. 创建日期: 2013-08-08
  523. 函数说明: 在保护巡检时有定值修改,重新初始化与保护相关的定时器,使修改后的延时有效
  524. 参数说明:
  525. 返回值:
  526. 修改记录:
  527. */
  528. void ProtectRelayInit1(void)
  529. {
  530. int sw,i;
  531. for(sw=0;sw<g_sw_num;sw++)
  532. {
  533. TRELAY_T *pR=&g_tRelay[ sw];
  534. TSETSW *pSet = &pRunSet->tSwSet[sw];
  535. int i;
  536. #ifdef CUSTOMIZE_BZT //备自投
  537. BztTimerChange(sw);
  538. #endif
  539. #ifdef GW_AREA_MAIN_2021
  540. for(i=0;i<OC_NUMBER;i++)
  541. {
  542. TOC_T *poc=&pR->tOC[i];
  543. InitTR(&poc->tQDTime, pSet->tOcSet[i].dTgl, PRO_RET_TIME);
  544. if(pRunSet->dT_ZZFG>tRunPara.dTEventRst)
  545. {
  546. InitTR_Time(&poc->tTzEvRstTime, pRunSet->dT_ZZFG, 0); // 故障遥信复归时间
  547. InitTR_Time(&poc->tGjEvRstTime, pRunSet->dT_ZZFG, 0); // 故障遥信复归时间
  548. }
  549. else
  550. {
  551. InitTR_Time(&poc->tTzEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG), 0); // 故障遥信复归时间
  552. InitTR_Time(&poc->tGjEvRstTime, (tRunPara.dTEventRst-pRunSet->dT_ZZFG), 0); // 故障遥信复归时间
  553. }
  554. if(i==OC_GLBS)
  555. {
  556. InitTR_Time(&poc->tQDTime, 0, T_200ms); // 过流闭锁时间定值
  557. }
  558. if(i>=OC_OVLOAD)
  559. {
  560. InitTR(&poc->tQDTime, pSet->tOcSet[i].dTgl, WRN_RET_TIME); // 过载及重载,返回时间为1秒
  561. }
  562. }
  563. //重合闸
  564. InitTR_Time(&pR->tCHZ.tTCHCD15s0s, pSet->dTCHOK,0 ); // 重合充电
  565. InitTR_Time(&pR->tCHZ.tTCHJD_ARDelay, pSet->dTCH[0],0 ); // 重合闸延时
  566. InitTR_Time(&pR->tCHZ.tTCHFAIL_TW, pSet->dTCH[0]+T_1s, 0 ); // 三相跳位延时: 重合失败返回时间
  567. InitTR_Time(&pR->tCHZ.tTCHBSDelay, pSet->dTCHBS,0 ); // 重合闭锁延时
  568. InitTR_Time(&pR->tCHZ.tTCHOKTime, pSet->dTCHOK,0 ); // 重合确认延时
  569. InitTR_Time(&pR->tCHZ.tTCHJD_HJS, 0, pSet->dTCHZK); // zhy20210918,后加速有效展宽,从1s改为3s,适应标准
  570. InitTR_Time(&pR->tSWST.tTRunST_20s1s, 0, pSet->dTCHZK ); // 手合加速判断 zwg,考虑到方便测试,将200ms改为1s
  571. //小电流重合闸
  572. //TODO 小电流重合定值对接 EWen
  573. // InitTR_Time(&pR->tXDLCHZ.tTXDLCHJD_ARDelay, T_1s*10,0 );
  574. // InitTR_Time(&pR->tXDLCHZ.tTXDLCHFAIL_TW, T_1s*11, 0 );
  575. // InitTR_Time(&pR->tXDLCHZ.tTXDLCHBSDelay, 0,0 ); // 小电流重合闭锁延时
  576. // InitTR_Time(&pR->tXDLCHZ.tTXDLCHOKTime, T_1s*10,0 ); // 小电流重合成功确认时间
  577. #else
  578. for(i=0;i<BHOC_NUMBER;i++)
  579. {
  580. TOC_T *poc=&pR->tOC[i];
  581. #ifdef YX_RESET_TIME
  582. InitTR(&poc->tTzEvRstTime, tRunPara.dTEventRst, 0); // 遥信复归时间
  583. InitTR(&poc->tGjEvRstTime, tRunPara.dTEventRst, 0); // 遥信复归时间
  584. #endif
  585. InitTR_Time(&poc->tQDTime, pSet->toc[i].dT, PRO_RET_TIME);
  586. InitTR_Time(&poc->tXBTime, pSet->toc[i].dT, PRO_RET_TIME);
  587. InitTR(&poc->tXBQD25ms, T_25ms*2, 0);
  588. if(i>=BH_OVI)
  589. {
  590. InitTR_Time(&poc->tQDTime, pSet->toc[i].dT, WRN_RET_TIME); // 过载及重载,返回时间为1秒
  591. }
  592. }
  593. {
  594. TGOC_T *poc=&pR->tgoc;
  595. GOC_SET *pgset=&pSet->tGocSet;
  596. DWORD dTsytime;
  597. dTsytime=((pgset->dTgzgl>pgset->dTsdlost)?pgset->dTgzgl:pgset->dTsdlost)+T_300ms;
  598. if(pRunSet->bTT_goose_send_after)
  599. {
  600. InitTR_Time(&poc->tTZX_300ms, pgset->dTgl, pRunSet->dT_sendext); //
  601. InitTR_Time(&poc->tTFX_300ms, pgset->dTgl, pRunSet->dT_sendext); //
  602. InitTR_Time(&poc->tTWX_300ms, pgset->dTgl, pRunSet->dT_sendext); //
  603. InitTR_Time(&poc->tTLX_300ms, pgset->dTlx, pRunSet->dT_sendext); //
  604. }
  605. else
  606. {
  607. InitTR_Time(&poc->tTZX_300ms, T_5ms, pRunSet->dT_sendext); //
  608. InitTR_Time(&poc->tTFX_300ms, T_5ms, pRunSet->dT_sendext); //
  609. InitTR_Time(&poc->tTWX_300ms, T_5ms, pRunSet->dT_sendext); //
  610. InitTR_Time(&poc->tTLX_300ms, T_5ms, pRunSet->dT_sendext); //
  611. }
  612. InitTR_Time(&poc->tTGLBS_300ms, T_5ms, pRunSet->dT_sendext); //
  613. InitTR_Time(&poc->tgoose15ms_gzgl, pRunSet->dT_goosecheck, 0); //
  614. InitTR_Time(&poc->tqccd.tCDTime,pRunSet->dT_cd, 0);
  615. InitTR_Time(&poc->tqccd.tWYTime,pRunSet->dT_glfd, 0);
  616. InitTR_Time(&poc->tglcd.tCDTime,pRunSet->dT_cd, 0);
  617. InitTR_Time(&poc->tglcd.tWYTime,pRunSet->dT_glfd, 0);
  618. if(pRunSet->dT_cd==0)
  619. {
  620. InitTR_Time(&poc->tllcd.tCDTime,T_1s*15, 0);
  621. }
  622. else
  623. {
  624. InitTR_Time(&poc->tllcd.tCDTime,pRunSet->dT_cd, 0);
  625. }
  626. InitTR_Time(&poc->tllcd.tWYTime,pRunSet->dT_llfd, 0);
  627. if(pRunSet->bTT_goose_send_after)
  628. {
  629. InitTR_Time(&poc->tglQDTime, pgset->dTgl+pRunSet->dT_goosecheck, PRO_RET_TIME); //
  630. InitTR_Time(&poc->tlxQDTime, pgset->dTlx+pRunSet->dT_goosecheck, PRO_RET_TIME); //
  631. }
  632. else
  633. {
  634. InitTR_Time(&poc->tglQDTime, ((pgset->dTgl>pRunSet->dT_goosecheck)?pgset->dTgl:pRunSet->dT_goosecheck), PRO_RET_TIME); //
  635. InitTR_Time(&poc->tlxQDTime, ((pgset->dTlx>pRunSet->dT_goosecheck)?pgset->dTlx:pRunSet->dT_goosecheck), PRO_RET_TIME); //
  636. }
  637. InitTR_Time(&poc->tgzglTime, pgset->dTgzgl, 0); //
  638. InitTR_Time(&poc->tsdlostTime, pgset->dTsdlost, 0); //
  639. InitTR_Time(&poc->terrlostTime, pgset->dTgzgl, 0); //
  640. InitTR_Time(&poc->tllhzTime, pgset->dTll, 0); //
  641. InitTR_Time(&poc->tllQdTime, pgset->dTll+((pgset->dTgzgl>pgset->dTsdlost)?pgset->dTgzgl:pgset->dTsdlost)+T_1s, 0); //
  642. InitTR_Time(&poc->tglslowTime, 0,pgset->dTgl+T_1s); //
  643. InitTR_Time(&poc->tlxslowTime, 0,pgset->dTlx+T_1s); //
  644. #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020
  645. if(pRunSet->bTT_goose_send_after)
  646. {
  647. InitTR_Time(&poc->tgl2QDTime, pgset->dTgl2+pRunSet->dT_goosecheck, PRO_RET_TIME); //
  648. InitTR_Time(&poc->tTZX2_300ms, pgset->dTgl2, pRunSet->dT_sendext); //
  649. InitTR_Time(&poc->tTFX2_300ms, pgset->dTgl2, pRunSet->dT_sendext); //
  650. InitTR_Time(&poc->tTWX2_300ms, pgset->dTgl2, pRunSet->dT_sendext); //
  651. }
  652. else
  653. {
  654. InitTR_Time(&poc->tgl2QDTime, ((pgset->dTgl2>pRunSet->dT_goosecheck)?pgset->dTgl2:pRunSet->dT_goosecheck), PRO_RET_TIME); //
  655. InitTR_Time(&poc->tTZX2_300ms, T_5ms, pRunSet->dT_sendext); //
  656. InitTR_Time(&poc->tTFX2_300ms, T_5ms, pRunSet->dT_sendext); //
  657. InitTR_Time(&poc->tTWX2_300ms, T_5ms, pRunSet->dT_sendext); //
  658. }
  659. InitTR_Time(&poc->tglslowTime, 0,pgset->dTgl2+T_1s); //
  660. #endif
  661. InitTR_Time(&poc->tTzcheckTime, pRunSet->dT_TZSB, 0); //开关失灵判断时间
  662. InitTR_Time(&poc->tHzcheckTime, pRunSet->dT_HZSB, 0); //开关失灵判断时间
  663. InitTR_Time(&poc->ttzsbextTime, 0,pRunSet->dT_sendext); // 跳闸失败(开关失灵)展宽时间
  664. InitTR_Time(&poc->tgzglokextTime, 0,pRunSet->dT_sendext); // 发送展宽 300毫秒
  665. InitTR_Time(&poc->tgzglokForbitTime, 0,pRunSet->dT_frobit); //发送故障隔离成功后闭锁时间
  666. InitTR_Time(&poc->tCYY3sdelayms, T_1s*3,dTsytime);
  667. InitTR_Time(&poc->tgoosedelayms_ll, dTsytime+pRunSet->dT_TZSB*2, 0);
  668. InitTR_Time(&poc->textbsTime, 0, pRunSet->dT_sendext+T_100ms);
  669. }
  670. //重合闸
  671. InitTR_Time(&pR->tCHZ.tTCHCD15s0s, pSet->dT_chz_cd,0 ); //充电15秒
  672. InitTR_Time(&pR->tCHZ.tTCHJD_ARDelay, pSet->dT_chz[0],0 ); //重合闸延时
  673. InitTR_Time(&pR->tCHZ.tTCHFAIL_TW, pSet->dT_chz[0]+T_1s, 0 ); //三相跳位延时: 重合失败返回时间
  674. InitTR_Time(&pR->tCHZ.tTCHBSDelay, pSet->dT_chz_bs,0 ); //重合闭锁延时
  675. InitTR_Time(&pR->tCHZ.tTCHOKTime, pSet->dT_chz_ok,0 ); //重合闭锁延时
  676. InitTR_Time(&pR->tCHZ.tTCHJBSTime, 0,pSet->dT_chz_ok ); //重合闭锁时间
  677. #endif
  678. #ifdef GD_AREA_YUNFU
  679. InitTR(&pR->tCHZ.tTCH_UO_BS, T_100ms, 0 ); //;零序电压重合闭锁延时
  680. #endif
  681. #ifdef FUN_CHZ_TOPEN
  682. InitTR(&pR->tCHZ.tTCHOPENTime, pSet->dT_chz_Topen, 0 ); //;重合开放时间
  683. #endif
  684. //配网功能定值
  685. // TODO 国网暂时没有应用FA 此部分定值后面再理 EWen
  686. #ifndef GW_AREA_MAIN_2021
  687. InitTR_Time(&pR->tSDHZ.tOnXSTime, pSet->dT_X,0);
  688. InitTR_Time(&pR->tSDHZ.tOnYSTime, pSet->dT_Y,0);
  689. InitTR_Time(&pR->tSDHZ.tOnXLTime, pSet->dT_XL,0);
  690. InitTR_Time(&pR->tSDHZ.tOnYLTime, pSet->dT_Y,0);
  691. #ifdef GD_AREA_ZHONGSHAN_2020
  692. InitTR_Time(&pR->tSDHZ.tOnLLCDYLTime, pSet->dT_LL_CD,0);
  693. #endif
  694. InitTR_Time(&pR->tSDHZ.tOnBSTZTime, pSet->dT_fa_bsTz,0);
  695. InitTR_Time(&pR->tSDHZ.tOnJSTime, pRunSet->dT_ldjs, 0); ////初始化单侧来电解锁计时器
  696. #if defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN
  697. #if defined GD_AREA_ECZD_JIEYANG_2022 || defined GD_AREA_ECZD_ZHUHAI_2022 || defined GD_AREA_ECZD_2020
  698. #if defined FUNC_SET_FA_JS
  699. InitTR_Time(&pR->tSDHZ.tOnHW_FA_JSTime, pRunSet->dT_FA_JS, 0);
  700. #elif defined GD_AREA_ECZD_MAOMING
  701. InitTR(&pR->tSDHZ.tOnHW_FA_JSTime, 3*T_1s, 0);
  702. #else
  703. InitTR_Time(&pR->tSDHZ.tOnHW_FA_JSTime, 5*T_10ms, 0);
  704. #endif
  705. #else
  706. InitTR_Time(&pR->tSDHZ.tOnHW_FA_JSTime, T_1s*6, 0);
  707. #endif
  708. #else
  709. InitTR_Time(&pR->tSDHZ.tOnHW_FA_JSTime, T_1s, 0);
  710. #endif
  711. InitTR_Time(&pR->tSDHZ.tOnOCingTime, pSet->dT_fa_ocing,pSet->dT_Y);
  712. InitTR_Time(&pR->tSDHZ.tOnLXingTime, pSet->dT_fa_lxing,pSet->dT_Y);
  713. #ifdef GD_AREA_ZHONGSHAN_2020
  714. InitTR_Time(&pR->tSDHZ.tOnY_JSTime, 0, 0);
  715. #elif defined GD_AREA_ECZD_2020 || defined GD_AREA_ZHONGSHAN
  716. InitTR_Time(&pR->tSDHZ.tOnY_JSTime, T_1s*6, 0);
  717. #else
  718. InitTR_Time(&pR->tSDHZ.tOnY_JSTime, T_1s*3, 0);
  719. #endif
  720. #ifdef FA_OC_COUNT
  721. InitTR_Time(&pR->tSDHZ.tFaOcCountTime, pSet->fa_oc_conut_time, 0);
  722. #endif
  723. #if 0
  724. if(pSet->toc[FA_GL].dT>T_10ms*3)
  725. {
  726. InitTR_Time(&pR->tSDHZ.tGZJYRstGLTime,pSet->toc[FA_GL].dT-T_10ms*3,pSet->dT_Y);
  727. }
  728. else
  729. {
  730. InitTR_Time(&pR->tSDHZ.tGZJYRstGLTime,0,pSet->dT_Y);
  731. }
  732. if(pSet->toc[FA_GL2].dT>T_10ms*3)
  733. InitTR_Time(&pR->tSDHZ.tGZJYRstGL2Time,pSet->toc[FA_GL2].dT-T_10ms*3,pSet->dT_Y);
  734. else
  735. InitTR_Time(&pR->tSDHZ.tGZJYRstGL2Time,0,pSet->dT_Y);
  736. if(pSet->toc[FA_LX].dT>T_10ms*3)
  737. {
  738. InitTR_Time(&pR->tSDHZ.tGZJYRstJDTime,pSet->toc[FA_LX].dT-T_10ms*3,pSet->dT_Y);
  739. }
  740. else
  741. {
  742. InitTR_Time(&pR->tSDHZ.tGZJYRstJDTime,0,pSet->dT_Y);
  743. }
  744. if(pSet->toc[FA_LX2].dT>T_10ms*3)
  745. InitTR_Time(&pR->tSDHZ.tGZJYRstJD2Time,pSet->toc[FA_LX2].dT-T_10ms*3,pSet->dT_Y);
  746. else
  747. InitTR_Time(&pR->tSDHZ.tGZJYRstJD2Time,0,pSet->dT_Y);
  748. #else
  749. if(pSet->toc[FA_GL].dT>T_FA_TZ_MIN_TIME)
  750. InitTR_Time(&pR->tSDHZ.tGZJYRstGLTime,pSet->toc[FA_GL].dT,pSet->dT_Y);
  751. else
  752. InitTR_Time(&pR->tSDHZ.tGZJYRstGLTime,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  753. if(pSet->toc[FA_GL_II].dT>T_FA_TZ_MIN_TIME)
  754. InitTR_Time(&pR->tSDHZ.tGZJYRstGL_II_Time,pSet->toc[FA_GL_II].dT,pSet->dT_Y);
  755. else
  756. InitTR_Time(&pR->tSDHZ.tGZJYRstGL_II_Time,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  757. if(pSet->toc[FA_GL2].dT>T_FA_TZ_MIN_TIME)
  758. InitTR_Time(&pR->tSDHZ.tGZJYRstGL2Time,pSet->toc[FA_GL2].dT,T_20ms);
  759. else
  760. InitTR_Time(&pR->tSDHZ.tGZJYRstGL2Time,T_FA_TZ_MIN_TIME,T_20ms);
  761. #ifdef SET_GL_GJ2
  762. if(pSet->toc[FA_GL2_II].dT>T_FA_TZ_MIN_TIME)
  763. InitTR_Time(&pR->tSDHZ.tGZJYRstGL2Time1,pSet->toc[FA_GL2_II].dT,T_20ms);
  764. else
  765. InitTR_Time(&pR->tSDHZ.tGZJYRstGL2Time1,T_FA_TZ_MIN_TIME,T_20ms);
  766. #endif
  767. if(pSet->toc[FA_LX].dT>T_FA_TZ_MIN_TIME)
  768. InitTR_Time(&pR->tSDHZ.tGZJYRstJDTime,pSet->toc[FA_LX].dT,pSet->dT_Y);
  769. else
  770. InitTR_Time(&pR->tSDHZ.tGZJYRstJDTime,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  771. if(pSet->toc[FA_LX2].dT>T_FA_TZ_MIN_TIME)
  772. InitTR_Time(&pR->tSDHZ.tGZJYRstJD2Time,pSet->toc[FA_LX2].dT,pSet->dT_Y);
  773. else
  774. InitTR_Time(&pR->tSDHZ.tGZJYRstJD2Time,T_FA_TZ_MIN_TIME,pSet->dT_Y);
  775. #endif
  776. InitTR_Time(&pR->tSDHZ.tUABS25ms,pSet->dT_fa_YY, T_25ms*2);
  777. InitTR_Time(&pR->tSDHZ.tUBCS25ms,pSet->dT_fa_YY, T_25ms*2);
  778. InitTR_Time(&pR->tSDHZ.tUABL25ms,pSet->dT_fa_YY, T_25ms*2);
  779. InitTR_Time(&pR->tSDHZ.tUBCL25ms,pSet->dT_fa_YY, T_25ms*2);
  780. InitTR_Time(&pR->tSDHZ.tL_RELAYONL3s, pSet->dT_Y, 0);
  781. InitTR_Time(&pR->tSDHZ.tUFABL80ms,pRunSet->dT_XCY, pSet->dT_Y-T_1s);
  782. InitTR_Time(&pR->tSDHZ.tUFBCL80ms,pRunSet->dT_XCY, pSet->dT_Y-T_1s);
  783. InitTR_Time(&pR->tSDHZ.tUFDBTime,pRunSet->dT_XCY, 0);
  784. InitTR_Time(&pR->tSDHZ.tUFABS80ms,pRunSet->dT_XCY, pSet->dT_X);
  785. InitTR_Time(&pR->tSDHZ.tUFBCS80ms,pRunSet->dT_XCY, pSet->dT_X);
  786. InitTR_Time(&pR->tSDHZ.tUFABS25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  787. InitTR_Time(&pR->tSDHZ.tUFBCS25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  788. InitTR_Time(&pR->tSDHZ.tUFABL25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  789. InitTR_Time(&pR->tSDHZ.tUFBCL25ms,T_25ms, pRunSet->dT_XCY+T_1s);
  790. #ifdef FA_PL_PJ
  791. InitTR(&pR->tSDHZ.tFREQAB25ms_SCY,T_25ms*2, T_25ms*2);
  792. InitTR(&pR->tSDHZ.tFREQBC25ms_SCY,T_25ms*2, T_25ms*2);
  793. InitTR(&pR->tSDHZ.tFREQAB25ms_LCY,T_25ms*2, T_25ms*2);
  794. InitTR(&pR->tSDHZ.tFREQBC25ms_LCY,T_25ms*2, T_25ms*2);
  795. InitTR(&pR->tSDHZ.tFREQSAB25ms,T_25ms, T_25ms*2);
  796. InitTR(&pR->tSDHZ.tFREQSBC25ms,T_25ms, T_25ms*2);
  797. InitTR(&pR->tSDHZ.tFREQLAB25ms,T_25ms, T_25ms*2);
  798. InitTR(&pR->tSDHZ.tFREQLBC25ms,T_25ms, T_25ms*2);
  799. #endif
  800. InitTR_Time(&pR->tSDHZ.tHz0ms1s,0,tRunPara.wFAHZT*T_5ms/5+T_1s);
  801. InitTR_Time(&pR->tSDHZ.tTz0ms1s,0,tRunPara.wFAFZT*T_5ms/5+T_1s);
  802. InitTR_Time(&pR->tSDHZ.tHz0ms2s,pRunSet->dT_HZSB,0);
  803. InitTR_Time(&pR->tSDHZ.tTz0ms2s,pRunSet->dT_TZSB,0);
  804. InitTR_Time(&pR->tSDHZ.tTSDHzHJS, 0, pSet->dT_Y); //上电合闸加速判断
  805. #endif
  806. // TODO pSet对接,但国网目前没有用到FA逻辑,晚点再合 EWen
  807. // InitTR_Time(&pR->tU0TZ.tZOVTime, pSet->dT_OverU0, T_20ms);
  808. // InitTR_Time(&pR->tOVER_U0TZ.tZOVTime, pSet->dBHTOverU0, T_20ms);
  809. InitTR_Time(&pR->tSDHZ.tHz0ms2s,pRunSet->dT_HZSB,0);
  810. InitTR_Time(&pR->tSDHZ.tTz0ms2s,pRunSet->dT_TZSB,0);
  811. //解列
  812. #ifndef GW_AREA_MAIN_2021
  813. InitTR_Time(&pR->tDYJL.tDdyTime, pSet->dT_jl_ddy, T_20ms);
  814. InitTR_Time(&pR->tDYJL.tGdyTime, pSet->dT_jl_gdy, T_20ms);
  815. InitTR_Time(&pR->tDYJL.tHighTime, pSet->dT_jl_ggdy, T_20ms);
  816. InitTR_Time(&pR->tDYJL.tLowTime, pSet->dT_jl_gddy, T_20ms);
  817. InitTR_Time(&pR->tPLJL.tDhzTime, pSet->dT_jl_dhz, T_40ms);
  818. InitTR_Time(&pR->tPLJL.tHighTime, pSet->dT_jl_ghz, T_40ms);
  819. InitTR_Time(&pR->tPLJL.tLowTime, pSet->dT_jl_lowhz, T_40ms);
  820. #endif
  821. // TODO pSet对接,晚点再合 EWen
  822. // InitTR_Time(&pR->tLostVot.tLostVotTime, pSet->dT_Z, T_20ms);
  823. // InitTR_Time(&pR->tLostVot.tLostVLockTime,0,pSet->dT_fa_bsTz);
  824. // InitTR_Time(&pR->tTQHz.tTQTime,pSet->dT_tq,0); //同期
  825. InitTR(&pR->tTQHz.tBSTQTime,T_25ms, PRO_RET_TIME);
  826. InitTR_Time(&pR->tSWST.tTWCNGJ1s, pRunSet->dWCN_T, WRN_RET_TIME);
  827. InitTR_Time(&pR->tSWST.tTKZHLGJ1s, T_1s*10, WRN_RET_TIME);
  828. InitTR_Time(&pR->tTripfail_2s, pRunSet->dT_TZSB, 0); //跳闸失败时间继电器
  829. InitTR_Time(&pR->tTripfail_hz, 0 , pRunSet->dT_TZSB); //跳闸失败时间继电器
  830. InitTR_Time(&pR->tSWST.tCTXXYC, T_1s*3, WRN_RET_TIME); // CT相序异常
  831. InitTR_Time(&pR->tSWST.tCTYC, T_1s*10, WRN_RET_TIME); // CT断线
  832. InitTR_Time(&pR->tTZZFG_5S0ms, pRunSet->dT_ZZFG, 0); //无故障延时5s
  833. #ifndef GW_AREA_MAIN_2021
  834. for(i=0;i<8;i++)
  835. {
  836. if(pRunSet->bTT_FDLTz[i])
  837. {
  838. InitTR_Time(&pR->tFdl[i].tFdlTime,pRunSet->dTFDL[i], PRO_RET_TIME);
  839. }
  840. else
  841. {
  842. InitTR_Time(&pR->tFdl[i].tFdlTime,pRunSet->dTFDL[i], WRN_RET_TIME);
  843. }
  844. }
  845. #endif
  846. #ifdef FUNC_DRIVE_JY
  847. InitTR(&gb_drive.tDriveUa1Time,pSet->dT_drive_ua1, 0);
  848. InitTR(&gb_drive.tDriveUa2Time,pSet->dT_drive_ua2, 0);
  849. InitTR(&gb_drive.tDriveU0Time,pSet->dT_drive_u0, 0);
  850. InitTR(&gb_drive.tDriveITime,pSet->dT_drive_i, 0);
  851. InitTR(&gb_drive.tDriveI0Time,pSet->dT_drive_i0, 0);
  852. InitTR(&gb_drive.tDriveAgainTime,pSet->dT_drive_again, 0);
  853. InitTR(&gb_drive.tDriveFaBSTime,T_25ms*2, 0);
  854. #endif
  855. #ifdef FUNC_DRIVE
  856. InitTR(&gb_drive.tQDTime_hz,pRunSet->tSwSet[sw].dT_Drive_hz, 0);
  857. InitTR(&gb_drive.tQDTime_fz,pRunSet->tSwSet[sw].dT_Drive_fz, 0);
  858. InitTR(&gb_drive.tQDTime_fz_end,pRunSet->tSwSet[sw].dT_fz_end, 0);
  859. InitTR(&gb_drive.tQDTime_hz_end,pRunSet->tSwSet[sw].dT_hz_end, 0);
  860. #endif
  861. #ifdef GW_AREA_MAIN_2021
  862. // PT断线
  863. InitTR_Time(&pR->tPTDX.tQDTime, pRunSet->tPTSet.dTVol, 0);
  864. // 零压跳闸
  865. InitTR_Time(&pR->tU0GZ.tQDTime, pRunSet->tSwSet[sw].tU0Set.dTVol, 0);
  866. #endif
  867. }
  868. for(i=0;i<VOL_NUMBER;i++)
  869. {
  870. InitTR_Time(&g_tVol[i].tQDTime,pRunSet->tVolSet[i].dTVol, WRN_RET_TIME);
  871. }
  872. InitTR_Time(&g_tJLSDTime,pRunSet->dSDYX_T, T_1s*5);
  873. InitTR_Time(&tFAg.tRstTime,pRunSet->dT_sendext*10, 0);
  874. #ifdef FUN_JDXX
  875. jdxx_relayinit();
  876. #endif
  877. }
  878. /**************************************************************************
  879. 函数名称:ValueOverRelay
  880. 函数版本:1.00
  881. 作者: mwd
  882. 创建日期:2007.9.29
  883. 函数功能说明:过量继电器
  884. 输入参数:dI、dIdz 相比较
  885. CONST_FHXISHU: 返回系数,常数
  886. bEN: 1--返回系数有效,0-返回系数无效
  887. 其他输入:
  888. 输出参数?
  889. 返回值:?I>dIdz,返回true ,否则,返回false
  890. ***************************************************************************/
  891. bool OverRelay(DWORD dI,DWORD dIdz,DWORD dfhdz ,bool bEN)
  892. {
  893. if(bEN)
  894. {
  895. if(dI>dfhdz)
  896. {
  897. return (true);
  898. }
  899. else
  900. {
  901. return (false);
  902. }
  903. }
  904. else
  905. {
  906. if(dI>dIdz)
  907. {
  908. return (true);
  909. }
  910. else
  911. {
  912. return (false);
  913. }
  914. }
  915. }
  916. /**************************************************************************
  917. 函数名称:ValueLowRelay
  918. 函数版本:1.00
  919. 作者:
  920. 创建日期:2007.9.29
  921. 函数功能说明:欠量继电器
  922. 输入参数:dI、dIdz 相比较
  923. CONST_FHXISHU: 返回系数,常数
  924. bEN: 1--返回系数有效,0-返回系数无效
  925. 其他输入:
  926. 输出参数?
  927. 返回值:?I>dIdz,返回true ,否则,返回false
  928. ***************************************************************************/
  929. bool LowRelay(DWORD dI,DWORD dIdz,DWORD dfhdz ,bool bEN)
  930. {
  931. if(bEN)
  932. {
  933. if(dI<dfhdz)
  934. {
  935. return (true);
  936. }
  937. else
  938. {
  939. return (false);
  940. }
  941. }
  942. else
  943. {
  944. if(dI<dIdz)
  945. {
  946. return (true);
  947. }
  948. else
  949. {
  950. return (false);
  951. }
  952. }
  953. }
  954. /**************************************************************************
  955. 函数名称:SelectFrom
  956. 函数版本:1.00
  957. 作者: MWD
  958. 创建日期:2007.9.29
  959. 函数功能说明:二选一函数
  960. 输入参数:DWORD A: 待选数
  961. DWORD B: 待选数
  962. bool bSelect
  963. 输出参数:
  964. 返回值: bSelect=0 时,返回 A; bSelect=1 时,返回 B;
  965. **************************************************************************/
  966. DWORD SelectMax(DWORD A, DWORD B, DWORD C)
  967. {
  968. DWORD max;
  969. max=A;
  970. if(B>max)
  971. {
  972. max=B;
  973. }
  974. if(C>max)
  975. {
  976. max=C;
  977. }
  978. return (max);
  979. }
  980. /**************************************************************************
  981. 函数名称:CalcAngSub
  982. 函数版本:1.00
  983. 作者: MWD
  984. 创建日期:2007.9.29
  985. 函数功能说明:计算向量角差,并转换至 0~360之间
  986. 输入参数:long Real1,
  987. long Imag1,
  988. long Imag2,
  989. long Imag2
  990. 输出参数:
  991. 返回值: long 角差;
  992. **************************************************************************/
  993. long CalcAngSub(long Real1, long Imag1, long Real2, long Imag2)
  994. {
  995. long lTmp;
  996. lTmp = _AngPQ(Real1, Imag1)- _AngPQ(Real2,Imag2);
  997. //规格化在0 ~ 360之间
  998. if(lTmp < 0)
  999. {
  1000. lTmp += ANGLE_P360;
  1001. }
  1002. if(lTmp>ANGLE_P180) //转换为-180 ~180
  1003. {
  1004. lTmp-=ANGLE_P360;
  1005. }
  1006. return (lTmp);
  1007. }
  1008. /**************************************************************************
  1009. 函数名称:SynJudge
  1010. 函数版本:1.00
  1011. 作者: 保护组 MWD
  1012. 创建日期:2007.10.13
  1013. 函数功能说明:同期判别
  1014. 输入参数:long ANG1: UX与UA角差
  1015. long ANG2: UX与UA角差记忆值
  1016. DWORD ANGSET: 同期角度定值
  1017. 输出参数:
  1018. 返回值: TRUE---同期满足,
  1019. FALSE--同期不满足
  1020. **************************************************************************/
  1021. bool SynJudge(long lANG1,long lANG2,DWORD dANGSET)//同期判别
  1022. {
  1023. bool bStatus;
  1024. long lTemp;
  1025. lTemp = lAbs(lANG1 - lANG2);
  1026. if( ( (long)dANGSET > lTemp )
  1027. ||( lTemp > (ANGLE_P360 - (long)dANGSET)) )
  1028. {
  1029. bStatus = 1;
  1030. }
  1031. else
  1032. {
  1033. bStatus = 0;
  1034. }
  1035. return( bStatus );
  1036. }
  1037. /**************************************************************************
  1038. 函数名称:PowerDirectionalRelay
  1039. 函数版本:1.00
  1040. 作者: Chenlei
  1041. 创建日期:2007.11.4
  1042. 函数功能说明:输入电压、电流和阻抗角定值以及电压门槛定值,判断测量阻抗是否
  1043. 落在动作特性区内,并输出动作标志。
  1044. 输入参数:Ur -- 电压实部
  1045. Ui -- 电压虚部
  1046. U -- 电压幅值
  1047.      Ir -- 电流实部
  1048. Ii -- 电流虚部
  1049. I -- 电流幅值
  1050. Umk -- 电压门槛
  1051. Imk -- 电流门槛
  1052. Ang1 -- 灵敏角1
  1053. Ang2 -- 灵敏角2
  1054. 输出参数:管脚10_动作标志
  1055. 返回值: false-不动作;true-动作
  1056. **************************************************************************/
  1057. 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)
  1058. {
  1059. bool bDIRB;
  1060. long lTemp; //中间变量
  1061. long lTemp1; //中间变量
  1062. long lTemp2; //中间变量
  1063. bDIRB = false;
  1064. if (( U > Umk ) && ( I > Imk )) //电压、电流均大于门槛,进行方向判断;否则,返回
  1065. {
  1066. lTemp1 = _MulFac_S(Ur,( Ir * cosa1 - Ii * sina1 ));
  1067. lTemp2 = _MulFac_S(Ui, ( Ii * cosa1 + Ir * sina1 ));
  1068. lTemp = lTemp1 + lTemp2;
  1069. if ( lTemp > 0 )
  1070. {
  1071. lTemp1 = _MulFac_S(Ur, ( Ir * cosa2 - Ii * sina2 ));
  1072. lTemp2 = _MulFac_S(Ui, ( Ii * cosa2 + Ir * sina2 ));
  1073. lTemp = lTemp1 + lTemp2;
  1074. if ( lTemp > 0 )
  1075. {
  1076. bDIRB = true;
  1077. }
  1078. }
  1079. }
  1080. return( bDIRB );
  1081. }
  1082. /**************************************************************************
  1083. 函数名称:SynAngle
  1084. 函数版本:1.00
  1085. 作者: 赵海洋
  1086. 创建日期:2020.05.20
  1087. 函数功能说明:角差判别
  1088. 输入参数:
  1089. 输出参数:
  1090. 返回值: TRUE---角差满足,
  1091. FALSE--角差不满足
  1092. **************************************************************************/
  1093. bool SynAngle(qs16 lANG1,qs16 lANG2,qs16 dANGSET)//角差判别
  1094. {
  1095. bool bStatus;
  1096. qs16 lTemp;
  1097. lTemp = lANG1 - lANG2;
  1098. if(lTemp<0)
  1099. {
  1100. lTemp=-lTemp;
  1101. }
  1102. if(dANGSET > lTemp)
  1103. {
  1104. bStatus = 1;
  1105. }
  1106. else
  1107. {
  1108. bStatus = 0;
  1109. }
  1110. return( bStatus );
  1111. }
  1112. /**************************************************************************
  1113. 函数名称:SynFrequency
  1114. 函数版本:1.00
  1115. 作者: 赵海洋
  1116. 创建日期:2020.05.20
  1117. 函数功能说明:频差判别
  1118. 输入参数:
  1119. 输出参数:
  1120. 返回值: TRUE---频差满足,
  1121. FALSE--频差不满足
  1122. **************************************************************************/
  1123. bool SynFrequency(qs16 lFEQ1,qs16 lFEQ2,qs16 dFEQSET)//频差判别
  1124. {
  1125. bool bStatus;
  1126. qs16 lTemp;
  1127. lTemp = lFEQ1 - lFEQ2;
  1128. if(lTemp<0)
  1129. {
  1130. lTemp=-lTemp;
  1131. }
  1132. if(dFEQSET > lTemp)
  1133. {
  1134. bStatus = 1;
  1135. }
  1136. else
  1137. {
  1138. bStatus = 0;
  1139. }
  1140. return( bStatus );
  1141. }
  1142. /******************************end*****************************************/