CiA‑402 控制字实战手册:PP/PV/PT 与 CSP/CSV/CST(含受控停机与紧急停机)

面向工程实践的一份速查 + 讲解:讲清楚每次下发指令时控制字(0x6040)该怎么设、每个模式要发哪些对象、受控停机/紧急停机的动作与恢复,以及**前馈(0x60B1/0x60B2)**的用法。


目录

  • 快速结论
  • 基本概念回顾
  • 上电/使能三步曲
  • 循环同步模式:CSP / CSV / CST
  • 轮廓模式:PP / PV / PT
  • 受控停机(Halt, bit8)
  • 紧急停机(Quick stop, bit2)与恢复
  • 典型 PDO 映射建议
  • 总线下发示例(伪代码/报文)
  • 调试与排障清单
  • 常见问答

快速结论

模式每周期需要下发的对象控制字(0x6040)的常态值是否需要“翻转”位
CSP0x607A 目标位置(可选 0x60B1/0x60B2 前馈)多数设备 0x0F;有的设备要求 0x1F(bit4=1)不需要周期翻转
CSV0x60FF 目标速度(可选 0x60B1/0x60B2 前馈)0x0F不需要
CST0x6071 目标力矩/电流(可选 0x60B2 前馈)0x0F不需要
PP0x607A 目标位置依策略见下需要对 bit4 做 0→1 上升沿触发
PV0x60FF 目标速度0x0F不需要(可用 bit8=Halt)
PT0x6071 目标力矩0x0F不需要(可用 bit8=Halt)

设备特定注意:有些厂商在 CSP 要求控制字长期保持 0x1F(即在 0x0F 基础上令 bit4=1);这是允许的实现差异——请以设备手册为准。


基本概念回顾

控制字 0x6040(Controlword)是主站对从站状态与动作的指令位集合。常用位:

  • bit0:Switch on;bit1:Enable voltage;bit2:Quick stop;bit3:Enable operation ⇒ 四位全 1 即 0x000F,进入 Operation enabled。
  • bit4:New set-point(模式相关)。
  • bit5:Change set immediately(模式相关)。
  • bit6:有的设备用于绝对/相对(PP 相关);也可能保留。
  • bit8:Halt(受控停机)。

状态字 0x6041(Statusword)用于反馈:常见的有 Target reached(bit10)、Set-point acknowledge(bit12)等。


上电/使能三步曲

几乎所有模式,进入可运行态都需要如下序列:

  1. Shutdown:控制字 = 0x0006
  2. Switch on:控制字 = 0x0007
  3. Enable operation:控制字 = 0x000F

若设备在 CSP 要求长期 bit4=1,则第三步改为 0x001F。


循环同步模式:CSP / CSV / CST

循环同步(Cyclic Synchronous)模式由主站按 SYNC 周期直接下发目标量。

CSP(Cyclic Synchronous Position)

  • 周期下发:0x607A 目标位置(必要);可选 0x60B1 Velocity offset、0x60B2 Torque offset 作为前馈。
  • 控制字:多数设备 0x0F;具体设备可能要求 0x1F(bit4=1)。
  • 要点:不需要像 PP 那样翻转 bit4;保持常量控制字,按周期更新位置即可。

CSV(Cyclic Synchronous Velocity)

  • 周期下发:0x60FF 目标速度;可选 0x60B1/0x60B2 前馈。
  • 控制字:0x0F。
  • 要点:Halt/Quick stop 的减速度取自 0x6083/0x6084(仅对 Halt/Quick stop 生效)。

CST(Cyclic Synchronous Torque)

  • 周期下发:0x6071 目标力矩/电流;可选 0x60B2 前馈。
  • 控制字:0x0F。
  • 要点:Halt/Quick stop 时的扭矩斜率由 0x6087 决定。

轮廓模式:PP / PV / PT

PP(Profile Position)——需要“翻转”

