在 Simulink 中执行 XCP 数据采集
此示例说明如何使用 XCP 模块从 XCP Sample 服务器采集 Simulink® 中的测量变量值。
Vehicle Network Toolbox™ 提供 XCP 模块,用于通过多个传输层(包括 CAN、CAN FD 和 UDP)与服务器对接。此示例使用 XCP CAN Configuration、XCP CAN Data Acquisition 和 XCP CAN Transport Layer 模块通过 CAN 协议执行数据传输。
XCP 是一种高级协议,用于访问和修改模型、算法或 ECU 的内部参数和变量。有关详细信息,请参阅 ASAM 标准。

打开 A2L 文件
建立与 XCP 服务器的连接需要 A2L 文件。A2L 文件说明 XCP 服务器提供的所有功能,以及如何连接到该服务器的详细信息。使用 xcpA2L 函数打开说明服务器模型的 A2L 文件。
a2LInfo = xcpA2L("SampleECU.a2l")a2LInfo =
A2L with properties:
File Details
FileName: 'SampleECU.a2l'
FilePath: '/tmp/Bdoc26a_3233028_2250929/tp5f6ebb1e/vnt-ex11419635/SampleECU.a2l'
ServerName: 'SampleServer'
Warnings: [0×0 string]
Parameter Details
Events: {'Event DAQ 100ms'}
EventInfo: [1×1 xcp.a2l.Event]
Measurements: {'Line' 'PWM' 'Sine'}
MeasurementInfo: [3×1 containers.Map]
Characteristics: {'Gain' 'yData'}
CharacteristicInfo: [2×1 containers.Map]
AxisInfo: [1×1 containers.Map]
RecordLayouts: [3×1 containers.Map]
CompuMethods: [1×1 containers.Map]
CompuTabs: [0×1 containers.Map]
CompuVTabs: [0×1 containers.Map]
XCP Protocol Details
ProtocolLayerInfo: [1×1 xcp.a2l.ProtocolLayer]
DAQInfo: [1×1 xcp.a2l.DAQ]
TransportLayerCANInfo: [1×1 xcp.a2l.XCPonCAN]
TransportLayerUDPInfo: [0×0 xcp.a2l.XCPonIP]
TransportLayerTCPInfo: [1×1 xcp.a2l.XCPonIP]
启动 XCP Sample 服务器
XCP Sample 服务器以可控方式模拟真实 XCP 服务器的行为。在这种情况下,它仅用于演示功能有限的示例。使用 SampleECU 在 MATLAB® 工作区中创建一个示例服务器对象。
sampleServer = SampleECU(a2LInfo,"CAN","MathWorks","Virtual 1",1);
打开示例模型
open_system("XCPDataAcquisitionInSimulinkExample.slx")设置 XCP 模块参数
创建一个模型,设置从示例服务器对测量变量 PWM、Sine 和 Line 进行 XCP 数据采集。
使用 XCP Configuration 模块并选择 A2L 文件
SampleECU.a2l。使用 XCP CAN Transport Layer 模块并将
Device设置为Mathworks Virtual 1 Channel 2。传输层配置为在 CAN 上通过指定的虚拟通道传输 XCP 报文。使用 XCP Data Acquisition 模块在发生指定事件时接收所选的测量变量值。对于此示例,为所有三个测量变量选择 XCP Data Acquisition 模块。
可视化从服务器接收的测量变量值
运行模型并绘制结果,以查看 PWM、Sine 和 Line 测量变量的值。X 轴对应于仿真时间步。最初,示波器没有数据输出,因为示例服务器需要时间来初始化。
您可以在示波器中查看信号,或通过选择感兴趣的信号在仿真数据检查器中查看信号。

关闭模型并进行清理
close_system("XCPDataAcquisitionInSimulinkExample.slx") clear sampleServer a2LInfo