研蓝 S14 系列一体化步进 CANopen 快速操作手册
研蓝 S14 系列一体化步进 CANopen 快速操作手册
手册版本 V4.06|SDO 报文说明:
• COB‑ID:主站发送 SDO 请求 = 0x600 + NodeId;从站应答 SDO = 0x580 + NodeId;示例全部使用节点 ID=1
• expedited 快速 SDO,8 字节,小端模式(低字节在前)
• 报文格式:COB‑ID | 命令字节 | 索引低字节 |索引高字节 |子索引 | data0 data1 data2 data3
• 示例:601 23 7A 60 00 30 75 00 00
○ 601:主站发至 Node1;23:写 4 字节;7A 60:索引 0x607A;00 子索引 0;后面 4 字节为数值小端
• 读报文命令字节固定0x40,应答命令字节0x43;错误应答0x80
目录
1. 基础总览
2. CiA‑402 驱动器状态机(所有运动模式前置条件 + 状态切换报文范例)
3. 5 种运动模式快速使用 (每个模式末尾附带 SDO 报文组合范例,NodeId=1)
4. IO 输入输出快速参考
5. LED 双色灯故障速查表
6. 常见现场问题排查
7. 寄存器完整清单
1、基础总览
通讯基础
• 最高波特率:1 Mbit/s;支持 SDO、PDO、SYNC 同步帧、NMT、Heartbeat 心跳。
• 对象字典分区
| 地址段 | 用途 |
|---|---|
|0000‑0FFFh | 数据类型参数 |
|1000‑1FFFh |CANopen 通信参数 |
|2000‑5FFFh | 厂商自定义(电机、电流、IO) |
|6000‑9FFFh |CiA‑402 标准运动对象 |
上电优先配置
• 0x2000‑0:峰值电流,单位 mA;0x2001‑0:细分数脉冲 / 圈。
脱机(手动转电机):0x6040=0x06;恢复锁轴:0x6040=0x07
2、CiA‑402 驱动器状态机
⚠️不走完状态机,驱动器不响应任何运动指令;所有模式执行前,必须执行这套状态切换
控制字:0x6040(写);状态字:0x6041(读)
| 状态跳转动作 | 控制字 0x6040 | 预期状态字 0x6041 | 说明 |
| 上电初始化→伺服无故障 | 自动 | 0x0250 | 上电自检完成 |
| 伺服无故障 → 伺服准备好 | 0x06 | 0x0231 | 就绪 |
| 伺服准备好 → 等待打开使能 | 0x07 | 0x0233 | 等待使能 |
| 等待使能 → 伺服运行 | 0x0F | 0x0237 | ✅可下发运动指令 |
| 故障复位 | 0x80(bit7 上升沿) | 0x0250 | 故障清除,上升沿有效 |
| 快速停机 | 0x02 | 0x0217 | 快速停机激活 |
✅【状态切换完整报文范例 NodeId=1】
Plain
//1.伺服无故障 → 伺服准备好,写控制字0x06
601 2B 40 60 00 06 00 00 00
//应答 581 60 40 60 00 00 00 00 00
//2.伺服准备好 → 等待打开使能,写控制字0x07
601 2B 40 60 00 07 00 00 00
//3.等待使能 → 伺服运行,写控制字0x0F (使能完成,可以运动)
601 2B 40 60 00 0F 00 00 00
//读状态字确认状态,读0x6041
601 40 41 60 00 00 00 00 00
//正常应答:581 43 41 60 00 37 02 00 00 →返回0x0237伺服运行
故障复位报文(出现报警后)
Plain
601 2B 40 60 00 80 00 00 00
3、5 种运动模式快速使用(附带 SDO 报文范例 NodeId=1)
设置模式:写 0x6060;读0x6061确认实际生效模式
3.1 PP 轮廓位置模式|点位定位,最常用
模式编号:0x6060 = 1
1. 0x6060 = 1 设置 PP 模式
2. 设置:0x607A目标位置;0x6081最大速度;0x6083加速度;0x6084减速度
3. 执行上面【状态切换报文】到达伺服运行 (0x0F)
4. 绝对定位触发:控制字\\0x6040 = 0x1F\\\\(bit5 上升沿触发新位置)\\
○ 相对定位触发:0x6040 =0x5F
5. 状态字6041h bit10=1 → 位置到达;触发完成写回0x0F清除触发位。
✅ PP 模式完整报文范例:绝对位置移动到 30000 脉冲
Plain
//1 设置PP模式 0x6060=1
601 2B 60 60 00 01 00 00 00
//2 设置目标位置0x607A = 30000 (0x00007530,小端:30 75 00 00)
601 23 7A 60 00 30 75 00 00
//3 设置轮廓最大速度0x6081=10000(0x2710)
601 23 81 60 00 10 27 00 00
//4 设置加速度0x6083=10000
601 23 83 60 00 10 27 00 00
//5 设置减速度0x6084=10000
601 23 84 60 00 10 27 00 00
//6 【前置必须执行状态切换报文,到伺服运行0x0F】
//7 触发绝对定位 控制字0x1F
601 2B 40 60 00 1F 00 00 00
//运动完成之后清除触发位,回到0x0F,准备下一次定位
601 2B 40 60 00 0F 00 00 00
//读状态字,判断bit10是否置位,位置到达
601 40 41 60 00 00 00 00 00
3.2 PV 轮廓速度模式|定速持续旋转
模式编号:0x6060 =3
1. 0x6060 =3 设置 PV 速度模式
2. 设置0x60FF目标速度;加速度0x6083;减速度0x6084;数值正负代表旋转方向
3. 执行状态切换报文,伺服运行0x0F,电机开始按照目标速度运行
4. 减速停机:0x6040 = 0x010F;快速急停:0x6040 = 0x000B
状态字 bit10=1:速度到达;bit12=1:速度为 0。
✅ PV 模式完整报文范例:正向 20000 脉冲 /s 运行,之后减速停止
Plain
//1 设置PV模式 0x6060=3
601 2B 60 60 00 03 00 00 00
//2 设置目标速度0x60FF = 20000 (0x4E20)
601 23 FF 60 00 20 4E 00 00
//3 设置加速度
601 23 83 60 00 10 27 00 00
//4 设置减速度
601 23 84 60 00 10 27 00 00
//5 【前置:状态切换报文,进入伺服运行0x0F】电机开始加速运行
//6 减速停机 Halt bit8置1,控制字0x010F
601 2B 40 60 00 0F 01 00 00
//急停报文(紧急)
601 2B 40 60 00 0B 00 00 00
3.3 HM 回原点模式|机械回零 / 软件标定零点
模式编号:0x6060 =6
0x6098:回原点方式选择(CiA402 标准)
|
值 |
回零方式定义 | 动作说明 |
|
1 |
负向,寻找负限位开关,再找编码器索引 Z | 电机负向运行,碰到负限位后反向,寻找 Z 脉冲作为零点 |
| 2 | 正向,寻找正限位开关,再找编码器索引 Z | 电机正向运行,碰到正限位后反向,寻找 Z 脉冲作为零点 |
| 17 | 负向,寻找 HOME 原点开关,不找 Z 相 | 负向运行,检测到 Home 原点开关边沿即停止,开关位置为零点 |
| 18 | 正向,寻找 HOME 原点开关,不找 Z 相 | 正向运行,检测到 Home 原点开关边沿即停止,开关位置为零点 |
| 19 | 正向找 HOME 开关,开关触发后反向低速离开开关边沿 | 常用方案:正向走到 Home 开关,触发后反向低速,离开开关边沿锁定零点 |
| 20 | 正向找 HOME 开关,开关触发后反向低速离开开关边沿 | 正向走到 Home 开关,触发后反向低速,离开开关边沿锁定零点 |
| 21 | 负向找 HOME 开关 + 负限位,离开边沿锁定零点 | 负向运行,先碰到 Home,再配合负限位保护,离开边沿锁定零点 |
| 22 | 负向找 HOME 开关 + 正限位,离开边沿锁定零点 | 负向运行,先碰到 Home,再配合正限位保护,离开边沿锁定零点 |
| 23 | 正向,仅使用负限位作为零点,不使用 Home 开关 | 正向运行,碰到负限位直接作为零点 |
| 24 | 正向,仅使用正限位作为零点,不使用 Home 开关 | 正向运行,碰到正限位直接作为零点 |
| 33 | 负向,寻找编码器 Z 索引,无机械开关 | 电机负向运转,捕获第一个 Z 脉冲作为零点 |
| 34 | 正向,寻找编码器 Z 索引,无机械开关 | 电机正向运转,捕获第一个 Z 脉冲作为零点 |
| 35 | 软件置零,电机不旋转 | 软件标定零点,电机不动,直接将当前位置设置为零点 |
| 37 | 软件置零,电机不旋转,带校验 | 软件标定零点,不转动电机,内部位置寄存器写入 0,附加状态校验 |
选用说明:
• 17~22:原点开关回零(最常用);19、20 为工业设备首选,在开关边沿定位,避免开关内部死区。
• 23~24:只用限位做零点,无单独 Home 传感器。
• 33~34:仅编码器 Z 相回零,不需要外部传感器。
• 35、37:软件零点标定,电机轴保持静止,适合无传感器标定场景。
1. 0x6060 =6 设置 HM 回原模式
2. 设置回原方式0x6098,参考上表;17~30 硬件开关回零;35 / 37 = 软件标定零点,电机不转动,直接写当前位置为零点
3. 设置回原高速0x6099‑01,回原低速0x6099‑02,回原加速度0x609A
4. 执行状态切换报文,伺服运行;控制字0x6040=0x1F启动回原。
bit12=1:回原点完成;bit13=1:回原故障。
✅ HM 模式报文范例 A:硬件回零,模式 19(HOME 开关回零)
Plain
//1 设置HM回原模式
601 2B 60 60 00 06 00 00 00
//2 设置回原模式号0x6098 =19
601 2B 98 60 00 13 00 00 00
//3 回原高速 0x6099‑01 =8000
601 23 99 60 01 40 1F 00 00
//4 回原低速 0x6099‑02 =1000
601 23 99 60 02 E8 03 00 00
//5 回原加速度 0x609A =5000
601 23 9A 60 00 88 13 00 00
//6 【前置状态切换报文到伺服运行0x0F】
//7 启动回原 控制字0x1F
601 2B 40 60 00 1F 00 00 00
//读状态字,bit12判断回原完成
601 40 41 60 00 00 00 00 00
✅ HM 模式报文范例 B:【软件标定零点,模式 35,电机完全不动,直接把当前位置设置系统零点】
适配你的项目标定零点业务场景!
Plain
//HM模式
601 2B 60 60 00 06 00 00 00
//回原模式35,不运动直接置零点
601 2B 98 60 00 23 00 00 00
//前置状态切换,伺服运行0x0F
//启动回原 0x1F;驱动器直接将当前电机位置写为零点,电机轴不旋转
601 2B 40 60 00 1F 00 00 00
3.4 PT 力矩模式|恒力矩、碰撞回零、物体抓取
模式编号:0x6060 =4
1. 0x6060 =4 设置 PT 力矩模式
2. 0x2158‑01力矩子模式:1 碰撞回零;2 抓取;3 恒力矩输出
3. 0x6071设置力矩等级(1‑255);设置最大限速防止飞车0x2158‑03
4. 状态切换到伺服运行,电机输出对应力矩;堵转不会报警。
✅ PT 模式报文范例:恒力矩模式,力矩等级 100
Plain
//1 设置PT力矩模式
601 2B 60 60 00 04 00 00 00
//2 设置力矩工作模式:3=恒力矩输出 0x2158‑01
601 2B 58 21 01 03 00 00 00
//3 设置力矩等级0x6071 =100
601 2B 71 60 00 64 00 00 00
//4 设置力矩模式最大限速0x2158‑03 =6000
601 23 58 21 03 70 17 00 00
//5【前置状态切换报文,伺服运行0x0F】电机输出力矩
//停机,控制字Halt 0x010F
601 2B 40 60 00 0F 01 00 00
3.5 IP 插补模式|多轴同步插补运动
模式编号:0x6060 =7
⚠️依赖SYNC 同步帧(COB‑ID=0x80,8 字节 0 数据),主站周期广播 SYNC;插补周期配置0x60C2‑1单位 ms;每个 SYNC 生效0x60C1‑1目标位置。
1. 0x6060=7进入 IP 插补模式
2. 设置插补周期0x60C2‑1
状态切换伺服运行;主站周期性写0x60C1‑1目标位置,发送 SYNC 帧,执行插补运动。
✅ IP 插补模式报文范例
Plain
//1 设置IP插补模式
601 2B 60 60 00 07 00 00 00
//2 设置插补周期0x60C2‑1 = 5ms
601 2B C2 60 01 05 00 00 00
//3【前置状态切换报文到伺服运行0x0F】
//4 设置插补下一周期目标位置0x60C1‑1 =10000脉冲
601 23 C1 60 01 10 27 00 00
//主站广播SYNC同步帧(所有轴共用,不需要节点ID)
80 00 00 00 00 00 00 00
//下一周期更新新的插补目标位置,再次发送SYNC帧,循环执行
说明:IP 模式适合上位机做轨迹规划,周期性下发目标位置,靠 SYNC 帧同步多轴执行。
4、IO 输入输出快速参考
DI IN1‑IN5;DO OUT1‑OUT3
1. 0x2152 sub1‑5:DI 端口功能选择(枚举,禁止组合数值)
○ 0 无效;1 原点 Home;2 负限位;4 正限位;8 急停
2. 0x2153 sub1‑5:输入滤波,单位 ms,抗抖动
3. 0x2154‑1:全局输入有效电平:0 低电平有效;1 高电平有效
4. 0x2154‑2:通道独立取反掩码;bit0 对应 IN1,bit=1 通道取反
5. 0x2155【只读】硬件原始引脚电平,不受极性 / 取反影响
6. 0x60FD【只读】⭐CiA‑402 逻辑 DI 状态,经过极性 + 取反运算;原点限位急停功能读取这个寄存器。
IO 调试范例报文:读取硬件原始 DI 和逻辑 DI
Plain
//读硬件原始DI 0x2155
601 40 55 21 00 00 00 00 00
//读CiA402逻辑DI状态0x60FD
601 40 FD 60 00 00 00 00 00
DO 输出
1. 0x2005 sub1‑4:输出端口功能;0 取消;1 报警;2 到位;3 运行;4 回原完成。
2. 0x2008‑0输出有效电平;0x60FE‑1直接写输出 bit0‑bit2 对应 OUT1‑OUT3。
5、LED 双色灯故障速查表
| LED 指示灯 | 故障类型 | 排查要点 |
| 1 红 1 绿 | 过流 | 电机短路、相序错误、电流参数过大、机械堵转 |
| 2 红 1 绿 | 相位开路 | 电机相线断线、端子虚接松动 |
| 3 红 1 绿 | 母线电压过高 | 电源超标;减速回馈泵升电压,加大减速时间 |
| 4 红 1 绿 | 母线电压过低 | 电源功率不足;负载大,电流设置过大 |
| 5 红 1 绿 | 闭环位置超差 | 负载过大、加速度太高、机械卡滞、编码器接线异常 |
| 6 红 1 绿 | 闭环编码器故障 | 编码器断线、接反;线数参数配置错误 |
故障复位报文:
Plain
601 2B 40 60 00 80 00 00 00
6、常见现场问题排查
1. 发指令电机不动
○ 确认状态字0x6041=0x0237伺服运行,无故障;确认模式0x6061;检查急停 DI 逻辑状态0x60FD;PP 模式确认 bit5 上升沿触发。
2. DI 硬件有电,原点限位不生效
○ 对比0x2155硬件原始和0x60FD逻辑值;检查0x2152端口功能分配;检查0x2154极性与通道取反掩码。
3. 回原点撞限位
○ 回原模式号匹配接线;原点开关 DI 极性;回原低速不要设置过高。
4. 丢步位置不准
○ 电机电流、细分参数匹配上位机;速度加速度不要超限;闭环检查编码器接线。
5. SDO 通讯报错
○ CAN 总线两端 120Ω 终端电阻;波特率、节点 ID 匹配;SDO 报文固定 8 字节,小端模式低字节在前。
7、寄存器完整清单(索引、子索引、读写、类型、字节、单位、默认、备注)
| 索引 (Hex) | 子索引 | 读写 | 数据类型 | 字节长度 | 单位 | 出厂默认值 | 备注 |
| 【CiA‑402 标准运动对象 0x60xx】 | |||||||
| 0x6040 | 0 | RW | U16 | 2 | 控制字;状态机、运动触发、故障复位 | ||
| 0x6041 | 0 | RO | U16 | 2 | 状态字;驱动器状态、到位、故障标志 | ||
| 0x6060 | 0 | RW | I8 | 1 | 8 | 设置运行模式:1‑PP,3‑PV,4‑PT,6‑HM,7‑IP | |
| 0x6061 | 0 | RO | I8 | 1 | 8 | 读取实际生效运行模式 | |
| 0x6064 | 0 | RO | I32 | 4 | pulse | 实际电机位置 | |
| 0x606C | 0 | RO | I32 | 4 | pulse/s | 实际速度 | |
| 0x607A | 0 | RW | I32 | 4 | pulse | 0 | PP 模式:目标位置 |
| 0x6071 | 0 | RW | I16 | 2 | 力矩等级 |
0 |
PT 力矩模式目标力矩;1‑255 等级 |
| 0x60FF | 0 | RW | I32 | 4 | pulse/s | 0 | PV 模式目标速度,正负代表方向 |
| 0x6081 | 0 | RW | U32 | 4 | pulse/s | 轮廓模式最大速度 | |
| 0x6083 |
0 |
RW | U32 | 4 | pulse/s² | 轮廓加速度 | |
| 0x6084 | 0 | RW | U32 | 4 | pulse/s² | 轮廓减速度 | |
| 0x6098 | 0 | RW | U8 | 1 | HM 回原点模式;详见 HM 章节枚举表;17‑37;35/37 软件置零点不转电机 | ||
| 0x6099 | 1 | RW | U32 | 4 | pulse/s | 回原点高速 | |
| 0x6099 | 2 | RW | U32 | 4 | pulse/s | 回原点低速 | |
| 0x609A | 0 | RW | U32 | 4 | pulse/s² | 回原点加速度 | |
| 0x60FD | 0 | RO | U16 | 2 | bit 映射 | ⭐CiA‑402 逻辑 DI 状态;经过极性、取反处理;bit0‑4 对应 IN1‑IN5 | |
| 0x60FE | 1 | RW | U16 | 2 | bit 映射 | DO 输出控制 bit0‑bit2 对应 OUT1‑OUT3 | |
| 0x60C1 |
1 |
RW | I32 | 4 | pulse | 0 | IP 插补模式目标位置 |
| 0x60C2 | 1 | RW | U8 | 1 | ms | 5 | IP 插补周期 |
| 【厂商自定义:电机参数 0x20xx】 | |||||||
| 0x2000 | 0 | RW | U16 | 2 | mA | 1000 | 电机峰值电流,按电机铭牌设置 |
| 0x2001 | 0 | RW | U32 | 4 | pulse/r | 4000 | 细分数,电机一圈脉冲总数 |
| 0x2002 | 0 | RW | U16 | 2 | ms | 25 | 电流平滑时间 |
| 0x2003 | 0 | RW | U16 | 2 | 0x1919 | 空闲 / 运行最小电流百分比 | |
| 0x2005 | 1‑4 | RW | U8 | 1 | 0 | 输出端口功能;0 取消,1 报警,2 到位,3 运行,4 回原完成 | |
| 0x2008 | 0 | RW | U16 | 2 | 0 | 输出端口有效电平配置 | |
| 0x2051 | 0 | RW | U16 | 2 | 0 | 电机方向;0 顺时针正向;1 逆时针正向;禁止运行中修改 | |
| 【厂商自定义:DI 输入参数 0x21xx】 | |||||||
| 0x2152 | 1‑5 | RW | U8 | 1 | 0 | IN1‑IN5 端口功能选择;0 无效,1 原点,2 负限位,4 正限位,8 急停,枚举不可叠加 | |
| 0x2153 | 1‑5 | RW | U16 | 2 | ms | 2 | IN1‑IN5 输入硬件滤波时间,抗抖动 |
| 0x2154 | 1 | RW | U16 | 2 | 0 | DI 全局有效电平:0 低有效 /1 高有效 | |
| 0x2154 | 2 | RW | U16 | 2 | bit 掩码 | 0 | DI 通道独立取反掩码 bit0‑bit4 对应 IN1‑IN5 |
| 0x2155 | 0 | RO | U16 | 2 | bit 映射 | ⭐DI 硬件原始引脚电平;不受极性、取反影响;仅看硬件电气信号 | |
| 0x2158 | 1 | RW | U8 | 1 | 3 | 力矩模式工作选择:1 碰撞回零;2 抓取;3 恒力矩输出 | |
| 0x2158 | 2 | RW | U16 | 2 | pulse | 0 | 力矩模式偏移脉冲 |
| 0x2158 | 3 | RW | U16 | 2 | pulse/s | 6000 | 力矩模式最大限速,防止飞车 |
| 【CANopen 通信参数 0x10xx】 | |||||||
| 0x1010 | 1 | RW | U32 | 4 | 保存参数到 Flash,写入魔术字1702257011 | ||
| 0x1011 | 1 | RW | U32 | 4 | 恢复出厂参数魔术字 | ||
| 0x1014 | 0 | RW | U32 | 4 | COB‑ID | 0x80+NodeID | 紧急报文 ID |
| 0x1017 | 0 | RW | U16 | 2 | ms | 1000 | 心跳报文周期;0 关闭心跳 |
| 【PDO 通信参数 0x1400‑0x1A03】 | |||||||
| 0x1400~0x1403 | 1‑6 | RW | RPDO1‑4 通信参数(COB‑ID、传输类型) | ||||
| 0x1600~0x1603 | 0‑8 | RW | RPDO 映射参数 | ||||
| 0x1800~0x1803 | 1‑6 | RW | TPDO1‑4 通信参数 | ||||
| 0x1A00~0x1A03 | 0‑8 | RW | TPDO 映射参数 |
补充说明:
1. 所有示例报文节点 ID=1;如果实际节点 ID 不是 1,修改 COB‑ID:主站写 0x600+ID;读应答0x580+ID。
2. SDO expedited 写报文命令字节固定0x23(4 字节写),0x2B(2 字节写);读命令0x40。
3. 全部小端模式:数值低字节放在报文靠前数据位。
4. 模式 35 回原报文适合你项目软件标定零点,电机不转动,直接保存当前电机轴坐标作为零点。
5. 0x1010‑1魔术字1702257011写入执行 Flash 保存,不要循环高频调用,会损耗 Flash 寿命。
0x6098 回零模式遵循 CiA402 标准定义,不同模式依赖对应的 DI 端口配置(Home / 限位 / Z 相)。