/* * CELL.cpp * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "SYSCTRL/HVCELL.h" namespace SYSCTRL { HVCELL::HVCELL(): m_mode(SYSCTRL::HVCELL::UNDEFINED), m_control_order(ORDER_STOP), //m_switching_freq(SWITCHING_FREQ_2500), m_cell_level(0), m_cell_error(0), m_pwm_version(), m_cell_state(), m_cell_dc_voltage(), m_cell_version(), m_cpu_cpld_version(0), m_data_u(FP_ZERO), m_data_v(FP_ZERO), m_data_w(FP_ZERO), // m_dc_voltage_a(FP_ZERO), m_dc_voltage_b(FP_ZERO), m_dc_voltage_c(FP_ZERO), // m_fault_cell(false), m_cell_error_fault(0), m_cell_state_fault(), // p_send_syn_signal(&SYSCTRL::HVCELL::_empty), p_send_control_order(&SYSCTRL::HVCELL::_empty), p_set_cell_level(&SYSCTRL::HVCELL::_empty), p_get_pwm_version(&SYSCTRL::HVCELL::_empty), p_get_cell_state(&SYSCTRL::HVCELL::_empty), p_get_cell_dc_voltage(&SYSCTRL::HVCELL::_empty), p_get_cell_version(&SYSCTRL::HVCELL::_empty), p_send_modulate_data(&SYSCTRL::HVCELL::_empty), p_get_cpu_cpld_version(&SYSCTRL::HVCELL::_empty) {} #pragma CODE_SECTION("ramfuncs"); void HVCELL::configure(HVCELLConfiguration& config) { static bool status = true; if(m_mode == SYSCTRL::HVCELL::UNDEFINED) { m_cell_level = config.cell_level; //m_switching_freq = config.switching_freq; status &= (m_cell_level >= 1)&&(m_cell_level <= 8) ? true : false; if(status) { m_mode = SYSCTRL::HVCELL::OPERATIONAL; // p_send_syn_signal = &SYSCTRL::HVCELL::_send_syn_signal; p_send_control_order = &SYSCTRL::HVCELL::_send_control_order; p_set_cell_level = &SYSCTRL::HVCELL::_set_cell_level; p_get_pwm_version = &SYSCTRL::HVCELL::_get_pwm_version; p_get_cell_state = &SYSCTRL::HVCELL::_get_cell_state; p_get_cell_dc_voltage = &SYSCTRL::HVCELL::_get_cell_dc_voltage; p_get_cell_version = &SYSCTRL::HVCELL::_get_cell_version; p_send_modulate_data = &SYSCTRL::HVCELL::_send_modulate_data; p_get_cpu_cpld_version = &SYSCTRL::HVCELL::_get_cpu_cpld_version; // }//if // }//if // }//configure() // #pragma CODE_SECTION("ramfuncs"); SYSCTRL::HVCELL::mode_t HVCELL::get_mode() { return m_mode; // }//get_mode() // #pragma CODE_SECTION("ramfuncs"); bool HVCELL::compare(SYSCTRL::HVCELL::mode_t mode) { return m_mode == mode; // }//compare() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::send_syn_signal() { (this->*p_send_syn_signal)(); // }//send_syn_signal() #pragma CODE_SECTION("ramfuncs"); void HVCELL::_send_syn_signal() { sendSynSignal(); // }//_send_syn_signal() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::send_control_order() { (this->*p_send_control_order)(); // }//send_control_order_start() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_send_control_order() { sendControlOrder(m_control_order); // }//_send_control_order() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::set_cell_level() { (this->*p_set_cell_level)(); // }//set_cell_level() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_set_cell_level() { //m_cell_error = setCellLevel(m_cell_level, m_switching_freq); m_cell_error = setCellLevel(m_cell_level); // }//_set_cell_level() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::get_pwm_version() { (this->*p_get_pwm_version)(); // }//get_pwm_version() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_get_pwm_version() { getPwmVersion(m_pwm_version); // }//_get_pwm_version() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::get_cell_state() { (this->*p_get_cell_state)(); // }//get_cell_state() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_get_cell_state() { getCellState(m_cell_level, m_cell_state); // }//_get_cell_state() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::get_cell_dc_voltage() { (this->*p_get_cell_dc_voltage)(); // }//get_cell_dc_voltage() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_get_cell_dc_voltage() { static float aux_a, aux_b, aux_c; getCellDCVoltage(m_cell_level, m_cell_dc_voltage); aux_a = FP_ZERO; aux_b = FP_ZERO; aux_c = FP_ZERO; // for(Uint16 cellnum = 0; cellnum < m_cell_level; cellnum++) { aux_a += m_cell_dc_voltage[0][cellnum]; aux_b += m_cell_dc_voltage[1][cellnum]; aux_c += m_cell_dc_voltage[2][cellnum]; // }//for // m_dc_voltage_a = aux_a; m_dc_voltage_b = aux_b; m_dc_voltage_c = aux_c; // }//_get_cell_dc_voltage() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::get_cell_version() { (this->*p_get_cell_version)(); // }//get_cell_version() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_get_cell_version() { getCellVersion(m_cell_level, m_cell_version); // }//get_cell_version() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::send_modulate_data() { (this->*p_send_modulate_data)(); // }//send_modulate_data() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_send_modulate_data() { //sendModulateData(m_data_u, m_data_v, m_data_w, m_switching_freq); sendModulateData(m_data_u, m_data_v, m_data_w); // }//_send_modulate_data() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::get_cpu_cpld_version() { (this->*p_get_cpu_cpld_version)(); // }//get_cpu_cpld_version() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_get_cpu_cpld_version() { m_cpu_cpld_version = getCpuCpldVersion(); // }//_get_cpu_cpld_version() // #pragma CODE_SECTION("ramfuncs"); void HVCELL::_empty() {}//_empty() // } /* namespace SYSCTRL */