/* * 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_ */