v1.2修复了EEPROM的读写以及掉电保持参数的功能,现在丢步的误差会保存在Canopen字典的0x60F4位置,网关那边可以通过SDO读取到
This commit is contained in:
@@ -1,66 +1,58 @@
|
||||
#ifndef __CIA402_DEFS_H__
|
||||
#define __CIA402_DEFS_H__
|
||||
|
||||
//本文件存放CiA402中INDEX,controlword,statusword的宏定义替换
|
||||
|
||||
#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 /* 梯形加减速:减速度 */
|
||||
/* 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
|
||||
|
||||
/* --- 状态字位定义 (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) */
|
||||
/* 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)
|
||||
|
||||
/* --- 控制字位定义 (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) /* 暂停运动 */
|
||||
/* 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)
|
||||
|
||||
/* --- 运动模式特定控制位 (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:相对) */
|
||||
/* 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)
|
||||
|
||||
/* 回零模式 (Homing Mode, 模式 6) */
|
||||
#define CIA402_CONTROL_HM_START (1 << 4) /* 启动回零操作 */
|
||||
#define CIA402_STATUS_MASK_OP_ENABLE (0x0027)
|
||||
|
||||
/* --- 常用逻辑掩码与指令组合 --- */
|
||||
/* 运行使能掩码:检查是否处于 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,
|
||||
@@ -72,16 +64,12 @@ typedef enum
|
||||
STATE_QUICK_STOP_ACTIVE
|
||||
} Motor_State_t;
|
||||
|
||||
|
||||
|
||||
// 回零专用状态机
|
||||
typedef enum
|
||||
{
|
||||
HOMING_IDLE, // 空闲
|
||||
HOMING_START, // 准备启动
|
||||
HOMING_MOVING, // 正在找开关
|
||||
HOMING_DONE // 完成
|
||||
HOMING_IDLE,
|
||||
HOMING_START,
|
||||
HOMING_MOVING,
|
||||
HOMING_DONE
|
||||
} Homing_State_t;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user