BUSMUSTBUSMASTER · CANopen 用户教程
目录 · 14 个章节
BUSMASTER · CANopen CC 系列教程

连接节点,完成参数与过程数据读写

适用 BUSMASTER 3.2.2.50 · 中文界面。从第一个身份参数开始,依次学习发送任务、网络管理、PDO、文件传输、事件分析和工程恢复。

示例采用节点 8、CAN 1、500 kbit/s。教学节点、练习文件及对象初值见第 1 章。

开始阅读 →

01开始前,准备好这些

准备 BUSMASTER 3.2.2.50,中文界面、受支持的 CAN 接口、已接线且可操作的 CANopen 对端,以及对端的 Node-ID、波特率和匹配的厂商 EDS/DCF。

名称用途使用时确认
CAN 通道选择实际接线的接口CAN 1 是本机分配的逻辑通道;对应哪个物理口,以通道配置为准
Node-ID定位总线上的节点,范围 1~127示例为 8;手动添加记录不会创建从站
EDS / DCF描述对象、类型、权限和 PDO 配置导入文件不会自动写入设备;文件须与设备型号及固件匹配

教学节点与练习文件

本教程的截图和数值采用教学节点 8,普通 CAN、500 kbit/s、默认 SDO 路由(请求 0x608、响应 0x588)。教学节点由独立的 canopen-python 2.4.1 对端运行,采用下表对象。

本页提供 EDS 和初始数据文件下载。EDS 可用于离线浏览对象、PDO 定义和练习工程保存;在线练习需运行教学节点,或连接实际 CANopen 设备。接入实际设备时,使用对应型号和固件的厂商 EDS,并按对象字典选择地址、类型及读写权限。

教学对象类型 / 权限本页用途与初值
0x1018:1UNSIGNED32 / ro身份读取与重复读取;0x4255534D,原始字节 4D 53 55 42
0x1017:0UNSIGNED16 / rw心跳生产周期;初值 500 ms,F4 01
0x2000:0UNSIGNED32 / rw / 可映射演示数值;初值 0x12345678,78 56 34 12
0x2002:0UNSIGNED16 / rw / 可映射演示模式;初值 9,09 00
0x1400 / 0x1600RPDO1 通信 / 映射COB-ID 0x208,异步类型 255;依次映射 0x2000:0 的 32 位与 0x2002:0 的 16 位
0x1800 / 0x1A00TPDO1 通信 / 映射COB-ID 0x188,同一组 6 字节;教学节点在 Operational 时周期发送
0x2100:0DOMAIN / rw文件练习;教学节点初始数据 6145 字节,另附恢复用文件

教学模型还提供有符号数、浮点数、字符串等对象,供进阶浏览。

本工具范围为 CANopen CC / CiA 301、经典 CAN,单帧数据至多 8 字节。CANopen FD / USDO、主动 LSS 配置主站及 CiA 402 专用面板不在本页功能范围;LSS 可在事件中被动解析。

02先认识主窗口

在 BUSMASTER 顶部功能区找到 CANopen(位于“XCP 标定”旁),点击打开 CANopen 窗口。

CANopen 主窗口:节点 8、教学 EDS、系统时间显示与身份对象读取结果。
区域用途
左上:节点发现、添加、选择目标节点;查看状态、身份匹配与最近接收
右侧:事件解析查看时间、TX/RX、COB-ID、类型、节点、解析字段和原始数据
下方:命令准备选择 SDO/NMT/SYNC/TIME/PDO,填写地址、数值和发送计划
底部:设置与状态设置通道与监测,开始/停止分析,查看事务结果

准备 → 检查预览 → 开始发送是三个连续动作。修改命令、对象或计划后,要重新准备。TX、RX 分别表示发送和接收方向;读取成功可通过节点响应和底部完成结果确认。

“发送任务…”用于查看或停止重复事务;“分析历史…”用于筛选历史记录,详见事件分析一章。

