1. SV660 系列与通信选型
汇川 SV660 系列是中小功率交流伺服(0.05~7.5kW,23 位编码器),同一系列按型号后缀区分主通信类型(部分型号同时支持多种协议),买驱动器时"先看后缀、再确认通信口":
| 型号后缀 | 通信类型 | 典型应用 |
|---|---|---|
| SV660P | 脉冲型(内置 RS232 调试口 + RS485/CAN 通信口,支持 Modbus RTU / CANopen / CANlink 三协议) | 脉冲控制,或 485/CAN 总线连接 PLC、HMI |
| SV660C | CANopen 专用变体(CiA 402 兼容) | CANopen 主站(PLC/运动控制卡)带多轴总线控制 |
| SV660A | CANlink 专用变体(汇川私有总线) | 汇川 H5U/AM 系列生态内多轴联动 |
| SV660N | EtherCAT 型(CoE,125µs 同步) | 高端运动控制、多轴同步 |
容易混淆的一点:SV660P 的"P"是"脉冲型"定位,不等于"只能 485"——它的通信口同时支持 Modbus RTU、CANopen、CANlink 三种协议,SV660C/A 只是"以该协议为主"的专用变体,协议内容与 P 型共用同一套 H 组参数框架。本文聚焦最常见的两条控制链路:SV660P 走 RS485(Modbus RTU)与 SV660P/C 走 CANopen(C 型即以此为默认协议),具体参数以对应型号手册为准。
本文的 CANopen 部分直接复用 CiA 402 伺服行规 的对象字典与状态机;Modbus 帧的 CRC16 校验与 Modbus 计算工具 一致。协议理论请回看对应章节,本文侧重"在 SV660 上怎么落地"。
2. 通信接口:RS485 与 CANopen 接线
两种协议对应两组不同的物理接口,接线规范也完全不同:
| 项目 | RS485(Modbus RTU) | CANopen(CAN) |
|---|---|---|
| 信号 | 485+、485-(A/B 差分对)+ GND | CANH、CANL + CAN_GND |
| 线缆 | 屏蔽双绞线,屏蔽层单端接地 | 屏蔽双绞线(120Ω 特性阻抗) |
| 终端电阻 | 总线两端各 1 只(120Ω 或 匹配 485 网络,视驱动能力) | 总线两端必须各 1 只 120Ω |
| 拓扑 | 菊花链(手拉手),支线尽量短 | 菊花链,支线 ≤0.3m |
| 最大节点 | 标准 32 节点(加中继可扩展) | 标准 110 节点(每节点 ID 1~127) |
两个最容易踩的接线坑:
- 485 必须共地:GND 线不接会导致电平漂移、偶发通信错误——这是"时好时坏"类故障的头号原因。
- CAN 终端电阻只在两端:中间节点接了终端电阻会改变总线阻抗特性,反射导致误码。驱动器面板或内部一般有终端电阻拨码/跳线,确认"端点开、中间关"。
SV660P 的 CN3/CN4 是 RJ45 网口形式,实际只用一对双绞线,按型号版本实现 RS485 或 CAN 物理层(有版本为 485 口、有版本为 CAN 口,选型与接线前务必确认手上型号的通信口类型)。汇川同族通信口(S6-L 伺服通讯线)引脚定义如下,水晶头按 T568B 线序压线:
| 针脚 | 线色(T568B) | RS485 模式 | CAN 模式 |
|---|---|---|---|
| 1 | 白橙 | — | CANH |
| 2 | 橙 | — | CANL |
| 3 | 白绿 | — | CGND(隔离地) |
| 4 | 蓝 | 485+(A) | — |
| 5 | 蓝白 | 485−(B) | — |
| 6 | 绿 | — | — |
| 7 | 白棕 | — | — |
| 8 | 棕 | GND | GND |
| 屏蔽 | — | PE(单端接地) | PE(单端接地) |
自制转接线只接 4/5 芯(蓝/蓝白)即可走 485 通信(A=蓝、B=蓝白),但两芯不共地,长线或干扰场合必须把 8 芯 GND 和屏蔽层接上;CAN 变体用 1/2 芯(CANH/CANL)+ 3 芯 CGND。以上为汇川同族(IS620/SV660)通信口定义,具体以手上型号手册为准。
参数设置除了面板按键(四位数码管 + 按键编辑 H 组参数),也可以用汇川 AutoShop / InoComm 调试软件经 RS232 口读写,两种方式改的都是同一套 H 组参数。
3. RS485 / Modbus RTU:参数配置与报文
3.1 通信参数(H0C 组)
485 通信参数集中在 H0C 组,改完一般需要重启驱动器生效:
| 参数 | 含义 | 典型值 |
|---|---|---|
| H0C.00 | 伺服轴地址(站号) | 1~247(0 为广播地址),一台一个 |
| H0C.01 | 串口波特率 | 2400~115200,常用 19200 |
| H0C.02 | 数据格式(校验/停止位) | 8-N-1 / 8-E-1 / 8-O-1,常用 8N1 |
波特率、数据格式、站号任何一个不匹配都直接通信失败。站号是"地址唯一性"的基础——多台组网时重号会导致总线冲突,报文会被错误从站应答。
3.2 Modbus RTU 帧格式与功能码
SV660 的 Modbus 映射是 标准 RTU 帧 + H 组参数寄存器:功能码 03 读、06 写单个寄存器、10 写多个寄存器。帧结构(无校验位时 8N1):
[站地址 1B] [功能码 1B] [寄存器地址 2B] [数据 nB] [CRC16 2B,低字节在前]
寄存器地址 = H 组 16 进制组号 + 组内偏移,例如 H31.00 → 0x3100;H06.04 → 0x0604
寄存器数据一律 大端(高字节在前);多寄存器(32 位数据)注意 SV660 的 CDAB 字序约定(见 3.4 报文实例)。CRC16-Modbus:初值 0xFFFF、多项式 0xA001,与本站 Modbus 工具一致。
3.3 控制寄存器:H31.00 虚拟 DI 方式
SV660 用 虚拟 DI(VDI) 把伺服使能、定位触发、点动等"硬接线输入"搬到寄存器里,上位机写寄存器即可替代端子信号。核心是 H31.00(VDI 状态寄存器,配合 H17 组把 VDI 映射为伺服使能等功能):
| 寄存器 | 功能 | 写法示例 |
|---|---|---|
| 0x3100(H31.00) | VDI 虚拟输入:bit0 伺服使能、bit1 定位触发、bit2 正点动、bit3 负点动 | 写 0x0001 使能 ON / 0x0000 断使能 |
| 0x0604(H06.04) | 速度指令(16 位) | 写 300 → 0x012C |
| 0x110C(H11.0C) | 多段位置指令(32 位,CDAB 字序) | 写 100000 → 86 A0 00 01 |
典型动作是"先使能、后触发":写 H31.00=0x0001 使能 → 写位置/速度 → 写 H31.00=0x0003(bit0+bit1)触发定位。使能状态保持期间,bit0 一直为 1,触发位叠加在上面。
3.4 报文实例(站号 01)
| 动作 | 功能码 | 完整报文 |
|---|---|---|
| 伺服使能 ON | 06 写单 | 01 06 31 00 00 01 46 F6 |
| 伺服断使能 | 06 | 01 06 31 00 00 00 87 36 |
| 定位触发 | 06 | 01 06 31 00 00 03 C7 37 |
| 正点动 | 06 | 01 06 31 00 00 05 47 35 |
| 写速度 300 | 06 | 01 06 06 04 01 2C C8 CE |
| 写位置 100000 | 10 写多 | 01 10 11 0C 00 02 04 86 A0 00 01 DB 00 |
读回实际位置/速度/状态用功能码 03:01 03 寄存器 2B 数量 2B,应答帧带字节计数字段,32 位数据同样按 CDAB 字序拼装。位置指令的 CDAB 字序拆解:100000 = 0x0001_86A0,低 16 位字 0x86A0 在前(86 A0),高 16 位字 0x0001 在后(00 01)——与很多 PLC 的"高字在前"习惯相反,这是 485 定位最常见的出错点。
4. CANopen / CiA 402:参数配置与对象字典
4.1 通信参数(CANopen 模式)
SV660 进入 CANopen 控制模式与 485 的模式选择共用一套参数框架:
| 参数 | 含义 | 设置值 |
|---|---|---|
| H02.00 | 控制模式 / 通信协议选择 | 8 = CANopen 通信控制 |
| H0C.00 | CANopen 节点号(Node-ID) | 1~127,全网唯一,与主站组态一致 |
| H0C.08 | CAN 波特率代码 | 5 = 500kbps(常用),与主站一致 |
CANopen 没有"自动发现":主站组态里配的节点号、波特率如果和驱动器不一致,SDO 直接无响应(COB-ID 对不上)。排查"发 6040 没反应"先查这两项,再看 6041 状态字回读。
4.2 对象字典:控制字、状态字与运动对象
SV660 的 CANopen 遵循 CiA 402 设备行规,核心对象(与 CiA 402 篇 完全一致):
| 索引 | 名称 | 方向 | 说明 |
|---|---|---|---|
| 6040h | 控制字 Controlword | RPDO | 主站写,驱动状态机迁移(bit0~3/4/7) |
| 6041h | 状态字 Statusword | TPDO | 驱动器回读,反映当前状态位 |
| 6060h / 6061h | 模式 / 模式显示 | RPDO/TPDO | 1=位置、3=速度、4=转矩 |
| 607Ah | 目标位置 | RPDO | 32 位位置指令(单位:编码器脉冲) |
| 60FFh | 目标速度 | RPDO | 32 位速度指令 |
| 6064h | 实际位置 | TPDO | 32 位位置反馈 |
4.3 使能状态机:0x0006 → 0x0007 → 0x000F
与脉冲/485 方式不同,CANopen 控制不能直接写"使能位",必须按 CiA 402 状态机逐步迁移。控制字关键位:bit0 Switch On、bit1 Enable Voltage、bit2 Quick Stop、bit3 Enable Operation、bit4 New Setpoint、bit7 Fault Reset。最常用的三个控制字:
| 控制字 6040h | 作用 | 状态字 6041h 期望反馈 |
|---|---|---|
| 0x0006(bit1+bit2) | 电压使能:预充电、功率电路就绪 | bit1=1 Voltage Enabled |
| 0x0007(bit0+1+2) | 准备就绪:抱闸释放、初始化完成 | bit2=1 Ready to Switch On |
| 0x000F(bit0+1+2+3) | 运行使能:电机励磁可动 | bit2=1 Operation Enabled |
位置模式下启动一次定位的完整序列:
- SDO 写 6040h = 0x0006 → 0x0007 → 0x000F(使能完成)
- SDO 写 607Ah = 目标位置;写 60FFh = 运行速度(可选,取决于速度来源配置)
- SDO 写 6040h = 0x001F(0x000F + bit4 New Setpoint),触发本次位置有效
- 轮询 6041h,bit10(Target Reached)= 1 表示到位
- 到位后写 6040h = 0x000F 清除 bit4,等待下一条指令
从掉电状态直接写 0x000F 会被驱动器拒绝(状态机不允许非法迁移)。严格按 0x0006 → 0x0007 → 0x000F 顺序,每一步可以轮询 6041h 确认后再写下一步——这是"写控制字被拒"最常见的原因。
故障时:读 6041h bit3=1 进入 Fault 态,先清除故障源,再写 6040h = 0x0080(bit7 Fault Reset)复位,状态机回到待机态重新走使能序列。故障明细读诊断对象(如 1003h 预定义故障字段),驱动器面板同时显示 Er.xxx 报警码。
5. 控制流程对比:485 vs CANopen
两种方式的差别本质是"寄存器 vs 对象字典"两种范式,落地到同一动作:
| 动作 | RS485 / Modbus RTU | CANopen / CiA 402 |
|---|---|---|
| 使能 | 写 0x3100 = 0x0001(bit0) | 6040h:0x0006 → 0x0007 → 0x000F |
| 断使能 | 写 0x3100 = 0x0000 | 6040h = 0x0000(或按状态机回退) |
| 定位 | 写 0x110C 位置 → 写 0x3100=0x0003 触发 | 写 607Ah 位置 → 6040h |= bit4 |
| 点动 | 写 0x3100 = 0x0005 / 0x0009(bit2/bit3) | 切换 6060h=3 速度模式,写 60FFh |
| 回状态 | 读 03 功能码轮询寄存器 | TPDO 主动上报 6041h/6064h(事件或周期) |
| 定位精度依据 | H 组参数(H05 电子齿轮等) | 对象字典(6091h/6092h 齿轮比、608Fh 位置单位等) |
选型建议:单台、与触摸屏/HMI 或老式 PLC 对接 → 485 Modbus(实现简单、调试直观);多台组网、周期同步、总线负载敏感 → CANopen(PDO 周期映射 + 状态机语义,2M 高速总线可选)。
6. 交互式演示:SV660 控制命令与报文生成器
选择通信方式和命令,实时生成对应报文:Modbus RTU 模式逐字节标注字段并现场计算 CRC16;CANopen 模式生成 SDO 帧(COB-ID = 0x600+节点号)并高亮控制字置位。上方为帧结构,下方为控制字位图。
观察要点:同一个"伺服使能"动作,485 是一条 8 字节 RTU 帧(6 字节数据 + CRC),CANopen 是 8 字节 SDO 帧(2B 命令符 + 索引 6040h + 控制字 0x000F)——前者靠 H31.00 的位定义,后者靠 6040h 状态机语义;对比位图可以看出两种协议的"控制字"设计差异。
7. 通信控制 C 代码(Modbus RTU + CANopen SDO)
下面是可直接编译的帧构建示例:Modbus 部分含 CRC16 与 SV660 常用命令封装;CANopen 部分按 CiA 402 SDO 客户端规范生成写入帧。串口/CAN 发送接口按你的平台实现(本站工具链可参考 Modbus 工具 的 CRC 与帧逻辑)。
8. 工程要点与误区
- H 组参数改完要重启:H0C 通信参数、H02.00 控制模式等属于"启动时加载"参数,面板/软件修改后需重新上电才生效,急着测试会白等。
- 电机编号必须配对:H00.00 电机编号要与你装的电机编码器一致(如 20 位增量、23 位绝对值),配错报 ER120 产品匹配故障。
- 485 三件套:共地(GND 必接)、波特率一致(H0C.01)、站号唯一(H0C.00);总线两端终端电阻按需。
- CANopen 三件套:节点号(H0C.00)与主站组态一致、波特率(H0C.08)一致、使能走状态机(0x0006→0x0007→0x000F),任意一项错都表现为"发了没反应"。
- CDAB 字序:485 方式写 32 位位置(H11.0C)低字在前;CANopen SDO 数据小端。两种协议都容易在这里栽跟头,务必对照报文验证。
- 报警处理:面板显示 Er.xxx,定位后查手册故障码表;CANopen 下写 6040h=0x0080 复位,485 下对应报警复位位/方式以手册为准。复位前必须消除故障源,否则复位无效。
- 调试工具:站内 Modbus 计算工具 可离线验算 CRC16 与帧字节,先验帧再上机,能把 90% 的报文错误挡在上位机阶段。
9. 小结
SV660 一机两协议,本质是"参数表驱动"与"状态机驱动"两种控制范式的分水岭:RS485/Modbus 把伺服当作一组 H 寄存器读写,简单直接,适合单机与 HMI/老 PLC;CANopen 把伺服当作 CiA 402 节点,靠对象字典与状态机语义,适合多轴组网与周期同步。选型时按"需要几台、要不要同步、上位机是什么"定,接线和参数按本文两套清单对照配置,大部分通信问题都能在报错前避免。
至此 CAN 板块从 CAN 帧(04)、双波特率(05)到 CANopen 行规(01/02)与从站实现(03),再到本文的真实驱动器落地,形成"协议 → 行规 → 设备"完整链路。