88 lines
2.1 KiB
C++
88 lines
2.1 KiB
C++
|
|
/*
|
|||
|
|
* ManagedPiControlProcess.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD>. 2022 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_PROCESSING_ACS_MANAGEDPICONTROLPROCESS_HH_
|
|||
|
|
#define UMLIBRARY_PROCESSING_ACS_MANAGEDPICONTROLPROCESS_HH_
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "ControlSystemInterface.hh"
|
|||
|
|
|
|||
|
|
#include "../../systemic/ISignal.hh"
|
|||
|
|
#include "../../systemic/IStatus.hh"
|
|||
|
|
#include "../../systemic/IProcess.hh"
|
|||
|
|
#include "../../systemic/FlagStiker.hh"
|
|||
|
|
#include "../../systemic/ApplyParameter.hpp"
|
|||
|
|
#include "../../common/ShadowGuard.hh"
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "../../control/regulator/ManagedPiController.hh"
|
|||
|
|
|
|||
|
|
namespace processing { namespace acs {
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
class ManagedPiControlProcess : public ValueToValueUnitInterface, public systemic::IProcess {
|
|||
|
|
public:
|
|||
|
|
typedef control::regulator::ManagedPiController Regulator;
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
void set( TypeInput );
|
|||
|
|
TypeOutput get() const;
|
|||
|
|
void set_output( SetInterface * );
|
|||
|
|
|
|||
|
|
vector::ITechValue & getLimit();
|
|||
|
|
|
|||
|
|
void setSampleTime( float ts_in_second );
|
|||
|
|
void process();
|
|||
|
|
void reset();
|
|||
|
|
|
|||
|
|
void apply();
|
|||
|
|
|
|||
|
|
ManagedPiControlProcess( Regulator & regulator,
|
|||
|
|
systemic::ISignal & reset_value, systemic::IStatus & operate,
|
|||
|
|
systemic::Parameter<Regulator> params );
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
Regulator & regulator;
|
|||
|
|
systemic::ISignal & reset_value;
|
|||
|
|
systemic::IStatus & operate;
|
|||
|
|
|
|||
|
|
struct Limit : vector::ITechValue {
|
|||
|
|
|
|||
|
|
void set( float limit ) {
|
|||
|
|
regulator.setOutputLimit(limit);
|
|||
|
|
}
|
|||
|
|
float get() const {
|
|||
|
|
return regulator.getOutputLimit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Regulator & regulator;
|
|||
|
|
|
|||
|
|
Limit(Regulator & regulator) : regulator(regulator) {}
|
|||
|
|
|
|||
|
|
} limit;
|
|||
|
|
|
|||
|
|
bool need_reset;
|
|||
|
|
bool proc_enable;
|
|||
|
|
|
|||
|
|
bool isConnected() const;
|
|||
|
|
void do_reset();
|
|||
|
|
|
|||
|
|
SetInterface * output;
|
|||
|
|
|
|||
|
|
control::Value value_error; //!<<3C><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
control::Value value_output;
|
|||
|
|
|
|||
|
|
std::atomic_flag update_lock;
|
|||
|
|
systemic::ApplyParameter<Regulator> apply_params;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* UMLIBRARY_PROCESSING_ACS_MANAGEDPICONTROLPROCESS_HH_ */
|