/* * RampGenerationProcess.cpp * * Created on: 31 мая 2020 г. * Author: LeonidTitov */ #include "RampGenerationProcess.hh" vector::ITechValue & processing::acs::RampGeneration1stOrderProcess::getDerivativeLimit() { return limit; } void processing::acs::RampGeneration1stOrderProcess::set( TypeInput phase_space ) { setpoint = phase_space; if( isConnected() ) proc_enable = true; } processing::acs::RampGeneration1stOrderProcess::TypeOutput processing::acs::RampGeneration1stOrderProcess::get() const { return trajectory; } void processing::acs::RampGeneration1stOrderProcess::set_output( SetInterface * new_output ) { if( not new_output ) proc_enable = false; output = new_output; } void processing::acs::RampGeneration1stOrderProcess::reset() { generator.setCurrentPoint( value ); } void processing::acs::RampGeneration1stOrderProcess::setSampleTime( float ts_in_second ) { generator.setTime( ts_in_second ); } void processing::acs::RampGeneration1stOrderProcess::process() { if( not proc_enable ) return; setpoint.update(); trajectory = generator.update( setpoint.value ); trajectory.d_value += setpoint.d_value; output->set( trajectory ); } processing::acs::RampGeneration1stOrderProcess::RampGeneration1stOrderProcess( Generator & generator, systemic::ISignal & value ) : generator(generator), value(value), limit(generator), output(nullptr), trajectory( 0.0f, 0.0f ), setpoint( TypeInput(0.0f, 0.0f) ), proc_enable(false) {} void processing::acs::RampGeneration1stOrderProcess::DerivativeLimit::set( float limit ) { generator.setDerivativeLimit(limit); } float processing::acs::RampGeneration1stOrderProcess::DerivativeLimit::get() const { return generator.getDerivativeLimit(); }