BUSMUST · BUSMASTER 使用教程

XCP:从第一次读取到连续采集

本教程介绍 ECU 连接、物理值读取、DAQ 连续采集、标定回读和数据保存。

适用版本:BUSMASTER 3.2.2.50 · Build 558 · 简体中文 · 操作验证日期 2026-11-02 · 文档更新 2026-11-02
01 · 准备ECU / 模拟器与 A2L
02 · 连接CAN 与 XCP 会话
03 · 观测立即读取与 DAQ 曲线
04 · 标定(可选)写入、回读、恢复
05 · 保存CSV 数据与 CFX 配置

第 01 节开始前:准备 ECU、A2L 和 CAN 连接

XCP 用来读取 ECU 内部变量,也可以修改允许标定的参数。A2L 文件告诉软件这些变量的名称、地址、类型、换算和访问权限;加载 A2L 后,还要连接对应 ECU,才能获得实时值。

本教程使用 BUSMASTER 3.2.2.50(Build 558)简体中文版,演示 XCP on Classic CAN、单 ECU 会话。先完成两个变量的读取和连续采集,再按需练习一个标量参数的写入与回读。

需要准备如何选择
BUSMASTER 与分析仪安装 BUSMASTER 及对应分析仪驱动,确认所选 CAN 通道空闲。首次使用可先完成基础收发教程中的设备配置。
支持 XCP 的 ECU使用 ECU 供应方提供的匹配 A2L、波特率、请求/响应 ID、访问权限和事件通道。文件里的地址必须对应当前 ECU 软件。
独立的教学环境(可选)没有 ECU 时,可使用随附的 XCP ECU Simulator。模拟器与主站各使用一台分析仪,选择实际接线的 CAN 通道,并通过 CANH、CANL 和参考地组成同一条总线。
总线设置本例两端均设置为 500 kbit/s Classic CAN,并各配置 120 Ω 终端。接入已有网络时,按该网络的拓扑配置终端。
启动教学模拟器
  1. 下载并完整解压模拟器 ZIP,保留启动脚本、EXE、BMAPI.dll 和 test_xcp.a2l 在同一目录。
  2. 在解压目录打开 PowerShell,先列出通道:
    .\start_xcp_simulator.cmd -ListChannels
  3. 复制模拟器侧设备的 UID,替换下面引号内的占位符,再启动所选通道。-Channel 0 表示物理 CH1。
    .\start_xcp_simulator.cmd -Device '<模拟器设备UID>' -Channel 0
  4. 看到 status=ready 后,核对其中的设备和通道,并保留窗口运行。截图中的主站使用另一台设备的物理 CH3,映射为逻辑 CAN 1;模拟器使用物理 CH1。使用其他通道时,让接线、启动参数与软件配置对应。

本例使用标准帧,主站请求 ID 为 0x555,从站响应/DTO ID 为 0x556,DAQ 事件通道为 3,默认周期为 10 ms。结束练习后,在模拟器窗口按 Ctrl+C,等待正常退出。

模拟器文件信息

运行程序版本:Win32 Universal 20260903。

SHA-256:bc491b98154c2dc5528c9f8bfefdf03f5165da3bcb66a4288dba6bf29fdd6b49

本页配套 A2L 对应教学模拟器的地址布局。接入实际 ECU 时,使用供应方提供的匹配 A2L。练习中选择 EngineSpeed 和 SpeedLimit 两个对象。

第 02 节配置主 CAN,并打开 XCP 窗口

  1. 使用新的教学工程,或先另存现有工程。打开 CAN 选项卡,选择 BUSMUST CAN 驱动,在硬件配置中选中连接 ECU 的分析仪与物理通道。
  2. 将该通道配置为 Classic CAN、500 kbit/s(教学模拟器参数)。真实 ECU 则使用它要求的波特率和接线。暂时保持主 CAN 断开,便于完成曲线配置。
  3. 在 CAN → 高级协议 → XCP 打开主窗口,再单击顶部的设置。