03连接 CAN,并启动分析

  1. 回到 BUSMASTER 主界面,点击驱动选择,选择实际使用的 CAN 接口。
  2. 打开通道配置,按完整设备名称和物理口选择已接线通道,设置与节点一致的波特率。示例使用普通 CAN、500 kbit/s。
  3. 核对 CAN_H、CAN_L、参考地与终端配置,点击 BUSMASTER 的连接。
  4. 打开 CANopen → 设置…,在“CAN 通道”选择刚才的实际通道,本页为 CAN 1;选择心跳(Heartbeat),初次使用保留默认监测及响应超时。
  5. 将“时间显示”选为系统时间,点击应用返回主窗口,再点击开始分析。
  6. 观察新的 RX 事件、节点状态与最近接收时间。存在手动添加的行,只表示本机已有记录。
CANopen 设置:本机监测方式、响应超时与 3.2.2.50 的时间显示选项。

Heartbeat 设置的是 BUSMASTER 的本机监测方式,不会自动写入设备的心跳周期。设备是否生产心跳及其周期由设备配置决定;设备支持时可通过 0x1017:0设置。

关闭监测和 Heartbeat 不主动发送节点守护请求;选择 Node guarding 后,软件会按设置周期发送守护 RTR。按设备实际支持选择,通常优先使用 Heartbeat。

选择显示时间

模式含义
系统时间按电脑本地时区显示 HH:mm:ss.fff。BUSMUST USB-CAN(FD) 使用采集时间;其他驱动若未提供该时间,则使用本机接收时间
绝对时间显示原始采集时间戳的秒值;起点依驱动而定,大秒数本身不是错误
相对时间以当前分析会话中该通道首个观测帧为零点;不是与上一条事件的时间间隔

该设置同时控制事件列表、节点最近接收时间和分析历史;只切换时间显示不会改变 TIME 报文。TIME 的发送基准见网络命令。没有 RX 时,先检查通道、波特率、接线和对端是否发送。

04发现或手动添加节点

知道 Node-ID 时手动添加

  1. 在左上“节点编号”输入 8,点击添加。
  2. 单击节点 8 的行选中它,再核对下方发送区域的“节点”也是 8。

左上的添加编号与下方发送编号用途不同。相同编号不会重复插入;添加按钮因重复编号不可用属于正常状态。

按范围发现节点

  1. 已连接并开始分析后,打开设置…。
  2. 在“节点发现默认值”将范围设为 8 至 8,点击应用。
  3. 返回主窗口点击发现,等待结束后选择节点;需要中断时点击停止扫描。

发现会主动读取范围内节点的身份对象。未发现节点时,检查是否有心跳,并尝试读取厂商手册中列出的可读对象。

05导入 EDS,并查看对象字典

加入资源库并绑定节点

  1. 选中节点 8,打开设置… → 资源库…。
  2. 在 EDS/DCF 资源库点击添加…,选择下载的 busmaster-canopen-demo.eds;实际设备选择其厂商文件。
  3. 选中刚加入的文件,点击使用选中项。
  4. 返回设置,确认“节点 EDS/DCF”显示正确文件,点击应用。
EDS/DCF 资源库:添加教学描述文件,选择后应用到当前节点。

浏览与读取对象字典

  1. 返回主窗口,选中节点 8,点击对象字典…。
  2. 核对窗口顶部的 CAN 通道、Node-ID 和 EDS/DCF;找到 0x1018:1,查看名称、UNSIGNED32 类型及 ro 权限。
  3. 初次练习先浏览定义,完成后点击关闭,按下一章读取身份对象。
对象字典:查看对象类型、访问权限和在线值。

需要批量读取在线值时,使用全部读取;中断用停止读取。批量读取会尝试描述文件中的所有可读对象。本教学节点的 0x2100:0为 6145 字节,超过普通 SDO 编辑的 4 KiB 限制,应改用文件 SDO。若批读在该对象提示容量失败并触发通信保护,按恢复步骤处理后再做小参数读取。

顶部下拉框可选择资源库中的其他文件;点击应用到当前节点才会改变该节点绑定。切换文件本身不读取或写入设备。多个节点应逐个确认绑定。类型码 0x0007对应 UNSIGNED32,0x0006对应 UNSIGNED16;ro为只读,rw为可读写。

06完成第一次 SDO 读取

