Skip to content

Meow 电机协议

禁止使用 Node-ID 100 和 101

不得将电机或其他 CANopen 设备的 Node-ID 设置为十进制 100(0x64)或 101(0x65)。 电机升级协议使用 0x780 + Node-ID 发送请求,这两个地址分别落在 0x7E4、0x7E5,与 LSS 的应答/请求 ID 冲突。LSS 扫描或配置可能因此干扰电机升级通信。

Device Settings 禁止将新地址设为这两个值;Motor Control 和固件升级会对使用这些地址的电机报错并拒绝操作。已有设备使用这些值时,请先在 Device Settings 改为其他合法且未占用的 ID,保存并重新上电,再控制或升级。故障恢复探测也跳过这两个 ID。

中文 | English

Meow 协议沿用 CANopen CiA301 的 NMT、心跳、SDO 和 PDO 通信,使用独立的电机运行状态与对象字典。运动控制通过 0x4401/0x4402 完成,支持轮廓位置、轮廓速度、力矩和 MIT 模式。

先用快速上手与上位机操作完成连接和低速测试;自行开发控制程序请看 API 与 PDO。

识别电机

读取 0x1018:01(Vendor ID)与 0x1018:02(Product Code),同时匹配两者。GUI 会据此自动打开 Meow 电机面板;0x1008 产品名称可缺失,不用于识别型号。

Meow 型号 Vendor ID Product Code 名义减速比
hexmeow 4310 0x00686578 0x6C64BC78 10:1
hexmeow 4342(HEX 4342P) 0x00686578 0x6C64BCAA 42:1
hexmeow 3525(驱动也支持) 0x00686578 0x6C64AE8D 25:1

0x1018:03 为固件版本,:04 为序列号。未知身份应先核对型号和固件,确认后再写入控制命令。电压、尺寸、额定负载等硬件参数见 4310 / 4342P 资料中心。

CAN 总线

使用线形总线,两端各一组终端电阻,避免星形接线;USB-CANFD-HUB 自带的终端电阻也算其中一端。接口线序见电机拆箱和 CAN 接口说明。

GUI 的常规电机连接使用以下配置,主机与整条总线上的设备必须一致:

项目 配置
仲裁段 1 Mbit/s,采样点 0.8
数据段 1 / 2 / 4 / 5 Mbit/s;GUI 默认 5 Mbit/s
数据段采样点 1 / 2 / 4 Mbit/s 为 0.8;5 Mbit/s 为 0.75
Node-ID 协议范围 1–127;不可与其他节点或主机重复
GUI 主机 Node-ID 默认 0x0A(十进制 10)

分配设备 ID 时避开主机 ID;系统预留 100、101 和 127,不作为日常电机分配值。电机通信参数对象允许的仲裁段速率还包括 125 / 250 / 500 / 800 kbit/s,但常规 GUI 电机连接按 1 Mbit/s 检查。

帧类型与 BRS

NMT、心跳和 SDO 均使用标准 11 位 ID 的 Classic CAN 帧。PDO 的帧类型由 0x2001:04 与载荷长度共同决定:

PDO BRS PDO 有效载荷 ≤ 8 字节 PDO 有效载荷 > 8 字节
0 Classic CAN CAN-FD,不切换速率
1 CAN-FD + BRS CAN-FD + BRS

因此,即使 TPDO1 只有 8 字节、TPDO2 只有 7 字节,开启 BRS 后也必须按 FD+BRS 接收。不要因为短帧就过滤掉 FD。SDO 使用 0x600 + Node-ID 请求、0x580 + Node-ID 响应;心跳为 0x700 + Node-ID。

状态与模式

电机运行状态为失能、某种运行模式或错误。NMT 状态与运行模式各自独立:NMT Operational 不代表已经输出力矩;失能时仍可在 Operational 下继续反馈 PDO。

写 0x4401:00(U8) 含义 正常 0x4402:00 回显
0x00 失能 0x00
0x01 轮廓位置 PP 0x01
0x02 轮廓速度 PV 0x02
0x03 力矩 0x03
0x04 MIT 0x04
0xFF 清除错误 成功后为失能 0x00

切换模式时先写目标值,再写模式命令,并等待新的反馈确认。允许在使能状态下切换模式。0x4401 按值变化触发动作;重复清错应先写 0x00,再写 0xFF。GUI 和驱动已处理该重触发流程。

数据单位与编码

所有运动命令与反馈都使用输出轴单位,不要再次乘除减速比。

数据 协议编码与单位
PP 目标 / 位置反馈 有符号 I32 Q8.24,单位 Rev(圈)
PV 目标 / 速度读取 REAL32,Rev/s
力矩目标 / 反馈 I16,峰值力矩的千分比(‰)
最大力矩 U16,0–1000 ‰
峰值力矩 REAL32,N·m
非压缩 MIT 位置 / 速度 / 前馈力矩 REAL32,Rev / Rev/s / N·m
温度 I16,每单位 0.1 °C
TPDO1 时间戳 U16,µs,按 65536 µs 回绕

