1829 lines
55 KiB
C
1829 lines
55 KiB
C
/*
|
|
* sbor_shema.c
|
|
*
|
|
* Created on: 18 ôåâð. 2021 ã.
|
|
* Author: stud
|
|
*/
|
|
#include "sbor_shema.h"
|
|
#include "IQmathLib.h"
|
|
#include "edrk_main.h"
|
|
#include "optical_bus.h"
|
|
#include "adc_tools.h"
|
|
#include "control_station.h"
|
|
#include "control_station_project.h"
|
|
#define RASCEPITEL_MANUAL_ALWAYS_ON 0//1
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
#define IQ_MINIMAL_DELTA_RUN_CHARGE 279620 // 50V //559240 //100 V
|
|
|
|
#define IQ_MINIMAL_DELTA_RUN_WORK 1677720 // 300 V // 559240 // 100V
|
|
|
|
#define IQ_MINIMAL_ZAD_U_CHARGE 55924 // 10V
|
|
#define IQ_MAXIMAL_ZAD_U_CHARGE 14596177 // 2610V
|
|
#define IQ_MINIMAL_DELTA_RUN_CHARGE2 139810 //25 V
|
|
#define TIME_WAIT_CHARGE_ON 100 //10 sec
|
|
#define TIME_PAUSE_U_RISE 30 // 1 sec
|
|
|
|
#define IQ_MINIMAL_RISE_U 55924 // 10V
|
|
|
|
unsigned int zaryad_on_off(unsigned int flag)
|
|
{
|
|
static int restart_charge=0, batt_ok = 0;
|
|
static unsigned int time_wait_on_charge=0;
|
|
static unsigned int time_pause_detect_u_rise=0;
|
|
|
|
static _iq prev_U1=0, prev_U2 = 0;
|
|
|
|
batt_ok = 0;
|
|
// ðàçáåæêà ïî áàíêàì - îøèáêà!!!
|
|
if (_IQabs(filter.iqU_1_long-filter.iqU_2_long)>IQ_MINIMAL_DELTA_RUN_WORK)
|
|
{
|
|
// edrk.errors.e6.bits.ERROR_PRE_CHARGE_U |= 1;
|
|
edrk.errors.e6.bits.ER_DISBAL_BATT |= 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
batt_ok = 0;
|
|
}
|
|
|
|
if (flag && edrk.summ_errors==0 && edrk.errors.e6.bits.ERROR_PRE_CHARGE_U==0 && edrk.errors.e6.bits.ER_DISBAL_BATT==0 )
|
|
{
|
|
// íåò çàäàíèß!!!
|
|
if ((edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_ZAD_U_CHARGE) <= 0)
|
|
{
|
|
edrk.errors.e5.bits.ERROR_PRE_CHARGE_ON |= 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
return 0;
|
|
}
|
|
// áîëüøîå çàäàíèå!!!
|
|
|
|
if ((IQ_MAXIMAL_ZAD_U_CHARGE - edrk.zadanie.iq_ZadanieU_Charge) < 0)
|
|
{
|
|
edrk.errors.e5.bits.ERROR_PRE_CHARGE_ON |= 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
return 0;
|
|
}
|
|
|
|
// åñòü ðàçáåæêà ïî áàíêàì
|
|
if (_IQabs(filter.iqU_1_long-filter.iqU_2_long)>IQ_MINIMAL_DELTA_RUN_CHARGE)
|
|
{
|
|
edrk.errors.e6.bits.ER_DISBAL_BATT |= 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
return 0;
|
|
}
|
|
|
|
if (restart_charge == 0)
|
|
{
|
|
|
|
// çàðßä íîðìà è áûëî âêëþ÷åíî, âûêëþ÷àåì
|
|
if ( edrk.from_ing1.bits.ZARYAD_ON &&
|
|
(filter.iqU_1_long>=(edrk.zadanie.iq_ZadanieU_Charge)
|
|
|| filter.iqU_2_long>=(edrk.zadanie.iq_ZadanieU_Charge))
|
|
)
|
|
{
|
|
restart_charge = 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
}
|
|
else
|
|
{
|
|
//TODO !!! ïî ñóòè ïîâòîðÿåò ïðåäûäóùèé if. Óäàëèòü?
|
|
if ( edrk.from_ing1.bits.ZARYAD_ON==0 &&
|
|
(filter.iqU_1_long>=(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE)
|
|
|| filter.iqU_2_long>=(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE)) )
|
|
{
|
|
restart_charge = 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
}
|
|
else
|
|
{
|
|
// çàðßä ìåíüøå íóæíîãî, âêëþ÷àåì.
|
|
if ( (filter.iqU_1_long<(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
&& (filter.iqU_2_long<(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE)) )
|
|
edrk.to_ing.bits.ZARYAD_ON = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (pause_detect_error(&time_pause_detect_u_rise,TIME_PAUSE_U_RISE,1))
|
|
{
|
|
time_pause_detect_u_rise = 0;
|
|
|
|
if (((filter.iqU_1_long-prev_U1)>=IQ_MINIMAL_RISE_U) ||
|
|
((filter.iqU_2_long-prev_U2)>=IQ_MINIMAL_RISE_U) )
|
|
time_wait_on_charge = 0;
|
|
|
|
|
|
prev_U1 = filter.iqU_1_long;
|
|
prev_U2 = filter.iqU_2_long;
|
|
}
|
|
|
|
|
|
// íå äîæäàëèñü çàðßäà!!!
|
|
if (pause_detect_error(&time_wait_on_charge,TIME_WAIT_CHARGE_ON,1))
|
|
edrk.errors.e6.bits.ERROR_PRE_CHARGE_U |= 1;
|
|
/*
|
|
|
|
if (filter.iqU_1_long>=(edrk.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE2)
|
|
|| filter.iqU_2_long>=(edrk.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE2))
|
|
{
|
|
restart_charge = 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
}
|
|
else
|
|
{
|
|
// åñòü ðàçáåæêà ïî áàíêàì
|
|
if (_IQabs(filter.iqU_1_long-filter.iqU_2_long)>IQ_MINIMAL_DELTA_RUN_CHARGE)
|
|
edrk.errors.e6.bits.ER_DISBAL_BATT |= 1;
|
|
|
|
// çàðßä ìåíüøå íóæíîãî, âêëþ÷àåì.
|
|
if ( (filter.iqU_1_long<(edrk.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
|| (filter.iqU_2_long<(edrk.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE)) )
|
|
edrk.to_ing.bits.ZARYAD_ON = 1;
|
|
|
|
if ( (filter.iqU_1_long>=(edrk.iq_ZadanieU_Charge))
|
|
&& (filter.iqU_2_long>=(edrk.iq_ZadanieU_Charge)) )
|
|
{
|
|
restart_charge = 1;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
}
|
|
}
|
|
*/
|
|
|
|
}
|
|
else//restart_charge==0
|
|
{
|
|
// ïî÷åìó-òî çàðßä ñòàë ìåíüøå!!!
|
|
if ( (filter.iqU_1_long<(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
|| (filter.iqU_2_long<(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE)) )
|
|
edrk.errors.e6.bits.ERROR_PRE_CHARGE_U |= 1;
|
|
|
|
} //restart_charge==0
|
|
}
|
|
else // flag==1
|
|
{
|
|
restart_charge = 0;
|
|
edrk.to_ing.bits.ZARYAD_ON = 0;
|
|
time_wait_on_charge = 0;
|
|
prev_U1 = filter.iqU_1_long;
|
|
prev_U2 = filter.iqU_2_long;
|
|
}
|
|
|
|
if ( (filter.iqU_1_long>=(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
&& (filter.iqU_2_long>=(edrk.zadanie.iq_ZadanieU_Charge-IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
&& (_IQabs(filter.iqU_1_long-filter.iqU_2_long)<IQ_MINIMAL_DELTA_RUN_WORK)
|
|
&& (filter.iqU_1_long<=(edrk.zadanie.iq_ZadanieU_Charge+IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
&& (filter.iqU_2_long<=(edrk.zadanie.iq_ZadanieU_Charge+IQ_MINIMAL_DELTA_RUN_CHARGE))
|
|
&& edrk.to_ing.bits.ZARYAD_ON==0
|
|
&& edrk.from_ing1.bits.ZARYAD_ON==0
|
|
&& edrk.errors.e5.bits.ERROR_PRE_CHARGE_ON==0
|
|
&& edrk.errors.e6.bits.ERROR_PRE_CHARGE_U==0
|
|
)
|
|
batt_ok = 1;
|
|
|
|
// return (restart_charge && edrk.errors.e5.bits.ERROR_PRE_CHARGE_ON==0 && edrk.errors.e6.bits.ERROR_PRE_CHARGE_U==0);
|
|
return batt_ok;
|
|
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
void set_status_pump_fan(void)
|
|
{
|
|
|
|
if (edrk.from_ing1.bits.VENTIL_ON==1)
|
|
edrk.StatusFunAll = 1;
|
|
else
|
|
edrk.StatusFunAll = 0;
|
|
|
|
/*
|
|
if ((edrk.from_ing.bits.NASOS_NORMA == 1) &&
|
|
edrk.StartPump && edrk.errors.e5.bits.PRE_READY_PUMP == 0 &&
|
|
(edrk.to_ing.bits.NASOS_1_ON || edrk.to_ing.bits.NASOS_2_ON) &&
|
|
(edrk.errors.e5.bits.PUMP_1==0) && (edrk.errors.e5.bits.PUMP_2==0) &&
|
|
edrk.errors.e2.bits.P_WATER_INT_MAX==0 && edrk.errors.e2.bits.P_WATER_INT_MIN==0)
|
|
*/
|
|
if (
|
|
(edrk.from_ing1.bits.NASOS_NORMA == 1) &&
|
|
(edrk.to_ing.bits.NASOS_1_ON || edrk.to_ing.bits.NASOS_2_ON) &&
|
|
edrk.from_ing1.bits.NASOS_ON && edrk.errors.e5.bits.PRE_READY_PUMP == 0 &&
|
|
(edrk.errors.e5.bits.PUMP_1==0) && (edrk.errors.e5.bits.PUMP_2==0)
|
|
)
|
|
{
|
|
if (edrk.to_ing.bits.NASOS_1_ON)
|
|
edrk.StatusPump0 = 1;
|
|
else
|
|
edrk.StatusPump0 = 0;
|
|
|
|
if (edrk.to_ing.bits.NASOS_2_ON)
|
|
edrk.StatusPump1 = 1;
|
|
else
|
|
edrk.StatusPump1 = 0;
|
|
|
|
edrk.StatusPumpAll = 1;
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
edrk.StatusPump0 = 0;
|
|
edrk.StatusPump1 = 0;
|
|
|
|
edrk.StatusPumpAll = 0;
|
|
}
|
|
|
|
|
|
if (edrk.StatusFunAll && edrk.StatusPumpAll)
|
|
edrk.StatusPumpFanAll = 1;
|
|
else
|
|
{
|
|
// åñëè åñòü çàïðåò ïóñêà íàñîñîâ èç òåðìèíàëêè, òî èìèòèðóåì âêëþ÷åíÿè íàñîñîâ è âåíòèëÿòîðîâ.
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_PUMP])
|
|
edrk.StatusPumpFanAll = 1;
|
|
else
|
|
{
|
|
edrk.StatusPumpFanAll = 0;
|
|
}
|
|
}
|
|
|
|
}
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
int detect_zaryad_ump(void)
|
|
{
|
|
if (edrk.from_shema.bits.UMP_ON_OFF==1)
|
|
{
|
|
if ( (filter.iqUin_m1>=edrk.iqMIN_U_IN)
|
|
&& (filter.iqUin_m2>=edrk.iqMIN_U_IN)
|
|
&& (filter.iqUin_m1<=edrk.iqMAX_U_IN)
|
|
&& (filter.iqUin_m2<=edrk.iqMAX_U_IN) )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
|
|
}
|
|
else
|
|
return 0;
|
|
}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
|
|
#define TIME_WAIT_SBOR 2500
|
|
#define TIME_WAIT_ANSWER_NASOS 500
|
|
#define TIME_WAIT_OK_NASOS 50
|
|
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
void sbor_shema_pusk_nasos(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
static unsigned int time_error_nasos = 0;
|
|
static unsigned int time_ok_nasos = 0;
|
|
|
|
int status_pump, status_pump_long;
|
|
|
|
// ïóñê íàñîñà
|
|
if (edrk.Sbor_Mode == t_start)
|
|
{
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_PUMP]==0)
|
|
edrk.AutoStartPump = 1;
|
|
|
|
time_error_nasos = 0;
|
|
time_ok_nasos = 0;
|
|
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_PUMP]==1)
|
|
edrk.Sbor_Mode = t_finish; // èìèòàöèÿ çàâåðøåíèÿ ïóñêà íàñîñà
|
|
}
|
|
|
|
// æäåì ïóñêà íàñîñà
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish)
|
|
{
|
|
edrk.Stage_Sbor = 1;
|
|
|
|
status_pump = get_status_p_water_min(edrk.StatusPumpFanAll);
|
|
|
|
/* if (status & 4)
|
|
edrk.errors.e2.bits.P_WATER_INT_MIN |= 1;
|
|
if (status==2)
|
|
edrk.warnings.e2.bits.P_WATER_INT_MIN = 1;
|
|
if (status==1)
|
|
edrk.warnings.e2.bits.P_WATER_INT_MIN = 0;
|
|
*/
|
|
|
|
// æäåì íåêîòîðîå âðåìÿ ïîêà êà÷àåò íàñîñ ñ íîðìàëüíûì äàâëåíèåì status_pump == 1
|
|
if (status_pump)
|
|
{
|
|
if (pause_detect_error(&time_ok_nasos,TIME_WAIT_OK_NASOS,1))
|
|
{
|
|
status_pump_long = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
time_ok_nasos = 0;
|
|
status_pump_long = 0;
|
|
}
|
|
|
|
|
|
if (edrk.StatusPumpFanAll && status_pump==1) // æäåì ïóñêà íàñîñà è äàâëåíèÿ
|
|
{
|
|
edrk.Sbor_Mode = t_finish;
|
|
}
|
|
|
|
// íàñîñ íå ïóñòèëñÿ, ïðîáóåì âòîðîé
|
|
if (edrk.Sbor_Mode==(t_start + (t_finish-t_start)>>1))
|
|
{
|
|
|
|
|
|
}
|
|
|
|
// íàñîñ íå ïóñòèëñÿ, îøèáêà
|
|
if (edrk.Sbor_Mode==(t_finish-1))
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_PUMP_ON_SBOR |= 1;
|
|
edrk.Status_Sbor = 2;
|
|
edrk.AutoStartPump = 0;
|
|
}
|
|
|
|
}
|
|
// àíàëèç óæå ïîñëå çàïóñêà íàñîñà
|
|
if (edrk.Sbor_Mode>t_finish)
|
|
{
|
|
if (edrk.StatusPumpFanAll==0)
|
|
{
|
|
// íàñîñ âûêëþ÷èëñÿ âäðóã
|
|
if (edrk.SelectPump1_2==1)
|
|
{
|
|
// ìû áûëè â àâòîâûáîðå íàñîñà 1
|
|
// æäåì íåêîòîðîå âðåìÿ ïîêà ïåðåêëþ÷àåòñÿ íàñîñ
|
|
if (pause_detect_error(&time_error_nasos,TIME_WAIT_ANSWER_NASOS,1))
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_RESTART_PUMP_1_ON_SBOR |= 1;
|
|
edrk.Status_Sbor = 102;
|
|
edrk.AutoStartPump = 0;
|
|
}
|
|
}
|
|
else
|
|
if (edrk.SelectPump1_2==2)
|
|
{
|
|
// ìû áûëè â àâòîâûáîðå íàñîñà 2
|
|
// æäåì íåêîòîðîå âðåìÿ ïîêà ïåðåêëþ÷àåòñÿ íàñîñ
|
|
if (pause_detect_error(&time_error_nasos,TIME_WAIT_ANSWER_NASOS,1))
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_RESTART_PUMP_1_ON_SBOR |= 1;
|
|
edrk.Status_Sbor = 102;
|
|
edrk.AutoStartPump = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_RESTART_PUMP_ALL_ON_SBOR |= 1;
|
|
edrk.Status_Sbor = 102;
|
|
edrk.AutoStartPump = 0;
|
|
}
|
|
}
|
|
else
|
|
time_error_nasos = 0;
|
|
|
|
}
|
|
}
|
|
|
|
void sbor_shema_pusk_zaryad(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
/////////////////////////////////////
|
|
// çàïóñê çàðÿäà âíóòðåííåãî
|
|
if (edrk.Sbor_Mode == t_start)
|
|
{
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_ENABLE_ON_CHARGE]==1)
|
|
edrk.Run_Pred_Zaryad = 1; // çàïóñê ïðåäçàðßäà!
|
|
}
|
|
|
|
// æäåì çàâåðøåíèÿ ðàáîòû ïðåäçàðÿäà
|
|
// òóò ïðåäçàðßä äîëæåí óæå çàêîí÷èòü ðàáîòó
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish && (edrk.Status_Charge || (control_station.active_array_cmd[CONTROL_STATION_CMD_ENABLE_ON_CHARGE]==0))
|
|
&& edrk.from_ing1.bits.ZARYAD_ON==0 && edrk.StatusPumpFanAll)
|
|
{
|
|
edrk.Stage_Sbor = 2;
|
|
if ((edrk.Status_Charge || (control_station.active_array_cmd[CONTROL_STATION_CMD_ENABLE_ON_CHARGE]==0))
|
|
&& edrk.from_ing1.bits.ZARYAD_ON==0 && edrk.StatusPumpFanAll)
|
|
{
|
|
edrk.Zaryad_OK = 1;
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.Sbor_Mode = t_finish;
|
|
}
|
|
|
|
// íåò çàðÿäà, îøèáêà
|
|
if (edrk.Sbor_Mode==(t_finish-1))
|
|
{
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_PRED_ZARYAD |= 1;
|
|
edrk.Status_Sbor = 4;
|
|
}
|
|
|
|
}
|
|
|
|
if (edrk.Sbor_Mode>t_finish)
|
|
{
|
|
if (edrk.Zaryad_OK==0 || edrk.from_ing1.bits.ZARYAD_ON==1 )
|
|
{
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_PRED_ZARYAD_AFTER |= 1;
|
|
edrk.Status_Sbor = 104;
|
|
}
|
|
}
|
|
|
|
}
|
|
void sbor_shema_pusk_ump(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
// âêëþ÷àåì UMP
|
|
if (edrk.Sbor_Mode==t_start && edrk.Zaryad_OK == 1)
|
|
{
|
|
edrk.Run_UMP = 1;
|
|
}
|
|
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish)
|
|
{
|
|
edrk.Stage_Sbor = 3;
|
|
if (edrk.Zaryad_OK == 1 && edrk.Status_UMP_Ok==1 && edrk.Zaryad_UMP_Ok==1)
|
|
edrk.Sbor_Mode = t_finish;
|
|
|
|
// íåò çàðÿäà, îøèáêà
|
|
if (edrk.Sbor_Mode==(t_finish-1))
|
|
{
|
|
edrk.Run_UMP = 0;
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_UMP_NOT_ON |= 1;
|
|
edrk.Status_Sbor = 5;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// if (edrk.Sbor_Mode>t_finish && (edrk.Zaryad_OK == 0 || edrk.Status_UMP_Ok==0))
|
|
// {
|
|
//
|
|
// edrk.Run_UMP = 0;
|
|
// edrk.Run_Pred_Zaryad = 0;
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.errors.e7.bits.UMP_NOT_ANSWER |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// edrk.Status_Sbor = 105;
|
|
// }
|
|
|
|
|
|
}
|
|
|
|
void sbor_shema_pusk_qtv(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
if (edrk.Sbor_Mode==t_start && edrk.Zaryad_OK == 1 && edrk.Status_UMP_Ok)
|
|
{
|
|
edrk.Run_QTV = 1;
|
|
}
|
|
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish )
|
|
{
|
|
edrk.Stage_Sbor = 4;
|
|
if ((edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_UMP_Ok))
|
|
edrk.Sbor_Mode = t_finish;
|
|
|
|
if (edrk.Sbor_Mode==(t_finish-1) && edrk.Status_UMP_Ok==0)
|
|
{
|
|
edrk.Run_QTV = 0;
|
|
edrk.Run_UMP = 0;
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_READY_UMP_BEFORE_QTV |= 1;
|
|
edrk.Status_Sbor = 6;
|
|
}
|
|
}
|
|
|
|
|
|
if (edrk.Sbor_Mode>t_finish)
|
|
{
|
|
if (edrk.Zaryad_OK == 0 || edrk.Status_QTV_Ok==0)
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_STATUS_QTV |= 1;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Status_Sbor = 106;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void sbor_shema_stop_ump(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
// âêëþ÷àåì UMP
|
|
if (edrk.Sbor_Mode==t_start && edrk.Status_QTV_Ok == 1)
|
|
{
|
|
edrk.Run_UMP = 0;
|
|
}
|
|
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish)
|
|
{
|
|
|
|
edrk.Stage_Sbor = 5;
|
|
if (edrk.Status_UMP_Ok==0)
|
|
edrk.Sbor_Mode = t_finish;
|
|
|
|
// íåò çàðÿäà, îøèáêà
|
|
if (edrk.Sbor_Mode==(t_finish-1))
|
|
{
|
|
edrk.Run_UMP = 0;
|
|
edrk.Run_QTV = 0;
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.errors.e7.bits.UMP_NOT_ANSWER |= 1;
|
|
edrk.errors.e11.bits.ERROR_UMP_NOT_OFF |= 1;
|
|
edrk.Status_Sbor = 7;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if (edrk.Sbor_Mode>t_finish && edrk.Status_UMP_Ok==1)
|
|
{
|
|
|
|
edrk.Run_UMP = 0;
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_UMP_ON_AFTER |= 1;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Status_Sbor = 107;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void sbor_shema_rascepitel_level_1(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
|
|
#if(RASCEPITEL_MANUAL_ALWAYS_ON==1)
|
|
if (edrk.Sbor_Mode==t_start && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 ))
|
|
{
|
|
edrk.Stage_Sbor = 6;
|
|
// åñëè äðóãîé ÁÑ íå ñîáðàí, çàìûêàåì ðàñöåïèòåëü
|
|
if (optical_read_data.data.cmd.bit.ready_cmd != CODE_READY_CMD_READY2 )
|
|
{
|
|
edrk.Run_Rascepitel = 1;
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
}
|
|
else
|
|
edrk.RunZahvatRascepitel = 1; // ïðîñèì äðóãîé ÁÑ ñáðîñèòü îáîðîòû è ðàçðåøèòü ïîäêëþ÷åíèå ðàñöåïèòåëÿ
|
|
}
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
&& edrk.RunZahvatRascepitel && edrk.Run_Rascepitel==0)
|
|
{
|
|
edrk.Stage_Sbor = 6;
|
|
// åñëè äðóãîé ÁÑ íå ñîáðàí, çàìûêàåì ðàñöåïèòåëü
|
|
// äðóãîé ÁÑ ñáðîñèë îáîðîòû åñëè îíè áûëè è ñíÿë ØÈÌ åñëè áûë
|
|
if (optical_read_data.data.cmd.bit.rascepitel_cmd == CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
{
|
|
edrk.Run_Rascepitel = 1;
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
}
|
|
}
|
|
|
|
#else
|
|
|
|
|
|
if (edrk.Sbor_Mode==t_start && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 ) && edrk.Status_Rascepitel_Ok==0)
|
|
{
|
|
edrk.Stage_Sbor = 6;
|
|
// åñëè äðóãîé ÁÑ íå ñîáðàí, çàìûêàåì ðàñöåïèòåëü
|
|
if (optical_read_data.data.cmd.bit.ready_cmd != CODE_READY_CMD_READY2 )
|
|
{
|
|
edrk.Run_Rascepitel = 1;
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
}
|
|
else
|
|
edrk.RunZahvatRascepitel = 1; // ïðîñèì äðóãîé ÁÑ ñáðîñèòü îáîðîòû è ðàçðåøèòü ïîäêëþ÷åíèå ðàñöåïèòåëÿ
|
|
}
|
|
//
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
&& edrk.RunZahvatRascepitel && edrk.Status_Rascepitel_Ok==0 && edrk.Run_Rascepitel==0)
|
|
{
|
|
edrk.Stage_Sbor = 6;
|
|
// åñëè äðóãîé ÁÑ íå ñîáðàí, çàìûêàåì ðàñöåïèòåëü
|
|
// äðóãîé ÁÑ ñáðîñèë îáîðîòû åñëè îíè áûëè è ñíÿë ØÈÌ åñëè áûë
|
|
if (optical_read_data.data.cmd.bit.rascepitel_cmd == CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
{
|
|
edrk.Run_Rascepitel = 1;
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (edrk.Sbor_Mode>t_finish)
|
|
{
|
|
if (edrk.Run_Rascepitel==0)
|
|
{
|
|
// íå äîæäàëèñü êîìàíäû íà âêëþ÷åíèå ñâîåãî ðàñöåïèòåëÿ
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_RASCEPITEL_WAIT_CMD |= 1;
|
|
edrk.Run_QTV = 0;
|
|
|
|
edrk.Status_Sbor = 108;
|
|
// íå äîæäàëèñü ïîäòâåðæäåíèÿ îò äðóãîãî
|
|
if (edrk.RunZahvatRascepitel)
|
|
edrk.errors.e1.bits.NO_CONFIRM_ON_RASCEPITEL |= 1;
|
|
|
|
edrk.RunZahvatRascepitel = 0;
|
|
edrk.Run_Rascepitel = 0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void sbor_shema_rascepitel_level_2(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish)
|
|
{
|
|
edrk.Stage_Sbor = 7;
|
|
#if(RASCEPITEL_MANUAL_ALWAYS_ON==1)
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
#else
|
|
|
|
if ( (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
&& edrk.Status_Rascepitel_Ok==1 && edrk.Run_Rascepitel==1)
|
|
{
|
|
// äîæäàëèñü âêëþ÷åíèÿ ðàñöåïèòåëÿ è ïðûãíóëè äàëüøå
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
}
|
|
|
|
if (edrk.Sbor_Mode==(t_finish-1) && edrk.Status_Rascepitel_Ok==0 && edrk.Run_Rascepitel==1)
|
|
{
|
|
// íå äîæäàëèñü ïîäòâåðæäåíèÿ íà âêëþ÷åíèå ñâîåãî ðàñöåïèòåëÿ
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Status_Sbor = 9;
|
|
edrk.errors.e6.bits.RASCEPITEL_ERROR_NOT_ANSWER |= 1;
|
|
edrk.RunZahvatRascepitel = 0;
|
|
edrk.Run_Rascepitel = 0;
|
|
}
|
|
#endif
|
|
|
|
}
|
|
|
|
if (edrk.Sbor_Mode>t_finish && edrk.Status_Rascepitel_Ok==0)
|
|
{
|
|
// ðàñöåïèòåëü âûêëþ÷èëñÿ, à íå äîëæåí áûë
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Status_Sbor = 109;
|
|
// edrk.errors.e6.bits.RASCEPITEL_ERROR_NOT_ANSWER |= 1;
|
|
edrk.errors.e11.bits.ERROR_RASCEPITEL_ON_AFTER |= 1;
|
|
edrk.RunZahvatRascepitel = 0;
|
|
edrk.Run_Rascepitel = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
//
|
|
// ïî ñèãíàëó edrk.RunZahvatRascepitel äîëæåí òîò ÁÑ ñáðîñèòü îáîðîòû è ïîäòâåðäèòü âîçìîæíîñòü âêëþ÷åíèå ðàñöåïèòåëÿ
|
|
|
|
|
|
//
|
|
// if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
// && edrk.Status_Rascepitel_Ok==1 && edrk.Run_Rascepitel==1)
|
|
// {
|
|
// // äîæäàëèñü âêëþ÷åíèÿ ðàñöåïèòåëÿ è ïðûãíóëè äàëüøå
|
|
// edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
// }
|
|
//
|
|
////
|
|
// // ïî ñèãíàëó edrk.RunZahvatRascepitel äîëæåí òîò ÁÑ ñáðîñèòü îáîðîòû è ïîäòâåðäèòü âîçìîæíîñòü âêëþ÷åíèå ðàñöåïèòåëÿ
|
|
// if (edrk.Sbor_Mode==(t_finish-1) && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
// && edrk.RunZahvatRascepitel && edrk.Status_Rascepitel_Ok==0 && edrk.Run_Rascepitel==0)
|
|
// {
|
|
// //
|
|
//// if (optical_read_data.data.cmd.bit.rascepitel_cmd != CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
// {
|
|
// // íå äîæäàëèñü ïîäòâåðæäåíèÿ íà âêëþ÷åíèå ñâîåãî ðàñöåïèòåëÿ
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// edrk.Status_Sbor = 8;
|
|
// edrk.errors.e1.bits.NO_CONFIRM_ON_RASCEPITEL |= 1;
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
// edrk.Run_Rascepitel = 0;
|
|
//// edrk.Run_Rascepitel = 0;
|
|
// }
|
|
// }
|
|
|
|
}
|
|
void sbor_shema_rascepitel_level_3(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
|
|
// òóò æäåì âêëþ÷åíèÿ ðàñöåïèòåëÿ
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish)
|
|
{
|
|
edrk.Stage_Sbor = 8;
|
|
if (edrk.Status_Rascepitel_Ok==1)
|
|
{
|
|
// Ðàñöåïèòåëü âêëþ÷èëñÿ!
|
|
// ìîæíî ïåðåïðûãèâàòü â êîíåö
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
edrk.RunZahvatRascepitel = 0;
|
|
}
|
|
// edrk.Run_Rascepitel = 1;
|
|
}
|
|
|
|
// if (edrk.Sbor_Mode==(t_finish-1) && (edrk.Zaryad_OK == 0 || edrk.Status_QTV_Ok==0 || edrk.Status_Rascepitel_Ok==0))
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
//// edrk.Run_Rascepitel = 0;
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
// edrk.Status_Sbor = 10;
|
|
// edrk.Run_Rascepitel = 0;
|
|
//
|
|
// }
|
|
}
|
|
|
|
void sbor_shema_rascepitel_level_4(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok))
|
|
{
|
|
edrk.Stage_Sbor = 9;
|
|
if (optical_read_data.data.cmd.bit.ready_cmd==CODE_READY_CMD_READY1TO2) // òîò ÁÑ ñîáèðàåòñÿ åùå
|
|
{
|
|
// îæèäàåì äîñáîðà âòîðîãî ÁÑ
|
|
// íî ðàñöåïèòåëü óæå âêëþ÷èëñÿ.
|
|
if (optical_read_data.data.cmd.bit.rascepitel_cmd == CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON)
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
|
|
}
|
|
else
|
|
{
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
}
|
|
}
|
|
|
|
// if (edrk.Sbor_Mode>t_finish)
|
|
// {
|
|
// if (edrk.Status_Rascepitel_Ok==0)
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
// edrk.Status_Sbor = 9;
|
|
// edrk.Run_Rascepitel = 0;
|
|
//
|
|
// }
|
|
//
|
|
// }
|
|
|
|
}
|
|
|
|
void sbor_shema_wait_ready_another(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
|
|
if (edrk.Sbor_Mode>t_start && edrk.Sbor_Mode<t_finish && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok))
|
|
{
|
|
edrk.Stage_Sbor = 10;
|
|
if (optical_read_data.data.cmd.bit.ready_cmd!=CODE_READY_CMD_READY1TO2)
|
|
{
|
|
edrk.Sbor_Mode = t_finish; // ïåðåïðûãíóëè äàëüøå
|
|
}
|
|
|
|
if (edrk.Sbor_Mode==(t_finish-1) && optical_read_data.data.cmd.bit.ready_cmd==CODE_READY_CMD_READY1TO2)
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e1.bits.ANOTHER_BS_VERY_LONG_WAIT |= 1;
|
|
edrk.Run_QTV = 0;
|
|
// edrk.Run_Rascepitel = 0;
|
|
edrk.RunZahvatRascepitel = 0;
|
|
edrk.Status_Sbor = 11;
|
|
edrk.Run_Rascepitel = 0;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void sbor_shema_wait_finish(unsigned int t_start, unsigned int t_finish)
|
|
{
|
|
if (edrk.Sbor_Mode>t_start && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok))
|
|
{
|
|
edrk.Stage_Sbor = 11;
|
|
edrk.SborFinishOk = 1;
|
|
// allow_discharge = 1;
|
|
}
|
|
|
|
|
|
if (edrk.Sbor_Mode>t_finish && (edrk.SborFinishOk) )
|
|
{
|
|
edrk.time_wait_sbor = 0;
|
|
}
|
|
else
|
|
edrk.Sbor_Mode++;
|
|
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
#define TIME_WAIT_RELE_UMP_ON 20 //2 sec
|
|
#define TIME_WAIT_RELE_UMP_OFF 20 //2 sec
|
|
|
|
#define TIME_WAIT_ANSWER_UMP_ON 150 //15 sec
|
|
#define TIME_WAIT_ANSWER_UMP_OFF 40 //4 sec
|
|
|
|
///////////////////////////////////////////////
|
|
int ump_on_off(unsigned int flag)
|
|
{
|
|
static unsigned int time_wait_rele_on_ump=0;
|
|
static unsigned int time_wait_rele_off_ump=0;
|
|
static unsigned int time_wait_answer_on_ump=0;
|
|
static unsigned int time_wait_answer_off_ump=0;
|
|
|
|
|
|
int cmd_ump=0;//,cmd_p2=0;
|
|
static int UMP_Ok = 0;
|
|
static int prev_error = 0;
|
|
|
|
|
|
cmd_ump = 0;
|
|
// cmd_p2 = 0;
|
|
|
|
if ( flag==1 && edrk.summ_errors==0)
|
|
{
|
|
cmd_ump = 1;
|
|
}
|
|
else
|
|
{
|
|
cmd_ump = 0;
|
|
}
|
|
|
|
|
|
|
|
edrk.cmd_to_ump = cmd_ump;
|
|
|
|
if (cmd_ump)
|
|
{
|
|
|
|
// if ((pause_detect_error(&time_wait_rele_on_qtv,TIME_WAIT_RELE_UMP_ON,1)==0) && edrk.from_shema.bits.UMP_ON_OFF==0)
|
|
// {
|
|
// edrk.to_shema.bits.QTV_ON_OFF = 1;
|
|
// }
|
|
// else
|
|
|
|
edrk.to_shema.bits.UMP_ON_OFF = 1;
|
|
|
|
if (pause_detect_error(&time_wait_answer_on_ump,TIME_WAIT_ANSWER_UMP_ON,1)==0)
|
|
{
|
|
|
|
if (edrk.from_shema.bits.UMP_ON_OFF==1)
|
|
UMP_Ok = 1;
|
|
}
|
|
else
|
|
{
|
|
|
|
if (edrk.from_shema.bits.UMP_ON_OFF==0)
|
|
{
|
|
edrk.errors.e7.bits.UMP_NOT_ANSWER |= 1;
|
|
UMP_Ok = 0;
|
|
}
|
|
|
|
}
|
|
|
|
time_wait_rele_off_ump = 0;
|
|
time_wait_answer_off_ump = 0;
|
|
}
|
|
else
|
|
{
|
|
UMP_Ok = 0;
|
|
time_wait_rele_on_ump = 0;
|
|
time_wait_answer_on_ump = 0;
|
|
|
|
edrk.to_shema.bits.UMP_ON_OFF = 0;
|
|
|
|
|
|
if (pause_detect_error(&time_wait_answer_off_ump,TIME_WAIT_ANSWER_UMP_OFF,1)==0)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
if (edrk.from_shema.bits.UMP_ON_OFF==1)
|
|
edrk.errors.e7.bits.UMP_NOT_ANSWER |= 1;
|
|
}
|
|
|
|
|
|
if (prev_error!=edrk.summ_errors && edrk.summ_errors)
|
|
{
|
|
if (pause_detect_error(&time_wait_rele_off_ump,TIME_WAIT_RELE_UMP_OFF,1)==1)
|
|
time_wait_rele_off_ump = 0;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
prev_error = edrk.summ_errors;
|
|
|
|
return (UMP_Ok);
|
|
|
|
|
|
}
|
|
///////////////////////////////////////////////
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
#define TIME_WAIT_RELE_RASCEPITEL_ON 10 //2 sec
|
|
#define TIME_WAIT_RELE_RASCEPITEL_OFF 10 //2 sec
|
|
|
|
#define TIME_WAIT_ANSWER_RASCEPITEL_ON 100 //15 sec
|
|
#define TIME_WAIT_ANSWER_RASCEPITEL_ON_BS1 100 //15 sec
|
|
#define TIME_WAIT_ANSWER_RASCEPITEL_ON_BS2 150 //15 sec
|
|
#define TIME_WAIT_ANSWER_RASCEPITEL_OFF 100 //15 sec
|
|
|
|
#define TIME_WAIT_LEVEL_RASCEPITEL_ON_OFF 50 //5 sec
|
|
#define TIME_WAIT_LEVEL_RASCEPITEL_ON_OFF_BS1 50 //5 sec
|
|
#define TIME_WAIT_LEVEL_RASCEPITEL_ON_OFF_BS2 100 //7.5 sec
|
|
#define TIME_WAIT_PEREHOD_SOST_ON_OFF 100 //15 sec
|
|
|
|
|
|
///////////////////////////////////////////////
|
|
void rascepitel_on_off(unsigned int flag, int *status_perehod, int *status_on_off, int *final_status_on_off)
|
|
{
|
|
static unsigned int time_wait_rele_on=0;
|
|
static unsigned int time_wait_rele_off=0;
|
|
static unsigned int time_wait_answer_on=0;
|
|
static unsigned int time_wait_answer_off=0;
|
|
|
|
static unsigned int time_wait_level_on=0;
|
|
static unsigned int time_wait_level_off=0;
|
|
|
|
static unsigned int time_wait_perehod_sost=0;
|
|
|
|
|
|
|
|
int cmd_rele=0, r;//,cmd_p2=0;
|
|
static int Rele_Ok = 0, filter_sost_rascepitel = 0;
|
|
static int prev_error = 0, perehod_sost = 0, flag_wait_break_perehod_sost = 0, prev_cmd_rele = 0;
|
|
|
|
|
|
cmd_rele = 0;
|
|
// cmd_p2 = 0;
|
|
|
|
if ( flag==1 && edrk.errors.e6.bits.RASCEPITEL_ERROR_NOT_ANSWER == 0)
|
|
{
|
|
cmd_rele = 1;
|
|
}
|
|
else
|
|
{
|
|
cmd_rele = 0;
|
|
}
|
|
|
|
|
|
|
|
edrk.cmd_to_rascepitel = cmd_rele;
|
|
|
|
|
|
if (cmd_rele)
|
|
{
|
|
if (perehod_sost && cmd_rele!=prev_cmd_rele && flag_wait_break_perehod_sost==0)
|
|
{
|
|
|
|
flag_wait_break_perehod_sost = 1;
|
|
time_wait_perehod_sost = 0;
|
|
}
|
|
|
|
edrk.to_ing.bits.RASCEPITEL_OFF = 0;
|
|
|
|
if (flag_wait_break_perehod_sost)
|
|
{
|
|
if (pause_detect_error(&time_wait_perehod_sost,TIME_WAIT_PEREHOD_SOST_ON_OFF,1)==1)
|
|
flag_wait_break_perehod_sost = 0;
|
|
}
|
|
|
|
if (flag_wait_break_perehod_sost==0)
|
|
{
|
|
if ((pause_detect_error(&time_wait_rele_on,TIME_WAIT_RELE_RASCEPITEL_ON,1)==0)/* && edrk.from_ing1.bits.RASCEPITEL_ON==0*/)
|
|
{
|
|
perehod_sost = 1;
|
|
edrk.to_ing.bits.RASCEPITEL_ON = 1;
|
|
}
|
|
else
|
|
edrk.to_ing.bits.RASCEPITEL_ON = 0;
|
|
|
|
if (edrk.flag_second_PCH==0)
|
|
r = pause_detect_error(&time_wait_answer_on,TIME_WAIT_ANSWER_RASCEPITEL_ON_BS1,1);
|
|
else
|
|
if (edrk.flag_second_PCH==1)
|
|
r = pause_detect_error(&time_wait_answer_on,TIME_WAIT_ANSWER_RASCEPITEL_ON_BS2,1);
|
|
else
|
|
r = 0;
|
|
|
|
if (r==0)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
if (edrk.from_ing1.bits.RASCEPITEL_ON==1)
|
|
Rele_Ok = 1;
|
|
|
|
#if(RASCEPITEL_MANUAL_ALWAYS_ON==1)
|
|
Rele_Ok = 1;
|
|
#else
|
|
if (edrk.from_ing1.bits.RASCEPITEL_ON==0)
|
|
{
|
|
edrk.errors.e6.bits.RASCEPITEL_ERROR_NOT_ANSWER |= 1;
|
|
Rele_Ok = 0;
|
|
}
|
|
#endif
|
|
perehod_sost = 0;
|
|
}
|
|
|
|
time_wait_rele_off = 0;
|
|
time_wait_answer_off = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Rele_Ok = 0;
|
|
time_wait_rele_on = 0;
|
|
time_wait_answer_on = 0;
|
|
|
|
if (perehod_sost && cmd_rele!=prev_cmd_rele && flag_wait_break_perehod_sost==0)
|
|
{
|
|
flag_wait_break_perehod_sost = 1;
|
|
time_wait_perehod_sost = 0;
|
|
}
|
|
|
|
edrk.to_ing.bits.RASCEPITEL_ON = 0;
|
|
|
|
if (flag_wait_break_perehod_sost)
|
|
{
|
|
if (pause_detect_error(&time_wait_perehod_sost,TIME_WAIT_PEREHOD_SOST_ON_OFF,1)==1)
|
|
flag_wait_break_perehod_sost = 0;
|
|
}
|
|
|
|
if (flag_wait_break_perehod_sost==0)
|
|
{
|
|
|
|
if (pause_detect_error(&time_wait_rele_off,TIME_WAIT_RELE_RASCEPITEL_OFF,1)==0/* && edrk.from_ing1.bits.RASCEPITEL_ON==1*/)
|
|
{
|
|
edrk.to_ing.bits.RASCEPITEL_OFF = 1;
|
|
perehod_sost = 1;
|
|
}
|
|
else
|
|
edrk.to_ing.bits.RASCEPITEL_OFF = 0;
|
|
|
|
|
|
if (pause_detect_error(&time_wait_answer_off,TIME_WAIT_ANSWER_RASCEPITEL_OFF,1)==0)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
#if(RASCEPITEL_MANUAL_ALWAYS_ON==1)
|
|
|
|
#else
|
|
if (edrk.from_ing1.bits.RASCEPITEL_ON == 1)
|
|
edrk.errors.e6.bits.RASCEPITEL_ERROR_NOT_ANSWER |= 1;
|
|
#endif
|
|
perehod_sost = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// if (prev_error!=edrk.summ_errors && edrk.summ_errors)
|
|
// {
|
|
// if (pause_detect_error(&time_wait_rele_off,TIME_WAIT_RELE_RASCEPITEL_OFF,1)==1)
|
|
// time_wait_rele_off = 0;
|
|
// }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (edrk.from_ing1.bits.RASCEPITEL_ON==1)
|
|
{
|
|
time_wait_level_off = 0;
|
|
if (edrk.flag_second_PCH==0)
|
|
{
|
|
if (pause_detect_error(&time_wait_level_on,TIME_WAIT_LEVEL_RASCEPITEL_ON_OFF_BS1,1)==1)
|
|
filter_sost_rascepitel = 1;
|
|
}
|
|
else
|
|
{
|
|
if (pause_detect_error(&time_wait_level_on,TIME_WAIT_LEVEL_RASCEPITEL_ON_OFF_BS2,1)==1)
|
|
filter_sost_rascepitel = 1;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
time_wait_level_on = 0;
|
|
if (pause_detect_error(&time_wait_level_off,TIME_WAIT_LEVEL_RASCEPITEL_ON_OFF,1)==1)
|
|
filter_sost_rascepitel = 0;
|
|
}
|
|
|
|
prev_error = edrk.summ_errors;
|
|
prev_cmd_rele = cmd_rele;
|
|
|
|
|
|
*status_perehod = perehod_sost;
|
|
|
|
if (filter_sost_rascepitel && perehod_sost==0 )
|
|
*final_status_on_off = 1;
|
|
// *status_on_off = 1;
|
|
|
|
if (filter_sost_rascepitel==0 && perehod_sost==0 )
|
|
*final_status_on_off = 0;
|
|
|
|
*status_on_off = filter_sost_rascepitel;
|
|
|
|
// if (perehod_sost==1)
|
|
// *status_on_off = 2;
|
|
|
|
return;
|
|
|
|
}
|
|
///////////////////////////////////////////////
|
|
|
|
|
|
|
|
unsigned int sbor_shema(int mode)
|
|
{
|
|
|
|
|
|
|
|
|
|
// static unsigned int time_wait_sbor = 0;
|
|
static unsigned int time_wait_razbor = 0;
|
|
static unsigned int allow_discharge = 0, may_be_discharge=0;
|
|
int enable_sbor;
|
|
static unsigned int t1,t2, delta_t;
|
|
// static int Run_Pred_Zaryad;
|
|
|
|
|
|
enable_sbor = (edrk.zadanie.ZadanieU_Charge>10) && edrk.Status_Ready.bits.ready1;
|
|
|
|
if (mode && edrk.summ_errors==0 && enable_sbor==0)
|
|
{
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_DISABLE_SBOR |= 1;
|
|
// ðàçáîð
|
|
edrk.AutoStartPump = 0;
|
|
edrk.Sbor_Mode = 0;
|
|
edrk.Razbor_Mode = 0;
|
|
edrk.time_wait_sbor = 0;
|
|
time_wait_razbor = 0;
|
|
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.Zaryad_OK = 0;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Run_UMP = 0;
|
|
edrk.SborFinishOk = 0;
|
|
edrk.RunZahvatRascepitel = 0;
|
|
|
|
// edrk.Run_Rascepitel = 0;
|
|
|
|
edrk.Status_Sbor = 1;
|
|
return (edrk.Sbor_Mode);
|
|
}
|
|
|
|
// ñáîð ñõåìû
|
|
if (mode && edrk.summ_errors==0 && enable_sbor)
|
|
{
|
|
|
|
if (pause_detect_error(&edrk.time_wait_sbor,TIME_WAIT_SBOR,1))
|
|
{
|
|
// if (edrk.SborFinishOk==0)
|
|
edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
edrk.errors.e11.bits.ERROR_VERY_LONG_SBOR |= 1;
|
|
}
|
|
|
|
// ïóñê íàñîñà
|
|
t1 = 50;
|
|
delta_t = 300;//200;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_pusk_nasos(t1,t2);//250
|
|
|
|
t1 = t2;
|
|
delta_t = 700;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_pusk_zaryad(t1,t2);//950
|
|
|
|
t1 = t2;
|
|
delta_t = 350;//200
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_pusk_ump(t1,t2);//1150
|
|
|
|
t1 = t2+30; // æäåì 3 ñåê åùå
|
|
delta_t = 200;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_pusk_qtv(t1,t2);//1350
|
|
|
|
t1 = t2;
|
|
delta_t = 150;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_stop_ump(t1,t2);//1500
|
|
|
|
// åñëè äðóã ÁÑ íå ñîáðàí, òî ðàçðåøàåì ñâîå ïîäêëþ÷åíèå ðàñöåïèòåëÿ è ïåðåõîä íà tfinish
|
|
// èíà÷å äàåì çàïðîñ è æäåì îò tstart äî tfinish ðàçðåøåíèå íà ïîäêëþ÷åíèå ðàñöåïèòåëÿ è ñðàçó ðàçðåøàåì åãî ïîäêëþ÷åíèå
|
|
// â êîíöå äîëæåí þûòü ñèãíàë íà âêëþ÷åíèå ðàñöåïèòåëÿ èíà÷å îøèáêà!
|
|
t1 = t2;
|
|
delta_t = 250;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_rascepitel_level_1(t1,t2);//1750
|
|
|
|
// æäåì âêëþ÷åíèÿ ðàñöåïèòåëÿ äî tfinish
|
|
// èëè äî tfinish æäåì ïîäòâåðæäåíèÿ çàõâàòà
|
|
t1 = t2;
|
|
delta_t = 300;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_rascepitel_level_2(t1,t2);//2050
|
|
|
|
t1 = t2;
|
|
delta_t = 200;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_rascepitel_level_3(t1,t2);//2250
|
|
|
|
// íàø ðàñöåïèòåëü âêëþ÷èëñÿ, íî âòîðîé ÁÑ òîæå ñîáèðàåòñÿ, ïîýòîìó òóò æäåì ïîêà îí âêëþ÷èò ñâîé ðàñöåïèòåëü
|
|
// èíà÷å ñðàçó tfinish
|
|
t1 = t2;
|
|
delta_t = 300;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_rascepitel_level_4(t1,t2);//2550
|
|
|
|
// æäåì äî tfinish ïîäòâåðæäåíèÿ îêîí÷àíèÿ ñáîðà îò äðóãîãî ÁÑ
|
|
// åñëè íå äîæäàëèñü, òî îøèáêà
|
|
t1 = t2;
|
|
delta_t = 300;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_wait_ready_another(t1,t2);//2850
|
|
|
|
t1 = t2;
|
|
delta_t = 50;
|
|
t2 = t1 + delta_t;
|
|
sbor_shema_wait_finish(t1,t2);//2950
|
|
|
|
|
|
// if (edrk.Sbor_Mode == 0)
|
|
// {
|
|
// if (control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_PUMP]==0)
|
|
// edrk.AutoStartPump = 1;
|
|
// }
|
|
//
|
|
// // æäåì ïóñêà íàñîñà
|
|
// if (edrk.Sbor_Mode>50 && edrk.Sbor_Mode<250)
|
|
// {
|
|
// if (edrk.StatusPumpFanAll )
|
|
// {
|
|
// edrk.Sbor_Mode = 250;
|
|
// }
|
|
//
|
|
// // íàñîñ íå ïóñòèëñÿ
|
|
// if (edrk.Sbor_Mode>200 && edrk.StatusPumpFanAll==0)
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Status_Sbor = 2;
|
|
// edrk.AutoStartPump = 0;
|
|
// }
|
|
//
|
|
//
|
|
// }
|
|
//
|
|
|
|
// /////////////////////////////////////
|
|
// // çàïóñê çàðÿäà âíóòðåííåãî
|
|
// if (edrk.Sbor_Mode == 250)
|
|
// {
|
|
// if (control_station.active_array_cmd[CONTROL_STATION_CMD_ENABLE_ON_CHARGE]==1)
|
|
// edrk.Run_Pred_Zaryad = 1; // çàïóñê ïðåäçàðßäà!
|
|
// }
|
|
|
|
////
|
|
// if (edrk.Sbor_Mode>=250 && edrk.StatusPumpFanAll==0 && edrk.SumStartPump)
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Status_Sbor = 3;
|
|
//
|
|
// }
|
|
|
|
// // æäåì çàâåðøåíèÿ ðàáîòû ïðåäçàðÿäà
|
|
// // òóò ïðåäçàðßä äîëæåí óæå çàêîí÷èòü ðàáîòó
|
|
//
|
|
// if (edrk.Sbor_Mode>250 && edrk.Sbor_Mode<900 && (edrk.Status_Charge || (control_station.active_array_cmd[CONTROL_STATION_CMD_ENABLE_ON_CHARGE]==0))
|
|
// && edrk.from_ing1.bits.ZARYAD_ON==0 && edrk.StatusPumpFanAll)
|
|
// {
|
|
// edrk.Zaryad_OK = 1;
|
|
// edrk.Run_Pred_Zaryad = 0;
|
|
//
|
|
// edrk.Sbor_Mode = 900;
|
|
// }
|
|
//
|
|
//
|
|
// if (edrk.Sbor_Mode>850 && edrk.Zaryad_OK == 0)
|
|
// {
|
|
// edrk.Run_Pred_Zaryad = 0;
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Status_Sbor = 4;
|
|
// }
|
|
//
|
|
|
|
//// âêëþ÷àåì UMP
|
|
// if (edrk.Sbor_Mode==950 && edrk.Zaryad_OK == 1)
|
|
// {
|
|
// edrk.Run_UMP = 1;
|
|
// }
|
|
//
|
|
// if (edrk.Sbor_Mode>950 && edrk.Sbor_Mode>1250 && (edrk.Zaryad_OK == 1 && edrk.Status_UMP_Ok==1))
|
|
// {
|
|
// edrk.Sbor_Mode=1250;
|
|
// }
|
|
//
|
|
//
|
|
// if (edrk.Sbor_Mode>1300 && (edrk.Zaryad_OK == 0 || edrk.Status_UMP_Ok==0))
|
|
// {
|
|
// edrk.Run_UMP = 0;
|
|
// edrk.Run_Pred_Zaryad = 0;
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.errors.e7.bits.UMP_NOT_ANSWER |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// edrk.Status_Sbor = 9;
|
|
// }
|
|
|
|
|
|
|
|
////////////////
|
|
|
|
|
|
//
|
|
//
|
|
// if (edrk.Sbor_Mode==950 && edrk.Zaryad_OK == 1)
|
|
// {
|
|
//// if ()
|
|
// edrk.Run_QTV = 1;
|
|
// }
|
|
//
|
|
//
|
|
// if (edrk.Sbor_Mode>960 && edrk.Sbor_Mode<1110 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 ) )
|
|
// {
|
|
// edrk.Sbor_Mode = 1110;
|
|
// }
|
|
//
|
|
// if (edrk.Sbor_Mode>1100 && (edrk.Zaryad_OK == 0 || edrk.Status_QTV_Ok==0 ))
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// edrk.Status_Sbor = 5;
|
|
// }
|
|
|
|
|
|
// if (edrk.Sbor_Mode==1110 && edrk.Sbor_Mode<1250 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 ) && edrk.Status_Rascepitel_Ok==0)
|
|
// {
|
|
// // åñëè äðóãîé ÁÑ íå ñîáðàí, çàìûêàåì ðàñöåïèòåëü
|
|
// if (optical_read_data.data.cmd.bit.ready_cmd != CODE_READY_CMD_READY2 )
|
|
// {
|
|
// edrk.Run_Rascepitel = 1;
|
|
// edrk.Sbor_Mode = 1250; // ïåðåïðûãíóëè äàëüøå
|
|
// }
|
|
// else
|
|
// edrk.RunZahvatRascepitel = 1; // ïðîñèì äðóãîé ÁÑ ñáðîñèòü îáîðîòû è ðàçðåøèòü ïîäêëþ÷åíèå ðàñöåïèòåëÿ
|
|
// }
|
|
////
|
|
// if (edrk.Sbor_Mode>1120 && edrk.Sbor_Mode<1250 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
// && edrk.RunZahvatRascepitel && edrk.Status_Rascepitel_Ok==0 && edrk.Run_Rascepitel==0)
|
|
// {
|
|
// // åñëè äðóãîé ÁÑ íå ñîáðàí, çàìûêàåì ðàñöåïèòåëü
|
|
// // äðóãîé ÁÑ ñáðîñèë îáîðîòû åñëè îíè áûëè è ñíÿë ØÈÌ åñëè áûë
|
|
// if (optical_read_data.data.cmd.bit.rascepitel_cmd == CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
// {
|
|
// edrk.Run_Rascepitel = 1;
|
|
// edrk.Sbor_Mode = 1250; // ïåðåïðûãíóëè äàëüøå
|
|
//
|
|
// }
|
|
// }
|
|
|
|
// if (edrk.Sbor_Mode>1250 && edrk.Sbor_Mode<1350 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
// && edrk.Status_Rascepitel_Ok==1 && edrk.Run_Rascepitel==1)
|
|
// {
|
|
// // äîæäàëèñü âêëþ÷åíèÿ ðàñöåïèòåëÿ è ïðûãíóëè äàëüøå
|
|
// edrk.Sbor_Mode = 1350; // ïåðåïðûãíóëè äàëüøå
|
|
// }
|
|
//
|
|
////
|
|
// // ïî ñèãíàëó edrk.RunZahvatRascepitel äîëæåí òîò ÁÑ ñáðîñèòü îáîðîòû è ïîäòâåðäèòü âîçìîæíîñòü âêëþ÷åíèå ðàñöåïèòåëÿ
|
|
// if (edrk.Sbor_Mode>1320 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 )
|
|
// && edrk.RunZahvatRascepitel && edrk.Status_Rascepitel_Ok==0 && edrk.Run_Rascepitel==0)
|
|
// {
|
|
// //
|
|
//// if (optical_read_data.data.cmd.bit.rascepitel_cmd != CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
// {
|
|
// // íå äîæäàëèñü ïîäòâåðæäåíèÿ íà âêëþ÷åíèå ñâîåãî ðàñöåïèòåëÿ
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// edrk.Status_Sbor = 7;
|
|
// edrk.errors.e1.bits.NO_CONFIRM_ON_RASCEPITEL |= 1;
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
//// edrk.Run_Rascepitel = 0;
|
|
// }
|
|
// }
|
|
|
|
// // òóò æäåì âêëþ÷åíèÿ ðàñöåïèòåëÿ
|
|
// if (edrk.Sbor_Mode>1350 && edrk.Sbor_Mode<1490 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 ) && edrk.Status_Rascepitel_Ok==1)
|
|
// {
|
|
// // Ðàñöåïèòåëü âêëþ÷èëñÿ!
|
|
// // ìîæíî ïåðåïðûãèâàòü â êîíåö
|
|
// edrk.Sbor_Mode = 1490; // ïåðåïðûãíóëè äàëüøå
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
//
|
|
//// edrk.Run_Rascepitel = 1;
|
|
// }
|
|
//
|
|
//
|
|
//
|
|
//
|
|
//
|
|
// if (edrk.Sbor_Mode>=1490 && (edrk.Zaryad_OK == 0 || edrk.Status_QTV_Ok==0 || edrk.Status_Rascepitel_Ok==0))
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
//// edrk.Run_Rascepitel = 0;
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
// edrk.Status_Sbor = 6;
|
|
// }
|
|
//
|
|
|
|
// if (edrk.Sbor_Mode>1550 && edrk.Sbor_Mode<2000 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok))
|
|
// {
|
|
// if (optical_read_data.data.cmd.bit.ready_cmd==CODE_READY_CMD_READY1TO2) // òîò ÁÑ ñîáèðàåòñÿ åùå
|
|
// {
|
|
// // îæèäàåì äîñáîðà âòîðîãî ÁÑ
|
|
// // íî ðàñöåïèòåëü óæå âêëþ÷èëñÿ.
|
|
// if (optical_read_data.data.cmd.bit.rascepitel_cmd == CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON)
|
|
// edrk.Sbor_Mode = 2150; // ïåðåïðûãíóëè äàëüøå
|
|
//
|
|
// }
|
|
// else
|
|
// {
|
|
// edrk.Sbor_Mode = 2150; // ïåðåïðûãíóëè äàëüøå
|
|
//
|
|
// }
|
|
//
|
|
// }
|
|
|
|
//
|
|
// if (edrk.Sbor_Mode>2100 && edrk.Sbor_Mode<2150 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok))
|
|
// {
|
|
// if (optical_read_data.data.cmd.bit.ready_cmd==CODE_READY_CMD_READY1TO2) // òîò ÁÑ ñîáèðàåòñÿ åùå, íî ÷òî-òî äîëãî îí!
|
|
// {
|
|
// edrk.errors.e7.bits.ERROR_SBOR_SHEMA |= 1;
|
|
// edrk.errors.e1.bits.ANOTHER_BS_VERY_LONG_WAIT |= 1;
|
|
// edrk.Run_QTV = 0;
|
|
// // edrk.Run_Rascepitel = 0;
|
|
// edrk.RunZahvatRascepitel = 0;
|
|
// edrk.Status_Sbor = 8;
|
|
// }
|
|
// else
|
|
// {
|
|
// edrk.Sbor_Mode = 2150; // ïåðåïðûãíóëè äàëüøå
|
|
//
|
|
// }
|
|
//
|
|
//
|
|
// }
|
|
//
|
|
|
|
|
|
|
|
//
|
|
// if (edrk.Sbor_Mode>2150 && (edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok))
|
|
// {
|
|
// edrk.SborFinishOk = 1;
|
|
// // allow_discharge = 1;
|
|
// }
|
|
//
|
|
//
|
|
// if (edrk.Sbor_Mode>2200 && (edrk.SborFinishOk) )
|
|
// {
|
|
// time_wait_sbor = 0;
|
|
// }
|
|
// else
|
|
// edrk.Sbor_Mode++;
|
|
|
|
edrk.Razbor_Mode = 0;
|
|
edrk.RazborNotFinish = 0;
|
|
edrk.RunUnZahvatRascepitel = 0;
|
|
|
|
if (edrk.Zaryad_OK)
|
|
may_be_discharge = 1;
|
|
|
|
}
|
|
/////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////
|
|
// ðàçáîð ñõåìû
|
|
/////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////
|
|
else
|
|
{
|
|
// ðàçáîð ñõåìû
|
|
if (edrk.Razbor_Mode==0)
|
|
edrk.RazborNotFinish = 1;
|
|
|
|
if (edrk.Status_QTV_Ok==0 && edrk.Status_UMP_Ok==0 && may_be_discharge && edrk.Razbor_Mode>100)
|
|
{
|
|
allow_discharge = 1;
|
|
may_be_discharge = 0;
|
|
}
|
|
|
|
edrk.AutoStartPump = 0;
|
|
edrk.Sbor_Mode = 0;
|
|
edrk.time_wait_sbor = 0;
|
|
edrk.Zaryad_OK = 0;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Run_UMP = 0;
|
|
edrk.SborFinishOk = 0;
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.RunZahvatRascepitel = 0;
|
|
|
|
if (edrk.Razbor_Mode==10 && edrk.Status_QTV_Ok==1)
|
|
{
|
|
//
|
|
edrk.errors.e2.bits.ERROR_RAZBOR_SHEMA |= 1;
|
|
|
|
}
|
|
|
|
if (edrk.Run_Rascepitel && edrk.Razbor_Mode==20 && edrk.Status_QTV_Ok==0 && edrk.Status_Rascepitel_Ok==0)
|
|
{
|
|
// íà ðàñöåïèòåëü áûëà ïîäàíà êîìàíäà íà ñâåäåíèå, íî îí íå ñâåëñÿ ïî÷åìó-òî, íó è ëàäíî
|
|
edrk.Run_Rascepitel = 0;
|
|
edrk.Razbor_Mode=1000; // ïåðåïðûãíóëè â êîíåö ðàçáîðà
|
|
}
|
|
|
|
|
|
|
|
if (edrk.Run_Rascepitel && edrk.Razbor_Mode==30 && edrk.Status_QTV_Ok==0 && edrk.Status_Rascepitel_Ok==1)
|
|
{
|
|
// åñëè äðóãîé ÁÑ íå ñîáðàí, ðàçìûêàåì ðàñöåïèòåëü áåç âñÿêèõ çàïðîñîâ
|
|
if (optical_read_data.data.cmd.bit.ready_cmd != CODE_READY_CMD_READY2 )
|
|
edrk.Run_Rascepitel = 0;
|
|
else
|
|
edrk.RunUnZahvatRascepitel = 1; // ïðîñèì äðóãîé ÁÑ îñòàíîâèòüñÿ
|
|
}
|
|
|
|
|
|
|
|
if (edrk.Razbor_Mode>40 && edrk.Razbor_Mode<390 && (edrk.Status_QTV_Ok==0)
|
|
&& edrk.RunUnZahvatRascepitel && edrk.Status_Rascepitel_Ok==1)
|
|
{
|
|
// åñëè äðóãîé ÁÑ íå ñîáðàí, ðàçìûêàåì ðàñöåïèòåëü
|
|
// äðóãîé ÁÑ ñáðîñèë îáîðîòû åñëè îíè áûëè è ñíÿë ØÈÌ åñëè áûë
|
|
if (optical_read_data.data.cmd.bit.rascepitel_cmd == CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âûêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
{
|
|
edrk.Run_Rascepitel = 0;
|
|
edrk.RunUnZahvatRascepitel = 0;
|
|
edrk.Razbor_Mode = 390;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// åñëè ðàñöåïèòåëü îòêëþ÷åí, òî ñðàçó èäåì â êîíåö
|
|
if (edrk.Razbor_Mode>40 && edrk.Razbor_Mode<600 && (edrk.Status_QTV_Ok==0)
|
|
&& edrk.RunUnZahvatRascepitel==0 && edrk.Run_Rascepitel==0)
|
|
{
|
|
if (edrk.Status_Rascepitel_Ok == 0 )
|
|
{
|
|
edrk.Razbor_Mode = 600;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (edrk.Razbor_Mode>390 && (edrk.Status_QTV_Ok==0)
|
|
&& edrk.RunUnZahvatRascepitel && edrk.Status_Rascepitel_Ok==1 && edrk.Run_Rascepitel)
|
|
{
|
|
if (optical_read_data.data.cmd.bit.rascepitel_cmd != CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // íå äîæäàëèñü ïîòâåðæäåíèÿ âîçìîæíîñòè îòêëþ÷åíèÿ ðàñöåïèòåëÿ ñâîåãî
|
|
{
|
|
edrk.RunUnZahvatRascepitel = 0;
|
|
edrk.errors.e1.bits.NO_CONFIRM_ON_RASCEPITEL |= 1;
|
|
edrk.errors.e2.bits.ERROR_RAZBOR_SHEMA |= 1;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
// if (edrk.Razbor_Mode==400 && (edrk.Status_QTV_Ok==0)
|
|
// && edrk.RunUnZahvatRascepitel && edrk.Status_Rascepitel_Ok==1)
|
|
// {
|
|
// // åñëè äðóãîé ÁÑ íå ñîáðàí, ðàçìûêàåì ðàñöåïèòåëü
|
|
// // äðóãîé ÁÑ ñáðîñèë îáîðîòû åñëè îíè áûëè è ñíÿë ØÈÌ åñëè áûë
|
|
// if (optical_read_data.data.cmd.bit.rascepitel_cmd != CODE_RASCEPITEL_CMD_ENABLE_ON_AND_THIS_ON ) // 01 - ìîæíî âûêëþ÷àòü ðàñöåïèòåëü, ñâîé âêëþ÷åí
|
|
// {
|
|
//// edrk.Run_Rascepitel = 0;
|
|
// edrk.RunUnZahvatRascepitel = 0;
|
|
// edrk.errors.e1.bits.NO_CONFIRM_ON_RASCEPITEL |= 1;
|
|
// edrk.errors.e2.bits.ERROR_RAZBOR_SHEMA |= 1;
|
|
//
|
|
// }
|
|
// }
|
|
//
|
|
|
|
|
|
|
|
|
|
if (edrk.Razbor_Mode==600 && edrk.Status_QTV_Ok==0
|
|
&& edrk.Run_Rascepitel == 0
|
|
&& edrk.Status_Rascepitel_Ok==1 )
|
|
{
|
|
#if(RASCEPITEL_MANUAL_ALWAYS_ON==1)
|
|
|
|
#else
|
|
// ðàñöåïèòåëü íå îòêëþ÷èëñÿ!
|
|
if (edrk.Run_Rascepitel_from_RS==0) // è íåò ïðÿìîãî óïðàâëåíèÿ îò rs232?
|
|
{
|
|
edrk.errors.e6.bits.RASCEPITEL_ERROR_NOT_ANSWER |= 1;
|
|
edrk.errors.e2.bits.ERROR_RAZBOR_SHEMA |= 1;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
#if(RASCEPITEL_MANUAL_ALWAYS_ON==1)
|
|
|
|
edrk.RazborNotFinish = 0;
|
|
edrk.RunUnZahvatRascepitel = 0;
|
|
edrk.Razbor_Mode=650; // ïåðåïðûãíóëè â êîíåö ðàçáîðà
|
|
|
|
|
|
#else
|
|
|
|
// âñå îê, âñå îòêëþ÷èëîñü, ðàçáîð çàâåðøåí
|
|
if (edrk.Run_Rascepitel==0 && edrk.Razbor_Mode>20 && edrk.Status_QTV_Ok==0 && (edrk.Status_Rascepitel_Ok==0 || edrk.Run_Rascepitel_from_RS==1) )
|
|
{
|
|
edrk.RazborNotFinish = 0;
|
|
edrk.RunUnZahvatRascepitel = 0;
|
|
edrk.Razbor_Mode=650; // ïåðåïðûãíóëè â êîíåö ðàçáîðà
|
|
}
|
|
#endif
|
|
|
|
// edrk.Run_Rascepitel = 0;
|
|
|
|
if (edrk.Razbor_Mode>650)
|
|
{
|
|
time_wait_razbor = 0;
|
|
}
|
|
else
|
|
edrk.Razbor_Mode++;
|
|
|
|
}
|
|
|
|
|
|
if (edrk.errors.e7.bits.ERROR_SBOR_SHEMA)
|
|
{
|
|
// ðàçáîð
|
|
edrk.AutoStartPump = 0;
|
|
edrk.Sbor_Mode = 0;
|
|
edrk.Run_Pred_Zaryad = 0;
|
|
edrk.time_wait_sbor = 0;
|
|
edrk.Zaryad_OK = 0;
|
|
edrk.Run_QTV = 0;
|
|
edrk.Run_UMP = 0;
|
|
edrk.SborFinishOk = 0;
|
|
edrk.RunZahvatRascepitel = 0;
|
|
// edrk.Run_Rascepitel = 0; // îòêëþ÷àåì ðàñöåïèòåëü, õîòÿ âîçìîæíî è íåëüçÿ ýòî äåëàòü????
|
|
|
|
}
|
|
|
|
|
|
//////////////////////////////////////
|
|
//////////////////////////////////////
|
|
|
|
edrk.Status_Charge = zaryad_on_off(edrk.Run_Pred_Zaryad);
|
|
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_UMP]==1)
|
|
{
|
|
edrk.Status_UMP_Ok = edrk.Run_UMP;
|
|
edrk.Zaryad_UMP_Ok = 1;
|
|
edrk.to_shema.bits.UMP_ON_OFF = 0;
|
|
}
|
|
else
|
|
{
|
|
edrk.Status_UMP_Ok = ump_on_off(edrk.Run_UMP);
|
|
edrk.Zaryad_UMP_Ok = detect_zaryad_ump();
|
|
}
|
|
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_QTV]==1)
|
|
{
|
|
edrk.Status_QTV_Ok = edrk.Run_QTV;
|
|
edrk.to_shema.bits.QTV_ON_OFF = 0;
|
|
edrk.to_shema.bits.QTV_ON = 0;
|
|
}
|
|
else
|
|
edrk.Status_QTV_Ok = qtv_on_off(edrk.Run_QTV);
|
|
|
|
rascepitel_on_off ( edrk.Run_Rascepitel || edrk.Run_Rascepitel_from_RS,
|
|
&edrk.Status_Perehod_Rascepitel,
|
|
&edrk.Status_Rascepitel_Ok,
|
|
&edrk.Final_Status_Rascepitel
|
|
);
|
|
|
|
|
|
//////////////////////////////////////
|
|
//////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////
|
|
//////////////////////////////////////
|
|
|
|
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_MANUAL_DISCHARGE]==1 && edrk.SborFinishOk==0)
|
|
edrk.ManualDischarge = 1;
|
|
else
|
|
edrk.ManualDischarge = 0;
|
|
|
|
if (allow_discharge && edrk.SborFinishOk == 0)
|
|
{
|
|
edrk.Discharge = 1;
|
|
allow_discharge = 0;
|
|
}
|
|
|
|
|
|
if ( edrk.Zaryad_OK == 1 && edrk.Status_QTV_Ok==1 && edrk.Status_Rascepitel_Ok)
|
|
edrk.Status_Ready.bits.ready7 = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready7 = 0;
|
|
|
|
// if (edrk.StatusPumpFanAll)
|
|
// edrk.Status_Ready.bits.ready1 = 1;
|
|
// else
|
|
// edrk.Status_Ready.bits.ready1 = 0;
|
|
|
|
if (edrk.Run_Pred_Zaryad)
|
|
edrk.Status_Ready.bits.ready2 = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready2 = 0;
|
|
|
|
if (edrk.Zaryad_OK)
|
|
edrk.Status_Ready.bits.ready3 = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready3 = 0;
|
|
|
|
if (edrk.Status_QTV_Ok)
|
|
edrk.Status_Ready.bits.ready4 = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready4 = 0;
|
|
|
|
if (edrk.SborFinishOk || edrk.Status_Ready.bits.ImitationReady2==1)
|
|
edrk.Status_Ready.bits.ready5 = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready5 = 0;
|
|
|
|
if (edrk.ms.ready3 || edrk.ms.another_bs_maybe_on==0)
|
|
edrk.Status_Ready.bits.ready6 = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready6 = 0;
|
|
|
|
|
|
if (edrk.Status_Ready.bits.ready5==1 && edrk.Status_Ready.bits.ready6==1 && edrk.Status_Ready.bits.MasterSlaveActive)
|
|
edrk.Status_Ready.bits.ready_final = 1;
|
|
else
|
|
edrk.Status_Ready.bits.ready_final = 0;
|
|
|
|
return (edrk.Sbor_Mode);
|
|
}
|
|
|
|
|
|
|