MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/technological/commissioning/EstimateInductance.hh

61 lines
1.9 KiB
C++

/*
* 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 <algorithm>
#include <vector>
#include <memory_resource>
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<control::StandingVector, control::StandingVector> Point;
typedef std::vector< Point, std::pmr::polymorphic_allocator<Point> > Points;
Points points;
};
}}
#endif /* UMLIBRARY_TECHNOLOGICAL_COMMISSIONING_ESTIMATEINDUCTANCE_HH_ */