85 lines
1.8 KiB
C++
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();
|
||
|
||
}
|