2026-02-28 17:36:05 +08:00
|
|
|
#ifndef __CIA402_DEFS_H__
|
|
|
|
|
#define __CIA402_DEFS_H__
|
|
|
|
|
|
|
|
|
|
#include "stdint.h"
|
|
|
|
|
|
2026-03-02 17:43:52 +08:00
|
|
|
/* CiA402 Object Dictionary indices */
|
|
|
|
|
#define CIA402_INDEX_CONTROLWORD 0x6040
|
|
|
|
|
#define CIA402_INDEX_STATUSWORD 0x6041
|
|
|
|
|
#define CIA402_INDEX_OP_MODE 0x6060
|
|
|
|
|
#define CIA402_INDEX_OP_MODE_DISPLAY 0x6061
|
|
|
|
|
#define CIA402_INDEX_POS_ACTUAL 0x6064
|
|
|
|
|
#define CIA402_INDEX_FOLLOWING_ERROR_WINDOW 0x6065
|
|
|
|
|
#define CIA402_INDEX_VEL_ACTUAL 0x606C
|
|
|
|
|
#define CIA402_INDEX_TARGET_POS 0x607A
|
|
|
|
|
#define CIA402_INDEX_PROFILE_ACC 0x6083
|
|
|
|
|
#define CIA402_INDEX_PROFILE_DEC 0x6084
|
|
|
|
|
#define CIA402_INDEX_FOLLOWING_ERROR_ACTUAL 0x60F4
|
|
|
|
|
#define CIA402_INDEX_TARGET_VEL 0x60FF
|
2026-02-28 17:36:05 +08:00
|
|
|
|
2026-03-02 17:43:52 +08:00
|
|
|
/* Statusword bits (0x6041) */
|
|
|
|
|
#define CIA402_STATUS_READY_TO_SWITCH_ON (1 << 0)
|
|
|
|
|
#define CIA402_STATUS_SWITCHED_ON (1 << 1)
|
|
|
|
|
#define CIA402_STATUS_OPERATION_ENABLED (1 << 2)
|
|
|
|
|
#define CIA402_STATUS_FAULT (1 << 3)
|
|
|
|
|
#define CIA402_STATUS_VOLTAGE_ENABLED (1 << 4)
|
|
|
|
|
#define CIA402_STATUS_QUICK_STOP (1 << 5)
|
|
|
|
|
#define CIA402_STATUS_SWITCH_ON_DISABLED (1 << 6)
|
|
|
|
|
#define CIA402_STATUS_WARNING (1 << 7)
|
|
|
|
|
#define CIA402_STATUS_REMOTE (1 << 9)
|
|
|
|
|
#define CIA402_STATUS_TARGET_REACHED (1 << 10)
|
|
|
|
|
#define CIA402_STATUS_INTERNAL_LIMIT_ACTIVE (1 << 11)
|
|
|
|
|
#define CIA402_STATUS_OMS_12 (1 << 12)
|
|
|
|
|
#define CIA402_STATUS_OMS_13 (1 << 13)
|
2026-02-28 17:36:05 +08:00
|
|
|
|
2026-03-02 17:43:52 +08:00
|
|
|
/* Controlword bits (0x6040) */
|
|
|
|
|
#define CIA402_CONTROL_SWITCH_ON (1 << 0)
|
|
|
|
|
#define CIA402_CONTROL_ENABLE_VOLTAGE (1 << 1)
|
|
|
|
|
#define CIA402_CONTROL_QUICK_STOP (1 << 2)
|
|
|
|
|
#define CIA402_CONTROL_ENABLE_OPERATION (1 << 3)
|
|
|
|
|
#define CIA402_CONTROL_FAULT_RESET (1 << 7)
|
|
|
|
|
#define CIA402_CONTROL_HALT (1 << 8)
|
2026-02-28 17:36:05 +08:00
|
|
|
|
2026-03-02 17:43:52 +08:00
|
|
|
/* Mode specific control bits */
|
|
|
|
|
#define CIA402_CONTROL_PP_NEW_SET_POINT (1 << 4)
|
|
|
|
|
#define CIA402_CONTROL_PP_CHANGE_IMM (1 << 5)
|
|
|
|
|
#define CIA402_CONTROL_PP_ABS_REL (1 << 6)
|
|
|
|
|
#define CIA402_CONTROL_HM_START (1 << 4)
|
2026-02-28 17:36:05 +08:00
|
|
|
|
2026-03-02 17:43:52 +08:00
|
|
|
#define CIA402_STATUS_MASK_OP_ENABLE (0x0027)
|
2026-02-28 17:36:05 +08:00
|
|
|
|
|
|
|
|
#define CIA402_CMD_SHUTDOWN (CIA402_CONTROL_ENABLE_VOLTAGE | CIA402_CONTROL_QUICK_STOP)
|
|
|
|
|
#define CIA402_CMD_SWITCH_ON (CIA402_CONTROL_SWITCH_ON | CIA402_CONTROL_ENABLE_VOLTAGE | CIA402_CONTROL_QUICK_STOP)
|
|
|
|
|
#define CIA402_CMD_ENABLE_OP (CIA402_CMD_SWITCH_ON | CIA402_CONTROL_ENABLE_VOLTAGE | \
|
|
|
|
|
CIA402_CONTROL_QUICK_STOP | CIA402_CONTROL_ENABLE_OPERATION)
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
STATE_NOT_READY_TO_SWITCH_ON,
|
|
|
|
|
STATE_SWITCH_ON_DISABLED,
|
|
|
|
|
STATE_READY_TO_SWITCH_ON,
|
|
|
|
|
STATE_SWITCHED_ON,
|
|
|
|
|
STATE_OPERATION_ENABLED,
|
|
|
|
|
STATE_FAULT,
|
|
|
|
|
STATE_QUICK_STOP_ACTIVE
|
|
|
|
|
} Motor_State_t;
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
2026-03-02 17:43:52 +08:00
|
|
|
HOMING_IDLE,
|
|
|
|
|
HOMING_START,
|
|
|
|
|
HOMING_MOVING,
|
|
|
|
|
HOMING_DONE
|
2026-02-28 17:36:05 +08:00
|
|
|
} Homing_State_t;
|
|
|
|
|
|
|
|
|
|
#endif
|