MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/processing/LoadEstimation.hh
2024-06-07 11:12:56 +03:00

67 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */