Skip to content

KH-CanOpenTool

KH-CanOpenTool 是一款 Windows 系统下的 CANopen 调试工具,适用于通过 CAN 适配器连接 CANopen 总线后进行节点管理、NMT 控制、SDO 读写、PDO 发送与报文查看。

支持设备

目前软件支持 PCANFD 或兼容设备 更多设备类型持续增加中...

下载地址

下载地址:https://gitee.com/ChengDu-KunHong/kh-canopentool/releases/

KH-CanOpenTool 主界面

功能概览

  • 支持 EDS 文件导入配置
  • 支持工程导入 / 导出,便于复用已配置的节点、EDS 与通信参数
  • 可选 CAN 设备通道与波特率
  • 支持原始 CAN 数据发送
  • 设置 NMT 控制节点状态
  • 通过 SDO 进行对象字典读写
  • 通过 RPDO / TPDO 页面进行 PDO 调试
  • 支持图形化 UI 界面显示信息
  • 支持 Python 脚本与 UI 按钮联动控制 PDO
  • 页面查看发送和接收报文,包含 COB-ID、数据、类型、节点和说明等信息。

运行环境

  • 操作系统:Windows
  • CAN 设备:现支持PCAN硬件,后续会增加更多主流设备支持

快速开始

工具下载与环境准备

  1. 下载发行版压缩包,解压后使用。
  2. 确认 CAN 适配器已连接电脑,并已安装对应设备驱动。
  3. 双击运行 KH_CAnOpenTool.exe

创建工程

  1. 如果已有工程文件,可通过顶部 文件 菜单导入工程,快速恢复节点、EDS 与通信参数配置。
  2. 如果首次使用,在左侧节点列表点击 +,输入 Node ID,按需导入 EDS 配置文件,完成节点添加。
  3. 选中左侧 CanOpen 主机,在右侧选择实际识别到的 CAN 设备通道和波特率,例如对应设备通道与 250K

开始使用

  1. 点击 ▶️ 建立通信。
  2. 选中目标节点,在 NMTSDORPDOTPDOOD 页面进行调试。
  3. 在底部 日志Frames 页面查看运行信息和 CANopen 报文。
  4. 调试完成后可通过顶部 文件 菜单导出工程,便于下次或其他电脑快速使用。

常用操作

工程导入 / 导出

工程文件用于保存常用调试配置,适合把已经配置好的节点列表、EDS 关联、CAN 设备通道和波特率等信息复用到下一次调试。

  • 导入工程:通过顶部 文件 菜单选择工程文件,导入后检查节点、EDS、CAN 通道和波特率是否与当前硬件环境一致。
  • 导出工程:完成节点和通信参数配置后,通过顶部 文件 菜单导出工程文件,后续可直接导入使用。

建议在每次新增节点、调整 EDS 或修改波特率后重新导出工程,避免下次使用旧配置。

节点管理

NodeEditor 页面左侧点击 + 添加节点。弹窗中填写 Node ID,并可通过 EDS 输入框右侧按钮选择 EDS 文件。选中节点后点击删除按钮可移除节点。 节点管理

启动 CAN 通信

选中 CanOpen 主机,在主界面选择:

  • CAN设备:选择已识别到的 CAN 设备通道。
  • 波特率:选择与总线一致的波特率,例如 250K

点击 ▶️ 后工具开启通道。若设备列表未刷新,可点击设备选择区域旁的刷新按钮重新扫描。

CAN 通道配置

NMT 控制

在目标节点页面进入 NMT 标签页,选择需要发送的 NMT 命令后点击 NMT

  • Start Remote Node:启动远程节点。
  • Stop Remote Node:停止远程节点。
  • Enter Pre-Operational State:进入预操作状态。
  • Reset Node:复位节点。
  • Reset Communication:复位通信。

NMT 控制

SDO 读写

进入 SDO 标签页后填写:

  • 索引:对象字典索引,例如 0x6060
  • 子索引:对象字典子索引,例如 0x00
  • 数据类型:选择读写的数据类型,例如 INT8
  • 数据值:写参数时填写需要写入的值。例如 0x03

选择 SDO上传(读参数)SDO下载(写参数) 后点击 Send 发送请求。响应结果可在底部 Frames 页面查看。

SDO 读写

报文查看

切换到底部 Frames 页面可查看通信报文,主要字段包括:

  • Direction:发送或接收方向。
  • Cob:COB-ID。
  • 数据:CAN 数据区内容。
  • 类型:报文类型,例如 HEARTBEAT、RSDO、TSDO、RPDO。
  • 节点:节点 ID。
  • Info:解析说明。

可使用 清空 清除当前记录,使用 搜索 查找报文,勾选 Auto Scroll 自动滚动到最新报文;Load FileSave File 可用于加载或保存 Frames 数据。

报文查看

TPDO 使用

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

原始 CAN 报文发送

  1. 在CanOpen主机项中切换到 Transmit 页面,右键点击下方空白区域,选择新增报文。

编辑发送报文入口

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

报文编辑页面

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

启用周期发送

图形界面展示

  1. 在界面配置区域添加新的显示界面。

添加界面

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

拖动添加 UI 插件

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

绑定 OD 信息

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

确认 TPDO 实时接收数据

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

插件数据显示

Python 脚本支持

UI 编辑器支持通过 Python 脚本控制 CANopen 操作,可将脚本中定义的方法绑定到按钮控件中使用。

应用示例:

  1. 创建 UI 图形界面。

  2. 切换到 GuiEditor/CodeEdit 进行 Python 代码编辑。

代码编辑界面

  1. 输入以下示例代码:
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)

示例代码定义了 startstop 两个函数,可用于绑定到按钮控件使用。

  1. 在 UI 界面添加两个按钮控件,并分别将按钮的 Method 绑定到 startstop 方法。

按钮方法绑定

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

按钮运行效果

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

API 帮助

注意事项

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

驱动智能连接,赋能科技未来