多字节数据均为小端。Q8.24 的换算为 Rev = raw_i32 / 2^24,可表示范围为 [-128, 128 - 2^-24] 圈,步长约 5.96 × 10^-8 圈。PP 目标超出此范围会被驱动拒绝;持续多圈运动使用 PV,位置反馈回绕后由主机连续累计。累计连续性在丢帧、掉线或重初始化后可能失效,不能当作掉电保持的多圈绝对位置。

GUI 的 PP / PV 输入为 Rev / Rev/s;MIT 卡片使用 rad、rad/s、N·m、N·m/rad 和 N·m·s/rad,会自动转换为协议值。直接调用 Rust 库时需自行完成此换算,见 API 说明。

常用对象

以下为当前 GUI / 驱动使用的对象子集。R 为读取、W 为写入;表中不声明未核实的默认值或其他访问能力。

通信与位置预设

地址 类型 本文使用 含义
0x1018:01..04 U32 R 厂商、产品、固件版本、序列号
0x1016:01 U32 R/W 消费者心跳:(主机 Node-ID << 16) \| timeout_ms
0x1017:00 U16 R 设备心跳周期,ms
0x2001:00 U8 R 通信参数最高子索引,当前款式为 4
0x2001:01 U8 R/W 保存的 Node-ID,可能与当前活动 ID 不同
0x2001:02 U32 R/W 仲裁段波特率,bit/s
0x2001:03 U32 R/W 数据段波特率,bit/s
0x2001:04 U8 R/W PDO BRS,0 或 1
0x1010:04 U32 R/W 保存上述通信设置,写 0x65766173(小端 ASCII save)
0x1010:02 U32 W 显式保存 PDO 通信参数,写 save;普通初始化不执行
0x3001:01 REAL32 W 位置预设值,-0.5~0.5 Rev
0x3001:02 U32 W 写 0x73657270(小端 ASCII pres)提交位置预设并自动保存

修改通信配置要求节点在线、身份匹配、尚未初始化且 NMT 为 Pre-Operational 或 Stopped。驱动写入后回读 0x2001:01..04,确认一致才保存;随后需手动断电再上电。不要将其他设备的 0x2100/0x2101 配置方式套用到此款电机。

位置预设是独立操作:必须先确认失能,再写预设值及 pres,保存后保持失能。它修改当前位置的参考值,不是驱动电机转到目标位置。

运动控制与反馈

地址 类型 本文使用 含义
0x4401:00 U8 W 模式命令
0x4402:00 U8 R 模式 / 错误状态
0x453F:00 U16 R 详细错误码
0x4564:00 I32 Q8.24 R 输出轴位置
0x456C:00 REAL32 R 输出轴速度,Rev/s
0x4577:00 I16 R 力矩反馈,‰
0x457A:00 I32 Q8.24 W PP 目标位置
0x45FF:00 REAL32 W PV 目标速度,Rev/s
0x4571:00 I16 W 力矩目标,-1000~1000 ‰
0x4572:00 U16 R/W 最大力矩,0~1000 ‰
0x4576:00 REAL32 R 峰值力矩,N·m,以设备读取值为准
0x4581:00 REAL32 R/W 规划速度,Rev/s,须大于 0
0x4583:00 / 0x4584:00 REAL32 R/W 规划加 / 减速度,Rev/s²,须大于 0
0x4102:01..03 REAL32 W MIT 目标位置、速度、前馈力矩
0x4102:04..05 U16 W MIT Kp / Kd 原始值
0x4102:06 U16 W MIT Kp、Kd 各项运算输出限制,0~1000 ‰
0x4102:07 REAL32 R MIT Kp / Kd 尺度因子
0x4103 RECORD R/W 压缩 MIT 参数,详见 PDO 控制
0x4104:01..02 I16 R 驱动器 / 电机温度,0.1 °C
0x4713:00 U16 R TPDO 时间戳,µs
0x4001:01..07 U32 R 出厂标定数据,GUI 用于读取力矩系数

错误与恢复

0x4402 的错误回显为 0xA1 过流、0xA2 过压、0xA3 欠压、0xA4 心跳错误、0xA5 驱动器过温、0xA6 电机过温、0xAF 其他错误。进一步读取 0x453F,常见值如下:

详细错误码 含义
0x0000 无错误
0x2310 相线过流
0x3210 / 0x3220 母线过压 / 欠压
0x4210 / 0x7124 驱动器 / 电机过温
0x7121 电机堵转
0x7340 编码器错误
0x8130 心跳错误
0x8140 总线恢复错误

先消除供电、温度、负载或心跳异常,再点击清错。清错成功后应为失能,不自动恢复此前的运行模式。主机默认每 50 ms 发送心跳,初始化配置的消费者超时默认为 250 ms;停止主机或切换工具会影响心跳,重新控制前应确认状态并按需初始化。

部分已测试的旧固件存在 0x4102 缺失的情况:即使 0x4103 存在,也不代表普通 MIT SDO 模式可用。若出现 0x06020000 ObjectDoesNotExist,应记录身份和固件版本并联系固件提供方;当前 GUI 不会自动切换成另一种 MIT 协议。