80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
/*
|
|
* TorqueLimitation.hh
|
|
*
|
|
* Created on: 29 äåê. 2020 ã.
|
|
* 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 {
|
|
|
|
//!Ìîäóëü îãðàíè÷èâàåò ìîìåíò äâèãàòåëÿ äëÿ îáåñïå÷åíèÿ îãðàíè÷åíèÿ óñèëèÿ íà øòîêå.
|
|
class TorqueLimitation : public systemic::IProcess, public vector::ITechValue {
|
|
public:
|
|
struct Setting {
|
|
float max_torque; //!<Ìàêñèìàëüíîå çàäàâàåìîå îãðàíè÷åíèå óñèëèÿ.
|
|
float overload_coefficient; //!<Êîýôôèöèåíò ïåðåãðóçêè.
|
|
float positive_force_offset_k; //!<Ñìåùåíèå ïîëîæèòåëüíîãî óñèëèÿ, ìóëüòèïëèêàòèâíûé êîýôôèöèåíò.
|
|
float positive_force_offset_b; //!<Ñìåùåíèå ïîëîæèòåëüíîãî óñèëèÿ, àääèòèâíûé êîýôôèöèåíò.
|
|
float negative_force_offset_k; //!<Ñìåùåíèå îòðèöàòåëüíîãî óñèëèÿ, ìóëüòèïëèêàòèâíûé êîýôôèöèåíò.
|
|
float negative_force_offset_b; //!<Ñìåùåíèå îòðèöàòåëüíîãî óñèëèÿ, àääèòèâíûé êîýôôèöèåíò.
|
|
|
|
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_ */
|