/* * 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_ */