ifw-fcf 6.0.0
Loading...
Searching...
No Matches
maxisLcsIf.hpp
Go to the documentation of this file.
1
9#ifndef FCF_DEVMGR_DEVICE_MAXIS_IF_HPP
10#define FCF_DEVMGR_DEVICE_MAXIS_IF_HPP
11
12#include <unordered_map>
13
14#include <yaml-cpp/yaml.h>
18
19namespace fcf::devmgr::maxis {
20
21using VectorAttributes = std::vector <std::pair<std::string, unsigned int>>;
30 public:
32 virtual ~MAxisControllerData();
33
34 void SetData(const MAxisControllerData& data);
35
36 inline virtual std::string GetErrorText() const;
37 inline virtual std::string GetSubstateStr() const;
38 inline short GetTrackingMode() const;
39 inline void SetTrackingMode(short mode);
40 inline double GetTrackOffset() const;
41 inline void SetTrackOffset(double offset);
42 inline fcf::devmgr::motor::MotorControllerData GetMotor(std::string motor) const;
43 inline void ClearMotors();
44 inline void AddMotor(const std::string motor,
46 inline void GetMotorNames(std::vector<std::string>& motor_vector);
47
48 protected:
50 double m_track_offset {0.0};
51 std::map<std::string, fcf::devmgr::motor::MotorControllerData> m_motors;
52 };
53
68
69 // enumerations for MAxis status
70 enum {
71 STAT_LOCAL = 100,
72 STAT_ERROR = 101,
73 STAT_STATE = 102,
74 STAT_SUBSTATE = 103,
75 STAT_TRACK_MODE = 104
76 };
77
78 public:
87 MAxisLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
89
93 virtual ~MAxisLcsIf() {};
94
103 virtual void InitObject();
104
110 virtual void Init();
111
118 void MoveAbs(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
119
126 void MoveRel(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
127
133 void MoveEncAbs(int axis_id, long int encoders);
134
140 void MoveEncRel(int axis_id, long int encoders);
141
151 void MoveVel(int axis_id, double velocity);
152
157 void MoveAngle(const double& angle, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
158
165 void StartTrack(short mode, double angle);
166
170 void StopTrack();
171
176 bool IsMoving() const;
177
183 bool IsInPosition(const int axis = -1) const;
184
189 bool IsStandstill() const;
190
196 void TrackOffset(double offset, ::fcfif::MotorPosUnit unit);
197
202 bool IsTracking() const;
203
210
216 virtual void ReadStatus(MAxisControllerData& status);
217
229 void Listener(protocol::base::VectorVariant& params);
230
236 virtual std::string GetRpcError(const short error_code) const;
237
245 std::string GetMotorMapValue(std::string motor, std::string category, std::string key);
246
253 std::optional<double> GetTargetInUserUnits(int axis_id, double value);
254
261 void UpdateTargetPosition(int axis_id, double position, std::string move_type);
262
268 virtual void AddCustomAttributes();
269
270 protected:
271
277
278 private:
279
280
288 void StoreMotorPosition(const std::string nodeid_prefix,
289 const protocol::base::Variant& value,
290 int attribute);
291
292 void StoreMotorAttribute(const std::string nodeid_prefix,
293 const protocol::base::Variant& value,
294 int attribute);
295
296 void MovePos(int axis_id, double position, double velocity,
297 std::string move_type=fcf::devmgr::motor::RPC_MOVE_ABS);
298
299 std::pair<std::string, std::string> GetObjectInfo(const std::string& map_value) const;
300
301 protected:
303 std::vector<std::string> m_monitor_track_vector;
304 //std::map<std::string, int> m_motor_index;
308 std::unique_ptr<elt::configng::CiiConfigDocument> m_motor_map_doc;
309 short m_track_mode {};
310
311 std::map<std::string, fcf::devmgr::motor::MotorControllerData> m_motors_status;
312
313 private:
314 log4cplus::Logger m_logger;
315 };
316
317}
318
319#include "maxisLcsIf.ipp"
320
321#endif //FCF_DEVMGR_DEVICE_MAXIS_IF_HPP
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:87
MAxis Local Control System (LCS) Interface (IF) class.
Definition: maxisLcsIf.hpp:67
void MoveAngle(const double &angle, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
MoveAngle.
Definition: maxisLcsIf.cpp:431
void Listener(protocol::base::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: maxisLcsIf.cpp:683
void StartTrack(short mode, double angle)
Start tracking.
Definition: maxisLcsIf.cpp:487
void StopTrack()
Stop derotator tracking.
Definition: maxisLcsIf.cpp:539
virtual void InitObject()
Initialize object.
Definition: maxisLcsIf.cpp:69
std::vector< std::string > m_monitor_track_vector
Special monitor vector of attributes to be monitored only in tracking mode.
Definition: maxisLcsIf.hpp:303
void ReadConfig()
Read the configuration.
virtual void AddCustomAttributes()
Add custom attributes.
Definition: maxisLcsIf.cpp:157
bool IsTracking() const
Check if multi-axis device is tracking.
Definition: maxisLcsIf.cpp:640
void MoveEncRel(int axis_id, long int encoders)
Move a motor in relative encoder units.
Definition: maxisLcsIf.cpp:354
virtual void ReadStatus(MAxisControllerData &status)
Read status from the controller.
Definition: maxisLcsIf.cpp:574
void MoveAbs(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveAbs RPC.
Definition: maxisLcsIf.cpp:297
void MoveVel(int axis_id, double velocity)
Executes the MoveVel RPC.
Definition: maxisLcsIf.cpp:366
void UpdateTargetPosition(int axis_id, double position, std::string move_type)
UpdateTargetPosition.
Definition: maxisLcsIf.cpp:277
std::string GetMotorMapValue(std::string motor, std::string category, std::string key)
GetMotorMapValue.
Definition: maxisLcsIf.cpp:411
bool IsMoving() const
IsMoving.
Definition: maxisLcsIf.cpp:596
virtual void Init()
Executes the Init RPC.
Definition: maxisLcsIf.cpp:167
short m_track_mode
Definition: maxisLcsIf.hpp:309
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors_status
Definition: maxisLcsIf.hpp:311
void LoadConfig()
Load the YAML configuration.
bool IsInPosition(const int axis=-1) const
IsInPosition.
Definition: maxisLcsIf.cpp:611
void MoveRel(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveRel RPC.
Definition: maxisLcsIf.cpp:320
virtual std::string GetRpcError(const short error_code) const
Definition: maxisLcsIf.cpp:654
std::optional< double > GetTargetInUserUnits(int axis_id, double value)
GetTargetInUserUnits.
Definition: maxisLcsIf.cpp:242
virtual ~MAxisLcsIf()
Default destructor.
Definition: maxisLcsIf.hpp:93
bool IsStandstill() const
IsStandstill.
Definition: maxisLcsIf.cpp:631
void TrackOffset(double offset, ::fcfif::MotorPosUnit unit)
Offset position during tracking.
Definition: maxisLcsIf.cpp:510
void MoveEncAbs(int axis_id, long int encoders)
Move a motor in absolute encoder units.
Definition: maxisLcsIf.cpp:342
std::unique_ptr< elt::configng::CiiConfigDocument > m_motor_map_doc
Config document for mapping file.
Definition: maxisLcsIf.hpp:308
DataContext class header file.
drotLcsIf class header file.
MAxisConfig class header file.
Definition: maxis.hpp:18
std::vector< std::pair< std::string, unsigned int > > VectorAttributes
Definition: maxisLcsIf.hpp:21
constexpr auto RPC_MOVE_ABS
Definition: motorBaseConfig.hpp:51
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:46
The adcControllerData struct.
Definition: maxisLcsIf.hpp:29
virtual std::string GetSubstateStr() const
double m_track_offset
Definition: maxisLcsIf.hpp:50
void GetMotorNames(std::vector< std::string > &motor_vector)
virtual ~MAxisControllerData()
Definition: maxisLcsIf.cpp:53
fcf::devmgr::motor::MotorControllerData GetMotor(std::string motor) const
void SetData(const MAxisControllerData &data)
Definition: maxisLcsIf.cpp:56
virtual std::string GetErrorText() const
MAxisControllerData()
Definition: maxisLcsIf.cpp:46
void AddMotor(const std::string motor, const fcf::devmgr::motor::MotorControllerData motor_data)
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors
Definition: maxisLcsIf.hpp:51
short m_tracking_mode
Definition: maxisLcsIf.hpp:49
The MotorControllerData struct.
Definition: motorLcsIf.hpp:34