请区分物理通道与软件逻辑通道:截图中的“CAN 1”映射到分析仪物理 CH3。XCP 设置中应选择这个逻辑 CAN 通道,并核对旁边显示的实际设备和 500 kbit/s;XCP 会复用 BUSMASTER 的主 CAN 连接。

第一次进入主窗口时,左侧是 A2L 浏览器,右侧是将要读取的工作集。底部依次显示操作提示、CAN、XCP ECU、测量和 A2L 状态。CAN 已连接、XCP ECU 已连接、测量运行中是三个不同状态。

第 03 节导入 A2L,并核对连接与采集参数

  1. 在 XCP 设置 → A2L 区域单击浏览…,选择模拟器包里的 test_xcp.a2l,等待加载完成。
  2. 确认 MODULE = TEST_ECU。如果真实 A2L 有多个 MODULE 或 XCP 传输层实例,必须选择与当前 ECU 接口对应的项。
  3. 在“连接”区域选择主站逻辑 CAN 通道,核对下表参数。本例 A2L 未提供 XCP_ON_CAN,界面显示“没有 XCP_ON_CAN;保留当前 CAN ID”,因此需要手动填写 ID。
  4. 在“采集”区域选择动态 DAQ,填入默认事件通道 3,再单击确定返回主窗口。
设置项本教学示例换成真实 ECU 时
主站 CTO CAN ID0x555ECU 指定的主站命令请求 ID
从站响应/DTO ID0x556ECU 指定的响应和测量数据 ID
29 位扩展 ID不勾选;标准 11 位 ID与 ECU 定义一致
超时500 ms使用 ECU 允许的通信超时
采集模式 / 事件动态 DAQ / 3核对设备支持的采集模式和事件通道;需要先确认基本读取能力时,选择轮询。
轮询间隔100 ms;动态 DAQ 时该项禁用轮询模式使用此间隔;DAQ 的采样周期由 ECU 事件决定。
XCP 设置:选择 CAN 通道和 A2L,配置 CTO/DTO ID 与 DAQ 事件通道。
A2L 导入 CAN ID、标识符格式或波特率信息后,在应用前核对它们与目标 ECU、主 CAN 配置一致。出现波特率不匹配提示时,先修正主 CAN 通道配置,再建立连接。

第 04 节添加工作集,并提前配置物理值曲线

  1. 在左侧搜索 EngineSpeed,选中对应的 MEASUREMENT 对象,单击添加 >>。再搜索 SpeedLimit,添加对应的 CHARACTERISTIC 对象。
  2. 确认右侧工作集恰好包含这两个对象,且“采集”列均已勾选。对象类型、单位和访问权限都由 A2L 定义。
对象用途本示例含义
EngineSpeed测量量,R转速物理值,单位 rpm,会随模拟器运行变化。
SpeedLimit可写标定量,R/W发动机转速限值,单位 rpm;用于练习可写标量参数的写入与回读。
工作集中的测量量 EngineSpeed 与标定量 SpeedLimit;连接前的质量为“尚未读取”。

主 CAN 断开时可以修改信号图配置。先添加物理值元素并设置缓冲区,再连接 ECU:

  1. 单击 XCP 窗口右上角的 × 返回主界面;工作集保留在当前工程中。
  2. 在 CAN → 信号图 → 配置 打开“配置信号曲线窗口”,单击配置信号…。
  3. 在“选择元素”左侧展开 XCP → TEST_ECU → EngineSpeed → 物理值,选中“物理值”后单击添加。同样添加 SpeedLimit → 物理值。
  4. 核对右侧元素列表包含两个变量,单击确定返回曲线配置,再单击确定返回主界面。
两个变量的物理值元素已加入 CAN 信号图。

使用“物理值”可以直接观察 A2L 换算后的数值。本例采用的换算为物理值 = 原始值 + 5;例如 SpeedLimit 原始值 300 对应界面中的 305。

随后打开 CAN 信号图窗口,单击图形区域的配置,设置缓冲区条数。默认容量为 5000 点,可设置为 1000~10000 点;同一总线信号图中的所有元素合计占用该容量。缓冲区满后,较早样本会被后续数据替换。

图形窗口配置:默认缓冲区 5000 点;本例两变量共用该容量。

