目录 · 14 个章节
连接节点,完成参数与过程数据读写
适用 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:1 | UNSIGNED32 / ro | 身份读取与重复读取;0x4255534D,原始字节 4D 53 55 42 |
0x1017:0 | UNSIGNED16 / rw | 心跳生产周期;初值 500 ms,F4 01 |
0x2000:0 | UNSIGNED32 / rw / 可映射 | 演示数值;初值 0x12345678,78 56 34 12 |
0x2002:0 | UNSIGNED16 / rw / 可映射 | 演示模式;初值 9,09 00 |
0x1400 / 0x1600 | RPDO1 通信 / 映射 | COB-ID 0x208,异步类型 255;依次映射 0x2000:0 的 32 位与 0x2002:0 的 16 位 |
0x1800 / 0x1A00 | TPDO1 通信 / 映射 | COB-ID 0x188,同一组 6 字节;教学节点在 Operational 时周期发送 |
0x2100:0 | DOMAIN / rw | 文件练习;教学节点初始数据 6145 字节,另附恢复用文件 |
教学模型还提供有符号数、浮点数、字符串等对象,供进阶浏览。
本工具范围为 CANopen CC / CiA 301、经典 CAN,单帧数据至多 8 字节。CANopen FD / USDO、主动 LSS 配置主站及 CiA 402 专用面板不在本页功能范围;LSS 可在事件中被动解析。
02先认识主窗口
在 BUSMASTER 顶部功能区找到 CANopen(位于“XCP 标定”旁),点击打开 CANopen 窗口。
| 区域 | 用途 |
|---|---|
| 左上:节点 | 发现、添加、选择目标节点;查看状态、身份匹配与最近接收 |
| 右侧:事件解析 | 查看时间、TX/RX、COB-ID、类型、节点、解析字段和原始数据 |
| 下方:命令准备 | 选择 SDO/NMT/SYNC/TIME/PDO,填写地址、数值和发送计划 |
| 底部:设置与状态 | 设置通道与监测,开始/停止分析,查看事务结果 |
准备 → 检查预览 → 开始发送是三个连续动作。修改命令、对象或计划后,要重新准备。TX、RX 分别表示发送和接收方向;读取成功可通过节点响应和底部完成结果确认。
“发送任务…”用于查看或停止重复事务;“分析历史…”用于筛选历史记录,详见事件分析一章。
03连接 CAN,并启动分析
- 回到 BUSMASTER 主界面,点击驱动选择,选择实际使用的 CAN 接口。
- 打开通道配置,按完整设备名称和物理口选择已接线通道,设置与节点一致的波特率。示例使用普通 CAN、500 kbit/s。
- 核对 CAN_H、CAN_L、参考地与终端配置,点击 BUSMASTER 的连接。
- 打开 CANopen → 设置…,在“CAN 通道”选择刚才的实际通道,本页为 CAN 1;选择心跳(Heartbeat),初次使用保留默认监测及响应超时。
- 将“时间显示”选为系统时间,点击应用返回主窗口,再点击开始分析。
- 观察新的 RX 事件、节点状态与最近接收时间。存在手动添加的行,只表示本机已有记录。
Heartbeat 设置的是 BUSMASTER 的本机监测方式,不会自动写入设备的心跳周期。设备是否生产心跳及其周期由设备配置决定;设备支持时可通过 0x1017:0设置。
关闭监测和 Heartbeat 不主动发送节点守护请求;选择 Node guarding 后,软件会按设置周期发送守护 RTR。按设备实际支持选择,通常优先使用 Heartbeat。
选择显示时间
| 模式 | 含义 |
|---|---|
| 系统时间 | 按电脑本地时区显示 HH:mm:ss.fff。BUSMUST USB-CAN(FD) 使用采集时间;其他驱动若未提供该时间,则使用本机接收时间 |
| 绝对时间 | 显示原始采集时间戳的秒值;起点依驱动而定,大秒数本身不是错误 |
| 相对时间 | 以当前分析会话中该通道首个观测帧为零点;不是与上一条事件的时间间隔 |
该设置同时控制事件列表、节点最近接收时间和分析历史;只切换时间显示不会改变 TIME 报文。TIME 的发送基准见网络命令。没有 RX 时,先检查通道、波特率、接线和对端是否发送。
04发现或手动添加节点
知道 Node-ID 时手动添加
- 在左上“节点编号”输入
8,点击添加。 - 单击节点 8 的行选中它,再核对下方发送区域的“节点”也是 8。
左上的添加编号与下方发送编号用途不同。相同编号不会重复插入;添加按钮因重复编号不可用属于正常状态。
按范围发现节点
- 已连接并开始分析后,打开设置…。
- 在“节点发现默认值”将范围设为 8 至 8,点击应用。
- 返回主窗口点击发现,等待结束后选择节点;需要中断时点击停止扫描。
发现会主动读取范围内节点的身份对象。未发现节点时,检查是否有心跳,并尝试读取厂商手册中列出的可读对象。
05导入 EDS,并查看对象字典
加入资源库并绑定节点
- 选中节点 8,打开设置… → 资源库…。
- 在 EDS/DCF 资源库点击添加…,选择下载的
busmaster-canopen-demo.eds;实际设备选择其厂商文件。 - 选中刚加入的文件,点击使用选中项。
- 返回设置,确认“节点 EDS/DCF”显示正确文件,点击应用。
浏览与读取对象字典
- 返回主窗口,选中节点 8,点击对象字典…。
- 核对窗口顶部的 CAN 通道、Node-ID 和 EDS/DCF;找到
0x1018:1,查看名称、UNSIGNED32 类型及 ro 权限。 - 初次练习先浏览定义,完成后点击关闭,按下一章读取身份对象。
需要批量读取在线值时,使用全部读取;中断用停止读取。批量读取会尝试描述文件中的所有可读对象。本教学节点的 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 |
| 计划 | 一次 |
- 确认已连接并开始分析,按表填写;读取时不用输入“值”。
- 点击准备,预览应为读取
0x1018:1、Node 8、请求 COB-ID0x608。 - 点击开始发送,等待底部显示读取完成。
- 教学节点返回 4 字节
4D 53 55 42,按小端还原为0x4255534D;在事件列表对照请求和0x588响应。
没有 EDS 也能使用已知地址和字节格式做原始 SDO;EDS 用来帮助选择正确对象、类型与权限。超时或 Abort 按故障与恢复处理。
07写入一个参数,再读回来
在允许操作的测试节点上练习,先读原值,写后读回,结束时恢复原值。本章使用心跳生产周期 0x1017:0(UNSIGNED16)。每次操作先确认计划为“一次”。
按原始十六进制字节写入
- 按上一章的方法读取
0x1017:0,记录原值。教学初值为 500 ms,字节F4 01。 - 方向改为写入 / download,节点 8、索引
0x1017、子索引 0,值填58 02(600 ms = 0x0258,小端)。 - 确认计划一次,点击准备,核对对象与两字节载荷,再点击开始发送。
- 写入完成后切回读取 / upload,重新准备并发送;读回应为
58 02。 - 将记录的原值写回,再读取确认。教学初值恢复为
F4 01;实际设备恢复你自己记录的值。
按 EDS 类型输入数值
绑定匹配 EDS、选择写入方向后,在“值”中输入 600,再选择工具… → 按 EDS 类型转换值并准备 SDO。核对转换后的 58 02再发送。普通准备始终按十六进制字节处理,不会自动把 600解释成十进制毫秒。
写入超时后,参数可能已经生效。若提示通信需要恢复,先按SDO 通信恢复完成恢复,再读取身份对象确认通信,随后读回刚写入的参数。
08指定次数与周期发送
使用已读成功的只读对象 0x1018:1练习,先不对写入、复位或 NMT 使用重复计划。
读取 3 次
- 保留 SDO、读取 / upload、自动 SDO、节点 8、
0x1018:1。 - 计划选择指定次数,设置周期 1000 ms、次数 3。
- 点击准备 → 开始发送,打开发送任务…。
- 等待进度到 3/3,核对每次读取均完成、返回同一身份数据。
周期读取并停止
- 返回主窗口,计划改为周期,设置所需周期,重新准备并开始发送。
- 在发送任务…选中该任务,点击停止选中;结束所有重复任务可点击全部停止。
- 确认没有运行中的任务,关闭任务窗口。
- 将主窗口计划切回“一次”,再进入下个练习。停止任务不会自动修改计划选择。
重复读取仍逐笔完成 SDO 请求和响应,实际执行频率受节点响应时间影响。“停止发送任务”“停止分析”和“NMT 停止节点”分别控制本机任务、本机分析与对端通信状态。
09使用 NMT、SYNC 和 TIME
下列单次练习均先将计划设为“一次”,确认 Node-ID 后重新准备。
NMT:改变节点通信状态
- 命令选择NMT,节点填 8。
- 点击准备,选择开始节点,检查预览后开始发送。
- 在节点列表和新心跳中确认状态变为运行 / Operational(心跳状态字节
05)。后面的 PDO 数据交换使用这个状态。 - 按需要可选择预运行 / Pre-operational(
7F)。预运行通常仍可进行 SDO;PDO 数据交换需要 Operational。
单节点命令与广播作用范围不同。复位节点、复位通信只在设备文档和任务允许时使用。
SYNC:发送同步报文
选择SYNC → 准备 → 开始发送。需要计数器时先在设置… → 高级参数中配置;周期 SYNC 另设周期计划,并确认设备允许该周期。结束后停止任务并恢复“一次”。
TIME:区分发送基准与界面显示
- 默认发送:在设置中关闭“指定 TIME”,应用后选TIME → 准备 → 开始发送。
- 每次默认 TIME 都取实际发送时的电脑 UTC 时间,不是准备时刻。
- 固定时间:打开设置… → 高级参数 → 指定 TIME,按目标网络约定填写日期、时间、毫秒并应用,再重新准备并发送。
指定 TIME 按输入的日历值直接编码,不做电脑本地时区到 UTC 的自动换算。例如网络采用 UTC、电脑位于 UTC+8,欲表示本地 16:00 对应的时刻,应按网络约定输入 UTC 08:00。编辑器初值可能是本地时间,发送前要核对。完成固定时间练习后关闭“指定 TIME”。
时间显示只改变事件、最近接收和历史的显示方式;它不改变 TIME 载荷,也不决定网络采用什么时间基准。
SDO 路由默认保持“使用 DCF/默认 SDO 路由”,设备明确采用其他地址时再修改。
10配置 PDO 并确认过程数据
PDO 名称从节点视角出发:RPDO 是节点接收,TPDO 是节点发送。本页 RPDO1 和 TPDO1 均映射两个对象,共 6 字节。
先读取设备配置
- 选中节点 8,确认绑定教学 EDS;计划设一次。
- 命令选择PDO,点击准备 → PDO 配置…。
- 选择 EDS 声明的 RPDO1,点击从节点读取;核对 COB-ID
0x208、启用状态、传输类型 255 和两条映射。 - 映射依次为
0x2000:0 / UNSIGNED32 / 32 位、0x2002:0 / UNSIGNED16 / 16 位。确认在线验证结果与当前节点一致。
编辑、写入与回读
- 先记录原通信参数和映射,按厂商要求使设备进入允许配置的状态;通常先使用预运行状态。
- 选中已声明的 PDO,点击编辑选中项…,核对草稿;只修改本次确实需要的字段。
- 点击写入节点,等待写入及回读结束。
- 看到“写入项已回读一致”,说明本次写入的字段与读回值一致。
- 再次从节点读取核对实际字段;练习结束恢复记录的原配置并读回。
编辑时选择 EDS 中已声明、且设备支持修改的 PDO。动态或可变映射的修改方式及配置状态按设备要求选择;静态映射可能不可修改。
发送 RPDO1 并读取对象确认
- 关闭配置窗口。若节点是预运行,先按NMT 步骤发送开始节点,并确认新心跳为运行 / Operational。
- 保存
0x2000:0和0x2002:0原值。命令选择 PDO、计划一次。 - 值填写全部映射字段:
0x2000:0=123; 0x2002:0=456。 - 点击准备并选择RPDO1。预览应为 COB-ID
0x208、6 字节7B 00 00 00 C8 01。 - 点击开始发送。在事件中检查帧,再用 SDO 分别读回
0x2000:0与0x2002:0;教学节点应为 123 和 456。 - 完成后通过 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 响应超时”针对响应等待,不是要求整个大文件在该时间内完成。
从节点读取并保存
- 选择 SDO、读取 / upload、分段 SDO、节点 8、索引
0x2100、子索引 0、计划一次。 - 选择工具… → 读取节点数据并保存文件…,指定尚不存在的新文件名,例如
domain-read.bin。 - 检查预览后开始发送,等待底部显示传输与保存完成。
- 教学节点初始数据为 6145 字节;与第 1 章下载的初始数据逐字节或按 SHA-256 比较。若节点内容已经修改,以刚写入的已知文件为对照。
从文件写入并读回
- 先完成上面的读取并保存原数据;确认教学节点
0x2100:0可写。 - 在 SDO 区域核对节点、地址、分段模式和计划一次,选择工具… → 将文件写入节点…,选定要写入的教学文件。
- 检查对象和字节数后开始发送,等待完整事务结束。
- 再按读取步骤保存到另一个新文件,比较输入与读回文件的长度及 SHA-256。
- 练习后将保存的原数据写回,再读取确认。
输出文件不直接覆盖已有文件,选择新名字后等待传输与保存结果。需要取消时,在发送任务…窗口停止任务。停止写入任务后,若提示需要恢复通信,先按第 14 章恢复,再读回目标对象检查当前内容。
Block 的块大小(1~127)和 CRC 在设置… → 高级参数中配置,先保留默认,再按支持该模式的设备要求调整。
12事件、EMCY、历史与日志
先读懂一条事件
- 开始分析,选择教学节点 8,观察右侧新收到的事件。
- 按“方向 → COB-ID → 类型 → 节点 → 解析字段 → 原始数据”核对同一帧。
- 心跳示例:
RX / 0x708 / Heartbeat / Node 8 / 05表示 Operational,7F表示 Pre-operational。 - 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 时,按设备手册查找对应错误的处理方法。
在分析历史中筛选与继续读取
- 主窗口点击分析历史…。
- 类型先选全部,节点设 0查看全部节点;再切换 EMCY、SDO、PDO 或具体节点 8,点击读取。
- 查看序号、时间、类型、节点、质量和解析字段。方向与完整原始字节可在主事件列表或普通 CAN 日志中查看。总线产生新事件后,再次点击读取,查看后续记录。
- 出现“记录已淘汰”或“观察间隙”提示时,当前历史中已有记录缺失。需要连续保存报文时,启用 CAN 日志记录。
- 完成后关闭历史窗口返回主窗口。
清空与长期日志各解决什么问题
主窗口清空事件会同时清除本次对应的分析历史;历史窗口需先选择 EMCY、SDO 或 PDO,再用“清空此类型”清理所选节点范围的该类型记录;选择“全部”时不能在这里执行类型清空。它们不会清除设备内部错误存储,也不会替设备解除故障。清空前先保存需要的信息。
主事件显示条数可在设置中调整;分析会话的历史容量在会话建立时确定,单独修改显示上限不等于重新建立历史。历史有容量上限,且不保存在 CFX 中。
- 需要长期采集时,回到 BUSMASTER 主界面打开日志记录配置,为实际 CAN 通道指定输出文件、格式与记录范围。
- 启用日志并开始采集,完成后停止记录。
- 检查实际生成的日志包含目标 COB-ID 和时间。长期流程详见BUSMASTER 记录、导入与回放教程。
普通 CAN 日志保存报文;canopen_diagnostic_log.txt记录本工具操作诊断,二者用途不同。
13保存工程与正常退出
- 在发送任务窗口停止正在运行的任务,确认没有对象批量读取、节点扫描或 PDO 配置操作。
- 点击停止分析。回到文件菜单或左上角程序菜单,选择保存 / Save;首次保存或创建教学副本用另存为 / Save As…,保存为
.cfx。 - 下次通过加载 / Load…打开 CFX。
- 在 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 通信恢复
- 先核对上一笔操作是否可能已改变设备,以及设备是否允许继续访问。
- 在主窗口确认目标节点,点击工具… → 恢复 SDO 通信…。
- 阅读确认提示:旧响应仍可能晚到;后续收到响应不一定属于新请求。确认后本机才解除保护;取消则保留保护。
- 读取教学节点的身份对象
0x1018:1,确认通信恢复;再读回前一笔写入的参数,检查当前值。
恢复只解除本机保护,不自动复位节点、不重复之前的写入,也不回滚设备。需要支持时记录设备型号、Node-ID、通道、波特率、目标对象、步骤和实际提示。
操作诊断日志默认在 BUSMASTER.exe同目录的 canopen_diagnostic_log.txt;目录不可写时可能无法生成。发送支持材料前检查设备名称、文件路径等信息。
继续学习
- BUSMASTER 基础收发教程
- BUSMUST 教程中心
- 设备厂商对应型号、固件版本的 CANopen 手册、EDS/DCF 与对象访问约束。