KH-CanOpenTool
KH-CanOpenTool 是一款 Windows 系统下的 CANopen 调试工具,适用于通过 CAN 适配器连接 CANopen 总线后进行节点管理、NMT 控制、SDO 读写、PDO 发送与报文查看。
支持设备
目前软件支持 PCANFD 或兼容设备 更多设备类型持续增加中...
下载地址
下载地址:https://gitee.com/ChengDu-KunHong/kh-canopentool/releases/

功能概览
- 支持 EDS 文件导入配置
- 支持工程导入 / 导出,便于复用已配置的节点、EDS 与通信参数
- 可选 CAN 设备通道与波特率
- 支持原始 CAN 数据发送
- 设置 NMT 控制节点状态
- 通过 SDO 进行对象字典读写
- 通过 RPDO / TPDO 页面进行 PDO 调试
- 支持图形化 UI 界面显示信息
- 支持 Python 脚本与 UI 按钮联动控制 PDO
- 页面查看发送和接收报文,包含 COB-ID、数据、类型、节点和说明等信息。
运行环境
- 操作系统:Windows
- CAN 设备:现支持PCAN硬件,后续会增加更多主流设备支持
快速开始
工具下载与环境准备
- 下载发行版压缩包,解压后使用。
- 确认 CAN 适配器已连接电脑,并已安装对应设备驱动。
- 双击运行
KH_CAnOpenTool.exe。
创建工程
- 如果已有工程文件,可通过顶部
文件菜单导入工程,快速恢复节点、EDS 与通信参数配置。 - 如果首次使用,在左侧节点列表点击
+,输入Node ID,按需导入EDS配置文件,完成节点添加。 - 选中左侧
CanOpen 主机,在右侧选择实际识别到的 CAN 设备通道和波特率,例如对应设备通道与250K。
开始使用
- 点击
▶️建立通信。 - 选中目标节点,在
NMT、SDO、RPDO、TPDO、OD页面进行调试。 - 在底部
日志或Frames页面查看运行信息和 CANopen 报文。 - 调试完成后可通过顶部
文件菜单导出工程,便于下次或其他电脑快速使用。
常用操作
工程导入 / 导出
工程文件用于保存常用调试配置,适合把已经配置好的节点列表、EDS 关联、CAN 设备通道和波特率等信息复用到下一次调试。
导入工程:通过顶部文件菜单选择工程文件,导入后检查节点、EDS、CAN 通道和波特率是否与当前硬件环境一致。导出工程:完成节点和通信参数配置后,通过顶部文件菜单导出工程文件,后续可直接导入使用。
建议在每次新增节点、调整 EDS 或修改波特率后重新导出工程,避免下次使用旧配置。
节点管理
在 NodeEditor 页面左侧点击 + 添加节点。弹窗中填写 Node ID,并可通过 EDS 输入框右侧按钮选择 EDS 文件。选中节点后点击删除按钮可移除节点。 
启动 CAN 通信
选中 CanOpen 主机,在主界面选择:
CAN设备:选择已识别到的 CAN 设备通道。波特率:选择与总线一致的波特率,例如250K。
点击 ▶️ 后工具开启通道。若设备列表未刷新,可点击设备选择区域旁的刷新按钮重新扫描。

NMT 控制
在目标节点页面进入 NMT 标签页,选择需要发送的 NMT 命令后点击 NMT:
Start Remote Node:启动远程节点。Stop Remote Node:停止远程节点。Enter Pre-Operational State:进入预操作状态。Reset Node:复位节点。Reset Communication:复位通信。

SDO 读写
进入 SDO 标签页后填写:
索引:对象字典索引,例如0x6060。子索引:对象字典子索引,例如0x00。数据类型:选择读写的数据类型,例如INT8。数据值:写参数时填写需要写入的值。例如0x03。
选择 SDO上传(读参数) 或 SDO下载(写参数) 后点击 Send 发送请求。响应结果可在底部 Frames 页面查看。

报文查看
切换到底部 Frames 页面可查看通信报文,主要字段包括:
Direction:发送或接收方向。Cob:COB-ID。数据:CAN 数据区内容。类型:报文类型,例如 HEARTBEAT、RSDO、TSDO、RPDO。节点:节点 ID。Info:解析说明。
可使用 清空 清除当前记录,使用 搜索 查找报文,勾选 Auto Scroll 自动滚动到最新报文;Load File 和 Save File 可用于加载或保存 Frames 数据。

TPDO 使用
- 节点处于
Enter Pre-Operational State - 按照以下图片进行配置,停止PDO传输——>配置PDO——>写入PDO——>启动PDO

原始 CAN 报文发送
- 在CanOpen主机项中切换到
Transmit页面,右键点击下方空白区域,选择新增报文。

- 在报文编辑页面填写
ID、数据、类型、发送周期和备注等信息。暂仅支持周期发送,请设置合适的周期时间。

- 勾选周期发送后,工具会按设置的周期持续发送该 CAN 报文。发送结果可在底部
Frames页面查看。

图形界面展示
- 在界面配置区域添加新的显示界面。

- 将需要的 UI 插件拖动到界面中,并按实际调试需求调整布局。

- 点击插件的
OD配置项,为插件绑定对象字典中的变量。

- 需要先确保 TPDO 已配置为实时接收数据。具体操作可参考 TPDO 使用。

- 保存工程后点击启动。通信正常时,插件会实时显示绑定的数据。

Python 脚本支持
UI 编辑器支持通过 Python 脚本控制 CANopen 操作,可将脚本中定义的方法绑定到按钮控件中使用。
应用示例:
创建 UI 图形界面。
切换到
GuiEditor/CodeEdit进行 Python 代码编辑。

- 输入以下示例代码:
def start():
send_nmt_command(1, 128)
stop_pdo(1, 0)
clear_pdo(1, 0)
set_pdo_info(1, 0, 254, 0, 100)
append_pdo_od(1, 0, 0x6064, -1)
write_pdo_info(1, 0)
start_pdo(1, 0)
send_nmt_command(1, 1)
def stop():
stop_pdo(1, 0)示例代码定义了 start 和 stop 两个函数,可用于绑定到按钮控件使用。
- 在 UI 界面添加两个按钮控件,并分别将按钮的
Method绑定到start和stop方法。

- 启动运行后,点击界面按钮即可启动或停止 PDO。

目前支持的 API 可通过 帮助/API 查看。

注意事项
- 启动前请确认 CAN 设备驱动正常、设备未被其他程序占用。
- 工具选择的波特率必须与实际 CANopen 总线一致。
- SDO 写参数前请确认索引、子索引、数据类型和值均符合目标设备对象字典定义。
- 如果启动通信失败,优先检查 CAN 适配器连接、设备驱动安装、DLL 文件是否完整,以及设备列表中是否能识别到 CAN 通道。