Motorcortex Core  version: 2.7.6
drive_module.h
1 /*
2  * Developer : Alexey Zakharov (alexey.zakharov@vectioneer.com)
3  * All rights reserved. Copyright (c) 2018 VECTIONEER.
4  */
5 
6 #ifndef MOTORCORTEX_LIB_DRIVE_MODULE_H
7 #define MOTORCORTEX_LIB_DRIVE_MODULE_H
8 
9 #include "drive_type.h"
10 #include "drive_mode.h"
11 #include "drive_state.h"
12 #include "drive_command.h"
13 
14 #include "ct_module.h"
15 #include "utl_cmdparser.h"
16 
17 #include <vector>
18 #include <string>
19 
20 namespace mcx {
21 
22 namespace drive {
23 
24 class DriveBase;
25 
26 class Module : public container::Module {
27 public:
28 
29  Module() = delete;
30 
31  Module(utils::SystemMode system_mode, DriveType type, const std::string& name, unsigned int number_of_axis = 1);
32 
33  Module(utils::SystemMode system_mode, DriveType type, unsigned int number_of_axis = 1);
34 
35  ~Module() override;
36 
37 protected:
38 
39  void create_(const char* name, parameter_server::Parameter* parameter_server, uint64_t dt_micro_s) override;
40 
41  bool initPhase1_() override;
42 
43  bool initPhase2_() override;
44 
45  bool startOp_() override;
46 
47  bool stopOp_() override;
48 
49  bool iterateOp_(const container::TaskTime& system_time, container::UserTime* user_time) override;
50 
51 private:
52 // void updateDiagNumbers(uint32_t *arr, uint32_t arr_length, uint32_t new_value);
53 
54 private:
55  static constexpr auto default_name_{"Drive"};
56  static constexpr unsigned int number_of_diagnostic_codes_{8};
57 
58  const unsigned int number_of_axis_{};
59  std::vector<DriveBase*> drives_;
60 
61  DriveMode* drive_mode_;
62  DriveCommand* drive_command_;
63  DriveState* drive_state_;
64 
65  DriveMode drive_mode_all_{};
66  DriveCommand drive_command_all_{};
67 
68  parameter_server::ParamHandle drive_mode_all_handle_;
69  parameter_server::ParamHandle drive_command_all_handle_;
70  parameter_server::ParamHandle disable_drive_handle_;
71 
72 
73  // feedback from the drives
74  unsigned int* status_word_;
75  // command to the drive
76  unsigned int* control_word_;
77  unsigned int* opmode_;
78 
79  // trigger error code upload from the mailbox
80  bool* upload_error_code_;
81 
82  // flag indicates that drive has an error
83  bool* drive_has_error_;
84  bool* drive_has_no_error_;
85 
86  // flag indicates that drive has a warning
87  bool* drive_has_warning_;
88 
89  // flag indicates that drives are enabled
90  bool* drive_enabled_;
91 
92  // flag indicates that drives are resetting errors
93  bool* drive_resetting_;
94 
95  // flag to disable drive
96  bool* disable_drive_;
97 
98  // timeouts for switching to op states in the fsm
99  double* timeout_switch_on_sec_;
100  double* timeout_enable_op_sec_;
101  double* timeout_fault_ack_sec_;
102  double* timeout_switch_off_sec_;
103  double* delay_enable_op_sec_;
104  size_t* seq_enable_op_id_;
105 
106 
107 // uint32_t* drive_diagnostics_code_;
108 // uint32_t** last_drive_diagnostic_codes_;
109 
110 };
111 
112 } // namespace drive
113 
114 } // namespace mcx
115 
116 #endif // MOTORCORTEX_LIB_DRIVE_MODULE_H
mcx::parameter_server::Parameter
Definition: ps_parameter.h:45
mcx::drive::Module::~Module
~Module() override
Default destructor.
Definition: drive_module.cpp:87
mcx::drive::Module::startOp_
bool startOp_() override
User-defined callback before entering Operation mode.
Definition: drive_module.cpp:171
mcx::drive::Module
Definition: drive_module.h:26
mcx::container::TaskTime
Internal time source.
Definition: ct_time.h:25
mcx::drive::Module::initPhase2_
bool initPhase2_() override
User-defined callback after the parameter tree is ready.
Definition: drive_module.cpp:167
mcx::drive::Module::initPhase1_
bool initPhase1_() override
User-defined callback to register parameters in the tree.
Definition: drive_module.cpp:121
mcx::drive::Module::stopOp_
bool stopOp_() override
User-defined callback before to stop Operation mode.
Definition: drive_module.cpp:175
mcx::drive::Module::iterateOp_
bool iterateOp_(const container::TaskTime &system_time, container::UserTime *user_time) override
User-defined callback which is called during Operation mode.
Definition: drive_module.cpp:179
mcx::container::UserTime
External time source.
Definition: ct_time.h:40
mcx::container::Module
A building block of the Motorcortex components.
Definition: ct_module.h:64
mcx::drive::Module::create_
void create_(const char *name, parameter_server::Parameter *parameter_server, uint64_t dt_micro_s) override
User-defined callback, which is executed during 'Create' phase.
Definition: drive_module.cpp:118
mcx::parameter_server::ParamHandle
Definition: ps_handlers.h:43