MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/processing/LoadEstimation.hh

67 lines
1.5 KiB
C++

/*
* LoadEstimation.hh
*
* Created on: 29 äåê. 2020 ã.
* Author: titov
*/
#ifndef UMLIBRARY_PROCESSING_LOADESTIMATION_HH_
#define UMLIBRARY_PROCESSING_LOADESTIMATION_HH_
#include "../systemic/ISignal.hh"
#include "../systemic/IProcess.hh"
namespace processing {
//!Ìîäóëü îñóùåñòâëÿåò îöåíêó ìîìåíòà íàãðóçêè íà âàëó íà îñíîâå ðåøåíèÿ êèíåìàòè÷åñêîãî óðàâíåíèÿ.
/*!Îöåíêà ìîìåíòà íàãðóçêè íà âàëó îñóùåòñâëÿåòñÿ ïóòåì ïîñòðîåíèÿ íàáëþäàòåëÿ ñèñòåìû:
* W[n] = W[n-1] + (T[n] - L[n]) * dT / J, ãäå
* W - óãëîâàÿ ñêîðîñòü,
* T - ìîìåíò äâèãàòåëÿ,
* L - ìîìåíò íàãðóçêè.
*/
class LoadEstimation : public systemic::IProcess {
public:
struct Setting {
float L1; //!<Êîýôôèöèåíò ñëåäÿùåé ñèñòåìû, êîððåêöèÿ ìîìåíòà.
float L2; //!<Êîýôôèöèåíò ñëåäÿùåé ñèñòåìû, êîððåêöèÿ ñêîðîñòè.
float Jp; //!<Ïðèâåäåííûé ìîìåíò èíåðöèè, êã*ì^2.
bool isValid();
Setting();
};
void configure( const Setting & setting );
void process();
void setSampleTime( float ts_in_second );
const float & getEstimatedLoad() const;
const float & getEstimatedSpeed() const;
LoadEstimation( systemic::ISignal & speed, systemic::ISignal & torque );
private:
float _Ts;
//Íàñòðîéêè íàáëþäàòåëÿ ïîçèöèè.
float _L1Base;
float _L2Base;
float _Base_J;
float _L1Ts;
float _L2Ts;
float _Ts_J;
systemic::ISignal & speed;
systemic::ISignal & torque;
float est_speed;
float est_load;
};
}
#endif /* UMLIBRARY_PROCESSING_LOADESTIMATION_HH_ */