You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.8 KiB
C++

/*
* AlgoritmOff.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/AlgorithmOff.h"
namespace SYSCTRL
{
//CONSTRUCTOR
AlgorithmOff::AlgorithmOff(SYSCTRL::SystemEnvironment& env):
SYSCTRL::AlgorithmBase(),
m_env(env),
_execute(&SYSCTRL::AlgorithmOff::_execute_undef)
//
{}//CONSTRUCTOR
//
void AlgorithmOff::setup()
{
_execute = &SYSCTRL::AlgorithmOff::_execute_run;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void AlgorithmOff::reset()
{}//
//
#pragma CODE_SECTION("ramfuncs");
void AlgorithmOff::execute()
{
(this->*_execute)();
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void AlgorithmOff::_execute_run()
{
static bool _high_level = true;
_high_level = true;
if(m_env.system_reset.boolbit.b0)
{
m_env.hardware.ref_control_order = ORDER_RESET;
//
}
else
{
for(Uint16 cellnum = 0; cellnum < m_env.hardware.level; cellnum++)
{
_high_level &= m_env.hardware.hvcell.dc_voltage[0][cellnum] > m_env.hardware.dc_voltage_low_level ? true : false;
_high_level &= m_env.hardware.hvcell.dc_voltage[1][cellnum] > m_env.hardware.dc_voltage_low_level ? true : false;
_high_level &= m_env.hardware.hvcell.dc_voltage[2][cellnum] > m_env.hardware.dc_voltage_low_level ? true : false;
//
}//for
//
if(!_high_level & m_env.hardware.low_level())
{
m_env.hardware.ref_control_order = ORDER_RESET;
m_env.hardware.fault_low_level = false;
}
else
{
m_env.hardware.ref_control_order = ORDER_START;
}
//
}//if else
//
m_voltage_a = FP_ZERO;
m_voltage_b = FP_ZERO;
m_voltage_c = FP_ZERO;
//
}//
//
} /* namespace SYSCTRL */