80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
|
|
/*
|
|||
|
|
* TorqueLimitation.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 29 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_PROCESSING_TORQUELIMITATION_HH_
|
|||
|
|
#define UMLIBRARY_PROCESSING_TORQUELIMITATION_HH_
|
|||
|
|
|
|||
|
|
#include "../systemic/ISignal.hh"
|
|||
|
|
#include "../systemic/IProcess.hh"
|
|||
|
|
|
|||
|
|
#include "acs/VectorAsyncInterface.hh"
|
|||
|
|
|
|||
|
|
namespace processing {
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
class TorqueLimitation : public systemic::IProcess, public vector::ITechValue {
|
|||
|
|
public:
|
|||
|
|
struct Setting {
|
|||
|
|
float max_torque; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
float overload_coefficient; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
float positive_force_offset_k; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
float positive_force_offset_b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
float negative_force_offset_k; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
float negative_force_offset_b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
bool isValid();
|
|||
|
|
Setting();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
void configure( const Setting & setting );
|
|||
|
|
|
|||
|
|
void process();
|
|||
|
|
void setSampleTime( float ts_in_second );
|
|||
|
|
|
|||
|
|
void set( control::Value );
|
|||
|
|
control::Value get() const;
|
|||
|
|
|
|||
|
|
TorqueLimitation( vector::ITechValue & up_limit, vector::ITechValue & down_limit,
|
|||
|
|
systemic::ISignal & friction, systemic::ISignal & dynamic_torque, systemic::ISignal & load );
|
|||
|
|
|
|||
|
|
const float & getActualUpLimit() const;
|
|||
|
|
const float & getActualDownLimit() const;
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
vector::ITechValue & torque_up_limit;
|
|||
|
|
vector::ITechValue & torque_down_limit;
|
|||
|
|
|
|||
|
|
systemic::ISignal & friction;
|
|||
|
|
systemic::ISignal & dynamic_torque;
|
|||
|
|
systemic::ISignal & load;
|
|||
|
|
|
|||
|
|
float demand_limit;
|
|||
|
|
float actual_up_limit;
|
|||
|
|
float actual_down_limit;
|
|||
|
|
|
|||
|
|
float lim_act_up;
|
|||
|
|
float lim_act_down;
|
|||
|
|
|
|||
|
|
float torque_lim_act_up;
|
|||
|
|
float torque_lim_act_down;
|
|||
|
|
|
|||
|
|
float _max_torque;
|
|||
|
|
float _K;
|
|||
|
|
float _Kp1;
|
|||
|
|
float _OffsetUp_k;
|
|||
|
|
float _OffsetUp_b;
|
|||
|
|
float _OffsetDown_k;
|
|||
|
|
float _OffsetDown_b;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* UMLIBRARY_PROCESSING_TORQUELIMITATION_HH_ */
|