67 lines
1.5 KiB
C++
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_ */
|