按变量数量、采样频率和目标时长选择容量。本例两个变量各约每 10 ms 更新一次,合计每秒约 200 点,默认容量约保留最近 25 秒。完成配置后返回主界面,继续连接。

第 05 节先连接,再完成一次读取

  1. 确认 ECU 或教学模拟器已经就绪,在 BUSMASTER 主界面连接 CAN。
  2. 重新打开 XCP 主窗口,核对底部 CAN 状态为已连接,再单击顶部连接。
  3. 等待 XCP ECU 状态变为已连接。选中右侧 EngineSpeed 行,单击立即读取;再选中 SpeedLimit 行读取一次。也可用 Ctrl 或 Shift 选中多个需要读取的行。
  4. 检查“值”“单位”“质量”和“最近结果”。本例应显示有效数值、rpm、正常和读取成功。SpeedLimit 初值为 305;EngineSpeed 随读取时刻变化。
单次读取:查看物理值、单位、质量和最近结果。
单次读取前,选择目标行并单击“立即读取”;连续采集前,勾选目标对象的“采集”列,然后单击“启动采集”。

第 06 节启动连续采集,并观察曲线

  1. 确认右侧两个变量的“采集”均已勾选,单击启动采集。按钮随即变为“停止采集”,底部测量状态应为 DAQ 运行中。
  2. 观察 EngineSpeed 的值继续更新,SpeedLimit 保持参考值。运行时添加、移除、移动和修改采集选择被禁用;需要修改工作集时先停止采集。
  3. 隐藏 XCP 窗口,打开 CAN → 信号图,确认元素列表包含两个 XCP 变量,并有新的曲线样本。
  4. 数值超出默认 0~100 时,选择 Y 或 XY 后单击自动范围。需要继续跟踪最新时间,单击跟随最新。自动范围会暂停时间轴跟随;再次跟随会转到最新时间。
DAQ 运行时的工作集数值与采集状态。
EngineSpeed 随时间变化,SpeedLimit 保持 305。

DAQ 按设备事件采样,界面按显示更新周期刷新。通过底部运行状态、曲线样本时间和导出数据查看采集结果;恒定变量显示为水平线。

按需读取、轮询、动态 DAQ、自动,该怎样选?
模式适合的起点设置与操作
仅按需读取确认连接和少量对象单击“立即读取”取得一次值。
轮询不确定 ECU 的 DAQ 能力时按设定间隔读取勾选对象。负载过高时增大间隔或减少对象。
动态 DAQ已确认支持动态 DAQ 的 ECU;本教学模拟器由 ECU 事件驱动,事件通道必须正确。本例使用事件 3,周期由模拟器设为 10 ms。
自动允许软件优先尝试 DAQ软件优先配置 DAQ;遇到能力不支持或 ECU 拒绝等情况时,显示原因并改用轮询。启动后查看底部测量状态,确认实际模式。通信超时按第 9 节恢复会话。

本例选择动态 DAQ,事件通道为 3,采样周期为 10 ms。

第 07 节可选:修改一个标定量,并读回确认

测量练习结束后可直接进入第 8 节。练习标定前,先记录目标参数原值,并核对其可写权限、取值范围和设备状态。本例使用 SpeedLimit。

  1. 回到 XCP 主窗口,先单击停止采集,保持 XCP ECU 连接。
  2. 选中 SpeedLimit,立即读取并记录原值 305。双击该行的值单元格,或选中该行按 F2。
  3. 输入物理值 350,按 Enter。该操作会立即写入 ECU,并自动回读校验。
  4. 确认值为 350、质量为正常、最近结果为写入校验成功。再按相同方法写回 305,确认恢复成功后继续。
SpeedLimit 写入 350 后的回读结果;停止采集后的 EngineSpeed 显示为已过期。
本节编辑访问权限为 R/W 的标量对象。单击其他位置可取消未提交的编辑;Esc 会断开主 CAN。

写入超时、结果不明确时,查看主窗口下方的“日志 / 诊断”区域并恢复通信;随后读取目标参数的当前值,再决定是否重新写入。

第 08 节结束采集,导出数据并保存工程

