MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/Inverter.hh

70 lines
1.8 KiB
C++

/*
* Inverter.h
*
* Created on: 31 îêò. 2016 ã.
* Author: titov
*/
#ifndef SOURCE_DRIVER_INVERTER_H_
#define SOURCE_DRIVER_INVERTER_H_
#include "IInverter.hh"
#include "../peripheral/IPwm.hh"
#include "IDiscreteOutput.hh"
namespace driver {
class Inverter : public IInverter {
protected:
bool pulse_enable; //!< Ôëàã íåîáõîäèìîñòè âêëþ÷èòü èìïóëüñû.
bool pulse_release; //!< Ôëàã ñîñòîÿíèÿ èìïóëüñîâ.
bool disabled_u; //!< Ïðèçíàê îòêëþ÷åíèÿ ôàçû U.
bool disabled_v; //!< Ïðèçíàê îòêëþ÷åíèÿ ôàçû V.
bool disabled_w; //!< Ïðèçíàê îòêëþ÷åíèÿ ôàçû W.
peripheral::IPwm & phase_u; //!< Óïðàâëåíèå ôàçîé U.
peripheral::IPwm & phase_v; //!< Óïðàâëåíèå ôàçîé V.
peripheral::IPwm & phase_w; //!< Óïðàâëåíèå ôàçîé W.
driver::IDiscreteOutput & pulse_en;
float Tp; //!< Ïåðèîä öèêëà - åäèíèöà îòíîñèòåëüíîãî âðåìåíè.
float _Ta;
float _Tb;
float _Tc;
//! Ôóíêöèÿ ïåðåñ÷åòà îòíîñòåëüíîãî âðåìåíè â óñòàâêó ïîðîãà ñðàáàòûâàíèÿ ØÈÌ.
unsigned int TxToTreshold(float Tx) {
return (Tx * 0.5f + 0.5f) * Tp;
}
//!Ôóíêöèÿ ïðîâåðÿåò óñòàâêó âðåìåíè.
bool checkTime( float time ) {
return time <= 1.0f and time >= -1.0f;
}
public:
/*! Êîíñòðóêòîð îáúåêòà äðàéâåðà èíâåðòîðà.
* \param[in] u - Âûõîä ØÈÌ, ôàçà U.
* \param[in] u - Âûõîä ØÈÌ, ôàçà V.
* \param[in] u - Âûõîä ØÈÌ, ôàçà W.
*/
Inverter( peripheral::IPwm & u, peripheral::IPwm & v, peripheral::IPwm & w, driver::IDiscreteOutput & pulse );
void enPulse(); //!< \copydoc IInverter::enPulse()
void disPulse(); //!< \copydoc IInverter::disPulse()
void pwm(float Ta, float Tb, float Tc); //!< \copydoc IInverter::pwm(float, float, float)
const float & getTa() { return _Ta; }
const float & getTb() { return _Tb; }
const float & getTc() { return _Tc; }
const bool & isPulseEnable() { return pulse_release; }
};
}
#endif /* SOURCE_DRIVER_INVERTER_H_ */