wg0x.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2008, Willow Garage, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of the Willow Garage nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
35 #ifndef ETHERCAT_HARDWARE__WG0X_H
36 #define ETHERCAT_HARDWARE__WG0X_H
37 
44 
45 #include <boost/shared_ptr.hpp>
46 
47 using namespace ethercat_hardware;
48 
49 
51 {
55  static const unsigned BASE_ADDR = 0xA1;
56 } __attribute__ ((__packed__));
57 
58 
60 {
67  static const unsigned BASE_ADDR = 0x223;
68 } __attribute__ ((__packed__));
69 
71 {
75  union {
77  uint16_t voltage_ref_;
78  } __attribute__ ((__packed__));
81  int16_t adc_current_;
82  uint8_t unused1[2];
85  uint8_t unused2[14];
88  uint8_t unused3;
90  uint8_t unused4;
93  static const unsigned BASE_ADDR = 0x200;
94 } __attribute__ ((__packed__));
95 
97 {
98  uint32_t product_id_;
99  union
100  {
101  uint32_t revision_;
102  struct
103  {
106  uint8_t pca_revision_;
107  uint8_t pcb_revision_;
108  }__attribute__ ((__packed__));
109  }__attribute__ ((__packed__));
116  uint8_t pad_[8];
121  uint16_t watchdog_limit_;
122 
123  static const unsigned CONFIG_INFO_BASE_ADDR = 0x0080;
124 }__attribute__ ((__packed__));
125 
127 {
128  uint8_t version_;
129  uint8_t unused_[3];
130  double zero_offset_;
131  uint32_t crc32_;
132 
133  static const unsigned BASE_ADDR = 0x00C0;
134 }__attribute__ ((__packed__));
135 
137 {
138  uint16_t major_; // Major revision
139  uint16_t minor_; // Minor revision
140  uint32_t id_; // Actuator ID
141  char name_[64]; // Actuator name
142  char robot_name_[32]; // Robot name
143  char motor_make_[32]; // Motor manufacturer
144  char motor_model_[32]; // Motor model #
145  double max_current_; // Maximum current
146  double speed_constant_; // Speed constant
147  double resistance_; // Resistance
148  double motor_torque_constant_; // Motor torque constant
149  double encoder_reduction_; // Reduction and sign between motor and encoder
150  uint32_t pulses_per_revolution_; // # of encoder ticks per revolution
151  uint8_t pad1[40]; // Pad structure to 256-4 bytes.
152  uint32_t crc32_256_; // CRC32 of first 256-4 bytes. (minus 4 bytes for first CRC)
153  uint8_t pad2[4]; // Pad structure to 264-4 bytes
154  uint32_t crc32_264_; // CRC32 over entire structure (minus 4 bytes for second CRC)
155 
156  bool verifyCRC(void) const;
157  void generateCRC(void);
158 };
159 
161 {
162  uint8_t mode_;
163  uint8_t digital_out_;
167  uint32_t timestamp_;
168  int32_t encoder_count_;
177  uint16_t supply_voltage_;
178  int16_t motor_voltage_;
179  uint16_t packet_count_;
180  uint8_t pad_;
181  uint8_t checksum_;
182 
183  static const unsigned SIZE=44;
184 }__attribute__ ((__packed__));
185 
186 
188 {
189  uint8_t mode_;
190  uint8_t digital_out_;
191  int16_t programmed_pwm;
193  uint8_t pad_;
194  uint8_t checksum_;
195 }__attribute__ ((__packed__));
196 
198 {
199  MbxDiagnostics();
200  uint32_t write_errors_;
201  uint32_t read_errors_;
202  uint32_t lock_errors_;
203  uint32_t retries_;
204  uint32_t retry_errors_;
205 };
206 
208 {
209  WG0XDiagnostics();
210  void update(const WG0XSafetyDisableStatus &new_status, const WG0XDiagnosticsInfo &new_diagnostics_info);
211 
212  bool first_;
213  bool valid_;
215 
217 
225 
226  uint32_t lock_errors_;
228 
229  // Hack, use diagnostic thread to push new offset values to device
230  double zero_offset_;
232 };
233 
234 class WG0X : public EthercatDevice
235 {
236 public:
237  void construct(EtherCAT_SlaveHandler *sh, int &start_address);
238  WG0X();
239  virtual ~WG0X();
240 
241  virtual int initialize(pr2_hardware_interface::HardwareInterface *, bool allow_unprogrammed=true);
242 
243  void packCommand(unsigned char *buffer, bool halt, bool reset);
244  bool unpackState(unsigned char *this_buffer, unsigned char *prev_buffer);
245 
246  bool program(EthercatCom *com, const WG0XActuatorInfo &actutor_info);
247  bool program(EthercatCom *com, const MotorHeatingModelParametersEepromConfig &heating_config);
248 
249  bool readActuatorInfoFromEeprom(EthercatCom *com, WG0XActuatorInfo &actuator_info);
250  bool readMotorHeatingModelParametersFromEeprom(EthercatCom *com, MotorHeatingModelParametersEepromConfig &config);
251 
252  void diagnostics(diagnostic_updater::DiagnosticStatusWrapper &d, unsigned char *);
253  virtual void collectDiagnostics(EthercatCom *com);
254 
255  bool publishTrace(const string &reason, unsigned level, unsigned delay);
256 
257 protected:
258  uint8_t fw_major_;
259  uint8_t fw_minor_;
260  uint8_t board_major_;
261  uint8_t board_minor_;
262 
265  double max_current_;
266 
267  ethercat_hardware::ActuatorInfo actuator_info_msg_;
268  static void copyActuatorInfo(ethercat_hardware::ActuatorInfo &out, const WG0XActuatorInfo &in);
269 
272 
273  enum
274  {
275  MODE_OFF = 0x00,
276  MODE_ENABLE = (1 << 0),
277  MODE_CURRENT = (1 << 1),
278  MODE_SAFETY_RESET = (1 << 4),
279  MODE_SAFETY_LOCKOUT = (1 << 5),
280  MODE_UNDERVOLTAGE = (1 << 6),
281  MODE_RESET = (1 << 7)
282  };
283 
284  enum
285  {
286  WG05_PRODUCT_CODE = 6805005,
287  WG06_PRODUCT_CODE = 6805006,
288  WG021_PRODUCT_CODE = 6805021
289  };
290 
291  static string modeString(uint8_t mode);
292  static string safetyDisableString(uint8_t status);
296  uint16_t max_bridge_temperature_, max_board_temperature_;
302 
303  void clearErrorFlags(void);
304 
306  enum {NO_CALIBRATION=0, CONTROLLER_CALIBRATION=1, SAVED_CALIBRATION=2};
308 
315 
317  // Application ram is non-volitile memory that application can use to store temporary
318  // data between runs.
319  // Currently app ram is used to store zero offset of joint after calibration
320  // PRESENT - App ram is available
321  // MISSING - App ram is missing but would typically be availble
322  // NOT_APPLICABLE - App ram is not availble, but is is not needed for this type of device
323  enum AppRamStatus { APP_RAM_PRESENT=1, APP_RAM_MISSING=2, APP_RAM_NOT_APPLICABLE=3 };
325  bool readAppRam(EthercatCom *com, double &zero_offset);
326  bool writeAppRam(EthercatCom *com, double zero_offset);
327 
328  bool verifyState(WG0XStatus *this_status, WG0XStatus *prev_status);
329 
330  int writeMailbox(EthercatCom *com, unsigned address, void const *data, unsigned length);
331  int readMailbox(EthercatCom *com, unsigned address, void *data, unsigned length);
332 
333  void publishGeneralDiagnostics(diagnostic_updater::DiagnosticStatusWrapper &d);
334  void publishMailboxDiagnostics(diagnostic_updater::DiagnosticStatusWrapper &d);
335 
336  bool initializeMotorModel(pr2_hardware_interface::HardwareInterface *hw,
337  const string &device_description,
338  double max_pwm_ratio,
339  double board_resistance,
340  bool poor_measured_motor_voltage);
341 
342  bool initializeMotorHeatingModel(bool allow_unprogrammed);
343 
344  bool verifyChecksum(const void* buffer, unsigned size);
345  static bool timestamp_jump(uint32_t timestamp, uint32_t last_timestamp, uint32_t amount);
346 
347  static const int PWM_MAX = 0x4000;
348 
349 protected:
352 
355 
356  static const unsigned COMMAND_PHY_ADDR = 0x1000;
357  static const unsigned STATUS_PHY_ADDR = 0x2000;
358 
359  static const unsigned PDO_COMMAND_SYNCMAN_NUM = 0;
360  static const unsigned PDO_STATUS_SYNCMAN_NUM = 1;
361 
362  enum
363  {
364  LIMIT_SENSOR_0_STATE = (1 << 0),
365  LIMIT_SENSOR_1_STATE = (1 << 1),
366  LIMIT_ON_TO_OFF = (1 << 2),
367  LIMIT_OFF_TO_ON = (1 << 3)
368  };
369 
370  enum
371  {
372  SAFETY_DISABLED = (1 << 0),
373  SAFETY_UNDERVOLTAGE = (1 << 1),
374  SAFETY_OVER_CURRENT = (1 << 2),
375  SAFETY_BOARD_OVER_TEMP = (1 << 3),
376  SAFETY_HBRIDGE_OVER_TEMP = (1 << 4),
377  SAFETY_OPERATIONAL = (1 << 5),
378  SAFETY_WATCHDOG = (1 << 6)
379  };
380 
381  // Board configuration parameters
382 
383  static const unsigned ACTUATOR_INFO_PAGE = 4095;
384 
385  // Not all devices will need this (WG021 won't)
388  ethercat_hardware::MotorTraceSample motor_trace_sample_;
390 
391  // Only device with motor heating parameters store in eeprom config will use this
394 
395  // Diagnostic message values
396  uint32_t last_timestamp_;
398  int drops_;
401 
402  bool lockWG0XDiagnostics();
403  bool tryLockWG0XDiagnostics();
404  void unlockWG0XDiagnostics();
405  pthread_mutex_t wg0x_diagnostics_lock_;
408 
409 public:
410  static int32_t timestampDiff(uint32_t new_timestamp, uint32_t old_timestamp);
411  static int32_t positionDiff(int32_t new_position, int32_t old_position);
412 
413  static ros::Duration timediffToDuration(int32_t timediff_usec);
414 
415  static double calcEncoderVelocity(int32_t new_position, uint32_t new_timestamp,
416  int32_t old_position, uint32_t old_timestamp);
417 
418  static double convertRawTemperature(int16_t raw_temp);
419 };
420 
421 
422 #endif // ETHERCAT_HARDWARE__WG0X_H
CONFIG_INFO_BASE_ADDR
static const unsigned CONFIG_INFO_BASE_ADDR
Definition: wg0x.h:27
WG0XDiagnostics::first_
bool first_
Definition: wg0x.h:212
EthercatCom
Definition: ethercat_com.h:44
WG0XConfigInfo::safety_disable_status_hold_
uint8_t safety_disable_status_hold_
Definition: wg0x.h:119
WG0XDiagnosticsInfo::lowside_deadtime_
uint8_t lowside_deadtime_
Definition: wg0x.h:83
realtime_publisher.h
WG0XStatus::programmed_pwm_value_
int16_t programmed_pwm_value_
Definition: wg0x.h:164
WG0XActuatorInfo::speed_constant_
double speed_constant_
Definition: wg0x.h:146
MbxDiagnostics::retry_errors_
uint32_t retry_errors_
Definition: wg0x.h:204
WG0X::has_error_
bool has_error_
Definition: wg0x.h:295
WG0XSafetyDisableStatus
Definition: wg0x.h:50
WG0XConfigInfo::device_serial_number_
uint32_t device_serial_number_
Definition: wg0x.h:110
WG0X::eeprom_
ethercat_hardware::WGEeprom eeprom_
Access to device eeprom.
Definition: wg0x.h:354
WG0X::max_bridge_temperature_
uint16_t max_bridge_temperature_
Definition: wg0x.h:296
verifyCRC
bool verifyCRC(void) const
mode
uint8_t mode
Definition: wg_util.h:144
WG0XDiagnostics::valid_
bool valid_
Definition: wg0x.h:213
boost::shared_ptr< ethercat_hardware::MotorHeatingModelCommon >
WG0XStatus::bridge_temperature_
uint16_t bridge_temperature_
Definition: wg0x.h:176
WG0X::calibration_status_
int calibration_status_
Definition: wg0x.h:307
unused2
uint8_t unused2[14]
Definition: wg0x.h:15
WG0XUserConfigRam::crc32_
uint32_t crc32_
Definition: wg0x.h:131
WG0XActuatorInfo::max_current_
double max_current_
Definition: wg0x.h:145
WG0XActuatorInfo
Definition: wg0x.h:136
WG0X::actuator_info_
WG0XActuatorInfo actuator_info_
Definition: wg0x.h:263
WG0XActuatorInfo::resistance_
double resistance_
Definition: wg0x.h:147
WG0XStatus::num_encoder_errors_
uint16_t num_encoder_errors_
Definition: wg0x.h:170
WG0X::in_lockout_
bool in_lockout_
Definition: wg0x.h:293
WG0XConfigInfo::pcb_revision_
uint8_t pcb_revision_
Definition: wg0x.h:107
WG0XStatus::calibration_reading_
uint8_t calibration_reading_
Definition: wg0x.h:172
WG0XSafetyDisableStatus::safety_disable_status_hold_
uint8_t safety_disable_status_hold_
Definition: wg0x.h:53
WG0XStatus
Definition: wg0x.h:160
MotorModel
Definition: motor_model.h:20
WG0X::wg0x_diagnostics_lock_
pthread_mutex_t wg0x_diagnostics_lock_
Definition: wg0x.h:405
WG0X::motor_heating_model_common_
static boost::shared_ptr< ethercat_hardware::MotorHeatingModelCommon > motor_heating_model_common_
Definition: wg0x.h:392
MbxDiagnostics::write_errors_
uint32_t write_errors_
Definition: wg0x.h:200
WG0XActuatorInfo::crc32_256_
uint32_t crc32_256_
Definition: wg0x.h:152
WG0XStatus::checksum_
uint8_t checksum_
Definition: wg0x.h:181
WG0X::consecutive_drops_
int consecutive_drops_
Definition: wg0x.h:399
verifyChecksum
bool verifyChecksum(void) const
WG0XDiagnosticsInfo::highside_deadtime_
uint8_t highside_deadtime_
Definition: wg0x.h:84
wg_eeprom.h
WG0XConfigInfo::absolute_current_limit_
uint16_t absolute_current_limit_
Definition: wg0x.h:113
WG0XDiagnostics
Definition: wg0x.h:207
WG0X::disable_motor_model_checking_
bool disable_motor_model_checking_
Definition: wg0x.h:387
WG0XStatus::board_temperature_
uint16_t board_temperature_
Definition: wg0x.h:175
WG0X::config_info_
WG0XConfigInfo config_info_
Definition: wg0x.h:264
WG0XStatus::encoder_count_
int32_t encoder_count_
Definition: wg0x.h:168
WG0X::actuator_
pr2_hardware_interface::Actuator actuator_
Definition: wg0x.h:270
WG0X::timestamp_jump_detected_
bool timestamp_jump_detected_
Definition: wg0x.h:299
WG0XSafetyDisableCounters
Definition: wg0x.h:59
WG0XUserConfigRam::version_
uint8_t version_
Definition: wg0x.h:128
WG0XStatus::last_calibration_rising_edge_
int32_t last_calibration_rising_edge_
Definition: wg0x.h:173
firmware_major_revision_
uint8_t firmware_major_revision_
Definition: wg0x.h:103
WG0X::motor_model_
MotorModel * motor_model_
Definition: wg0x.h:386
WG0X::wg0x_publish_diagnostics_
WG0XDiagnostics wg0x_publish_diagnostics_
Definition: wg0x.h:406
WG0XDiagnosticsInfo::mbx_command_irq_count_
uint8_t mbx_command_irq_count_
Definition: wg0x.h:87
ethercat_hardware
Definition: motor_heating_model.h:53
WG0XUserConfigRam::zero_offset_
double zero_offset_
Definition: wg0x.h:130
WG0X::max_current_
double max_current_
min(board current limit, actuator current limit)
Definition: wg0x.h:265
WG0XActuatorInfo::encoder_reduction_
double encoder_reduction_
Definition: wg0x.h:149
WG0XDiagnostics::diagnostics_info_
WG0XDiagnosticsInfo diagnostics_info_
Definition: wg0x.h:216
WG0XDiagnosticsInfo::config_offset_current_B_
int16_t config_offset_current_B_
Definition: wg0x.h:73
pr2_hardware_interface::HardwareInterface
WG0XDiagnosticsInfo::offset_current_B_
int16_t offset_current_B_
Definition: wg0x.h:80
WG0XActuatorInfo::motor_torque_constant_
double motor_torque_constant_
Definition: wg0x.h:148
WG0XSafetyDisableCounters::undervoltage_count_
uint8_t undervoltage_count_
Definition: wg0x.h:61
WG0X::status_checksum_error_
bool status_checksum_error_
Definition: wg0x.h:298
WG0X::motor_heating_model_
boost::shared_ptr< ethercat_hardware::MotorHeatingModel > motor_heating_model_
Definition: wg0x.h:393
WG0XConfigInfo::product_id_
uint32_t product_id_
Definition: wg0x.h:98
WG0X::fpga_internal_reset_detected_
bool fpga_internal_reset_detected_
Definition: wg0x.h:300
BASE_ADDR
static const unsigned BASE_ADDR
Definition: wg0x.h:5
WG0XCommand
Definition: wg0x.h:187
WG0XSafetyDisableCounters::operate_disable_count_
uint8_t operate_disable_count_
Definition: wg0x.h:65
WG0X
Definition: wg0x.h:234
WG0XDiagnosticsInfo::config_offset_current_A_
int16_t config_offset_current_A_
Definition: wg0x.h:72
WG0XStatus::packet_count_
uint16_t packet_count_
Definition: wg0x.h:179
WG0X::drops_
int drops_
Definition: wg0x.h:398
WG0XSafetyDisableStatus::safety_disable_status_
uint8_t safety_disable_status_
Definition: wg0x.h:52
WG0XStatus::timestamp_
uint32_t timestamp_
Definition: wg0x.h:167
WG0X::AppRamStatus
AppRamStatus
Different possible states for application ram on device.
Definition: wg0x.h:323
WG0XDiagnostics::operate_disable_total_
uint32_t operate_disable_total_
Definition: wg0x.h:223
WG0XStatus::motor_voltage_
int16_t motor_voltage_
Definition: wg0x.h:178
WG0XSafetyDisableCounters::watchdog_disable_count_
uint8_t watchdog_disable_count_
Definition: wg0x.h:66
WG0XCommand::checksum_
uint8_t checksum_
Definition: wg0x.h:194
motor_heating_model.h
WG0XDiagnostics::safety_disable_total_
uint32_t safety_disable_total_
Definition: wg0x.h:218
ethercat_hardware::MbxDiagnostics::MbxDiagnostics
MbxDiagnostics()
Definition: wg_mailbox.cpp:179
WG0XStatus::last_calibration_falling_edge_
int32_t last_calibration_falling_edge_
Definition: wg0x.h:174
WG0X::cached_zero_offset_
double cached_zero_offset_
Definition: wg0x.h:305
WG0XStatus::mode_
uint8_t mode_
Definition: wg0x.h:162
WG0X::app_ram_status_
AppRamStatus app_ram_status_
Definition: wg0x.h:324
WG0XConfigInfo::watchdog_limit_
uint16_t watchdog_limit_
Definition: wg0x.h:121
WG0XActuatorInfo::crc32_264_
uint32_t crc32_264_
Definition: wg0x.h:154
update
void update(const std::string &key, const XmlRpc::XmlRpcValue &v)
WG0XConfigInfo::current_loop_kp_
uint8_t current_loop_kp_
Definition: wg0x.h:111
WG0XSafetyDisableCounters::bridge_over_temp_count_
uint8_t bridge_over_temp_count_
Definition: wg0x.h:64
WG0XActuatorInfo::minor_
uint16_t minor_
Definition: wg0x.h:139
WG0X::mailbox_
ethercat_hardware::WGMailbox mailbox_
Mailbox access to device.
Definition: wg0x.h:351
supply_current_out_
uint16_t supply_current_out_
Definition: wg0x.h:75
EthercatDevice
Definition: ethercat_device.h:133
unused1
uint8_t unused1[2]
Definition: wg0x.h:12
WG0XDiagnosticsInfo::unused4
uint8_t unused4
Definition: wg0x.h:90
WG0X::publish_motor_trace_
pr2_hardware_interface::DigitalOut publish_motor_trace_
Definition: wg0x.h:389
WG0XStatus::programmed_current_
int16_t programmed_current_
Definition: wg0x.h:165
WG0X::digital_out_
pr2_hardware_interface::DigitalOut digital_out_
Definition: wg0x.h:271
WG0XDiagnostics::board_over_temp_total_
uint32_t board_over_temp_total_
Definition: wg0x.h:221
pad_
uint8_t pad_[8]
Definition: wg0x.h:20
WG0XSafetyDisableCounters::over_current_count_
uint8_t over_current_count_
Definition: wg0x.h:62
WG0XDiagnosticsInfo::pdi_timeout_error_count_
uint8_t pdi_timeout_error_count_
Definition: wg0x.h:91
WG0XDiagnosticsInfo::supply_current_in_
uint16_t supply_current_in_
Definition: wg0x.h:74
WG0XStatus::digital_out_
uint8_t digital_out_
Definition: wg0x.h:163
WG0XDiagnosticsInfo::voltage_ref_
uint16_t voltage_ref_
Definition: wg0x.h:77
WG0XCommand::mode_
uint8_t mode_
Definition: wg0x.h:189
WG0XDiagnosticsInfo::adc_current_
int16_t adc_current_
Definition: wg0x.h:81
d
d
name_
char * name_
Definition: motorconf.cpp:381
generateCRC
void generateCRC(void)
MbxDiagnostics::retries_
uint32_t retries_
Definition: wg0x.h:203
firmware_minor_revision_
uint8_t firmware_minor_revision_
Definition: wg0x.h:102
WG0XConfigInfo::current_loop_ki_
uint8_t current_loop_ki_
Definition: wg0x.h:112
WG0XStatus::encoder_status_
uint8_t encoder_status_
Definition: wg0x.h:171
WG0XDiagnosticsInfo
Definition: wg0x.h:70
WG0XCommand::programmed_pwm
int16_t programmed_pwm
Definition: wg0x.h:191
WG0XConfigInfo::revision_
uint32_t revision_
Definition: wg0x.h:101
WG0X::fw_major_
uint8_t fw_major_
Definition: wg0x.h:258
WG0XStatus::encoder_index_pos_
int32_t encoder_index_pos_
Definition: wg0x.h:169
WG0XDiagnostics::checksum_errors_
uint32_t checksum_errors_
Definition: wg0x.h:227
WG0X::board_minor_
uint8_t board_minor_
Printed circuit assembly revision.
Definition: wg0x.h:261
WG0XConfigInfo::safety_disable_count_
uint8_t safety_disable_count_
Definition: wg0x.h:120
WG0X::actuator_info_msg_
ethercat_hardware::ActuatorInfo actuator_info_msg_
Definition: wg0x.h:267
WG0XDiagnostics::over_current_total_
uint32_t over_current_total_
Definition: wg0x.h:220
WG0XDiagnosticsInfo::pdi_checksum_error_count_
uint8_t pdi_checksum_error_count_
Definition: wg0x.h:92
WG0XUserConfigRam
Definition: wg0x.h:126
WG0XActuatorInfo::id_
uint32_t id_
Definition: wg0x.h:140
WG0XSafetyDisableStatus::safety_disable_count_
uint8_t safety_disable_count_
Definition: wg0x.h:54
WG0XActuatorInfo::major_
uint16_t major_
Definition: wg0x.h:138
WG0XConfigInfo::nominal_current_scale_
float nominal_current_scale_
Definition: wg0x.h:114
ethercat_device.h
unused_
uint8_t unused_[3]
Definition: wg0x.h:3
WG0XDiagnostics::watchdog_disable_total_
uint32_t watchdog_disable_total_
Definition: wg0x.h:224
WG0X::motor_trace_sample_
ethercat_hardware::MotorTraceSample motor_trace_sample_
Definition: wg0x.h:388
WG0XCommand::programmed_current_
int16_t programmed_current_
Definition: wg0x.h:192
WG0XDiagnostics::lock_errors_
uint32_t lock_errors_
Definition: wg0x.h:226
WG0X::sample_timestamp_
ros::Duration sample_timestamp_
Definition: wg0x.h:314
WG0X::max_consecutive_drops_
int max_consecutive_drops_
Definition: wg0x.h:400
WG0X::encoder_errors_detected_
bool encoder_errors_detected_
Definition: wg0x.h:301
status
uint16_t status
Definition: ethercat_device.h:2
motor_model.h
ethercat_hardware::__attribute__
ethercat_hardware::MotorHeatingModelCommon __attribute__
WG0X::too_many_dropped_packets_
bool too_many_dropped_packets_
Definition: wg0x.h:297
length
uint16_t length
Definition: wg_util.h:151
initialize
ROSCONSOLE_DECL void initialize()
wg_mailbox.h
WG0XConfigInfo::pca_revision_
uint8_t pca_revision_
Definition: wg0x.h:106
WG0X::board_major_
uint8_t board_major_
Printed circuit board revision (for this value 0=='A', 1=='B')
Definition: wg0x.h:260
pr2_hardware_interface::DigitalOut
WG0X::last_timestamp_
uint32_t last_timestamp_
Definition: wg0x.h:396
WG0XStatus::measured_current_
int16_t measured_current_
Definition: wg0x.h:166
WG0XDiagnostics::safety_disable_status_
WG0XSafetyDisableStatus safety_disable_status_
Definition: wg0x.h:214
WG0XDiagnosticsInfo::safety_disable_counters_
WG0XSafetyDisableCounters safety_disable_counters_
Definition: wg0x.h:89
diagnostic_updater::DiagnosticStatusWrapper
WG0XDiagnostics::cached_zero_offset_
double cached_zero_offset_
Definition: wg0x.h:231
MbxDiagnostics::read_errors_
uint32_t read_errors_
Definition: wg0x.h:201
WG0XDiagnostics::undervoltage_total_
uint32_t undervoltage_total_
Definition: wg0x.h:219
WG0XDiagnosticsInfo::offset_current_A_
int16_t offset_current_A_
Definition: wg0x.h:79
WG0XDiagnostics::bridge_over_temp_total_
uint32_t bridge_over_temp_total_
Definition: wg0x.h:222
WG0XConfigInfo::safety_disable_status_
uint8_t safety_disable_status_
Definition: wg0x.h:118
WG0XDiagnosticsInfo::pdo_command_irq_count_
uint8_t pdo_command_irq_count_
Definition: wg0x.h:86
WG0X::last_last_timestamp_
uint32_t last_last_timestamp_
Definition: wg0x.h:397
WG0XCommand::pad_
uint8_t pad_
Definition: wg0x.h:193
ethercat_hardware::MbxDiagnostics
Definition: wg_mailbox.h:76
WG0XConfigInfo
Definition: wg0x.h:96
WG0XDiagnosticsInfo::unused3
uint8_t unused3
Definition: wg0x.h:88
WG0XDiagnostics::zero_offset_
double zero_offset_
Definition: wg0x.h:230
WG0XCommand::digital_out_
uint8_t digital_out_
Definition: wg0x.h:190
ethercat_hardware::WGEeprom
Definition: wg_eeprom.h:80
pad1
uint8_t pad1[3]
Definition: motor_heating_model.h:5
ethercat_hardware::MotorHeatingModelParametersEepromConfig
Definition: motor_heating_model.h:119
MbxDiagnostics::lock_errors_
uint32_t lock_errors_
Definition: wg0x.h:202
ros::Duration
WG0X::fw_minor_
uint8_t fw_minor_
Definition: wg0x.h:259
WG0XActuatorInfo::pulses_per_revolution_
uint32_t pulses_per_revolution_
Definition: wg0x.h:150
pr2_hardware_interface::Actuator
WG0XConfigInfo::configuration_status_
uint8_t configuration_status_
Definition: wg0x.h:117
WG0XStatus::pad_
uint8_t pad_
Definition: wg0x.h:180
WG0XConfigInfo::nominal_voltage_scale_
float nominal_voltage_scale_
Definition: wg0x.h:115
ethercat_hardware::WGMailbox
Definition: wg_mailbox.h:87
WG0XSafetyDisableCounters::board_over_temp_count_
uint8_t board_over_temp_count_
Definition: wg0x.h:63
pad2
uint8_t pad2[204]
Definition: motor_heating_model.h:7
WG0XStatus::supply_voltage_
uint16_t supply_voltage_
Definition: wg0x.h:177
WG0X::wg0x_collect_diagnostics_
WG0XDiagnostics wg0x_collect_diagnostics_
Definition: wg0x.h:407
SIZE
static const unsigned SIZE
Definition: wg0x.h:23
WG0X::resetting_
bool resetting_
Definition: wg0x.h:294


ethercat_hardware
Author(s): Rob Wheeler , Derek King
autogenerated on Thu Sep 26 2024 02:44:04