SDO 按“索引:子索引”访问参数。读取 / upload是节点到电脑,写入 / download是电脑到节点。先读取教学节点的厂商 ID 0x1018:1:

字段本次填写
命令SDO
方向读取 / upload
传输自动 SDO
节点8
索引 / 子索引0x1018 / 1
计划一次
  1. 确认已连接并开始分析,按表填写;读取时不用输入“值”。
  2. 点击准备,预览应为读取 0x1018:1、Node 8、请求 COB-ID 0x608。
  3. 点击开始发送,等待底部显示读取完成。
  4. 教学节点返回 4 字节 4D 53 55 42,按小端还原为 0x4255534D;在事件列表对照请求和 0x588响应。
SDO 读取结果:0x1018:1 返回 4D 53 55 42。

没有 EDS 也能使用已知地址和字节格式做原始 SDO;EDS 用来帮助选择正确对象、类型与权限。超时或 Abort 按故障与恢复处理。

07写入一个参数,再读回来

在允许操作的测试节点上练习,先读原值,写后读回,结束时恢复原值。本章使用心跳生产周期 0x1017:0(UNSIGNED16)。每次操作先确认计划为“一次”。

按原始十六进制字节写入

  1. 按上一章的方法读取 0x1017:0,记录原值。教学初值为 500 ms,字节 F4 01。
  2. 方向改为写入 / download,节点 8、索引 0x1017、子索引 0,值填 58 02(600 ms = 0x0258,小端)。
  3. 确认计划一次,点击准备,核对对象与两字节载荷,再点击开始发送。
  4. 写入完成后切回读取 / upload,重新准备并发送;读回应为 58 02。
  5. 将记录的原值写回,再读取确认。教学初值恢复为 F4 01;实际设备恢复你自己记录的值。

按 EDS 类型输入数值

绑定匹配 EDS、选择写入方向后,在“值”中输入 600,再选择工具… → 按 EDS 类型转换值并准备 SDO。核对转换后的 58 02再发送。普通准备始终按十六进制字节处理,不会自动把 600解释成十进制毫秒。

写入超时后,参数可能已经生效。若提示通信需要恢复,先按SDO 通信恢复完成恢复,再读取身份对象确认通信,随后读回刚写入的参数。

08指定次数与周期发送

使用已读成功的只读对象 0x1018:1练习,先不对写入、复位或 NMT 使用重复计划。

读取 3 次

  1. 保留 SDO、读取 / upload、自动 SDO、节点 8、0x1018:1。
  2. 计划选择指定次数,设置周期 1000 ms、次数 3。
  3. 点击准备 → 开始发送,打开发送任务…。
  4. 等待进度到 3/3,核对每次读取均完成、返回同一身份数据。
指定次数读取:0x1018:1 已完成 3 次读取。

周期读取并停止

  1. 返回主窗口,计划改为周期,设置所需周期,重新准备并开始发送。
  2. 在发送任务…选中该任务,点击停止选中;结束所有重复任务可点击全部停止。
  3. 确认没有运行中的任务,关闭任务窗口。
  4. 将主窗口计划切回“一次”,再进入下个练习。停止任务不会自动修改计划选择。

重复读取仍逐笔完成 SDO 请求和响应,实际执行频率受节点响应时间影响。“停止发送任务”“停止分析”和“NMT 停止节点”分别控制本机任务、本机分析与对端通信状态。

09使用 NMT、SYNC 和 TIME

下列单次练习均先将计划设为“一次”,确认 Node-ID 后重新准备。

NMT:改变节点通信状态

  1. 命令选择NMT,节点填 8。
  2. 点击准备,选择开始节点,检查预览后开始发送。
  3. 在节点列表和新心跳中确认状态变为运行 / Operational(心跳状态字节 05)。后面的 PDO 数据交换使用这个状态。
  4. 按需要可选择预运行 / Pre-operational(7F)。预运行通常仍可进行 SDO;PDO 数据交换需要 Operational。

单节点命令与广播作用范围不同。复位节点、复位通信只在设备文档和任务允许时使用。

SYNC:发送同步报文

