MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/processing/acs/RampGenerationProcess.hh
2024-06-07 11:12:56 +03:00

68 lines
1.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* RampGenerationProcess.hh
*
* Created on: 31 мая 2020 г.
* Author: LeonidTitov
*/
#ifndef UMLIBRARY_PROCESSING_ACS_RAMPGENERATIONPROCESS_HH_
#define UMLIBRARY_PROCESSING_ACS_RAMPGENERATIONPROCESS_HH_
#include "ControlSystemInterface.hh"
#include "../../systemic/ISignal.hh"
#include "../../systemic/IProcess.hh"
#include "../../common/ShadowGuard.hh"
#include "../../control/generator/Generator_1stOrder.hh"
namespace processing { namespace acs {
//!Процесс построения задания, с ограничением первой производной.
class RampGeneration1stOrderProcess : public PhaseSpaceToPhaseSpaceUnitInterface, public systemic::IProcess {
public:
typedef ::control::generator::Generator_1stOrder Generator;
vector::ITechValue & getDerivativeLimit();
void set( TypeInput );
TypeOutput get() const;
void set_output( SetInterface * );
void setSampleTime( float ts_in_second );
void process();
void reset();
RampGeneration1stOrderProcess( Generator & generator, systemic::ISignal & value );
bool isConnected() const { return output; }
private:
systemic::ISignal & value;
Generator & generator;
SetInterface * output;
TypeInput trajectory;
ShadowGuard< control::PhaseSpaceValue > setpoint; //!<Целевое значение.
struct DerivativeLimit : public vector::ITechValue {
void set( float limit );
float get() const;
Generator & generator;
DerivativeLimit( Generator & gen ) : generator(gen) {}
} limit;
bool proc_enable;
};
}}
#endif /* UMLIBRARY_PROCESSING_ACS_RAMPGENERATIONPROCESS_HH_ */