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
- 支持通过 MCP 接入 AI 工具,使用自然语言操作 KH-CanOpenTool
- 支持调整系统字体大小
- 页面查看发送和接收报文,包含 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 查看。

调整字体大小
- 通过顶部
文件菜单打开系统设置。 - 修改
Font Size的值,软件界面会应用新的系统字体大小。 - 点击
确定保存配置,使其在下次启动软件时继续生效。

配置保存规则
点击 确定 会保存当前系统设置;直接点击设置窗口右上角的 X 只会关闭窗口,不会保存配置,关闭软件后未保存的配置将丢失。
MCP
v0.7.0 起,KH-CanOpenTool 支持通过 MCP 接入 AI 工具。连接成功后,可以在 AI 工具中使用自然语言创建和编辑 UI、设置脚本代码等。
配置 MCP 服务
- 通过顶部
文件菜单打开系统设置。

- 设置
MCP port。默认端口为3000,点击确定保存配置。

修改端口后需要重启
如果修改了 MCP port,需要重启 KH-CanOpenTool,新端口才会生效。
连接 AI 工具
在支持 MCP 的 AI 工具中添加服务器配置。以下以 CodeBuddy 为例:
{
"mcpServers": {
"HK_CANopen": {
"url": "http://127.0.0.1:3000/mcp",
"disabled": false
}
}
}其中,URL 中的端口必须与 KH-CanOpenTool 系统设置中的 MCP port 保持一致。

使用自然语言操作
MCP 连接成功后,可以直接向 AI 工具描述需要在 KH-CanOpenTool 中执行的操作。AI 会根据任务组合调用相应工具。
1. 创建操作界面并编辑按钮事件
例如:
创建一个 800 × 500 的 CANopen 控制界面,添加“启动”和“停止”按钮。
AI 会依次组合调用 create_ui → add_button → set_code,生成界面并绑定按钮逻辑。
下面以创建单按钮界面为例,展示 AI 工具通过 MCP 调用 KH-CanOpenTool 的过程:

执行完成后,KH-CanOpenTool 中会创建对应的 UI、按钮和事件代码。


2. 创建对象字典数据图表
例如:
给节点 1 创建一个实时图表,显示转速对象的数据。
AI 可以先调用 get_eds_path 获取节点的 EDS 文件路径,再根据对象字典信息调用 add_chart 添加图表,并配置图表所使用的节点和 OD。
3. 控制 CANopen 节点状态
例如:
向节点 2 发送 NMT 启动命令。
也可以描述连续操作:
停止节点 2,然后复位该节点。
此类任务通过 send_nmt_command 执行。
操作前确认
NMT 命令会真实影响 CANopen 网络。执行前请确认目标节点号和命令,避免误操作其他节点。
4. 自动配置 PDO
例如:
给节点 1 配置一个 TPDO,映射状态字和实际转速,然后启动 PDO 传输。
AI 可以按以下顺序完成配置:
clear_pdo → set_pdo_info → append_pdo_od → write_pdo_info → start_pdo
需要停止 PDO 传输时,可以调用 stop_pdo。
检查 PDO 参数
PDO 配置会写入目标节点。执行前请核对节点号、PDO 编号、通信参数及 OD 映射,确认其符合设备对象字典定义。
注意事项
- 启动前请确认 CAN 设备驱动正常、设备未被其他程序占用。
- 工具选择的波特率必须与实际 CANopen 总线一致。
- SDO 写参数前请确认索引、子索引、数据类型和值均符合目标设备对象字典定义。
- 如果启动通信失败,优先检查 CAN 适配器连接、设备驱动安装、DLL 文件是否完整,以及设备列表中是否能识别到 CAN 通道。