选择SYNC → 准备 → 开始发送。需要计数器时先在设置… → 高级参数中配置;周期 SYNC 另设周期计划,并确认设备允许该周期。结束后停止任务并恢复“一次”。

TIME:区分发送基准与界面显示

  1. 默认发送:在设置中关闭“指定 TIME”,应用后选TIME → 准备 → 开始发送。
  2. 每次默认 TIME 都取实际发送时的电脑 UTC 时间,不是准备时刻。
  3. 固定时间:打开设置… → 高级参数 → 指定 TIME,按目标网络约定填写日期、时间、毫秒并应用,再重新准备并发送。

指定 TIME 按输入的日历值直接编码,不做电脑本地时区到 UTC 的自动换算。例如网络采用 UTC、电脑位于 UTC+8,欲表示本地 16:00 对应的时刻,应按网络约定输入 UTC 08:00。编辑器初值可能是本地时间,发送前要核对。完成固定时间练习后关闭“指定 TIME”。

时间显示只改变事件、最近接收和历史的显示方式;它不改变 TIME 载荷,也不决定网络采用什么时间基准。

高级参数:SYNC、指定 TIME、Block 和 SDO 路由。

SDO 路由默认保持“使用 DCF/默认 SDO 路由”,设备明确采用其他地址时再修改。

10配置 PDO 并确认过程数据

PDO 名称从节点视角出发:RPDO 是节点接收,TPDO 是节点发送。本页 RPDO1 和 TPDO1 均映射两个对象,共 6 字节。

先读取设备配置

  1. 选中节点 8,确认绑定教学 EDS;计划设一次。
  2. 命令选择PDO,点击准备 → PDO 配置…。
  3. 选择 EDS 声明的 RPDO1,点击从节点读取;核对 COB-ID 0x208、启用状态、传输类型 255 和两条映射。
  4. 映射依次为 0x2000:0 / UNSIGNED32 / 32 位、0x2002:0 / UNSIGNED16 / 16 位。确认在线验证结果与当前节点一致。
教学 RPDO1 的通信参数和两条映射。以在线回读确认当前配置。

编辑、写入与回读

  1. 先记录原通信参数和映射,按厂商要求使设备进入允许配置的状态;通常先使用预运行状态。
  2. 选中已声明的 PDO,点击编辑选中项…,核对草稿;只修改本次确实需要的字段。
  3. 点击写入节点,等待写入及回读结束。
  4. 看到“写入项已回读一致”,说明本次写入的字段与读回值一致。
  5. 再次从节点读取核对实际字段;练习结束恢复记录的原配置并读回。

编辑时选择 EDS 中已声明、且设备支持修改的 PDO。动态或可变映射的修改方式及配置状态按设备要求选择;静态映射可能不可修改。

RPDO1 写入结果:本次写入字段与读回值一致。

发送 RPDO1 并读取对象确认

  1. 关闭配置窗口。若节点是预运行,先按NMT 步骤发送开始节点,并确认新心跳为运行 / Operational。
  2. 保存 0x2000:0和 0x2002:0原值。命令选择 PDO、计划一次。
  3. 值填写全部映射字段:0x2000:0=123; 0x2002:0=456。
  4. 点击准备并选择RPDO1。预览应为 COB-ID 0x208、6 字节 7B 00 00 00 C8 01。
  5. 点击开始发送。在事件中检查帧,再用 SDO 分别读回 0x2000:0与 0x2002:0;教学节点应为 123 和 456。
  6. 完成后通过 SDO 或同一映射恢复原值并读回;教学初值分别为 78 56 34 12、09 00。

也可直接填同样的 6 个原始字节。

接收 TPDO 与可选的 RTR 请求

教学节点在 Operational 时周期发送 TPDO1,COB-ID 为 0x188;载荷对应同一组 6 字节。事件列表按帧显示 PDO 编号和原始字节;可与对应对象的 SDO 读回值对照,检查字节变化。

对明确支持 RTR 的设备,可在 PDO 准备菜单选择对应 TPDO 的 RTR 请求项,核对 COB-ID、RTR 标记与计划“一次”,发送后等待该 TPDO 的数据帧并核对载荷。可用性受通信参数、RTR 禁止位及设备实现限制。本页教学对端提供周期 TPDO,不实现 RTR 响应,该分支应使用厂商确认支持 RTR 的设备。

