| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458 |
- /*******************************************************************************
- * 版权所有:
- * 文件版本: V1.00
- * 文件名称: vol.c
- * 生成日期: 2007年9月10日
- * 作 者:电力开发部部
- * 功 能: 电压逻辑处理
- * 修改日志:
- * 日志1:
- * 修改者:
- * 修改日期:2013.6.18
- * 修改内容:
- * 修改原因:
- ****************************************************************************/
- #include "head.h"
- /**********************************************************************
- 定义全局变量
- ***********************************************************************/
- #ifdef CUSTOMIZE_BZT //备自投
- TVOL_T g_tVolLost;
- #endif
- TVOL_T g_tVol[VOL_NUMBER];
- #define SOFE_AUTO_EN(sw) (BH_ALL_EN(sw)||FA_ALL_EN(sw))//安全自动化功能压板 保护和FA模式下都需要投入安自功能
- void vol_over(DWORD dStep,int vno,int index,int soeno)
- {
- bool bQDD=false;
- TVOL_T *pvol = &g_tVol[vno];
- VOL_SET *pSet = &pRunSet->tVolSet[vno];
- if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2)&&(vno!=VOL_WY_POW1)&&(vno!=VOL_WY_POW2))
- {
- if(vno==VOL_YY_POW1)
- {
- bQDD = OverRelay(g_sw_pub.m2_max[2], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
- }
- else if(vno==VOL_YY_POW2)
- {
- bQDD = OverRelay(g_sw_pub.m2_max[3], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
- }
- else
- {
- bQDD = OverRelay(g_ui[index].m2[0], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
- }
- }
-
- pvol->sta.bFlag.bQD = (pSet->bTT && bQDD);
- /***********动作*********************************/
- RunTR(&pvol->tQDTime, pvol->sta.bFlag.bQD, dStep);
- pvol->sta.bFlag.bGj = pvol->tQDTime.boolTrip;
- /************事件记录及出口****************************/
- if(pvol->sta.bFlag.bGj)
- {
- if(soe_check(soeno)==false)
- {
- DWORD Uab;
- if (vno == VOL_YY_POW1)
- {
- Uab = _Mul_Div_U(sqrt_32fix(g_sw_pub.m2_max[2]), 256, g_ui[index].m2_factor_k);
- }
- else if (vno == VOL_YY_POW2)
- {
- Uab = _Mul_Div_U(sqrt_32fix(g_sw_pub.m2_max[3]), 256, g_ui[index].m2_factor_k);
- }
- else
- {
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[index].m2[0]), 256, g_ui[index].m2_factor_k);
- }
- soe_record_ev(soeno,1, Uab,0,0);
- }
- }
- else
- {
- if(soe_check(soeno)==true)
- {
- soe_record_ev(soeno,0, 0,0,0 );
- }
- }
- }
- void vol_low(DWORD dStep,int vno,int index,int soeno)
- {
- bool bQDD_H,bQDD;
- TVOL_T *pvol = &g_tVol[vno];
- VOL_SET *pSet = &pRunSet->tVolSet[vno];
- static bool bCYY_bk[VOL_NUMBER]={false},bQD_bk[VOL_NUMBER]={false},bGj_bk[VOL_NUMBER]={false},bQDD_H_bk[VOL_NUMBER]={false};
-
- if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
- {
- if (vno == VOL_WY_POW1)
- {
- bQDD_H = OverRelay(g_sw_pub.m2_max[2], pSet->dUVol, pSet->dUVol, false);
- }
- else if (vno == VOL_WY_POW2)
- {
- bQDD_H = OverRelay(g_sw_pub.m2_max[3], pSet->dUVol, pSet->dUVol, false);
- }
- else
- {
- bQDD_H = OverRelay(g_ui[index].m2[0], pSet->dUVol, pSet->dUVol, false);
- }
- }
- else if((vno==VOL_DDY_DC1)||(vno==VOL_DDY_DC2))
- {
- bQDD_H = OverRelay(_AbsL(g_sw_pub.ac_in[index]), pSet->dUVol,pSet->dUVol,false);
- }
- //有压充电
- RunTR(&pvol->tCYYTime, (bQDD_H|pvol->sta.bFlag.bCYY), dStep);
- pvol->sta.bFlag.bCYY = pvol->tCYYTime.boolTrip&&pSet->bTT;
-
- RunTR(&pvol->tWaveYYTime, bQDD_H, dStep);
- if(pvol->tWaveYYTime.boolTrip)
- {
- pvol->sta.bFlag.bQDWave=false;
- }
- if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
- {
- if (vno == VOL_WY_POW1)
- {
- bQDD = LowRelay(g_sw_pub.m2_max[2], pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD);
- }
- else if (vno == VOL_WY_POW2)
- {
- bQDD = LowRelay(g_sw_pub.m2_max[3], pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD);
- }
- else
- {
- bQDD = LowRelay(g_ui[index].m2[0], pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD);
- }
- }
- else if((vno==VOL_DDY_DC1)||(vno==VOL_DDY_DC2))
- {
- bQDD = LowRelay(_AbsL(g_sw_pub.ac_in[index]), pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
- }
- pvol->sta.bFlag.bQD = (pSet->bTT&&bQDD&&pvol->sta.bFlag.bCYY);
- if(pvol->sta.bFlag.bQD)
- {
- if(!pvol->sta.bFlag.bQDWave)
- {
- int sw;
- if(vno==VOL_DDY_Uab1||vno==VOL_DDY_Ubc1||vno==VOL_DDY_Uca1)
- {
- bool bY1;
- bY1=g_tVol[VOL_DDY_Uab1].sta.bFlag.bQDWave||g_tVol[VOL_DDY_Ubc1].sta.bFlag.bQDWave||g_tVol[VOL_DDY_Uca1].sta.bFlag.bQDWave; // 判断是否启动过低电压
- for(sw=0;sw<g_sw_num;sw++)
- {
- if(!pRunSet->tSwSet[sw].bTT_Power_v2&&!bY1)
- {
- rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); // 线路低电压,启动开关录波
- }
- }
- }
- if(vno==VOL_DDY_Uab2||vno==VOL_DDY_Ubc2||vno==VOL_DDY_Uca2)
- {
- bool bY1;
- bY1=g_tVol[VOL_DDY_Uab2].sta.bFlag.bQDWave||g_tVol[VOL_DDY_Ubc2].sta.bFlag.bQDWave||g_tVol[VOL_DDY_Uca2].sta.bFlag.bQDWave; // 判断是否启动过低电压
- for(sw=0;sw<g_sw_num;sw++)
- {
- if(pRunSet->tSwSet[sw].bTT_Power_v2&&!bY1)
- {
- rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); // 线路低电压,启动开关录波
- }
- }
- }
- pvol->sta.bFlag.bQDWave=true;
- }
- }
- /***********动作*********************************/
- RunTR(&pvol->tQDTime, pvol->sta.bFlag.bQD, dStep);
- pvol->sta.bFlag.bGj = pvol->tQDTime.boolTrip;
- if(vno==VOL_DDY_DC1)
- {
- if((bCYY_bk[VOL_DDY_DC1]!=pvol->sta.bFlag.bCYY)
- ||(bQD_bk[VOL_DDY_DC1]!=pvol->sta.bFlag.bQD)
- ||(bGj_bk[VOL_DDY_DC1]!=pvol->sta.bFlag.bGj)
- ||(bQDD_H_bk[VOL_DDY_DC1]!=bQDD_H))
- {
- /*rt_printf("DC1:bQDD_H=%d,bCYY=%d,bQD=%d,bGj=%d,dUVol=%d,ac_in[%d]=%d\r\n",
- bQDD_H,
- pvol->sta.bFlag.bCYY,
- pvol->sta.bFlag.bQD,
- pvol->sta.bFlag.bGj,
- pSet->dUVol,
- index,
- g_sw_pub.ac_in[index]
- );*/
- bCYY_bk[VOL_DDY_DC1]=pvol->sta.bFlag.bCYY;
- bQD_bk[VOL_DDY_DC1]=pvol->sta.bFlag.bQD;
- bGj_bk[VOL_DDY_DC1]=pvol->sta.bFlag.bGj;
- bQDD_H_bk[VOL_DDY_DC1]=bQDD_H;
- }
-
- }
- if(vno==VOL_DDY_DC2)
- {
- if((bCYY_bk[VOL_DDY_DC2]!=pvol->sta.bFlag.bCYY)
- ||(bQD_bk[VOL_DDY_DC2]!=pvol->sta.bFlag.bQD)
- ||(bGj_bk[VOL_DDY_DC2]!=pvol->sta.bFlag.bGj)
- ||(bQDD_H_bk[VOL_DDY_DC2]!=bQDD_H))
- {
- /*rt_printf("DC2:bQDD_H=%d,bCYY=%d,bQD=%d,bGj=%d,dUVol=%d,ac_in[%d]=%d\r\n",
- bQDD_H,
- pvol->sta.bFlag.bCYY,
- pvol->sta.bFlag.bQD,
- pvol->sta.bFlag.bGj,
- pSet->dUVol,
- index,
- g_sw_pub.ac_in[index]);*/
-
- bCYY_bk[VOL_DDY_DC2]=pvol->sta.bFlag.bCYY;
- bQD_bk[VOL_DDY_DC2]=pvol->sta.bFlag.bQD;
- bGj_bk[VOL_DDY_DC2]=pvol->sta.bFlag.bGj;
- bQDD_H_bk[VOL_DDY_DC2]=bQDD_H;
- }
- }
-
- /************事件记录及出口****************************/
- if(pvol->sta.bFlag.bGj)
- {
- int sw;
-
- if(soe_check(soeno)==false)
- {
- DWORD Uab;
- if((vno!=VOL_DDY_DC1)&&(vno!=VOL_DDY_DC2))
- {
- if (vno == VOL_WY_POW1)
- {
- Uab = _Mul_Div_U(sqrt_32fix(g_sw_pub.m2_max[2]), 256, g_ui[index].m2_factor_k);
- }
- else if (vno == VOL_WY_POW2)
- {
- Uab = _Mul_Div_U(sqrt_32fix(g_sw_pub.m2_max[3]), 256, g_ui[index].m2_factor_k);
- }
- else
- {
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[index].m2[0]), 256, g_ui[index].m2_factor_k);
- }
- }
- else if((vno==VOL_DDY_DC1)||(vno==VOL_DDY_DC2))
- {
- Uab = g_sw_pub.ac_in[index];
- }
-
- if(vno==VOL_DDY_Uab1||vno==VOL_DDY_Ubc1||vno==VOL_DDY_Uca1)
- {
- bool bY1;
- bY1=soe_check(EV_UAB1DDY)||soe_check(EV_UBC1DDY) ||soe_check(EV_UCA1DDY); // 判断是否启动过低电压
- for(sw=0;sw<g_sw_num;sw++)
-
- {
- if(!pRunSet->tSwSet[sw].bTT_Power_v2)
- {
- if(!bY1&&BH_WAVETIME_EN(pSet->dTVol))rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); // 线路低电压,启动开关录波
- }
- }
- }
- if(vno==VOL_DDY_Uab2||vno==VOL_DDY_Ubc2||vno==VOL_DDY_Uca2)
- {
- bool bY1;
- bY1=soe_check(EV_UAB2DDY)||soe_check(EV_UBC2DDY) ||soe_check(EV_UCA2DDY); // 判断是否启动过低电压
- for(sw=0;sw<g_sw_num;sw++)
-
- {
- if(pRunSet->tSwSet[sw].bTT_Power_v2)
- {
- if(!bY1&&BH_WAVETIME_EN(pSet->dTVol))rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); // 线路低电压,启动开关录波
- }
- }
- }
- soe_record_ev(soeno,1, Uab,0,0);
-
- }
- }
- else
- {
- if(soe_check(soeno)==true)
- {
- //if(pvol->sta.bFlag.bGj)
- {
- pvol->sta.bFlag.bCYY=false;
- }
- soe_record_ev(soeno,0, 0,0,0 );
- pvol->sta.bFlag.bQDWave=false;
- }
- }
- }
- void Pro_vol(DWORD dStep)
- {
- vol_over(dStep,VOL_GDY_Uab1, PUB_AC_UAB1, EV_UAB1GDY);
- vol_over(dStep,VOL_GDY_Ubc1, PUB_AC_UBC1, EV_UBC1GDY);
- vol_over(dStep,VOL_GDY_Uca1, PUB_AC_UCA1, EV_UCA1GDY);
- vol_over(dStep,VOL_GDY_Uab2, PUB_AC_UAB2, EV_UAB2GDY);
- vol_over(dStep,VOL_GDY_Ubc2, PUB_AC_UBC2, EV_UBC2GDY);
- vol_over(dStep,VOL_GDY_Uca2, PUB_AC_UCA2, EV_UCA2GDY);
- vol_over(dStep,VOL_YY_POW1, PUB_AC_US1, EV_POW1YY);
- vol_over(dStep,VOL_YY_POW2, PUB_AC_US2, EV_POW2YY);
- vol_low(dStep,VOL_DDY_Uab1, PUB_AC_UAB1, EV_UAB1DDY);
- vol_low(dStep,VOL_DDY_Ubc1, PUB_AC_UBC1, EV_UBC1DDY);
- vol_low(dStep,VOL_DDY_Uca1, PUB_AC_UCA1, EV_UCA1DDY);
- vol_low(dStep,VOL_DDY_Uab2, PUB_AC_UAB2, EV_UAB2DDY);
- vol_low(dStep,VOL_DDY_Ubc2, PUB_AC_UBC2, EV_UBC2DDY);
- vol_low(dStep,VOL_DDY_Uca2, PUB_AC_UCA2, EV_UCA2DDY);
- vol_low(dStep,VOL_WY_POW1, PUB_AC_US1, EV_POW1WY);
- vol_low(dStep,VOL_WY_POW2, PUB_AC_US2, EV_POW2WY);
- vol_low(dStep,VOL_DDY_DC1, PUB_AC_IN_UZ1, EV_DC1DDY);
- #ifndef DC_TEST_ONE
- vol_low(dStep,VOL_DDY_DC2, PUB_AC_IN_UZ2, EV_DC2DDY);
- #endif
- }
- /**************************************************************************
- 函数名称:Pro_TQHz
- 函数版本:1.00
- 作者: 电力产品开发部
- 创建日期:2012.3.16
- 函数功能说明:合环
- 输入参数:
- 其他输入:
- 输出参数:
- 返回值:
- ***************************************************************************/
- void Pro_TQHz(int sw,DWORD dStep)
- {
- bool bQD,bTQ=false;
- TRELAY_T *pR=&g_tRelay[sw];
- TTQHZ_T *pSW = &pR->tTQHz;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
- static int printf_Pro_TQHz=1;
-
- if(pR->uRmtSW.bTQHz)
- {
- pR->uRmtSW.bTQHz = false;
- bTQ = true;
- }
- RunTR(&pSW->tTQQDTime, bTQ, dStep);
- if(pSW->tTQQDTime.boolTrip && pR->tSWST.uSWST.bFlag.bHZWZ)
- {
- ResetTR(&pSW->tTQQDTime);
- }
- // 合环合闸
- if(!TYTQ_ALL_EN(sw))
- {
- #if 1
- long deltaA;
- bool bMxYY,bMxWY,bUxYY,bUxWY,bDa,bDu,bDf;
- qs16 ang1=0,ang2=0;
- if(pRunSet->pt2vol==PUB_AC_UAB1)ang2=0;
- else if(pRunSet->pt2vol==PUB_AC_UBC1)ang2=-120*65536;
- else if(pRunSet->pt2vol==PUB_AC_UCA1)ang2=120*65536;
- else if(pRunSet->pt2vol==PUB_AC_UAB2)ang2=0;
- else if(pRunSet->pt2vol==PUB_AC_UBC2)ang2=-120*65536;
- else if(pRunSet->pt2vol==PUB_AC_UCA2)ang2=120*65536;
-
-
- //deltaA = _AbsL((g_ui[PUB_AC_UAB1].p -ang1)- (g_ui[pRunSet->pt2vol].p-ang2));
- //bdeltaA = LowRelay(da, pSet->dTQ_ANG, pSet->dTQ_ANG_fh, pSW->uTQHz.bFlag.bQD);
- //bDa = LowRelay(deltaA, pSet->dA_tq_delatA, pSet->dA_tq_delatA, false);
- bMxYY = OverRelay(g_sw_pub.m2_max[2], pSet->dU_chz_yy,pSet->dU_chz_yy,false);
- bMxWY = LowRelay(g_sw_pub.m2_max[2], pSet->dU_chz_wy,pSet->dU_chz_wy,false);
- bUxYY = OverRelay(g_ui[pRunSet->pt2vol].m2[0], pSet->dU_chz_yy,pSet->dU_chz_yy,false);
- bUxWY = LowRelay(g_ui[pRunSet->pt2vol].m2[0], pSet->dU_chz_wy,pSet->dU_chz_wy,false);
- // deltaA=CalcAngSub(g_ui[PUB_AC_UAB1].ri.r,g_ui[PUB_AC_UAB1].ri.i,g_ui[pRunSet->pt2vol].ri.r,g_ui[pRunSet->pt2vol].ri.i);
- deltaA = _AbsL((g_ui[PUB_AC_UAB1].p -ang1)- (g_ui[pRunSet->pt2vol].p-ang2));
- bDa=(((_AbsL(deltaA) < pSet->dA_tq_delatA)?true:false)||(pSet->dA_tq_delatA==0)); //角差满足要求,角差为零,不判角差
- bDu=((_AbsL(g_ui[PUB_AC_UAB1].fz -g_ui[pRunSet->pt2vol].fz)<pSet->dU_tq_deltaU)?true:false)||(pSet->dU_tq_deltaU==0); //压差满足要求
- bDf= ((_AbsL(g_sw_pub.ac_in[PUB_AC_IN_F1] - g_sw_pub.ac_in[PUB_AC_IN_F2])<pSet->dF_tq_deltaF)?true:false)||(pSet->dF_tq_deltaF==0);//频差
- #ifdef FUNC_PRINT_PT_ERR
- if(bTQ && (tPT.uPT1DX.bFlag.bPTYC || tPT.uPT2DX.bFlag.bPTYC))
- {
- rt_printf("有同期合闸需求但PT断线,不允许合闸!\r\n");
- }
- #endif
- bQD=(bDa&&bDu&&bDf&&bMxYY&&bUxYY&&(!tPT.uPT1DX.bFlag.bPTYC)&&(!tPT.uPT2DX.bFlag.bPTYC))
- #ifndef FUNC_TQ_YY
- ||(bMxWY&&(!tPT.uPT1DX.bFlag.bPTYC))
- ||(bUxWY&&(!tPT.uPT2DX.bFlag.bPTYC))
- #endif
- ; //压差,角差,频差满足要求,或有一侧无压
- pSW->uTQHz.bFlag.bQD = (FUN_ALL_EN(sw) &&
- (!TYTQ_ALL_EN(sw)) &&
- bQD &&
- pSW->tTQQDTime.boolTrip && !pR->tSWST.uSWST.bFlag.bHZWZ); // 有外部同期需求
- pSW->uTQHz.bFlag.bHz = pSW->uTQHz.bFlag.bQD;
- if(pSW->uTQHz.bFlag.bHz && printf_Pro_TQHz)
- {
- if(!FUN_ALL_EN(sw))
- rt_printf("保护硬件压板条件不满足\r\n");
- if(!bQD)
- {
- if(!bDa)
- rt_printf("角差不满足要求\r\n");
- else if(!bDu)
- rt_printf("压差不满足要求\r\n");
- else if(!bDf)
- rt_printf("频差 不满足要求\r\n");
- else
- rt_printf("PT异常! 不满足要求\r\n");
- }
-
- //rt_printf("QD=%d %d\r\n",FUN_ALL_EN(sw),pSW->tTQQDTime.boolTrip);
- //rt_printf("pt1=%d pt2=%d ang2=%d pt断线=%d:%d\r\n",g_ui[PUB_AC_UAB1].p/65536,g_ui[pRunSet->pt2vol].p/65536,ang2/65536,tPT.uPT1DX.bFlag.bPTYC,tPT.uPT2DX.bFlag.bPTYC);
- //rt_printf("pSetA=%d deltaA=%d bQD=%d bMxYY=%d bMxWY=%d bUxYY=%d bUxWY=%d \r\n",pSet->dA_tq_delatA/65536,_AbsL(deltaA)/65536,bQD,bMxYY,bMxWY,bUxYY,bUxWY);
- //rt_printf("角差=%d, 压差=%d bDf=%d pSW->uTQHz.bFlag.bQD=%d\r\n\r\n",bDa,bDu,bDf,pSW->uTQHz.bFlag.bQD);
- printf_Pro_TQHz=0;
- }
- if(!pSW->tTQQDTime.boolTrip)
- printf_Pro_TQHz=1;
- #endif
- if(pSW->uTQHz.bFlag.bHz)
- {
- if (!pSW->uTQHz.bFlag.bEvent)
- {
- if(!pR->uRmtSW.bHandHz)
- {
- pR->uRmtSW.bHandHz_fa = true;
- }
- sw_do(sw,SW_DO_YKH,SW_DO_TYPE_ON); //合环合闸开出遥控出口
- sw_do(sw,SW_DO_HZ,SW_DO_TYPE_ON); //合环合闸开出遥控出口
- soe_record_ev(EV_TQHZ+sw*EV_SW_NUM, 1, 0,0,0 );
- pSW->uTQHz.bFlag.bEvent = true;
- }
- }
- else
- {
- if (pSW->uTQHz.bFlag.bEvent)
- {
- soe_record_ev(EV_TQHZ+sw*EV_SW_NUM, 0, 0,0,0 );
- pSW->uTQHz.bFlag.bEvent = false;
- ResetTR(&pSW->tTQTime);
- }
- }
- }
- }
- //手动操作同期合闸检测
- void Pro_TQBS(int sw,DWORD dStep)
- {
- bool bQD,bTQ=false;
- TRELAY_T *pR=&g_tRelay[sw];
- //TTQHZ_T *pSW = &pR->tTQHz;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
- // 合环合闸
- long deltaA;
- bool bMxYY,bMxWY,bUxYY,bUxWY,bDa,bDu,bDf;
- qs16 ang1=0,ang2=0;
- if(pRunSet->pt2vol==PUB_AC_UAB1)ang2=0;
- else if(pRunSet->pt2vol==PUB_AC_UBC1)ang2=-120*65536;
- else if(pRunSet->pt2vol==PUB_AC_UCA1)ang2=120*65536;
- else if(pRunSet->pt2vol==PUB_AC_UAB2)ang2=0;
- else if(pRunSet->pt2vol==PUB_AC_UBC2)ang2=-120*65536;
- else if(pRunSet->pt2vol==PUB_AC_UCA2)ang2=120*65536;
-
- bMxYY = OverRelay(g_sw_pub.m2_max[2], pSet->dU_chz_yy,pSet->dU_chz_yy,false);
- bMxWY = LowRelay(g_sw_pub.m2_max[2], pSet->dU_chz_wy,pSet->dU_chz_wy,false);
- bUxYY = OverRelay(g_ui[pRunSet->pt2vol].m2[0], pSet->dU_chz_yy,pSet->dU_chz_yy,false);
- bUxWY = LowRelay(g_ui[pRunSet->pt2vol].m2[0], pSet->dU_chz_wy,pSet->dU_chz_wy,false);
- deltaA = _AbsL((g_ui[PUB_AC_UAB1].p -ang1)- (g_ui[pRunSet->pt2vol].p-ang2));
- bDa=(((_AbsL(deltaA) < pSet->dA_tq_delatA)?true:false)||(pSet->dA_tq_delatA==0)); //角差满足要求,角差为零,不判角差
- bDu=((_AbsL(g_ui[PUB_AC_UAB1].fz -g_ui[pRunSet->pt2vol].fz)<pSet->dU_tq_deltaU)?true:false)||(pSet->dU_tq_deltaU==0); //压差满足要求
- bDf= ((_AbsL(g_sw_pub.ac_in[PUB_AC_IN_F1] - g_sw_pub.ac_in[PUB_AC_IN_F2])<pSet->dF_tq_deltaF)?true:false)||(pSet->dF_tq_deltaF==0);//频差
- bQD=((bDa&&bDu&&bDf&&bMxYY&&bUxYY&&(!tPT.uPT1DX.bFlag.bPTYC)&&(!tPT.uPT2DX.bFlag.bPTYC))
- ||(bMxWY&&(!tPT.uPT1DX.bFlag.bPTYC))
- ||(bUxWY&&(!tPT.uPT2DX.bFlag.bPTYC))); //压差,角差,频差满足要求,或有一侧无压
- bTQ = (!TYTQ_ALL_EN(sw)) && !bQD; // 合环合闸投入
-
- if(bTQ)
- sw_do(sw,SW_DO_TQBS,SW_DO_TYPE_ON);//不同期
- else
- sw_do(sw,SW_DO_TQBS,SW_DO_TYPE_OFF);//同期
- }
- enum
- {
- HC_UAB1=0,
- HC_UBC1,
- HC_UCA1,
- HC_UAB2,
- HC_UBC2,
- HC_UCA2,
- HC_FREQ,
- HC_VT,
- HC_FT,
- HC_NUMS,
- };
- DWORD dhcbsBuf[32][HC_NUMS]; // 滑差闭锁缓冲区,含频率和两组电压
- WORD whcCnt; //滑差缓冲区指针
- DWORD dTcounterrem;
- void hcbs_init(void)
- {
- int i;
- whcCnt=0; //滑差电压缓冲区指针
- for(i=0;i<32;i++)
- {
- int j;
- DWORD v=(DWORD)(100.0*pRunSet->dKU[PUB_AC_UAB1]/256);
- for(j=HC_UAB1;j<=HC_UCA2;j++)
- {
- dhcbsBuf[i][j]=v;
- }
- dhcbsBuf[i][HC_FREQ] =50<<16; //频率缓冲区: 频率,频率刷新时刻
- dhcbsBuf[i][HC_VT] =0;
- dhcbsBuf[i][HC_FT] =0;
- }
- }
- void hcbs_dataset(void)
- {
- whcCnt = ( whcCnt + 1 ) & 0x1f;
- dhcbsBuf[whcCnt][HC_UAB1] = g_ui[PUB_AC_UAB1].fz;
- dhcbsBuf[whcCnt][HC_UBC1] = g_ui[PUB_AC_UBC1].fz;
- dhcbsBuf[whcCnt][HC_UCA1] = g_ui[PUB_AC_UCA1].fz;
- dhcbsBuf[whcCnt][HC_UAB2] = g_ui[PUB_AC_UAB2].fz;
- dhcbsBuf[whcCnt][HC_UBC2] = g_ui[PUB_AC_UBC2].fz;
- dhcbsBuf[whcCnt][HC_UCA2] = g_ui[PUB_AC_UCA2].fz;
- dhcbsBuf[whcCnt][HC_FREQ] = freq_get(0)*65536;
- dhcbsBuf[whcCnt][HC_VT] =dTcounterrem;
- dhcbsBuf[whcCnt][HC_FT] =dTcounterrem;
- }
- bool hcbs_vol(int sw,int type) //电压滑差判断
- {
- long lTsubV;
- long lDeltaVol;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
- lTsubV = dhcbsBuf[ whcCnt ][ HC_VT ] //获取当前时刻
- - dhcbsBuf[ ( whcCnt - 15 ) & 0x1f ][ HC_VT ]; //获取15次软件中断前采样时刻
- if(lTsubV <= 0 )
- {
- return( false );
- }
- lDeltaVol = dhcbsBuf[ ( whcCnt - 15 ) & 0x1f ][type] //获取当前采样
- - dhcbsBuf[ whcCnt ][type]; //获取15*5MS前电压
- if( lDeltaVol < 0 )
- {
- return false;
- }
- #if 0 //调试信息
- if(type==HC_UAB1)
- {
- float fku=pRunSet->dKU[PUB_AC_UAB1]/256.0;
- if(g_ui[PUB_AC_UAB1].fz<60*fku&&g_ui[PUB_AC_UAB1].fz>50*fku&&(lTsubV > 20) )
- {
- rt_printf("\r\n hc=%.2f %d %d %d %d \r\n",lDeltaVol*1600/lTsubV/fku,lDeltaVol,lTsubV,dhcbsBuf[ ( whcCnt - 15 ) & 0x1f ][type],dhcbsBuf[ whcCnt ][type]);
- g_print_101=0;
- }
- }
- #endif
- if( ((lDeltaVol * 1600) > ((long)pSet->dhcbs_u * lTsubV)) && (lTsubV > 20) )
- {
- return true;
- }
-
- return false;
- }
- bool hcbs_freq(int sw) //频率滑差判断
- {
- long lTsub;
- long lDeltaF;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
-
- lTsub = dhcbsBuf[ ( whcCnt ) & 0x1f ][HC_FT] //获取当前频率采样时刻
- - dhcbsBuf[ ( whcCnt - 4 ) & 0x1f ][HC_FT]; //获取5周前频率采样时刻
- if( lTsub < 0 )
- {
- return( false );
- }
- lDeltaF = dhcbsBuf[ ( whcCnt - 4 ) & 0x1f ][HC_FREQ] //获取5周频率采样
- - dhcbsBuf[ whcCnt & 0x1f ][HC_FREQ]; //获取当前频率采样 ΔF = |f - fm|;
- if( lDeltaF < 0 )
- {
- return false;
- }
-
- //if( lDeltaF * 1600 > pRunSet->dDP_DELTAF * lTsub )
- if( lDeltaF * 400 > (( (long)(pSet->dhcbs_hz) * lTsub )/4 ))
- {
- return true ; //滑差闭锁确认
- }
- return false;
- }
- //获取电压通道信息
- static int get_vol_index(int ac_index)
- {
- if(PUB_AC_UAB1==ac_index || PUB_AC_UBC1==ac_index || PUB_AC_UCA1==ac_index)
- if(g_equ_config_ac[0].type-1 == PUB_AC_UAB2)
- return (PUB_AC_UAB2+(ac_index-PUB_AC_UAB1));
- if(PUB_AC_UA1==ac_index || PUB_AC_UB1==ac_index || PUB_AC_UC1==ac_index)
- if(g_equ_config_ac[0].type-1 == PUB_AC_UA2)
- return (PUB_AC_UA2+(ac_index-PUB_AC_UA1));
- return ac_index;
- }
- #define IS_VOL_CHANNEL_TYPE (g_equ_config_ac[0].type-1==PUB_AC_UAB2 || g_equ_config_ac[0].type-1==PUB_AC_UA2)
- void vol_DYJL(int sw,DWORD dStep) // 电压解列
- {
- bool bQDD1,bQDD2;
- TRELAY_T *pR=&g_tRelay[sw];
- TJL_T*pJL=&pR->tDYJL;
- TSWST *pSWST =&pR->tSWST;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
- bool bhcbs;
-
-
- /***********启动 **********************************/
- if(IS_VOL_CHANNEL_TYPE)
- bQDD1 = OverRelay(g_sw_pub.m2_max[3], pSet->dU_jl_ggdy,pSet->dU_jl_ggdy_fh,pJL->sta.bFlag.bQD_H);
- else
- bQDD1 = OverRelay(g_sw_pub.m2_max[2], pSet->dU_jl_ggdy,pSet->dU_jl_ggdy_fh,pJL->sta.bFlag.bQD_H);
- pJL->sta.bFlag.bQD_H = SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_dy//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&bQDD1;
- /***********过高压分闸*********************************/
- RunTR(&pJL->tHighTime, pJL->sta.bFlag.bQD_H, dStep);
- pJL->sta.bFlag.bTz_H = pJL->tHighTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_H)
- {
- if(soe_check(EV_GGDY_TZ+sw*EV_SW_NUM)==false) //
- {
- DWORD Uab,Ubc,Uca;
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UAB1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UAB1)]);
- Ubc = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UBC1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UBC1)]);
- Uca = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UCA1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UCA1)]);
- soe_record_ev( EV_GGDY_TZ+sw*EV_SW_NUM, 1, Uab,Ubc,Uca );
- pJL->bLed= true;
- }
- }
- else
- {
- if(soe_check(EV_GGDY_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_GGDY_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
- if(IS_VOL_CHANNEL_TYPE)
- bQDD2 = OverRelay(g_sw_pub.m2_max[3], pSet->dU_jl_gdy,pSet->dU_jl_gdy_fh,pJL->sta.bFlag.bQD_G);
- else
- bQDD2 = OverRelay(g_sw_pub.m2_max[2], pSet->dU_jl_gdy,pSet->dU_jl_gdy_fh,pJL->sta.bFlag.bQD_G);
- pJL->sta.bFlag.bQD_G = SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_dy//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&(!bQDD1&&bQDD2);
- /***********过压分闸*********************************/
- RunTR(&pJL->tGdyTime, pJL->sta.bFlag.bQD_G, dStep);
- pJL->sta.bFlag.bTz_G = pJL->tGdyTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_G)
- {
- if(soe_check(EV_GDY_TZ+sw*EV_SW_NUM)==false) //
- {
- DWORD Uab,Ubc,Uca;
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UAB1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UAB1)]);
- Ubc = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UBC1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UBC1)]);
- Uca = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UCA1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UCA1)]);
- soe_record_ev( EV_GDY_TZ+sw*EV_SW_NUM, 1, Uab,Ubc,Uca );
- pJL->bLed= true;
- }
- }
- else
- {
- if(soe_check(EV_GDY_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_GDY_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
- if(IS_VOL_CHANNEL_TYPE)
- {
- bQDD1 = LowRelay(g_sw_pub.m2_max[3], pSet->dU_jl_gddy,pSet->dU_jl_gddy_fh,pJL->sta.bFlag.bQD_L);
- }
- else
- {
- bQDD1 = LowRelay(g_sw_pub.m2_max[2], pSet->dU_jl_gddy,pSet->dU_jl_gddy_fh,pJL->sta.bFlag.bQD_L);
- }
- if(IS_VOL_CHANNEL_TYPE)
- {
- bhcbs=pSet ->bTT_hcbs_dy
- &&(hcbs_vol(sw,HC_UAB2)||hcbs_vol(sw,HC_UBC2)||hcbs_vol(sw,HC_UCA2));
- }
- else
- {
- bhcbs=pSet ->bTT_hcbs_dy
- &&(hcbs_vol(sw,HC_UAB1)||hcbs_vol(sw,HC_UBC1)||hcbs_vol(sw,HC_UCA1));
- }
- pJL->sta.bFlag.bQD_L = SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_dy//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&pR->tSWST.uSWST.bFlag.bCYY //曾有压
- &&(!tPT.uPT1DX.bFlag.bPTYC) //无 PT异常
- &&bQDD1;
- RunTR(&pJL->thcbs1_0ms_100ms, pJL->sta.bFlag.bQD_L, dStep);
- pJL->sta.bFlag.bhcbs1=(pJL->thcbs1_0ms_100ms.boolTrip&&pJL->sta.bFlag.bhcbs1)
- ||bhcbs;
- /***********过低压分闸*********************************/
- RunTR(&pJL->tLowTime, pJL->sta.bFlag.bQD_L&&(!pJL->sta.bFlag.bhcbs1), dStep);
- pJL->sta.bFlag.bTz_L = pJL->tLowTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_L)
- {
- if(soe_check(EV_GDDY_TZ+sw*EV_SW_NUM)==false) //
- {
- DWORD Uab,Ubc,Uca;
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UAB1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UAB1)]);
- Ubc = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UBC1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UBC1)]);
- Uca = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UCA1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UCA1)]);
- soe_record_ev( EV_GDDY_TZ+sw*EV_SW_NUM, 1, Uab,Ubc,Uca );
- pJL->bLed= true;
- pR->tSWST.uSWST.bFlag.bCYY=false;
- }
- }
- else
- {
- if(soe_check(EV_GDDY_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_GDDY_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
-
- if(IS_VOL_CHANNEL_TYPE)
- bQDD2 = LowRelay(g_sw_pub.m2_max[3], pSet->dU_jl_ddy,pSet->dU_jl_ddy_fh,pJL->sta.bFlag.bQD_D);
- else
- bQDD2 = LowRelay(g_sw_pub.m2_max[2], pSet->dU_jl_ddy,pSet->dU_jl_ddy_fh,pJL->sta.bFlag.bQD_D);
-
- pJL->sta.bFlag.bQD_D = SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_dy//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&pR->tSWST.uSWST.bFlag.bCYY //曾有压
- &&(!tPT.uPT1DX.bFlag.bPTYC) //无 PT异常
- &&(!bQDD1&&bQDD2);
- RunTR(&pJL->thcbs2_0ms_100ms, pJL->sta.bFlag.bQD_D, dStep);
- pJL->sta.bFlag.bhcbs2=(pJL->thcbs2_0ms_100ms.boolTrip&&pJL->sta.bFlag.bhcbs2)
- ||bhcbs;
- /***********低压分闸*********************************/
- RunTR(&pJL->tDdyTime, pJL->sta.bFlag.bQD_D&&(!pJL->sta.bFlag.bhcbs2), dStep);
- pJL->sta.bFlag.bTz_D = pJL->tDdyTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_D)
- {
- if(soe_check(EV_DDY_TZ+sw*EV_SW_NUM)==false) //
- {
- DWORD Uab,Ubc,Uca;
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UAB1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UAB1)]);
- Ubc = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UBC1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UBC1)]);
- Uca = _Mul_Div_U(sqrt_32fix(g_ui[get_vol_index(PUB_AC_UCA1)].m2[0]), 256, pRunSet->dKU[get_vol_index(PUB_AC_UCA1)]);
- soe_record_ev( EV_DDY_TZ+sw*EV_SW_NUM, 1, Uab,Ubc,Uca );
- pJL->bLed= true;
- pR->tSWST.uSWST.bFlag.bCYY=false;
- }
- }
- else
- {
- if(soe_check(EV_DDY_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_DDY_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
- pJL->sta.bFlag.bTz =pJL->sta.bFlag.bTz_H||pJL->sta.bFlag.bTz_L||pJL->sta.bFlag.bTz_G||pJL->sta.bFlag.bTz_D;
- pJL->sta.bFlag.bQD=pJL->sta.bFlag.bQD_H||pJL->sta.bFlag.bQD_L||pJL->sta.bFlag.bQD_G||pJL->sta.bFlag.bQD_D;
-
- }
- void vol_PLJL(int sw,DWORD dStep) // 频率解列
- {
- bool bQDD1,bQDD2;
- TRELAY_T *pR=&g_tRelay[sw];
- TJL_T*pJL=&pR->tPLJL;
- TSWST *pSWST =&pR->tSWST;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
- DWORD freq=freq_get(0)*65536;
- bool bhcbs;
- bhcbs=pSet ->bTT_hcbs_hz&&hcbs_freq(sw);
-
-
- /***********频率过低启动 **********************************/
- bQDD1 = LowRelay(freq, pSet->dU_jl_lowhz,pSet->dU_jl_lowhz_fh,pJL->sta.bFlag.bQD_L);
- pJL->sta.bFlag.bQD_L = SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_hz//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&(freq>44*65536) //频率大于44hz,不然认为无频率
- &&(bQDD1);
- RunTR(&pJL->thcbs1_0ms_100ms, pJL->sta.bFlag.bQD_L, dStep);
- pJL->sta.bFlag.bhcbs1=(pJL->thcbs1_0ms_100ms.boolTrip&&pJL->sta.bFlag.bhcbs1)
- ||bhcbs;
- /***********过低频解列*********************************/
- //RunTR(&pJL->tLowTime, pJL->sta.bFlag.bQD_L, dStep);
- RunTR2(&pJL->tLowTime, pJL->sta.bFlag.bQD_L&&(!pJL->sta.bFlag.bhcbs1), dStep);
- pJL->sta.bFlag.bTz_L = pJL->tLowTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_L)
- {
- if(soe_check(EV_LOWPL_TZ+sw*EV_SW_NUM)==false) //
- {
- soe_record_ev( EV_LOWPL_TZ+sw*EV_SW_NUM, 1, freq,0,0 );
- pJL->bLed= true;
- }
- }
- else
- {
- if(soe_check(EV_LOWPL_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_LOWPL_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
- /***********低频解列*********************************/
- bQDD2 = LowRelay(freq, pSet->dU_jl_dhz,pSet->dU_jl_dhz_fh,pJL->sta.bFlag.bQD_D);
- pJL->sta.bFlag.bQD_D= SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_hz//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&(!bQDD1&&bQDD2);
- RunTR(&pJL->thcbs2_0ms_100ms, pJL->sta.bFlag.bQD_D, dStep);
- pJL->sta.bFlag.bhcbs2=(pJL->thcbs2_0ms_100ms.boolTrip&&pJL->sta.bFlag.bhcbs2)
- ||bhcbs;
- RunTR(&pJL->tDhzTime, pJL->sta.bFlag.bQD_D&&(!pJL->sta.bFlag.bhcbs2), dStep);
- pJL->sta.bFlag.bTz_D = pJL->tDhzTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_D)
- {
- if(soe_check(EV_DPL_TZ+sw*EV_SW_NUM)==false) //
- {
- soe_record_ev( EV_DPL_TZ+sw*EV_SW_NUM, 1, freq,0,0 );
- pJL->bLed= true;
- }
- }
- else
- {
- if(soe_check(EV_DPL_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_DPL_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
- /***********高频解列*********************************/
- bQDD1 = OverRelay(freq, pSet->dU_jl_ghz,pSet->dU_jl_ghz_fh,pJL->sta.bFlag.bQD_H);
- pJL->sta.bFlag.bQD_H= SOFE_AUTO_EN(sw)
- && pSet->bTT_jl_hz//投退字
- && pRunSet->tSwSet[sw].btt_gnyb_zdjl
- &&pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- &&bQDD1;
- RunTR(&pJL->tHighTime, pJL->sta.bFlag.bQD_H, dStep);
- pJL->sta.bFlag.bTz_H = pJL->tHighTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pJL->sta.bFlag.bTz_H)
- {
- if(soe_check(EV_GPL_TZ+sw*EV_SW_NUM)==false) //
- {
- soe_record_ev( EV_GPL_TZ+sw*EV_SW_NUM, 1, freq,0,0);
- pJL->bLed= true;
- }
- }
- else
- {
- if(soe_check(EV_GPL_TZ+sw*EV_SW_NUM)==true) //
- {
- soe_record_ev( EV_GPL_TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- }
- }
- pJL->sta.bFlag.bTz=pJL->sta.bFlag.bTz_H||pJL->sta.bFlag.bTz_L||pJL->sta.bFlag.bTz_D;
- pJL->sta.bFlag.bQD=pJL->sta.bFlag.bQD_H||pJL->sta.bFlag.bQD_L||pJL->sta.bFlag.bQD_D;
- }
- TPTCHECK_T tPT;
- #define ANG_PHASEYC (15*65536)
- void PT_Check(DWORD dStep)
- {
- bool bsxyl=false;
- /***********PT 异常判断**********************************/
- {
- int sw;
- DWORD Umax,Umin;
- bool bCheck=false;
- bool bpt1check=false;
- bool bpt2check=false;
- for(sw=0;sw<SWITCH_NUM_MAX;sw++)
- {
- bool bptdx;
- bsxyl|=(g_sw[sw].m2_max>pRunSet->dIWL_SQR[sw]); //三相无流
- bptdx=((BH_ALL_EN(sw)&&pRunSet->tSwSet[sw].bTT_bh_ptdx)
- ||(FA_ALL_EN(sw)&&pRunSet->tSwSet[sw].bTT_fa_ptdx));
- bpt1check|=bptdx;
- bpt2check|=(bptdx&&(pRunSet->a_side_pt_type));// pt2 vv接线
- bpt1check&=pRunSet->tSwSet[sw].bTT_PT1_ll_check;
- bpt2check&=pRunSet->tSwSet[sw].bTT_PT2_ll_check;
- }
- /*********PT1断线判断***************************/
- //判断电压配置,只有在配置了Ua Ub Uc 或Uab Ubc Uca后,才进行断线检查
- bCheck=(((short)g_sw_pub.ac_cfg_index[PUB_AC_UA1] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UB1] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UC1] != INDEX_INVALLID))||
- (((short)g_sw_pub.ac_cfg_index[PUB_AC_UAB1] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UBC1] != INDEX_INVALLID));
- Umax=g_sw_pub.m2_max[2];
- Umin=g_sw_pub.m2_min[2];
- #ifdef PRO_PT_LL_NC
- tPT.uPT1DX.bFlag.bQD=(((Umax<pRunSet->dVOL16V_SQR)&&((((FA_ALL_EN(0) && !g_tRelay[0].run_stu.fa_ls) || BH_ALL_EN(0)) && bsxyl )//三相断线:无压有流(非Fa联络)
- ||(FA_ALL_EN(0) && g_tRelay[0].run_stu.fa_ls))) //三相断线:三相断线(Fa联络)
- ||((Umax>pRunSet->dVOL50V_SQR)&&(Umin<pRunSet->dVOL16V_SQR))// 两相断线最小值小于16V,最大值大于50V
- ||((Umax>pRunSet->dVOL90V_SQR)&&(Umin<pRunSet->dVOL70V_SQR)))// 最小值小于71V,最大值大于90V
- &&bCheck
- &&bpt1check;
- #else
- tPT.uPT1DX.bFlag.bQD=(((Umax<pRunSet->dVOL16V_SQR)&&(bsxyl)) //三相断线,无压有流
- ||((Umax>pRunSet->dVOL50V_SQR)&&(Umin<pRunSet->dVOL16V_SQR))// 两相断线最小值小于16V,最大值大于50V
- ||((Umax>pRunSet->dVOL90V_SQR)&&(Umin<pRunSet->dVOL70V_SQR)))// 最小值小于71V,最大值大于90V
- &&bCheck
- &&bpt1check;
- #endif
- RunTR(&tPT.tTPT1DXTime, tPT.uPT1DX.bFlag.bQD, dStep);
- if(tPT.tTPT1DXTime.boolTrip)
- {
- if(!tPT.uPT1DX.bFlag.bEvent)
- {
- DWORD Uab,Ubc,Uca;
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UAB1].m2[0]), 256, g_ui[PUB_AC_UAB1].m2_factor_k);
- Ubc = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UBC1].m2[0]), 256, g_ui[PUB_AC_UBC1].m2_factor_k);
- Uca = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UCA1].m2[0]), 256, g_ui[PUB_AC_UCA1 ].m2_factor_k);
- soe_record_ev(EV_PT1ERR,1, Uab,Ubc,Uca);
- tPT.uPT1DX.bFlag.bEvent=true;
- tPT.uPT1DX.bFlag.bPTYC=true;
- }
- }
- else
- {
- {
- if(tPT.uPT1DX.bFlag.bEvent)
- {
- soe_record_ev(EV_PT1ERR,0, 0,0,0 );
- tPT.uPT1DX.bFlag.bEvent=false;
- tPT.uPT1DX.bFlag.bPTYC=false;
-
- }
- }
- }
- //PT1相序检查
- {
- bool bok;
- u32 da,db,dc;
- if(((short)g_sw_pub.ac_cfg_index[PUB_AC_UA1] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UB1] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UC1] != INDEX_INVALLID)) // 相电压接线
- {
- da = _AbsL(g_ui[PUB_AC_UA1].p - g_ui[PUB_AC_UB1].p-120*65536);
- db = _AbsL(g_ui[PUB_AC_UB1].p - g_ui[PUB_AC_UC1].p+240*65536);
- dc = _AbsL(g_ui[PUB_AC_UA1].p - g_ui[PUB_AC_UC1].p+120*65536);
- Umin=g_sw_pub.m2_min[0];
- }
- else //线电压接线
- {
- da = _AbsL(g_ui[PUB_AC_UAB1].p - g_ui[PUB_AC_UBC1].p-120*65536);
- db = _AbsL(g_ui[PUB_AC_UBC1].p - g_ui[PUB_AC_UCA1].p+240*65536);
- dc = _AbsL(g_ui[PUB_AC_UAB1].p - g_ui[PUB_AC_UCA1].p+120*65536);
- Umin=g_sw_pub.m2_min[2];
- }
- bok=pRunSet->bTT_CheckPhase
- &&(Umin>pRunSet->dVOL16V_SQR) //最小电压大于16V
- &&bCheck
- &&((da>ANG_PHASEYC)||(db>ANG_PHASEYC)||(dc>ANG_PHASEYC)); //三相电压角度差15度
- RunTR(&tPT.tTPT1XXYC, bok, dStep);
- if(tPT.tTPT1XXYC.boolTrip)
- {
- if(soe_check(EV_PT1XXYC)==false) //
- {
- soe_record_ev(EV_PT1XXYC, 1, 0,0,0 );
- }
- }
- else
- {
- if(soe_check(EV_PT1XXYC)==true) //
- {
- soe_record_ev(EV_PT1XXYC, 0, 0,0,0 );
- }
- }
- }
- /*********PT2断线判断***************************/
- Umax=g_sw_pub.m2_max[3];
- Umin=g_sw_pub.m2_min[3];
- //判断电压配置,只有在配置了Ua Ub Uc 或Uab Ubc Uca后,才进行断线检查
- bCheck=(((short)g_sw_pub.ac_cfg_index[PUB_AC_UA2] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UB2] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UC2] != INDEX_INVALLID))
- #ifdef FUNC_PT_ERR_SINGLE
- ||(((short)g_sw_pub.ac_cfg_index[PUB_AC_UAB2] != INDEX_INVALLID)
- || ((short)g_sw_pub.ac_cfg_index[PUB_AC_UBC2] != INDEX_INVALLID)
- || ((short)g_sw_pub.ac_cfg_index[PUB_AC_UCA2] != INDEX_INVALLID))
- #else
- ||(((short)g_sw_pub.ac_cfg_index[PUB_AC_UAB2] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UBC2] != INDEX_INVALLID))
- #endif
- ;
- #ifdef PRO_PT_LL_NC
- tPT.uPT2DX.bFlag.bQD=(((Umax<pRunSet->dVOL16V_SQR)&&((((FA_ALL_EN(0) && !g_tRelay[0].run_stu.fa_ls) || BH_ALL_EN(0)) && bsxyl )//三相断线:无压有流(非Fa联络)
- ||(FA_ALL_EN(0) && g_tRelay[0].run_stu.fa_ls))) //三相断线:三相断线(Fa联络)
- ||((Umax>pRunSet->dVOL50V_SQR)&&(Umin<pRunSet->dVOL16V_SQR))// 两相断线最小值小于16V,最大值大于50V
- ||((Umax>pRunSet->dVOL90V_SQR)&&(Umin<pRunSet->dVOL70V_SQR)))// 最小值小于71V,最大值大于90V
- &&bCheck
- &&bpt2check;
- #else
- tPT.uPT2DX.bFlag.bQD=(((Umax<pRunSet->dVOL16V_SQR)&&(bsxyl)) //三相断线,无压有流
- |((Umax>pRunSet->dVOL50V_SQR)&&(Umin<pRunSet->dVOL16V_SQR))// 两相断线最小值小于16V,最大值大于50V
- |((Umax>pRunSet->dVOL90V_SQR)&&(Umin<pRunSet->dVOL70V_SQR)))// 最小值小于71V,最大值大于90V
- &&bCheck
- &&bpt2check;
- #endif
- RunTR(&tPT.tTPT2DXTime, tPT.uPT2DX.bFlag.bQD, dStep);
- if(tPT.tTPT2DXTime.boolTrip)
- {
- if(!tPT.uPT2DX.bFlag.bEvent)
- {
- DWORD Uab,Ubc,Uca;
- Uab = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UAB2].m2[0]), 256, g_ui[PUB_AC_UAB2].m2_factor_k);
- Ubc = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UBC2].m2[0]), 256, g_ui[PUB_AC_UBC2].m2_factor_k);
- Uca = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_UCA2].m2[0]), 256, g_ui[PUB_AC_UCA2].m2_factor_k);
- soe_record_ev(EV_PT2ERR,1, Uab,Ubc,Uca );
- tPT.uPT2DX.bFlag.bEvent=true;
- tPT.uPT2DX.bFlag.bPTYC=true;
- }
- }
- else
- {
- {
- if(tPT.uPT2DX.bFlag.bEvent)
- {
- soe_record_ev(EV_PT2ERR,0, 0,0,0 );
- tPT.uPT2DX.bFlag.bEvent=false;
- tPT.uPT2DX.bFlag.bPTYC=false;
- }
- }
- }
- //PT2相序检查
- {
- bool bok;
- u32 da,db,dc;
- if(((short)g_sw_pub.ac_cfg_index[PUB_AC_UA2] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UB2] != INDEX_INVALLID)
- &&((short)g_sw_pub.ac_cfg_index[PUB_AC_UC2] != INDEX_INVALLID)) // 相电压接线
- {
- da = _AbsL(g_ui[PUB_AC_UA2].p - g_ui[PUB_AC_UB2].p-120*65536);
- db = _AbsL(g_ui[PUB_AC_UB2].p - g_ui[PUB_AC_UC2].p+240*65536);
- dc = _AbsL(g_ui[PUB_AC_UA2].p - g_ui[PUB_AC_UC2].p+120*65536);
- Umin=g_sw_pub.m2_min[1];
- }
- else //线电压接线
- {
- da = _AbsL(g_ui[PUB_AC_UAB2].p - g_ui[PUB_AC_UBC2].p-120*65536);
- db = _AbsL(g_ui[PUB_AC_UBC2].p - g_ui[PUB_AC_UCA2].p+240*65536);
- dc = _AbsL(g_ui[PUB_AC_UAB2].p - g_ui[PUB_AC_UCA2].p+120*65536);
- Umin=g_sw_pub.m2_min[3];
- }
- bok=pRunSet->bTT_CheckPhase
- &&(Umin>pRunSet->dVOL16V_SQR) //最小电压大于16V
- &&bCheck
- &&((da>ANG_PHASEYC)||(db>ANG_PHASEYC)||(dc>ANG_PHASEYC)); //三相电压角度差15度
- RunTR(&tPT.tTPT2XXYC, bok, dStep);
- if(tPT.tTPT2XXYC.boolTrip)
- {
- if(soe_check(EV_PT2XXYC)==false) //
- {
- soe_record_ev(EV_PT2XXYC, 1, 0,0,0 );
- }
- }
- else
- {
- if(soe_check(EV_PT2XXYC)==true) //
- {
- soe_record_ev(EV_PT2XXYC, 0, 0,0,0 );
- }
- }
- }
- }
- }
- void FDL_Check(DWORD dStep)
- {
- int i;
- struct equ_config_di *ecd;
- int sw = 0;
- for (i = 0; i < 6; i++) // 非电量跳闸
- {
- bool byx = false;
- TFDL_T *pFDL = &g_tRelay[sw].tFdl[i];
- if ((short)g_sw_pub.di_cfg_index[PUB_DI_FDL1 + i] != INDEX_INVALLID)
- {
- ecd = &g_equ_config_di[g_sw_pub.di_cfg_index[PUB_DI_FDL1 + i]];
- byx = dido_di_is_on(ecd->slot, ecd->index);
- }
- pFDL->sta.bFlag.bQD = byx && (pRunSet->bTT_FDLGj[i] || pRunSet->bTT_FDLTz[i]);
- RunTR(&pFDL->tFdlTime, pFDL->sta.bFlag.bQD, dStep);
- pFDL->sta.bFlag.bTz = pFDL->tFdlTime.boolTrip && pRunSet->bTT_FDLTz[i];
- pFDL->sta.bFlag.bGj = pFDL->tFdlTime.boolTrip && pRunSet->bTT_FDLGj[i];
- if (pFDL->sta.bFlag.bTz)
- {
- if (soe_check(EV_FDL1_TZ + i) == false)
- {
- soe_record_ev(EV_FDL1_TZ + i, 1, 0, 0, 0);
- }
- }
- else
- {
- if (soe_check(EV_FDL1_TZ + i) == true)
- {
- soe_record_ev(EV_FDL1_TZ + i, 0, 0, 0, 0);
- }
- }
- if (pFDL->sta.bFlag.bGj)
- {
- if (soe_check(EV_FDL1_GJ + i) == false)
- {
- soe_record_ev(EV_FDL1_GJ + i, 1, 0, 0, 0);
- }
- }
- else
- {
- if (soe_check(EV_FDL1_GJ + i) == true)
- {
- soe_record_ev(EV_FDL1_GJ + i, 0, 0, 0, 0);
- }
- }
- }
- }
- void Pro_3U0(int sw,DWORD dStep)
- {
- bool bQDD;
- TRELAY_T *pR=&g_tRelay[sw];
- TU0_T *pSW=&pR->tOVER_U0TZ;
- TSWST *pSWST =&pR->tSWST;
- TSETSW *pSet = &pRunSet->tSwSet[sw];
- DWORD U01 = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_U01].m2[0]), 256, g_ui[PUB_AC_U01].m2_factor_k);
- DWORD U02 = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_U02].m2[0]), 256, g_ui[PUB_AC_U02].m2_factor_k);
-
- /***********启动 **********************************/
- bQDD = OverRelay(g_ui[PUB_AC_U01].m2[0] >g_ui[PUB_AC_U02].m2[0] ?g_ui[PUB_AC_U01].m2[0]:g_ui[PUB_AC_U02].m2[0],pSet->dBHOverU0,pSet->dBHOverU0_fh,pSW->uZOV.bFlag.bQD);
- pSW->uZOV.bFlag.bQD = BH_ALL_EN(sw)
- && (pSet->bTT_3U0Tz||pSet->bTT_3U0Gj)//投退字
- //&& pSWST->uSWST.bFlag.bHZWZ //在合闸位置
- && bQDD
- && (!tPT.uPT1DX.bFlag.bPTYC);
- #ifdef EV_GL_STATR
- lx_start_soe_set( pSW->uZOV.bFlag.bQD,sw,EV_U0_STATR);
- #endif
-
- /***********零序过压分闸*********************************/
- RunTR(&pSW->tZOVTime, pSW->uZOV.bFlag.bQD, dStep);
- pSW->uZOV.bFlag.bTz = pSW->tZOVTime.boolTrip && pSet->bTT_3U0Tz && pSWST->uSWST.bFlag.bHZWZ;
- pSW->uZOV.bFlag.bGJ = pSW->tZOVTime.boolTrip&&pSet->bTT_3U0Gj;
-
-
- /************事件记录及出口****************************/
- if(pSW->uZOV.bFlag.bTz)
- {
- if(!pSW->uZOV.bFlag.bEvent)
- {
- soe_record_ev( EV_U0TZ+sw*EV_SW_NUM, 1, U01>U02?U01:U02,0,0 );
-
- rcd_start(sw,RECORD_TYPE_LXDY, RECORD_LEN_TZQD);
- pSW->uZOV.bFlag.bEvent = true;
- pSW->bU0Led = true;
- }
- }
- else
- {
- if(pSW->uZOV.bFlag.bEvent)
- {
- soe_record_ev(EV_U0TZ+sw*EV_SW_NUM, 0, 0,0,0 );
- pSW->uZOV.bFlag.bEvent = false;
- pSW->uZOV.bFlag.bU0Ov = false;
- }
- }
- /************告警记录****************************/
- if(pSW->uZOV.bFlag.bGJ)
- {
- if(!pSW->uZOV.bFlag.bGJEvent)
- {
- soe_record_ev( EV_U0GJ+sw*EV_SW_NUM, 1, U01>U02?U01:U02,0,0 );
-
- rcd_start(sw,RECORD_TYPE_LXDY, RECORD_LEN_TZQD);
- pSW->uZOV.bFlag.bGJEvent = true;
- if(pSW->bU0Led == false)
- {
- pSW->bU0GjLed = true;
- }
- }
- }
- else
- {
- if(pSW->uZOV.bFlag.bGJEvent)
- {
- soe_record_ev(EV_U0GJ+sw*EV_SW_NUM, 0, 0,0,0 );
- pSW->uZOV.bFlag.bGJEvent = false;
- pSW->uZOV.bFlag.bU0Ov = false;
- }
- }
- }
- #ifdef CUSTOMIZE_BZT //备自投
- void vol_lost_tz(int sw, DWORD dStep) // 失压跳闸
- {
- bool bQDD1, bQDD2,pt1cyy,pt2cyy;
- VOL_SET *pSet = &pRunSet->tVolLostSet;
- TVOL_T *pvol = &g_tVolLost;
- DWORD pt1_value,pt2_value;
- TRELAY_T *pR = &g_tRelay[sw];
- UBZT *uBZT = &pR->tBzt.uBZT;
- pt1_value = g_sw_pub.m2_max[2];
- pt2_value = g_sw_pub.m2_max[3];
- pt1cyy = OverRelay(pt1_value, pSet->dUVol, pSet->dUVol,false);
- pt2cyy = OverRelay(pt2_value, pSet->dUVol, pSet->dUVol,false);
- //曾有压
- RunTR(&pvol->tCYYTime, pt1cyy || pt2cyy, dStep);
- pvol->sta.bFlag.bCYY = pvol->tCYYTime.boolTrip || pvol->sta.bFlag.bCYY;
- /***********启动 **********************************/
- bQDD1 = LowRelay(pt1_value, pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD);
- bQDD2 = LowRelay(pt2_value, pSet->dUVol, pSet->dUVol_fh, pvol->sta.bFlag.bQD);
- pvol->sta.bFlag.bQD = bQDD1 && bQDD2 && pvol->sta.bFlag.bCYY && pSet->bTT && pR->tSWST.uSWST.bFlag.b1DLHW;
- if(!pR->tSWST.uSWST.bFlag.b1DLHW)
- pvol->sta.bFlag.bCYY = 0;
- /***********失压分闸*********************************/
- RunTR(&pvol->tQDTime, pvol->sta.bFlag.bQD, dStep);
- pvol->sta.bFlag.bTz = pvol->tQDTime.boolTrip;
- //pvol->sta.bFlag.bGJ = pvol->tQDTime.boolTrip;
- /************事件记录及出口****************************/
- if(pvol->sta.bFlag.bTz)
- {
- pvol->sta.bFlag.bCYY = false;
- if(!pvol->sta.bFlag.bEvent)
- {
- DWORD Us1,Us2;
-
- Us1 = _Mul_Div_U(sqrt_32fix(pt1_value), 256, pRunSet->dKU[PUB_AC_UAB1]);
- Us2 = _Mul_Div_U(sqrt_32fix(pt2_value), 256, pRunSet->dKU[pRunSet->pt2vol]);
- if(soe_check(EV_SYTZ)==false)
- {
- soe_record_ev(EV_SYTZ, 1, Us1,Us2,0 );
- }
- rcd_start(sw,RECORD_TYPE_XLSY, RECORD_LEN_TZQD); //录波类型:跳闸类
- pvol->sta.bFlag.bEvent = true;
- //pSW->uLostVot.bFlag.bTz=true; //执行跳闸标志
- sw_do(sw,SW_DO_HZ,SW_DO_TYPE_OFF);
- sw_do(sw,SW_DO_BHH,SW_DO_TYPE_OFF);
- sw_do(sw,SW_DO_BHDZ,SW_DO_TYPE_ON);
- sw_do(sw,SW_DO_FZ,SW_DO_TYPE_ON);
- sw_do(sw,SW_DO_BHT,SW_DO_TYPE_ON);
-
- if(uBZT->bBZT.bZF && pRunSet->tSwSet[sw].bBZT_TT)
- {
- if((g_sw[sw].do_cfg_index[SW_DO_JX1_SY] < g_equ_config->do_num) && (g_sw[sw].do_cfg_index[SW_DO_JX2_SY] == 0xffff))
- {
- sw_do(sw,SW_DO_DL1_FZ,SW_DO_TYPE_ON);
- }
- else if((g_sw[sw].do_cfg_index[SW_DO_JX2_SY] < g_equ_config->do_num) && (g_sw[sw].do_cfg_index[SW_DO_JX1_SY] == 0xffff))
- {
- sw_do(sw,SW_DO_DL2_FZ,SW_DO_TYPE_ON);
- }
- uBZT->bBZT.bSYFZ = 1;
- }
- }
- }
- else
- {
- if(pvol->sta.bFlag.bEvent)
- {
- soe_record_ev(EV_SYTZ, 0, 0,0,0 );
- pvol->sta.bFlag.bEvent = false;
- }
- pvol->sta.bFlag.bTz=false;
- }
- }
- #endif
- #if (0)
- /**************************************************************************
- 函数名称:Pro_U0Tz
- 函数版本:1.00
- 作者: 赵海洋
- 创建日期:2022.2.25
- 函数功能说明:零压跳闸默认检测零压1
- 输入参数:
- 其他输入:
- 输出参数:
- 返回值:
- ***************************************************************************/
- void Pro_U0Tz(int sw,DWORD dStep)
- {
- bool bQDD;
- TRELAY_T *pR=&g_tRelay[sw];
- TVOL_T *pvol = &pR->tU0GZ;
- VOL_SET *pSet = &pRunSet->tSwSet[sw].tU0Set;
-
- bQDD = OverRelay(g_ui[PUB_AC_U01].m2[0], pSet->dUVol,pSet->dUVol_fh,pvol->sta.bFlag.bQD);
- pvol->sta.bFlag.bQD = ((pSet->bTT || pSet->bTz)&& bQDD);
- if(pvol->sta.bFlag.bQD)
- {
- if(!pvol->sta.bFlag.bQDWave)
- {
- rcd_start(sw,RECORD_TYPE_LXDY, RECORD_LEN_TZQD); //录波类型:跳闸类
- pvol->sta.bFlag.bQDWave = true;
- }
- }
- /***********动作*********************************/
- RunTR(&pvol->tQDTime, pvol->sta.bFlag.bQD, dStep);
- if (pSet->bTT)pvol->sta.bFlag.bGj = pvol->tQDTime.boolTrip;
- if (pSet->bTz)pvol->sta.bFlag.bTz = pvol->tQDTime.boolTrip;
-
- /************事件记录及出口****************************/
- if(pvol->sta.bFlag.bGj)
- {
- if(soe_check(EV_LYGJ+sw*EV_SW_NUM)==false)
- {
- DWORD U0;
- U0 = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_U01].m2[0]), 256, g_ui[PUB_AC_U01].m2_factor_k);
- soe_record_ev(EV_LYGJ+sw*EV_SW_NUM,1, U0,0,0);
- }
- }
- else
- {
- if(soe_check(EV_LYGJ+sw*EV_SW_NUM)==true)
- {
- pvol->sta.bFlag.bQDWave = false;
- soe_record_ev(EV_LYGJ+sw*EV_SW_NUM,0, 0,0,0 );
- }
- }
- if(pvol->sta.bFlag.bTz)
- {
- if(soe_check(EV_LYTZ+sw*EV_SW_NUM)==false)
- {
- DWORD U0;
- U0 = _Mul_Div_U(sqrt_32fix(g_ui[PUB_AC_U01].m2[0]), 256, g_ui[PUB_AC_U01].m2_factor_k);
- soe_record_ev(EV_LYTZ+sw*EV_SW_NUM,1, U0,0,0);
- }
- }
- else
- {
- if(soe_check(EV_LYTZ+sw*EV_SW_NUM)==true)
- {
- pvol->sta.bFlag.bQDWave = false;
- soe_record_ev(EV_LYTZ+sw*EV_SW_NUM,0, 0,0,0 );
- }
- }
- }
- #endif
- // = ========================= 本文件结束 =============================
|