46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
|
|
/*!\file
|
|||
|
|
* \brief \todo Описание файла.
|
|||
|
|
*/
|
|||
|
|
/*
|
|||
|
|
* InverterSync.cpp
|
|||
|
|
*
|
|||
|
|
* Created on: 19 июн. 2019 г.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "InverterSync.hh"
|
|||
|
|
|
|||
|
|
driver::InverterSync::InverterSync(peripheral::IPwm & u, peripheral::IPwm & v,
|
|||
|
|
peripheral::IPwm & w,
|
|||
|
|
driver::IDiscreteOutput & pulse) : Inverter( u, v, w, pulse ) {}
|
|||
|
|
|
|||
|
|
void driver::InverterSync::pwm( float Ta, float Tb, float Tc ) {
|
|||
|
|
|
|||
|
|
if( checkTime( Ta ) and checkTime( Tb ) and checkTime( Tc ) ) {
|
|||
|
|
|
|||
|
|
//core::CriticalSection cs_0;
|
|||
|
|
|
|||
|
|
phase_u.setThreshold( TxToTreshold( _Ta = Ta ) );
|
|||
|
|
phase_v.setThreshold( TxToTreshold( _Tb = Tb ) );
|
|||
|
|
phase_w.setThreshold( TxToTreshold( _Tc = Tc ) );
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
phase_u.setThreshold( TxToTreshold( _Ta = 0 ) );
|
|||
|
|
phase_v.setThreshold( TxToTreshold( _Tb = 0 ) );
|
|||
|
|
phase_w.setThreshold( TxToTreshold( _Tc = 0 ) );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( pulse_enable ) { // Если необходимо включить импульсы,
|
|||
|
|
|
|||
|
|
phase_u.enableOutput(); // то включаем импульсы, так как
|
|||
|
|
phase_v.enableOutput(); // новая правильная уставка уже записана.
|
|||
|
|
phase_w.enableOutput();
|
|||
|
|
|
|||
|
|
pulse_enable = false; // Оставляем флаг что не нужно включать импульсы.
|
|||
|
|
pulse_release = true; // Оставляем флаг что импульсы уже включены.
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|