MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/processing/acs/RampGenerationProcess.cpp

85 lines
1.8 KiB
C++

/*
* 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();
}