出现地址冲突、PDO 禁用或映射不一致时,返回 PDO 配置窗口,核对设备读回的 COB-ID、启用状态和映射,以及当前绑定的 EDS。

11分段与 Block 文件传输

普通 SDO 编辑器最多 4 KiB;文件 SDO 最多 16 MiB,设备对象可能有更小限制。文件练习始终确认计划为“一次”。

传输模式何时选择
自动 SDO使用适用的快速或分段方式;不会自动选择 Block
分段 SDO显式使用分段;本页教学 DOMAIN 的读写选择这一模式
Block SDO对端明确支持 Block 时使用;观察协商、进度和最终结果。教学对端不提供该模式的演示

空输入文件可使用自动或分段方式,不能使用 Block;目标对象也须允许空数据。设置中的“SDO 响应超时”针对响应等待,不是要求整个大文件在该时间内完成。

从节点读取并保存

  1. 选择 SDO、读取 / upload、分段 SDO、节点 8、索引 0x2100、子索引 0、计划一次。
  2. 选择工具… → 读取节点数据并保存文件…,指定尚不存在的新文件名,例如 domain-read.bin。
  3. 检查预览后开始发送,等待底部显示传输与保存完成。
  4. 教学节点初始数据为 6145 字节;与第 1 章下载的初始数据逐字节或按 SHA-256 比较。若节点内容已经修改,以刚写入的已知文件为对照。

从文件写入并读回

  1. 先完成上面的读取并保存原数据;确认教学节点 0x2100:0可写。
  2. 在 SDO 区域核对节点、地址、分段模式和计划一次,选择工具… → 将文件写入节点…,选定要写入的教学文件。
  3. 检查对象和字节数后开始发送,等待完整事务结束。
  4. 再按读取步骤保存到另一个新文件,比较输入与读回文件的长度及 SHA-256。
  5. 练习后将保存的原数据写回,再读取确认。

输出文件不直接覆盖已有文件,选择新名字后等待传输与保存结果。需要取消时,在发送任务…窗口停止任务。停止写入任务后,若提示需要恢复通信,先按第 14 章恢复,再读回目标对象检查当前内容。

Block 的块大小(1~127)和 CRC 在设置… → 高级参数中配置,先保留默认,再按支持该模式的设备要求调整。

12事件、EMCY、历史与日志

先读懂一条事件

  1. 开始分析,选择教学节点 8,观察右侧新收到的事件。
  2. 按“方向 → COB-ID → 类型 → 节点 → 解析字段 → 原始数据”核对同一帧。
  3. 心跳示例:RX / 0x708 / Heartbeat / Node 8 / 05表示 Operational,7F表示 Pre-operational。
  4. SDO Abort 示例:对教学节点读取未提供的 0x2FFF:0,响应帧可为 80 FF 2F 00 00 00 02 06,Abort 码 0x06020000表示对象不存在;随后改回 0x1018:1,确认身份对象可以正常读取。

理解 EMCY

EMCY 是节点主动报告的紧急错误。Node 8 的默认 EMCY COB-ID 为 0x088。示例载荷 00 10 01 00 00 00 00 00包含错误码 0x1000(通用错误)、错误寄存器 01和厂商附加数据。练习时由教学节点发送上述 EMCY 帧,在事件列表查看解析结果。实际设备报告 EMCY 时,按设备手册查找对应错误的处理方法。

在分析历史中筛选与继续读取

  1. 主窗口点击分析历史…。
  2. 类型先选全部,节点设 0查看全部节点;再切换 EMCY、SDO、PDO 或具体节点 8,点击读取。
  3. 查看序号、时间、类型、节点、质量和解析字段。方向与完整原始字节可在主事件列表或普通 CAN 日志中查看。总线产生新事件后,再次点击读取,查看后续记录。
  4. 出现“记录已淘汰”或“观察间隙”提示时,当前历史中已有记录缺失。需要连续保存报文时,启用 CAN 日志记录。
  5. 完成后关闭历史窗口返回主窗口。