PP 的典型握手机制:

  • bit4 = New set‑point:当新目标准备好时,对 bit4 做 0→1 上升沿,从站锁存并开始执行;
  • bit5 = Change set immediately:=1 表示立即使用新目标(打断当前段);=0 表示排队/缓冲;
  • 状态字 bit12 = Set‑point acknowledge 用于确认已接收;完成时 bit10 = Target reached 置位。

两种常用时序:

① 非立即更新(bit5=0)

平时:0x0F
写目标:0x607A = <目标位置>
触发沿:控制字 0x1F(令 bit4=1)
握手后:控制字回 0x0F(bit4 清 0,不影响当前段)

② 立即更新(bit5=1)

平时:0x2F(= 0x0F + bit5)
写目标:0x607A = <新目标>
触发沿:控制字 0x3F(bit4=1)
握手后:控制字回 0x2F

许多设备支持绝对/相对切换(常见放在 bit6 或对象 0x607A 的配置);若手册标注“不支持相对”,请仅用绝对。

PV(Profile Velocity)——不需要翻转

运行:控制字 0x0F,周期更新 0x60FF
受控停机:控制字 0x10F(bit8=Halt)→ 清除回 0x0F 继续

PT(Profile Torque)——不需要翻转

运行:控制字 0x0F,周期更新 0x6071
受控降扭:控制字 0x10F(Halt),或将 0x6071=0 按 0x6087 斜率降至无扭矩

受控停机(Halt, bit8)

定义:在 Operation enabled 下,将 bit8=1(控制字 0x10F),从站按设定斜率/减速度平滑停止,不触发故障,清除 bit8 可继续运行。

  • 在 CSV/PV:斜率由 0x6083/0x6084(轮廓加/减速度)决定。
  • 在 CST:按 0x6087(扭矩斜率)将扭矩降至 0。

与 Quick stop 的区别:Halt 不中断状态机,恢复更快;Quick stop 会进入专门状态,恢复需重走三步曲。


紧急停机(Quick stop, bit2)与恢复

触发:在运行中清除 bit2(即把 0x0F → 0x0B;若 CSP 要求 0x1F → 0x1B)。

动作:实际减速/切断行为由 0x605A Quick stop option code 决定(常见默认为“按设定减速度停机并保持”)。速度/扭矩的斜率配置参考上节。

状态:状态字会显示 Quick stop active。

恢复流程(推荐的标准三步):

0x0006  (Shutdown)
0x0007  (Switch on)
0x000F  (Enable operation)    // 若设备 CSP 要求 bit4=1,则 0x001F

恢复前,为避免刚恢复就冲/拧:先把 CSV 的 0x60FF = 0、CST 的 0x6071 = 0。


典型 PDO 映射建议

实际映射以 EDS/设备支持为准,下列为最小可用的“常见组合”。

CSP(带前馈)

  • RxPDO:0x6040(控制字),0x607A(目标位置),0x60B1(速度前馈,可选),0x60B2(力矩前馈,可选)
  • TxPDO:0x6041(状态字),0x6064(实际位置),0x606C(实际速度,可选),0x6077(实际力矩,可选)

CSV

  • RxPDO:0x6040,0x60FF(目标速度),(可选 0x60B1/0x60B2)
  • TxPDO:0x6041,0x606C(实际速度),(可选 0x6064)

CST

  • RxPDO:0x6040,0x6071(目标力矩),(可选 0x60B2)
  • TxPDO:0x6041,0x6077(实际力矩),(可选 0x606C/0x6064)

PP/PV/PT

  • PP:RxPDO 至少含 0x6040、0x607A;TxPDO 含 0x6041、0x6064/0x606C。
  • PV:RxPDO 至少含 0x6040、0x60FF;TxPDO 含 0x6041、0x606C。
  • PT:RxPDO 至少含 0x6040、0x6071;TxPDO 含 0x6041、0x6077。

总线下发示例(伪代码/报文)

以“发送控制字 + 目标量”为主线,忽略 SYNC/心跳等细节,帮助你在主站(SocketCAN/ROS2 等)快速落地。

1) 进入运行态(通用)

