Files
linear-Slide/Middleware/CANopenNode/402/CiA402_defs.h

88 lines
4.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __CIA402_DEFS_H__
#define __CIA402_DEFS_H__
//本文件存放CiA402中INDEXcontrolwordstatusword的宏定义替换
#include "stdint.h"
/* --- CiA 402 对象字典索引 (Object Dictionary Indices) --- */
#define CIA402_INDEX_CONTROLWORD 0x6040 /* 控制字 */
#define CIA402_INDEX_STATUSWORD 0x6041 /* 状态字 */
#define CIA402_INDEX_OP_MODE 0x6060 /* 目标运动模式 (Modes of Operation) */
#define CIA402_INDEX_OP_MODE_DISPLAY 0x6061 /* 模式显示 (Modes of Operation Display) */
#define CIA402_INDEX_POS_ACTUAL 0x6064 /* 当前位置值 */
#define CIA402_INDEX_FOLLOWING_ERROR_WINDOW 0x6065 /* Following error window */
#define CIA402_INDEX_VEL_ACTUAL 0x606C /* 当前速度值 */
#define CIA402_INDEX_TARGET_POS 0x607A /* 目标位置 */
#define CIA402_INDEX_TARGET_VEL 0x60FF /* 目标速度 */
#define CIA402_INDEX_PROFILE_ACC 0x6083 /* 梯形加减速:加速度 */
#define CIA402_INDEX_PROFILE_DEC 0x6084 /* 梯形加减速:减速度 */
/* --- 状态字位定义 (Statusword, 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) /* 快速停止标志 (0:正在执行快停, 1:正常) */
#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) /* 模式特定位 12 (如 PP模式:Ack, 回零模式:Attained) */
#define CIA402_STATUS_OMS_13 (1 << 13) /* 模式特定位 13 (如 PP模式:following error) */
/* --- 控制字位定义 (Controlword, 0x6040) --- */
#define CIA402_CONTROL_SWITCH_ON (1 << 0) /* 切换开启 */
#define CIA402_CONTROL_ENABLE_VOLTAGE (1 << 1) /* 使能电压 */
#define CIA402_CONTROL_QUICK_STOP (1 << 2) /* 快速停止 (逻辑 0 触发) */
#define CIA402_CONTROL_ENABLE_OPERATION (1 << 3) /* 使能运行 */
#define CIA402_CONTROL_FAULT_RESET (1 << 7) /* 故障复位 (上升沿触发) */
#define CIA402_CONTROL_HALT (1 << 8) /* 暂停运动 */
/* --- 运动模式特定控制位 (OMS) --- */
/* PP 模式 (Profile Position Mode, 模式 1) */
#define CIA402_CONTROL_PP_NEW_SET_POINT (1 << 4) /* 新目标点触发 (上升沿触发) */
#define CIA402_CONTROL_PP_CHANGE_IMM (1 << 5) /* 立即改变目标 (1:立即更新, 0:完成当前再更新) */
#define CIA402_CONTROL_PP_ABS_REL (1 << 6) /* 绝对/相对坐标 (0:绝对, 1:相对) */
/* 回零模式 (Homing Mode, 模式 6) */
#define CIA402_CONTROL_HM_START (1 << 4) /* 启动回零操作 */
/* --- 常用逻辑掩码与指令组合 --- */
/* 运行使能掩码:检查是否处于 Ready + SwOn + OpEn + NoQuickStop 状态 */
#define CIA402_STATUS_MASK_OP_ENABLE (0x0027)
/* 常用指令组合包 */
#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)
// CiA402 状态机状态 (标准定义)
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
{
HOMING_IDLE, // 空闲
HOMING_START, // 准备启动
HOMING_MOVING, // 正在找开关
HOMING_DONE // 完成
} Homing_State_t;
#endif