分析历史:按事件类型和节点筛选,查看质量及解析字段。

清空与长期日志各解决什么问题

主窗口清空事件会同时清除本次对应的分析历史;历史窗口需先选择 EMCY、SDO 或 PDO,再用“清空此类型”清理所选节点范围的该类型记录;选择“全部”时不能在这里执行类型清空。它们不会清除设备内部错误存储,也不会替设备解除故障。清空前先保存需要的信息。

主事件显示条数可在设置中调整;分析会话的历史容量在会话建立时确定,单独修改显示上限不等于重新建立历史。历史有容量上限,且不保存在 CFX 中。

  1. 需要长期采集时,回到 BUSMASTER 主界面打开日志记录配置,为实际 CAN 通道指定输出文件、格式与记录范围。
  2. 启用日志并开始采集,完成后停止记录。
  3. 检查实际生成的日志包含目标 COB-ID 和时间。长期流程详见BUSMASTER 记录、导入与回放教程。

普通 CAN 日志保存报文;canopen_diagnostic_log.txt记录本工具操作诊断,二者用途不同。

13保存工程与正常退出

  1. 在发送任务窗口停止正在运行的任务,确认没有对象批量读取、节点扫描或 PDO 配置操作。
  2. 点击停止分析。回到文件菜单或左上角程序菜单,选择保存 / Save;首次保存或创建教学副本用另存为 / Save As…,保存为 .cfx。
  3. 下次通过加载 / Load…打开 CFX。
  4. 在 CANopen 设置中核对通道、节点资源绑定、时间显示、发送输入与计划。需要在线操作时再连接并开始分析。

CFX 保存配置及 EDS/DCF 资源引用,不打包描述文件、大数据文件、设备当前状态或分析历史。把工程移到另一台电脑时,连同资源文件一起管理并重新核对路径和实际通道。

加载 CFX 后,分析和发送保持停止。核对配置后,再连接、开始分析并读取节点当前值。结束使用按停止发送任务 → 停止分析 → BUSMASTER 断开连接 → 正常关闭收尾,按提示保存需要保留的修改。

14常见问题与 SDO 恢复

看到的情况检查与下一步
手动添加后显示等待心跳核对 Node-ID、通道与对端发送状态,检查新的 RX
发现不到节点检查连接、分析与扫描范围;设备也可能不响应身份读取,结合厂商对象与心跳核对
有心跳但 EDS 未匹配核对 EDS 型号/固件及 Identity;收到心跳不等于描述文件匹配
开始发送不可用按状态提示确认连接、分析、有效目标、忙操作和准备状态;修改输入后重新准备
SDO Abort根据 Abort 码核对地址、子索引、权限、状态和 EDS;设备已返回明确协议错误
SDO 超时核对节点、实际通道、速率、SDO 地址及响应等待;写入可能已生效,见下方恢复步骤
PDO 需要重新确认重读设备当前通信和映射,确认资源与地址无冲突;数据交换前确认 Operational
字段值被拒绝按映射填齐全部字段,核对重复项、类型及范围;普通 SDO 准备与 EDS 类型转换是不同入口

SDO 通信恢复

  1. 先核对上一笔操作是否可能已改变设备,以及设备是否允许继续访问。
  2. 在主窗口确认目标节点,点击工具… → 恢复 SDO 通信…。
  3. 阅读确认提示:旧响应仍可能晚到;后续收到响应不一定属于新请求。确认后本机才解除保护;取消则保留保护。
  4. 读取教学节点的身份对象 0x1018:1,确认通信恢复;再读回前一笔写入的参数,检查当前值。
恢复 SDO 通信:先核对设备状态和旧响应风险;取消会保留当前保护。

恢复只解除本机保护,不自动复位节点、不重复之前的写入,也不回滚设备。需要支持时记录设备型号、Node-ID、通道、波特率、目标对象、步骤和实际提示。

操作诊断日志默认在 BUSMASTER.exe同目录的 canopen_diagnostic_log.txt;目录不可写时可能无法生成。发送支持材料前检查设备名称、文件路径等信息。

继续学习