// 0x0006 → 0x0007 → 0x000F
SDO(0x6040, 0, 0x0006);
SDO(0x6040, 0, 0x0007);
SDO(0x6040, 0, 0x000F);   // 若设备要求 CSP 常态 0x1F,则此处写 0x001F

2) CSP(周期位置)

// 周期任务:
PDO.Rx(0x6040) = 0x001F;           // 若设备要求 bit4=1;否则 0x000F
PDO.Rx(0x607A) = target_pos[i];    // 每周期更新
// 可选前馈:
PDO.Rx(0x60B1) = vel_ff[i];
PDO.Rx(0x60B2) = tq_ff[i];

3) CSV(周期速度)

PDO.Rx(0x6040) = 0x000F;
PDO.Rx(0x60FF) = target_vel[i];

4) CST(周期力矩)

PDO.Rx(0x6040) = 0x000F;
PDO.Rx(0x6071) = target_torque[i];

5) PP 非立即(bit5=0)

SDO(0x607A, 0, target_pos);
SDO(0x6040, 0, 0x001F);     // 触发沿 bit4=1
// 等待状态字 bit12=1 → 然后清除 bit4
SDO(0x6040, 0, 0x000F);

6) PP 立即(bit5=1)

SDO(0x6040, 0, 0x002F);     // 平时保持 bit5=1
SDO(0x607A, 0, target_pos);
SDO(0x6040, 0, 0x003F);     // 触发沿 bit4=1
// 等 ack 后
SDO(0x6040, 0, 0x002F);

7) 受控停机(Halt)

// 进入受控停机
SDO(0x6040, 0, 0x010F);
// 清除受控停机,继续运行
SDO(0x6040, 0, 0x000F);

8) 紧急停机(Quick stop)与恢复

// 触发 Quick stop:清 bit2
// 若当前 0x0F → 0x0B;若当前 0x1F → 0x1B
SDO(0x6040, 0, 0x000B);
// ……停稳后恢复:三步曲
SDO(0x6040, 0, 0x0006);
SDO(0x6040, 0, 0x0007);
SDO(0x6040, 0, 0x000F);    // 或 0x001F(见设备要求)

恢复前建议:CSV 将 0x60FF=0,CST 将 0x6071=0,避免恢复瞬间“冲车/拧扭”。


调试与排障清单

  • 状态机卡住:检查 0x6040 位型是否走完三步;0x6041 的状态是否处于 Operation enabled。
  • PP 不执行:bit4 是否产生 0→1 上升沿?bit5 策略是否与预期一致?
  • CSP 不响应:是否把 0x607A 映射入 RxPDO?设备是否要求 0x1F?
  • CSV 抖动/停不下:确认 0x6083/0x6084 是否合理;受控停机/Quick stop 的减速度不等于普通跟踪的限速。
  • CST 打手:检查 0x6087(扭矩斜率);过大易冲击。
  • 前馈无效:设备是否实现 0x60B1/0x60B2?单位/标度是否按手册标定?

常见问答

Q1:为什么有的设备要求 CSP 控制字=0x1F?

CiA‑402 并未强制 CSP 的 bit4 必须为 0 或 1。厂商可选择在 CSP 下要求 bit4=1(等价于“保持 New set‑point 置位”)。这是允许的实现差异,只要遵循设备手册即可。

Q2:PP 的 bit4 “拉回 0”会打断当前段吗?

不会。bit4 只对上升沿敏感;清零只是完成握手,不会中断正在执行的轮廓段。

Q3:Halt 与 Quick stop 的场景如何区分?

Halt 适合“可恢复的暂停/平滑停车”;Quick stop 适合“需要立即进入安全态”的紧急情况,恢复需要重走使能序列。

Q4:Quick stop 停得太猛/太慢怎么办?

调整 0x605A 的选项与 0x6084(配合 0x6083)/0x6087 的斜率,反复验证即可。


最后的建议:实现前先把运行模式(0x6060)与PDO 映射固定下来;再按本文“模式 × 控制字 × 对象”的三要素逐一核查。遇到差异,一律以设备手册为准。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