/* * EstimateInductance.hh * * Created on: 23 июн. 2021 г. * Author: titov */ #ifndef UMLIBRARY_TECHNOLOGICAL_COMMISSIONING_ESTIMATEINDUCTANCE_HH_ #define UMLIBRARY_TECHNOLOGICAL_COMMISSIONING_ESTIMATEINDUCTANCE_HH_ #include "../../control/Vector.hh" #include "../../units/PhysicalQuantities.hpp" #include "../../units/LogicalEntities.hpp" #include #include #include namespace technological { namespace commissioning { class EstimateInductance { public: EstimateInductance( std::pmr::memory_resource * buffer ); void setup( units::ElectricalAngle angle, control::Value current_limit, control::Value voltage_limit, control::Value voltage_step, units::Quantity impulse_width, units::Quantity relax_width, units::Quantity experiment_quantity, control::Value voltage_min ); control::StandingVector execute( control::StandingVector current ); bool done() const; units::Inductance estimate( units::Quantity pwm_delay, units::Resistance resistance, units::Time cycle_time ) const; private: units::Quantity experiment_number; units::Quantity experiment_quantity; units::Quantity impulse_cycle_number; units::Quantity impulse_width; units::Quantity relax_cycle_number; units::Quantity relax_width; control::Value target_current_on_experiment( units::Quantity experiment_number ); units::ElectricalAngle angle; control::Value current_limit; control::Value voltage_limit; control::Value voltage_demand; control::Value voltage_step; control::Value voltage_min; //!<Минимальное напряжение, с которого данные будут использоваться в расчете. typedef std::pair Point; typedef std::vector< Point, std::pmr::polymorphic_allocator > Points; Points points; }; }} #endif /* UMLIBRARY_TECHNOLOGICAL_COMMISSIONING_ESTIMATEINDUCTANCE_HH_ */