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++
79 lines
1.8 KiB
C++
5 months ago
|
/*
|
||
|
* 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 */
|