|
|
@@ -2485,300 +2485,12 @@ static void _signrst_auto(void)
|
|
|
if ((!bY1) && (prun->dz == RY_DZ_XYBS || prun->dz == RY_DZ_BHT) && pR->run_stu.sw == 2) // 开关在合位,并且本开关无故障()(!pR->tCHZ.sta.bFlag.bCHDZ)&&
|
|
|
{
|
|
|
// rt_printf("合位复归...\r\n");
|
|
|
- rt_printf(".");
|
|
|
+ // rt_printf(".");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#if 0
|
|
|
-void _tf_pf_rst_auto(void)
|
|
|
-{
|
|
|
-int sw;
|
|
|
-struct timespec ts;
|
|
|
-struct rtc_time_t tm;
|
|
|
-
|
|
|
-static u8 stu_bk=0,uSDTz=0,uSDGj=0;
|
|
|
-
|
|
|
-if((stu_bk!=g_autorst[0].stu)
|
|
|
- ||(uSDTz!=tOC[0].uSDTz.bFlag.bTz)
|
|
|
- ||(uSDGj!=tOC[0].uSDGj.bFlag.bGj))
|
|
|
-{
|
|
|
-
|
|
|
- clk_time_get(&ts);
|
|
|
- timespec_to_rtc(ts,&tm, 1);
|
|
|
-
|
|
|
- rt_printf("stu=%d,uSDTz=%d,uSDGj=%d:%04d-%02d-%02d %02d:%02d:%02d:%09d\r\n",
|
|
|
- g_autorst[0].stu,tOC[0].uSDTz.bFlag.bTz,tOC[0].uSDGj.bFlag.bGj,
|
|
|
- tm.year + 2000,
|
|
|
- tm.month,
|
|
|
- tm.day,
|
|
|
- tm.hour,
|
|
|
- tm.min,
|
|
|
- tm.ms/1000,
|
|
|
- ts.tv_nsec);
|
|
|
-
|
|
|
- stu_bk = g_autorst[0].stu;
|
|
|
- uSDTz=tOC[0].uSDTz.bFlag.bTz;
|
|
|
- uSDGj=tOC[0].uSDGj.bFlag.bGj;
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-if (!pRunSet->dT_TF)
|
|
|
-{
|
|
|
- memset (&g_autorst, 0, sizeof(g_autorst));
|
|
|
- return;
|
|
|
-}
|
|
|
-
|
|
|
-for(sw=0; sw<SWITCH_NUM_MAX; sw++)
|
|
|
-{
|
|
|
- // 线路有压、无压
|
|
|
- g_autorst[sw].xlyy = (g_run_stu.pt1yy || g_run_stu.pt2yy);
|
|
|
- g_autorst[sw].xlwy = !g_autorst[sw].xlyy;
|
|
|
-
|
|
|
- // 开关位置
|
|
|
- g_autorst[sw].swfw = tSWST[sw].uSWST.bFlag.bTZWZ;
|
|
|
- g_autorst[sw].swhw = tSWST[sw].uSWST.bFlag.bHZWZ;
|
|
|
-
|
|
|
- // 线路故障
|
|
|
- g_autorst[sw].xl_err = (tOC[sw].uSDTz.bFlag.bTzBk||tOC[sw].uSDGj.bFlag.bGjBk
|
|
|
- ||tOC[sw].uGLTz.bFlag.bTzBk||tOC[sw].uGLGj.bFlag.bGjBk
|
|
|
- ||tOC[sw].uGFHTz.bFlag.bTzBk||tOC[sw].uGFHGj.bFlag.bGjBk
|
|
|
- ||tOC[sw].uLX1Tz.bFlag.bTzBk||tOC[sw].uLX1Gj.bFlag.bGjBk
|
|
|
- ||tOC[sw].uLX2Tz.bFlag.bTzBk||tOC[sw].uLX2Gj.bFlag.bGjBk);
|
|
|
-
|
|
|
- // 空闲态
|
|
|
- if (g_autorst[sw].stu == 0)
|
|
|
- {
|
|
|
- // 线路正常,进入正常态
|
|
|
- if (g_autorst[sw].xlyy && g_autorst[sw].swhw)
|
|
|
- {
|
|
|
- g_autorst[sw].stu = 1;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 正常态
|
|
|
- if (g_autorst[sw].stu == 1)
|
|
|
- {
|
|
|
- // 检测到故障,进入故障态
|
|
|
- if (g_autorst[sw].xl_err)
|
|
|
- {
|
|
|
- g_autorst[sw].stu = 2;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 故障态
|
|
|
- if (g_autorst[sw].stu == 2)
|
|
|
- {
|
|
|
- // 检测到无压或分位,初始化线路故障后恢复正常定时器,进入故障解除态
|
|
|
- if (g_autorst[sw].xlwy || g_autorst[sw].swfw)
|
|
|
- {
|
|
|
- g_autorst[sw].xl_ok_time = dTCounter;
|
|
|
- g_autorst[sw].stu = 3;
|
|
|
- }
|
|
|
-
|
|
|
- // 故障自动消失,线路正常,返回正常态
|
|
|
- if ((!g_autorst[sw].xl_err)
|
|
|
- && (g_autorst[sw].xlyy && g_autorst[sw].swhw))
|
|
|
- {
|
|
|
- g_autorst[sw].stu = 1;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 故障解除态
|
|
|
- if (g_autorst[sw].stu == 3)
|
|
|
- {
|
|
|
- // 延时时间内,线路正常,初始化线路故障判定定时器,进入线路恢复态
|
|
|
- if ((dTCounter - g_autorst[sw].xl_ok_time) <= pRunSet->dT_XL_OK)
|
|
|
- {
|
|
|
- if (g_autorst[sw].xlyy && g_autorst[sw].swhw)
|
|
|
- {
|
|
|
- g_autorst[sw].xl_err_time = dTCounter;
|
|
|
- g_autorst[sw].stu = 4;
|
|
|
- }
|
|
|
- }
|
|
|
- // 否则判定为永久故障,复归历史的瞬时故障,并返回空闲态
|
|
|
- else
|
|
|
- {
|
|
|
- g_autorst[sw].pf = 1;
|
|
|
- g_autorst[sw].tf = 0;
|
|
|
- g_autorst[sw].stu = 0;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 线路恢复态
|
|
|
- if (g_autorst[sw].stu == 4)
|
|
|
- {
|
|
|
- // 延时时间内,有故障,返回故障态
|
|
|
- if ((dTCounter - g_autorst[sw].xl_err_time) <= pRunSet->dT_XL_ERR)
|
|
|
- {
|
|
|
- if (g_autorst[sw].xl_err)
|
|
|
- {
|
|
|
- g_autorst[sw].stu = 2;
|
|
|
- }
|
|
|
- }
|
|
|
- // 否则判定为瞬时故障,复归历史的永久故障,并返回正常态
|
|
|
- else
|
|
|
- {
|
|
|
- g_autorst[sw].tf = 1;
|
|
|
- g_autorst[sw].pf = 0;
|
|
|
- g_autorst[sw].tf_time = dTCounter;
|
|
|
- g_autorst[sw].stu = 1;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 瞬时故障自动复归
|
|
|
- if (g_autorst[sw].tf)
|
|
|
- {
|
|
|
- // 瞬时故障延时到,复归瞬时故障
|
|
|
- if ((dTCounter - g_autorst[sw].tf_time) > pRunSet->dT_TF)
|
|
|
- {
|
|
|
- g_autorst[sw].tf = 0;
|
|
|
- _sw_signal_reset(sw);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 瞬时故障SOE记录
|
|
|
- if(g_autorst[sw].tf)
|
|
|
- {
|
|
|
- if(!soe_check(EV_TF_ERR+sw*EV_SW_NUM))
|
|
|
- {
|
|
|
- clk_time_get(&ts);
|
|
|
- timespec_to_rtc(ts,&tm, 1);
|
|
|
- rt_printf("瞬时故障发生:%04d-%02d-%02d %02d:%02d:%02d:%09d\r\n",
|
|
|
- tm.year + 2000,
|
|
|
- tm.month,
|
|
|
- tm.day,
|
|
|
- tm.hour,
|
|
|
- tm.min,
|
|
|
- tm.ms/1000,
|
|
|
- ts.tv_nsec);
|
|
|
-
|
|
|
- soe_record_ev(EV_TF_ERR+sw*EV_SW_NUM,1,0,0,0);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(soe_check(EV_TF_ERR+sw*EV_SW_NUM))
|
|
|
- {
|
|
|
- rt_printf("瞬时故障返回\r\n");
|
|
|
- soe_record_ev(EV_TF_ERR+sw*EV_SW_NUM,0,0,0,0);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 永久故障SOE记录
|
|
|
- if(g_autorst[sw].pf)
|
|
|
- {
|
|
|
- if(!soe_check(EV_PF_ERR+sw*EV_SW_NUM))
|
|
|
- {
|
|
|
- rt_printf("永久故障发生\r\n");
|
|
|
-
|
|
|
- soe_record_ev(EV_PF_ERR+sw*EV_SW_NUM,1,0,0,0);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(soe_check(EV_PF_ERR+sw*EV_SW_NUM))
|
|
|
- {
|
|
|
- rt_printf("永久故障返回\r\n");
|
|
|
- soe_record_ev(EV_PF_ERR+sw*EV_SW_NUM,0,0,0,0);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- tOC[sw].uSDTz.bFlag.bTzBk = tOC[sw].uSDTz.bFlag.bTz;
|
|
|
- tOC[sw].uGLTz.bFlag.bTzBk = tOC[sw].uGLTz.bFlag.bTz;
|
|
|
- tOC[sw].uGFHTz.bFlag.bTzBk = tOC[sw].uGFHTz.bFlag.bTz;
|
|
|
- tOC[sw].uLX1Tz.bFlag.bTzBk = tOC[sw].uLX1Tz.bFlag.bTz;
|
|
|
- tOC[sw].uLX2Tz.bFlag.bTzBk = tOC[sw].uLX2Tz.bFlag.bTz;
|
|
|
- tOC[sw].uSDGj.bFlag.bGjBk = tOC[sw].uSDGj.bFlag.bGj;
|
|
|
- tOC[sw].uGLGj.bFlag.bGjBk = tOC[sw].uGLGj.bFlag.bGj;
|
|
|
- tOC[sw].uGFHGj.bFlag.bGjBk = tOC[sw].uGFHGj.bFlag.bGj;
|
|
|
- tOC[sw].uLX1Gj.bFlag.bGjBk = tOC[sw].uLX1Gj.bFlag.bGj;
|
|
|
- tOC[sw].uLX2Gj.bFlag.bGjBk = tOC[sw].uLX2Gj.bFlag.bGj;
|
|
|
-
|
|
|
-
|
|
|
-}
|
|
|
-}
|
|
|
-
|
|
|
-static void _sw_signal_reset(int sw)
|
|
|
-{
|
|
|
-int bRst=0;
|
|
|
-bool lx_rst,gl_rst=0;
|
|
|
-//收保护动作灯
|
|
|
-if(!(tOC[sw].uSDTz.bFlag.bTz||tOC[sw].uSDGj.bFlag.bGj))
|
|
|
-{
|
|
|
- tOC[sw].bSDLed=false;
|
|
|
-}
|
|
|
-
|
|
|
-if(!(tOC[sw].uGLTz.bFlag.bTz||tOC[sw].uGLGj.bFlag.bGj))
|
|
|
-{
|
|
|
- tOC[sw].bGLLed=false;
|
|
|
-}
|
|
|
-
|
|
|
-if(!(tOC[sw].uGFHTz.bFlag.bTz||tOC[sw].uGFHGj.bFlag.bGj))
|
|
|
-{
|
|
|
- tOC[sw].bGFHLed=false;
|
|
|
-}
|
|
|
-
|
|
|
-if(!(tOC[sw].uLX1Tz.bFlag.bTz||tOC[sw].uLX1Gj.bFlag.bGj))
|
|
|
-{
|
|
|
- tOC[sw].bLX1Led=false;
|
|
|
-}
|
|
|
-
|
|
|
-if(!(tOC[sw].uLX2Tz.bFlag.bTz||tOC[sw].uLX2Gj.bFlag.bGj))
|
|
|
-{
|
|
|
- tOC[sw].bLX2Led=false;
|
|
|
-}
|
|
|
-
|
|
|
-if (tOC[sw].bSDLed || tOC[sw].bGLLed || tOC[sw].bGFHLed || tOC[sw].bLX1Led || tOC[sw].bLX2Led)
|
|
|
-{
|
|
|
- bRst = 1;
|
|
|
-}
|
|
|
-
|
|
|
-if(tOC[sw].bSDLed || tOC[sw].bGLLed || tOC[sw].bGFHLed)
|
|
|
-{
|
|
|
- gl_rst = 1;
|
|
|
-}
|
|
|
-
|
|
|
-if(tOC[sw].bLX1Led || tOC[sw].bLX2Led)
|
|
|
-{
|
|
|
- lx_rst = 1;
|
|
|
-}
|
|
|
-
|
|
|
-if (tJS[sw].uGLJS.bFlag.bTz||tJS[sw].uLXJS.bFlag.bTz
|
|
|
- || tSW_CH[sw].uCHJD.bFlag.bHz
|
|
|
- || tU0TZ[sw].uZOV.bFlag.bTz
|
|
|
- || tOC[sw].uBSTZ.bFlag.bBSTZ
|
|
|
- || tLostVot[sw].uLostVot.bFlag.bTz
|
|
|
- || tSDHZ[sw].bL_BSLed
|
|
|
- || tSDHZ[sw].bS_BSLed)
|
|
|
-{
|
|
|
- bRst = 1;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-if(!gl_rst)
|
|
|
-{
|
|
|
- led_set_sw(sw,SW_LED_GL, LED_OFF);
|
|
|
-}
|
|
|
-
|
|
|
-if(!lx_rst)
|
|
|
-{
|
|
|
- led_set_sw(sw ,SW_LED_JD, LED_OFF);
|
|
|
-}
|
|
|
-
|
|
|
-if(!bRst)
|
|
|
-{
|
|
|
- led_set_sw(sw ,SW_LED_DZ, LED_OFF);
|
|
|
- g_run_stu.dz[sw] = 0;
|
|
|
-}
|
|
|
-}
|
|
|
-
|
|
|
-#endif
|
|
|
-
|
|
|
/******************************************************************************
|
|
|
函数名称: _yx_is_config
|
|
|
函数版本: 01.01
|