EtherCAT Control Framework v0.9
Implementation of EtherCAT protocol using IgH EtherCAT library for robot controller.
ecat_definitions.hpp
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * $Id$
4 *
5 * Copyright (C) 2021 Veysi ADIN, UST KIST
6 *
7 * This file is part of the IgH EtherCAT master userspace program in the ROS2 environment.
8 *
9 * The IgH EtherCAT master userspace program in the ROS2 environment is free software; you can
10 * redistribute it and/or modify it under the terms of the GNU General
11 * Public License as published by the Free Software Foundation; version 2
12 * of the License.
13 *
14 * The IgH EtherCAT master userspace program in the ROS2 environment is distributed in the hope that
15 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
16 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with the IgH EtherCAT master userspace program in the ROS environment. If not, see
21 * <http://www.gnu.org/licenses/>.
22 *
23 * ---
24 *
25 * The license mentioned above concerns the source code only. Using the
26 * EtherCAT technology and brand is only permitted in compliance with the
27 * industrial property and similar rights of Beckhoff Automation GmbH.
28 *
29 * Contact information: veysi.adin@kist.re.kr
30 *****************************************************************************/
31/*****************************************************************************
32 * \file ecat_definitions.hpp
33 * \brief Header file for all include statements and global variables for EtherCAT
34 * communication.
35 *
36 * This header file contains required include statements for IgH EtherCAT library,
37 * global variables (e.g. ethercat master,master_state, domain,domain_state),
38 * structs for PDO offset and recieved data from slaves,
39 * Communication period and number of slaves can be specified in here.
40 *******************************************************************************/
41
42#pragma once
43
44#include <iostream>
45#include <cstring>
46#include <limits.h>
47#include <stdlib.h>
48#include <pthread.h>
49#include <errno.h>
50#include <signal.h>
51#include <stdio.h>
52#include <string.h>
53#include <sys/resource.h>
54#include <sys/time.h>
55#include <sys/types.h>
56#include <unistd.h>
57#include <time.h>
58#include <sys/mman.h>
59#include <malloc.h>
60#include <sched.h>
61#include <chrono>
62#include <memory>
63
64/****************************************************************************/
67#include "ecrt.h"
68
70#include "object_dictionary.hpp"
71const uint32_t g_kNsPerSec = 1000000000;
72/****************************************************************************/
74static volatile sig_atomic_t sig = 1;
75extern ec_master_t * g_master ; // EtherCAT master
76extern ec_master_state_t g_master_state ; // EtherCAT master state
77
78extern ec_domain_t * g_master_domain ; // Ethercat data passing master domain
79extern ec_domain_state_t g_master_domain_state ; // EtherCAT master domain state
80
81extern struct timespec g_sync_timer ; // timer for DC sync .
82extern uint32_t g_sync_ref_counter; // To sync every cycle.
83/****************************************************************************/
84#define TEST_BIT(NUM,N) ((NUM & (1 << N))>>N)
85#define SET_BIT(NUM,N) (NUM | (1 << N))
86#define RESET_BIT(NUM,N) (NUM & ~(1 << N))
88#define TIMESPEC2NS(T) ((uint64_t) (T).tv_sec * g_kNsPerSec + (T).tv_nsec)
89#define DIFF_NS(A, B) (((B).tv_sec - (A).tv_sec) * g_kNsPerSec + (B).tv_nsec - (A).tv_nsec)
91#define CLOCK_TO_USE CLOCK_MONOTONIC
92
101inline struct timespec timespec_add(struct timespec time1, struct timespec time2)
102{
103 struct timespec result;
104
105 if ((time1.tv_nsec + time2.tv_nsec) >= g_kNsPerSec)
106 {
107 result.tv_sec = time1.tv_sec + time2.tv_sec + 1;
108 result.tv_nsec = time1.tv_nsec + time2.tv_nsec - g_kNsPerSec;
109 }
110 else
111 {
112 result.tv_sec = time1.tv_sec + time2.tv_sec;
113 result.tv_nsec = time1.tv_nsec + time2.tv_nsec;
114 }
115
116 return result;
117}
118
119typedef struct
120{
129 uint8_t red_button_;
140} Controller;
141
142
144typedef enum
145{
154} OpMode ;
155
156 // constant declarations
157static constexpr uint8_t PRIMARY_STATE_UNKNOWN =
1580u;
159static constexpr uint8_t PRIMARY_STATE_UNCONFIGURED =
1601u;
161static constexpr uint8_t PRIMARY_STATE_INACTIVE =
1622u;
163static constexpr uint8_t PRIMARY_STATE_ACTIVE =
1643u;
165static constexpr uint8_t PRIMARY_STATE_FINALIZED =
1664u;
167static constexpr uint8_t TRANSITION_STATE_CONFIGURING =
16810u;
169static constexpr uint8_t TRANSITION_STATE_CLEANINGUP =
17011u;
171static constexpr uint8_t TRANSITION_STATE_SHUTTINGDOWN =
17212u;
173static constexpr uint8_t TRANSITION_STATE_ACTIVATING =
17413u;
175static constexpr uint8_t TRANSITION_STATE_DEACTIVATING =
17614u;
177static constexpr uint8_t TRANSITION_STATE_ERRORPROCESSING =
17815u;
193
213 kSensor3TypeDigitalHallSensor=131072 //EC motors only
214
219 kCurrentControlStructure = 0, // 0-3 , 4 bits. Val : 1 - PI current controller
220 kVelocityControlStructure = 4, // 4-7, 4bits. Val : 0 - None | 1 - PI Vecolity controller (low pass filter) | 2 - PI velocity controller (observer)
221 kPositionControlStructure = 8, // 8-11 , 4bits. Val : 0 - None | 1 - PID position controller
222 kGearLocation = 12, // 1 bit Val : 0 - None | 1 - Gear Mounted on system
223 kProcessValueReference = 14, // 14-15 2 bits. Val : 0 - On motor (or undefined) | 1 - On gear
224 kMainSensor = 16, // 16-19 4 bits. Val : 0 - None | 1 - Sensor 1 | 2 - Sensor 2 | 3 - Sensor 3
225 kAuxiliarySensor = 20, // 20-23 4 bits. Val : 0 - None | 1 - Sensor 1 | 2 - Sensor 2 | 3 - Sensor 3
226 kMountingPositionSensor1 = 24, // 24-25 2 bits. Val : 0 - On motor (or undefined) | 1 - On gear
227 kMountingPositionSensor2 = 26, // 26-27 2 bits. Val : 0 - On motor (or undefined) | 1 - On gear
228 kMountingPositionSensor3 = 28, // 28-29 2 bits. Val : 0 - On motor
229};
231typedef struct
232{
233 uint32_t target_pos ;
234 uint32_t target_vel ;
235 uint32_t target_tor ;
237 uint32_t max_tor ;
238 uint32_t control_word ;
239 uint32_t op_mode ;
240 uint32_t profile_acc ;
241 uint32_t profile_dec ;
242 uint32_t quick_stop_dec ;
243 uint32_t profile_vel ;
244
245 uint32_t actual_pos ;
246 uint32_t pos_fol_err ;
247 uint32_t actual_vel ;
248 uint32_t actual_cur ;
249 uint32_t actual_tor ;
250 uint32_t status_word ;
252 uint32_t error_code ;
254
259} OffsetPDO ;
260
261
263typedef struct
264{
265 int32_t target_pos ;
266 int32_t target_vel ;
267 int16_t target_tor ;
268 int16_t max_tor ;
269 uint16_t control_word ;
271 int32_t vel_offset ;
272 int16_t tor_offset ;
273
274 int32_t actual_pos ;
275 int32_t actual_vel ;
276 int16_t actual_cur ;
277 int16_t actual_tor ;
278 uint16_t status_word ;
284
286typedef struct {
287 uint16_t slave_position; // Position based addressing.
288 uint16_t index; // Index in Object dictionary
289 uint8_t sub_index; // Subindex in Object dictionary
290 uint32_t data ; // Actual data to sent/receive
291 size_t data_sz; // Size
292 size_t result_sz; // Resulted data size
293 uint32_t err_code; // Error code
294} SDO_data;
295
297typedef struct
298{
299 ec_sdo_request_t * com_status;
300 ec_sdo_request_t * target_pos ;
301 ec_sdo_request_t * target_vel ;
302 ec_sdo_request_t * target_tor ;
303 ec_sdo_request_t * max_tor ;
304 ec_sdo_request_t * control_word ;
305 ec_sdo_request_t * op_mode ;
306 ec_sdo_request_t * vel_offset ;
307 ec_sdo_request_t * tor_offset ;
308
309 ec_sdo_request_t * actual_pos ;
310 ec_sdo_request_t * actual_vel ;
311 ec_sdo_request_t * actual_cur ;
312 ec_sdo_request_t * actual_tor ;
313 ec_sdo_request_t * status_word ;
314 ec_sdo_request_t * op_mode_display ;
315 ec_sdo_request_t * left_limit_switch_val ;
316 ec_sdo_request_t * right_limit_switch_val ;
317 ec_sdo_request_t * emergency_switch_val ;
319
321typedef struct
322{
323 uint32_t profile_vel ;
324 uint32_t profile_acc ;
325 uint32_t profile_dec ;
326 uint32_t max_fol_err ;
327 uint32_t max_profile_vel ;
328 uint32_t quick_stop_dec ;
330 uint32_t p_gain;
331 uint32_t i_gain;
332 uint32_t d_gain;
338typedef struct
339{
347 uint32_t profile_vel ;
348 uint32_t profile_acc ;
349 uint32_t profile_dec ;
350 uint32_t max_fol_err ;
351 uint32_t max_profile_vel ;
352 uint32_t quick_stop_dec ;
360 typedef struct
361 {
362 uint32_t Pgain = 20000; // micro amp sec per radian
363 uint32_t Igain = 500000; // micro amp per radian
364 uint32_t FFVelgain = 0;
365 uint32_t FFAccgain = 0;
371typedef struct
372{
375 uint32_t quick_stop_dec ;
376 uint32_t profile_dec ;
384typedef struct
385{
391 uint32_t profile_vel ;
392 uint32_t profile_acc ;
393 uint32_t profile_dec ;
394 uint32_t max_profile_vel ;
395 uint32_t quick_stop_dec ;
398
399
401typedef struct
402{
403 uint32_t max_fol_err;
408 uint32_t homing_acc;
409 // Used when homing by touching mechanical limit and sensing current
411 // Amount to move away from the sensed limit
412 int32_t home_offset;
415
417typedef struct
418{
421 uint32_t profile_acc;
422 uint32_t profile_dec;
425
426
428{
482 STO_ERROR = 0x8A88,
501
502static std::string GetErrorMessage(const int& err_code)
503{
504 switch (err_code)
505 {
506 case NO_ERROR:
507 return "No error";
508 case GENERIC_ERROR:
509 return "Generic error";
511 return "Generic initialization error";
513 return "Generic initialization error 1";
515 return "Generic initialization error 2";
517 return "Generic initialization error 3";
519 return "Generic initialization error 4";
521 return "Generic initialization error 5";
523 return "Generic initialization error 6";
525 return "Generic initialization error 7";
527 return "Generic initialization error 8";
529 return "Firmware incompatibility error";
531 return "Over current error";
533 return "Power stage protection error";
535 return "Over voltage error";
537 return "Under voltage error";
539 return "Thermal overload error";
541 return "Thermal motor overload error";
543 return "Logic supply too low error";
545 return "Hardware defect error";
547 return "Hardware incompatibility error";
548 case HARDWARE_ERROR:
549 return "Hardware error";
550 case HARDWARE_ERROR_1:
551 return "Hardware error 1";
552 case HARDWARE_ERROR_2:
553 return "Hardware error 2";
554 case HARDWARE_ERROR_3:
555 return "Hardware error 3";
557 return "Sign of life error";
559 return "Extension 1 watchdog error";
561 return "Internal software error";
563 return "Software parameter error";
565 return "Persistent parameter corrupt error";
567 return "Position sensor error";
569 return "Position sensor breach error";
571 return "Position sensor resolution error";
573 return "Position sensor index error";
575 return "Hall sensor error";
577 return "Hall sensor not found error";
579 return "Hall angle detection error";
580 case SSI_SENSOR_ERROR:
581 return "SSI sensor error";
583 return "SSI sensor frame error";
585 return "Missing main sensor error";
587 return "Missing commutation sensor error";
589 return "Main sensor direction error";
591 return "Ethercat communication error";
593 return "Ethercat initialization error";
595 return "Ethercat RX queue overflow error";
597 return "Ethercat communication error internal";
599 return "Ethercat communication cycle time error";
601 return "Ethercat PDO communication error";
603 return "Ethercat SDO communication error";
604 case FOLLOWING_ERROR:
605 return "Following error";
607 return "Negative limit switch error";
609 return "Positive limit switch error";
611 return "Software position limit error";
612 case STO_ERROR :
613 return "STO error";
615 return "System overloaded error";
616 case WATCHDOG_ERROR:
617 return "Watchdog error";
619 return "System peak overloaded error";
621 return "Controller gain error";
623 return "Auto tuning identification error";
625 return "Auto tuning current limit error";
627 return "Auto tuning identification current error";
629 return "Auto tuning data sampling error";
631 return "Auto tuning sample mismatch error";
633 return "Auto tuning parameter error";
635 return "Auto tuning amplitude mismatch error";
637 return "Auto tuning timeout error";
639 return "Auto tuning stand still error";
641 return "Auto tuning torque invalid error";
643 return "Auto tuning max system speed error";
645 return "Auto tuning motor connection error";
647 return "Auto tuning sensor signal error";
648 default:
649 return "Unknown error";
650 }
651}
Opens, reads from and publishes joystick events.
Definition: joy_node_linux.cpp:52
uint8_t left_rb_button_
Definition: ecat_definitions.hpp:135
uint8_t right_rb_button_
Definition: ecat_definitions.hpp:136
uint8_t blue_button_
Definition: ecat_definitions.hpp:127
uint8_t xbox_button_
Definition: ecat_definitions.hpp:139
float left_y_axis_
Definition: ecat_definitions.hpp:122
uint8_t left_u_button_
Definition: ecat_definitions.hpp:133
float left_t_axis_
Definition: ecat_definitions.hpp:125
float right_x_axis_
Definition: ecat_definitions.hpp:123
uint8_t left_d_button_
Definition: ecat_definitions.hpp:134
float right_y_axis_
Definition: ecat_definitions.hpp:124
uint8_t right_start_button_
Definition: ecat_definitions.hpp:138
float right_t_axis_
Definition: ecat_definitions.hpp:126
uint8_t left_l_button_
Definition: ecat_definitions.hpp:132
uint8_t left_start_button_
Definition: ecat_definitions.hpp:137
uint8_t yellow_button_
Definition: ecat_definitions.hpp:130
uint8_t red_button_
Definition: ecat_definitions.hpp:129
uint8_t green_button_
Definition: ecat_definitions.hpp:128
float left_x_axis_
Definition: ecat_definitions.hpp:121
uint8_t left_r_button_
Definition: ecat_definitions.hpp:131
static constexpr uint8_t TRANSITION_STATE_CONFIGURING
Definition: ecat_definitions.hpp:167
static constexpr uint8_t PRIMARY_STATE_FINALIZED
Definition: ecat_definitions.hpp:165
uint32_t g_sync_ref_counter
Definition: ecat_node.cpp:12
static constexpr uint8_t TRANSITION_STATE_ACTIVATING
Definition: ecat_definitions.hpp:173
ec_domain_state_t g_master_domain_state
Definition: ecat_node.cpp:10
ec_master_t * g_master
Extern global variable declaration.
Definition: ecat_node.cpp:7
SensorConfig
Sensor Configuration for motor for more information.
Definition: ecat_definitions.hpp:205
@ kSensor2TypeDigitalIncrementalEncoder2
Definition: ecat_definitions.hpp:209
@ kSensor3TypeNone
Definition: ecat_definitions.hpp:212
@ kSensor3TypeDigitalHallSensor
Definition: ecat_definitions.hpp:213
@ kSensor2TypeAnalogIncrementalEncoderSinCos
Definition: ecat_definitions.hpp:210
@ kSensor2TypeNone
Definition: ecat_definitions.hpp:208
@ kSensor1TypeNone
Definition: ecat_definitions.hpp:206
@ kSensor2TypeSSIAbsoluteEncoder
Definition: ecat_definitions.hpp:211
@ kSensor1TypeDigitalIncrementalEncoder1
Definition: ecat_definitions.hpp:207
static constexpr uint8_t TRANSITION_STATE_SHUTTINGDOWN
Definition: ecat_definitions.hpp:171
OpMode
Motor operation modes.
Definition: ecat_definitions.hpp:145
@ kCSPosition
Definition: ecat_definitions.hpp:151
@ kCSTorque
Definition: ecat_definitions.hpp:153
@ kProfileTorque
Definition: ecat_definitions.hpp:148
@ kProfileVelocity
Definition: ecat_definitions.hpp:147
@ kInterpolatedPosition
Definition: ecat_definitions.hpp:150
@ kHoming
Definition: ecat_definitions.hpp:149
@ kCSVelocity
Definition: ecat_definitions.hpp:152
@ kProfilePosition
Definition: ecat_definitions.hpp:146
ec_domain_t * g_master_domain
Definition: ecat_node.cpp:9
MotorStates
CIA 402 state machine motor states.
Definition: ecat_definitions.hpp:180
@ kWarning
Definition: ecat_definitions.hpp:188
@ kFault
Definition: ecat_definitions.hpp:184
@ kSwitchedOn
Definition: ecat_definitions.hpp:182
@ kTargetReached
Definition: ecat_definitions.hpp:190
@ kSwitchOnDisabled
Definition: ecat_definitions.hpp:187
@ kOperationEnabled
Definition: ecat_definitions.hpp:183
@ kVoltageEnabled
Definition: ecat_definitions.hpp:185
@ kQuickStop
Definition: ecat_definitions.hpp:186
@ kReadyToSwitchOn
Definition: ecat_definitions.hpp:181
@ kRemote
Definition: ecat_definitions.hpp:189
@ kInternalLimitActivate
Definition: ecat_definitions.hpp:191
static constexpr uint8_t TRANSITION_STATE_ERRORPROCESSING
Definition: ecat_definitions.hpp:177
static constexpr uint8_t PRIMARY_STATE_INACTIVE
Definition: ecat_definitions.hpp:161
static volatile sig_atomic_t sig
Definition: ecat_definitions.hpp:74
static constexpr uint8_t PRIMARY_STATE_UNKNOWN
Definition: ecat_definitions.hpp:157
static std::string GetErrorMessage(const int &err_code)
Definition: ecat_definitions.hpp:502
ec_master_state_t g_master_state
Definition: ecat_node.cpp:8
ErrorRegisterBits
Definition: ecat_definitions.hpp:194
@ kTemperatureError
Definition: ecat_definitions.hpp:198
@ kVoltageError
Definition: ecat_definitions.hpp:197
@ kMotionError
Definition: ecat_definitions.hpp:202
@ kDeviceProfileSpecificError
Definition: ecat_definitions.hpp:200
@ kCurrentError
Definition: ecat_definitions.hpp:196
@ kReserved
Definition: ecat_definitions.hpp:201
@ kGenericError
Definition: ecat_definitions.hpp:195
@ kCommunicationError
Definition: ecat_definitions.hpp:199
const uint32_t g_kNsPerSec
Object dictionary paramaters PDO index and default values in here.
Definition: ecat_definitions.hpp:71
ErrorType
Definition: ecat_definitions.hpp:428
@ POSITION_SENSOR_RESOLUTION_ERROR
Definition: ecat_definitions.hpp:461
@ GENERIC_INIT_ERROR_7
Definition: ecat_definitions.hpp:438
@ SIGN_OF_LIFE_ERROR
Definition: ecat_definitions.hpp:454
@ AUTO_TUNING_STAND_STILL_ERROR
Definition: ecat_definitions.hpp:495
@ ETHERCAT_INITIALIZATION_ERROR
Definition: ecat_definitions.hpp:472
@ THERMAL_OVERLOAD_ERROR
Definition: ecat_definitions.hpp:445
@ AUTO_TUNING_TORQUE_INVALID_ERROR
Definition: ecat_definitions.hpp:496
@ HARDWARE_ERROR
Definition: ecat_definitions.hpp:450
@ POSITION_SENSOR_INDEX_ERROR
Definition: ecat_definitions.hpp:462
@ PERSISTENT_PARAMETER_CORRUPT_ERROR
Definition: ecat_definitions.hpp:458
@ STO_ERROR
Definition: ecat_definitions.hpp:482
@ GENERIC_INIT_ERROR_6
Definition: ecat_definitions.hpp:437
@ AUTO_TUNING_CURRENT_LIMIT_ERROR
Definition: ecat_definitions.hpp:488
@ ETHERCAT_SDO_COMMUNICATION_ERROR
Definition: ecat_definitions.hpp:477
@ ETHERCAT_COMMUNCATION_ERROR
Definition: ecat_definitions.hpp:471
@ HARDWARE_ERROR_2
Definition: ecat_definitions.hpp:452
@ POSITION_SENSOR_ERROR
Definition: ecat_definitions.hpp:459
@ GENERIC_INIT_ERROR_4
Definition: ecat_definitions.hpp:435
@ UNDER_VOLTAGE_ERROR
Definition: ecat_definitions.hpp:444
@ ETHERCAT_RX_QUEUE_OVERFLOW_ERROR
Definition: ecat_definitions.hpp:473
@ GENERIC_INIT_ERROR_5
Definition: ecat_definitions.hpp:436
@ THERMAL_MOTOR_OVERLOAD_ERRROR
Definition: ecat_definitions.hpp:446
@ ETHERCAT_COMMUNICATION_ERROR_INTERNAL
Definition: ecat_definitions.hpp:474
@ OVER_VOLTAGE_ERROR
Definition: ecat_definitions.hpp:443
@ HARDWARE_INCOMPATIBLITY_ERROR
Definition: ecat_definitions.hpp:449
@ HARDWARE_ERROR_3
Definition: ecat_definitions.hpp:453
@ MISSING_COMMUTATION_SENSOR_ERROR
Definition: ecat_definitions.hpp:469
@ POWER_STAGE_PROTECTION_ERROR
Definition: ecat_definitions.hpp:442
@ GENERIC_INIT_ERROR_8
Definition: ecat_definitions.hpp:439
@ SOFTWARE_PARAMETER_ERROR
Definition: ecat_definitions.hpp:457
@ HALL_ANGLE_DETECTION_ERROR
Definition: ecat_definitions.hpp:465
@ FIRMWARE_INCOMPATIBLITY_ERROR
Definition: ecat_definitions.hpp:440
@ AUTO_TUNING_INDENTIFICATION_ERROR
Definition: ecat_definitions.hpp:487
@ ETHERCAT_PDO_COMMUNICATION_ERROR
Definition: ecat_definitions.hpp:476
@ MAIN_SENSOR_DIRECTION_ERROR
Definition: ecat_definitions.hpp:470
@ EXTENSION_1_WATCHDOG_ERROR
Definition: ecat_definitions.hpp:455
@ AUTO_TUNING_TIMEOUT_ERROR
Definition: ecat_definitions.hpp:494
@ INTERNAL_SOFTWARE_ERROR
Definition: ecat_definitions.hpp:456
@ OVER_CURRENT_ERROR
Definition: ecat_definitions.hpp:441
@ SYSTEM_OVERLOADED_ERROR
Definition: ecat_definitions.hpp:483
@ GENERIC_INIT_ERROR_3
Definition: ecat_definitions.hpp:434
@ GENERIC_ERROR
Definition: ecat_definitions.hpp:430
@ AUTO_TUNING_IDENTIFICATION_CURRENT_ERROR
Definition: ecat_definitions.hpp:489
@ AUTO_TUNING_MAX_SYSTEM_SPEED_ERROR
Definition: ecat_definitions.hpp:497
@ NEGATIVE_LIMIT_SWITCH_ERROR
Definition: ecat_definitions.hpp:479
@ CONTROLLER_GAIN_ERROR
Definition: ecat_definitions.hpp:486
@ WATCHDOG_ERROR
Definition: ecat_definitions.hpp:484
@ GENERIC_INIT_ERROR_1
Definition: ecat_definitions.hpp:432
@ HARDWARE_DEFECT_ERROR
Definition: ecat_definitions.hpp:448
@ AUTO_TUNING_SAMPLE_MISMATCH_ERROR
Definition: ecat_definitions.hpp:491
@ HALL_SENSOR_ERROR
Definition: ecat_definitions.hpp:463
@ ETHERCAT_COMMUNICATION_CYCLE_TIME_ERROR
Definition: ecat_definitions.hpp:475
@ MISSING_MAIN_SENSOR_ERROR
Definition: ecat_definitions.hpp:468
@ GENERIC_INIT_ERROR_2
Definition: ecat_definitions.hpp:433
@ POSITION_SENSOR_BREACH_ERROR
Definition: ecat_definitions.hpp:460
@ SSI_SENSOR_FRAME_ERROR
Definition: ecat_definitions.hpp:467
@ NO_ERROR
Definition: ecat_definitions.hpp:429
@ GENERIC_INIT_ERROR
Definition: ecat_definitions.hpp:431
@ SSI_SENSOR_ERROR
Definition: ecat_definitions.hpp:466
@ AUTO_TUNING_DATA_SAMPLING_ERROR
Definition: ecat_definitions.hpp:490
@ SYSTEM_PEAK_OVERLOADED_ERROR
Definition: ecat_definitions.hpp:485
@ AUTO_TUNING_SENSOR_SIGNAL_ERROR
Definition: ecat_definitions.hpp:499
@ AUTO_TUNING_MOTOR_CONNECTION_ERROR
Definition: ecat_definitions.hpp:498
@ FOLLOWING_ERROR
Definition: ecat_definitions.hpp:478
@ AUTO_TUNING_PARAMETER_ERROR
Definition: ecat_definitions.hpp:492
@ HARDWARE_ERROR_1
Definition: ecat_definitions.hpp:451
@ HALL_SENSOR_NOT_FOUND_ERROR
Definition: ecat_definitions.hpp:464
@ LOGIC_SUPPLY_TOO_LOW_ERROR
Definition: ecat_definitions.hpp:447
@ SOFTWARE_POSITION_LIMIT_ERROR
Definition: ecat_definitions.hpp:481
@ POSITIVE_LIMIT_SWITCH_ERROR
Definition: ecat_definitions.hpp:480
@ AUTO_TUNING_AMPLITUDE_MISMATCH_ERROR
Definition: ecat_definitions.hpp:493
static constexpr uint8_t PRIMARY_STATE_UNCONFIGURED
Definition: ecat_definitions.hpp:159
struct timespec g_sync_timer
Definition: ecat_node.cpp:11
static constexpr uint8_t PRIMARY_STATE_ACTIVE
Definition: ecat_definitions.hpp:163
ControlStructureBits
Control structure configuration for control mechanism to select sensor structure specific to hardware...
Definition: ecat_definitions.hpp:217
@ kMountingPositionSensor1
Definition: ecat_definitions.hpp:226
@ kCurrentControlStructure
These are bit locations not values for values.
Definition: ecat_definitions.hpp:219
@ kMountingPositionSensor2
Definition: ecat_definitions.hpp:227
@ kVelocityControlStructure
Definition: ecat_definitions.hpp:220
@ kGearLocation
Definition: ecat_definitions.hpp:222
@ kProcessValueReference
Definition: ecat_definitions.hpp:223
@ kAuxiliarySensor
Definition: ecat_definitions.hpp:225
@ kMountingPositionSensor3
Definition: ecat_definitions.hpp:228
@ kPositionControlStructure
Definition: ecat_definitions.hpp:221
@ kMainSensor
Definition: ecat_definitions.hpp:224
static constexpr uint8_t TRANSITION_STATE_DEACTIVATING
Definition: ecat_definitions.hpp:175
struct timespec timespec_add(struct timespec time1, struct timespec time2)
Add two timespec struct.
Definition: ecat_definitions.hpp:101
static constexpr uint8_t TRANSITION_STATE_CLEANINGUP
Definition: ecat_definitions.hpp:169
Struct contains configuration parameters for cyclic sync. position mode.
Definition: ecat_definitions.hpp:339
uint32_t profile_acc
Definition: ecat_definitions.hpp:348
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:352
uint32_t max_gear_input_speed
Definition: ecat_definitions.hpp:346
uint32_t nominal_current
Definition: ecat_definitions.hpp:340
uint32_t position_control_parameter_set
Definition: ecat_definitions.hpp:343
uint32_t profile_dec
Definition: ecat_definitions.hpp:349
uint32_t current_controller_gain
Definition: ecat_definitions.hpp:342
uint32_t interpolation_time_period
Definition: ecat_definitions.hpp:353
uint32_t profile_vel
Definition: ecat_definitions.hpp:347
uint32_t max_fol_err
Definition: ecat_definitions.hpp:350
uint32_t max_profile_vel
Definition: ecat_definitions.hpp:351
uint32_t software_position_limit
Definition: ecat_definitions.hpp:344
uint16_t torque_constant
Definition: ecat_definitions.hpp:341
uint16_t motor_rated_torque
Definition: ecat_definitions.hpp:345
Struct contains configuration parameters for cyclic sync. torque mode.
Definition: ecat_definitions.hpp:385
uint32_t max_profile_vel
Definition: ecat_definitions.hpp:394
uint32_t interpolation_time_period
Definition: ecat_definitions.hpp:396
uint32_t profile_vel
Definition: ecat_definitions.hpp:391
uint32_t profile_dec
Definition: ecat_definitions.hpp:393
uint16_t torque_constant
Definition: ecat_definitions.hpp:387
uint32_t nominal_current
Definition: ecat_definitions.hpp:386
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:395
uint32_t profile_acc
Definition: ecat_definitions.hpp:392
uint32_t software_position_limit
Definition: ecat_definitions.hpp:388
uint16_t motor_rated_torque
Definition: ecat_definitions.hpp:389
uint32_t max_gear_input_speed
Definition: ecat_definitions.hpp:390
Struct contains configuration parameters for cyclic sync. velocity mode.
Definition: ecat_definitions.hpp:372
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:375
uint32_t software_position_limit
Definition: ecat_definitions.hpp:377
uint32_t interpolation_time_period
Definition: ecat_definitions.hpp:378
uint32_t max_profile_vel
Definition: ecat_definitions.hpp:374
VelControlParam velocity_controller_gain
Definition: ecat_definitions.hpp:373
uint32_t profile_dec
Definition: ecat_definitions.hpp:376
Parameters that should be specified in homing mode.
Definition: ecat_definitions.hpp:402
uint32_t speed_for_switch_search
Definition: ecat_definitions.hpp:406
uint32_t max_profile_vel
Definition: ecat_definitions.hpp:404
int32_t home_offset
Definition: ecat_definitions.hpp:412
int8_t homing_method
Definition: ecat_definitions.hpp:413
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:405
uint32_t homing_acc
Definition: ecat_definitions.hpp:408
uint16_t curr_threshold_homing
Definition: ecat_definitions.hpp:410
uint32_t max_fol_err
Definition: ecat_definitions.hpp:403
uint32_t speed_for_zero_search
Definition: ecat_definitions.hpp:407
offset for PDO entries to register PDOs.
Definition: ecat_definitions.hpp:232
uint32_t profile_vel
Definition: ecat_definitions.hpp:243
uint32_t target_pos
Definition: ecat_definitions.hpp:233
uint32_t actual_tor
Definition: ecat_definitions.hpp:249
uint32_t profile_dec
Definition: ecat_definitions.hpp:241
uint32_t target_vel
Definition: ecat_definitions.hpp:234
uint32_t profile_acc
Definition: ecat_definitions.hpp:240
uint32_t emergency_switch
Definition: ecat_definitions.hpp:257
uint32_t op_mode_display
Definition: ecat_definitions.hpp:251
uint32_t error_code
Definition: ecat_definitions.hpp:252
uint32_t op_mode
Definition: ecat_definitions.hpp:239
uint32_t r_limit_switch
Definition: ecat_definitions.hpp:255
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:242
uint32_t control_word
Definition: ecat_definitions.hpp:238
uint32_t actual_cur
Definition: ecat_definitions.hpp:248
uint32_t pos_fol_err
Definition: ecat_definitions.hpp:246
uint32_t actual_pos
Definition: ecat_definitions.hpp:245
uint32_t l_limit_switch
Definition: ecat_definitions.hpp:256
uint32_t status_word
Definition: ecat_definitions.hpp:250
uint32_t pressure_sensor
Definition: ecat_definitions.hpp:258
uint32_t extra_status_reg
Definition: ecat_definitions.hpp:253
uint32_t actual_vel
Definition: ecat_definitions.hpp:247
uint32_t target_tor
Definition: ecat_definitions.hpp:235
uint32_t max_tor
Definition: ecat_definitions.hpp:237
uint32_t torque_offset
Definition: ecat_definitions.hpp:236
Parameters that should be specified in position mode.
Definition: ecat_definitions.hpp:322
uint32_t profile_dec
Definition: ecat_definitions.hpp:325
uint32_t max_fol_err
Definition: ecat_definitions.hpp:326
uint32_t max_profile_vel
Definition: ecat_definitions.hpp:327
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:328
uint16_t motion_profile_type
Definition: ecat_definitions.hpp:329
uint32_t profile_acc
Definition: ecat_definitions.hpp:324
uint32_t d_gain
Definition: ecat_definitions.hpp:332
uint32_t i_gain
Definition: ecat_definitions.hpp:331
uint32_t p_gain
Definition: ecat_definitions.hpp:330
uint32_t profile_vel
Definition: ecat_definitions.hpp:323
Parameters that should be specified in velocity mode.
Definition: ecat_definitions.hpp:418
uint32_t profile_dec
Definition: ecat_definitions.hpp:422
uint16_t motion_profile_type
Definition: ecat_definitions.hpp:423
uint32_t max_profile_vel
Definition: ecat_definitions.hpp:419
uint32_t profile_acc
Definition: ecat_definitions.hpp:421
uint32_t quick_stop_dec
Definition: ecat_definitions.hpp:420
Received feedback data from slaves.
Definition: ecat_definitions.hpp:264
uint8_t left_limit_switch_val
Definition: ecat_definitions.hpp:280
uint16_t status_word
Definition: ecat_definitions.hpp:278
uint16_t control_word
Definition: ecat_definitions.hpp:269
uint8_t right_limit_switch_val
Definition: ecat_definitions.hpp:281
int32_t actual_pos
Definition: ecat_definitions.hpp:274
int8_t op_mode_display
Definition: ecat_definitions.hpp:279
int32_t target_vel
Definition: ecat_definitions.hpp:266
int16_t target_tor
Definition: ecat_definitions.hpp:267
int16_t max_tor
Definition: ecat_definitions.hpp:268
int16_t tor_offset
Definition: ecat_definitions.hpp:272
int16_t actual_cur
Definition: ecat_definitions.hpp:276
int16_t actual_tor
Definition: ecat_definitions.hpp:277
int32_t actual_vel
Definition: ecat_definitions.hpp:275
int32_t vel_offset
Definition: ecat_definitions.hpp:271
OpMode op_mode
Definition: ecat_definitions.hpp:270
uint8_t s_emergency_switch_val
Definition: ecat_definitions.hpp:282
int32_t target_pos
Definition: ecat_definitions.hpp:265
CKim - SDO_data Structure holding all data needed to send/receive an SDO object.
Definition: ecat_definitions.hpp:286
size_t data_sz
Definition: ecat_definitions.hpp:291
uint8_t sub_index
Definition: ecat_definitions.hpp:289
uint32_t err_code
Definition: ecat_definitions.hpp:293
uint32_t data
Definition: ecat_definitions.hpp:290
uint16_t index
Definition: ecat_definitions.hpp:288
uint16_t slave_position
Definition: ecat_definitions.hpp:287
size_t result_sz
Definition: ecat_definitions.hpp:292
EtherCAT SDO request structure for configuration phase.
Definition: ecat_definitions.hpp:298
ec_sdo_request_t * target_tor
Definition: ecat_definitions.hpp:302
ec_sdo_request_t * right_limit_switch_val
Definition: ecat_definitions.hpp:316
ec_sdo_request_t * actual_tor
Definition: ecat_definitions.hpp:312
ec_sdo_request_t * max_tor
Definition: ecat_definitions.hpp:303
ec_sdo_request_t * actual_cur
Definition: ecat_definitions.hpp:311
ec_sdo_request_t * target_vel
Definition: ecat_definitions.hpp:301
ec_sdo_request_t * control_word
Definition: ecat_definitions.hpp:304
ec_sdo_request_t * op_mode_display
Definition: ecat_definitions.hpp:314
ec_sdo_request_t * vel_offset
Definition: ecat_definitions.hpp:306
ec_sdo_request_t * com_status
Definition: ecat_definitions.hpp:299
ec_sdo_request_t * op_mode
Definition: ecat_definitions.hpp:305
ec_sdo_request_t * emergency_switch_val
Definition: ecat_definitions.hpp:317
ec_sdo_request_t * actual_pos
Definition: ecat_definitions.hpp:309
ec_sdo_request_t * status_word
Definition: ecat_definitions.hpp:313
ec_sdo_request_t * target_pos
Definition: ecat_definitions.hpp:300
ec_sdo_request_t * actual_vel
Definition: ecat_definitions.hpp:310
ec_sdo_request_t * tor_offset
Definition: ecat_definitions.hpp:307
ec_sdo_request_t * left_limit_switch_val
Definition: ecat_definitions.hpp:315
Struct containing 'velocity control parameter set' 0x30A2 Has 4 sub index. Default values are from EP...
Definition: ecat_definitions.hpp:361