79 lines
1.4 KiB
C++
79 lines
1.4 KiB
C++
/*
|
|
* PhaseSpaceLimit.hh
|
|
*
|
|
* Created on: 10 àâã. 2020 ã.
|
|
* Author: LeonidTitov
|
|
*/
|
|
|
|
#ifndef UMLIBRARY_PROCESSING_ACS_PHASESPACELIMIT_HH_
|
|
#define UMLIBRARY_PROCESSING_ACS_PHASESPACELIMIT_HH_
|
|
|
|
#include "ControlSystemInterface.hh"
|
|
|
|
#include "../../systemic/ISignal.hh"
|
|
|
|
namespace processing { namespace acs {
|
|
|
|
//!
|
|
class PhaseSpaceLimit : public PhaseSpaceToPhaseSpaceUnitInterface {
|
|
public:
|
|
void set( TypeInput );
|
|
TypeOutput get() const;
|
|
void set_output( SetInterface * );
|
|
|
|
void reset();
|
|
|
|
vector::ITechValue & getUpperLimit();
|
|
vector::ITechValue & getLowerLimit();
|
|
|
|
void apply();
|
|
|
|
const bool & valid_range() const;
|
|
const bool & is_limited() const;
|
|
|
|
struct Setting {
|
|
float upper_limit; //!<Âåðõíåå ïðåäíàñòðîåííîå îãðàíè÷åíèå.
|
|
float lower_limit; //!<Íèæíåå ïðåäñíàñòðîåííîå îãðàåíè÷åíèå.
|
|
|
|
bool isValid();
|
|
};
|
|
|
|
void configure( Setting & config );
|
|
|
|
PhaseSpaceLimit();
|
|
|
|
private:
|
|
|
|
bool range_valid;
|
|
bool limited_flag;
|
|
|
|
struct Limit : vector::ITechValue {
|
|
|
|
void set( float limit ) {
|
|
value = limit;
|
|
}
|
|
float get() const {
|
|
return value;
|
|
}
|
|
|
|
float value;
|
|
|
|
Limit() : value(0.0f) {}
|
|
} upper, lower;
|
|
|
|
float h_t;
|
|
float l_t;
|
|
|
|
bool isConnected() const;
|
|
|
|
SetInterface * output;
|
|
TypeOutput limited_value;
|
|
|
|
};
|
|
|
|
}}
|
|
|
|
|
|
|
|
#endif /* UMLIBRARY_PROCESSING_ACS_PHASESPACELIMIT_HH_ */
|