MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/technological/function/MoveToPointWithTimeout.hh

56 lines
1.5 KiB
C++

/*
* MoveToPointWithTimeout.hh
*
* Created on: 8 èþë. 2020 ã.
* Author: LeonidTitov
*/
#ifndef UMLIBRARY_TECHNOLOGICAL_FUNCTION_MOVETOPOINTWITHTIMEOUT_HH_
#define UMLIBRARY_TECHNOLOGICAL_FUNCTION_MOVETOPOINTWITHTIMEOUT_HH_
#include "MoveToPoint.hh"
namespace technological { namespace function {
class MoveToPointWithTimeout : public MoveToPoint {
public:
struct Setting {
float retention_accuracy; //!<Òî÷íîñòü äîñòèæåíèÿ ïîçèöèè.
float on_position_timeout; //!<Âðåìÿ óäåðæàíèÿ çàäàííîãî ïîëîæåíèÿ, ñ.
float permit_speed_factor; //!<Äîïóñòèìàÿ ñêîðîñòü, îòí.
float permit_time; //!<Äîïóñòèìîå âðåìÿ, â ñåêóíäàõ.
Setting();
bool isValid();
};
void configure( Setting & config );
short getState() const;
void stop();
MoveToPointWithTimeout( ResourceKeeper< technological::adapter::TieInterface<vector::ITechValue> > & control_system_wrapper,
ResourceKeeper<vector::ITechValue> & speed_limit,
ResourceKeeper<vector::ITechValue> & torque_limit,
ResourceKeeper<vector::ITechValue> & acc_limit
);
protected:
virtual void on_start( Input & input, float start_point, systemic::time_t on_position_timeout );
virtual void in_progress();
private:
systemic::Timer compite_timer;
float permit_speed_factor;
float permit_time;
bool move_failure;
};
}}
#endif /* UMLIBRARY_TECHNOLOGICAL_FUNCTION_MOVETOPOINTWITHTIMEOUT_HH_ */