伺服驱动器支持哪些操作模式?代码中如何切换到不同模式?
CIA402 标准定义了多种操作模式:
┌──────┬─────────────────────────────────┬──────────────────────────────┐
│ 编号 │ 模式名称 │ 说明 │
├──────┼─────────────────────────────────┼──────────────────────────────┤
│ 1 │ PP (Profile Position) │ 内部位置规划 │
│ 2 │ PV (Profile Velocity) │ 内部速度规划 │
│ 3 │ PT (Profile Torque) │ 内部转矩规划 │
│ 4 │ CSV (Cyclic Synchronous Velocity) │ 循环同步速度 │
│ 8 │ CSP (Cyclic Synchronous Position) │ 循环同步位置(当前使用) │
│ 9 │ CST (Cyclic Synchronous Torque) │ 循环同步转矩 │
└──────┴─────────────────────────────────┴──────────────────────────────┘
当前配置: CSP 模式 (值 = 8)
切换操作模式:
// 通过 SDO 写入 0x6060 (Modes of Operation)
uint8_t mode = 8; // CSP 模式
ECM_EcatSdoWrite(slave, 0x6060, 0x00, 1, &mode);
CSP vs CSV vs CST 对比:
┌─────────┬────────────┬────────────┬────────────┐
│ 特性 │ CSP │ CSV │ CST │
├─────────┼────────────┼────────────┼────────────┤
│ 主站发送 │ 目标位置 │ 目标速度 │ 目标转矩 │
│ 从站控制 │ 位置环+速度环 │ 速度环+电流环 │ 电流环 │
│ 精度 │ 高 │ 中 │ 低 │
│ 适用 │ 定位控制 │ 定速控制 │ 力矩控制 │
│ PDO │ 0x607A │ 0x60FF │ 0x6071 │
└─────────┴────────────┴────────────┴────────────┘
代码示例 – 切换到 CSV 模式:
uint8_t csv_mode = 4; // CSV
ECM_EcatSdoWrite(1, 0x6060, 0x00, 1, &csv_mode);
// RxPDO 需要映射 0x60FF (Target Velocity) 而非 0x607A
// TxPDO 需要映射 0x606C (Actual Velocity) 而非 0x6064


