68 lines
1.6 KiB
C++
68 lines
1.6 KiB
C++
/*
|
|
* 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_ */
|