CSV 保存样本,CFX 保存配置。分别保存这两类文件。信号图的导出按钮在主 CAN 断开后可用,按以下顺序完成:

  1. 在 XCP 主窗口停止采集;如做过标定,先确认已恢复需要保留的值。
  2. 单击 XCP 的断开,再回到主界面断开主 CAN。在重新连接前完成导出;主 CAN 新连接会清空信号图缓冲区。
  3. 打开已有的 CAN 信号图,单击底部导出。在“导出”窗口的 CSV → 文件 中填写完整目标路径,或通过“…”选择路径,再单击 CSV 区域的导出。
  4. 打开生成的 CSV,查看目标变量名、时间和数值列。Time(in mSec) 列使用毫秒,图中横轴使用秒;例如,CSV 中的 15306.7 ms 对应图中的 15.3067 s。
  5. 关闭导出窗口,使用主界面的文件 → 保存 / 另存为保存 .cfx。它保留 XCP 参数、A2L 引用、工作集、采集选择和曲线配置;A2L 文件仍需保留在可访问的位置。
  6. 关闭 BUSMASTER;若使用教学模拟器,也正常停止模拟器。
CSV 导出:选择文件路径并保存图形数据。
CSV 保存当前缓冲区中的样本。停止连续采集后,手动读取和标定回读也会追加样本,因此各变量的点数可能不同。
查看 CSV 数据格式

文件分别排列 EngineSpeed 和 SpeedLimit 的时间、物理值列。可对照曲线查看数值随时间的变化;标定回读的样本也保存在对应变量列中。

下载 CSV 示例

下次加载 CFX 后,核对 A2L 路径和硬件映射,再建立 CAN、XCP 连接并读取或采集当前值。历史样本通过另存的 CSV 查阅。

CFX 工程重开后的工作集、A2L 与连接状态。

第 09 节遇到问题时,从哪个状态查起?

现象先确认下一步
A2L 加载了,但没有实时值CAN、XCP ECU 是否分别已连接;是否选中行执行立即读取建立 CAN 和 XCP ECU 连接后,先完成一次立即读取,再启动连续采集。
连接 XCP 超时ECU / 模拟器是否就绪,实际接线、500 kbit/s、标准帧、0x555 / 0x556 是否一致核对两端通道与终端,确认它们不是同一物理通道且没有被其他程序占用。真实 ECU 使用自己的参数。
对象显示不支持或无地址对象的属性、类型、换算、地址及当前 MODULE在对象属性中核对地址、类型、换算和 MODULE。MissingAddress 缺少 ECU 地址;首次练习选择 EngineSpeed 和 SpeedLimit。
动态 DAQ 启动失败ECU 是否支持动态 DAQ,事件通道是否正确查看主窗口下方的“日志 / 诊断”。模拟器使用事件 3;根据 ECU 的事件定义修正配置,或切换轮询确认基本读取是否正常。
值有更新,曲线却看不到是否已加入 XCP 物理值元素、是否有采样、坐标范围是否包含数据先自动范围;运行时需要追踪最新时间再点跟随最新,停止后查看历史区间。
停止后值显示已过期测量是否已停止或连接已断开这是缓存时效提示;需要新值时重新连接并读取或采集。
导出或配置按钮灰色主 CAN 是否仍在连接先停止采集、断开 XCP,再断开主 CAN,保留当前缓冲后导出。
通信超时后提示不同步当前诊断日志和未确认命令断开 XCP,再断开并重连主 CAN,重新建立 XCP 会话。对未确认的标定写入,先查实际值。
修改 CAN 发送任务后 XCP 超时是否在 XCP 采集或等待响应期间新增、删除或修改了 CAN 发送任务调整 CAN 发送任务前,先停止采集并断开 XCP;完成修改后重新连接 XCP。已提示通信不同步时,断开并重连主 CAN,再建立 XCP 会话。

完成本教程后,应能独立确认四件事:连接到了正确 ECU;读到了带正确单位的当前值;连续采集与曲线对应;CSV 与 CFX 分别保存了数据和配置。

扩展阅读:XCP 主窗口参考、XCP 操作参考。

100%