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