Main Content

在 Simulink 中执行 XCP 数据采集

此示例说明如何使用 XCP 模块从 XCP Sample 服务器采集 Simulink® 中的测量变量值。XCP Sample 服务器是专门为 XCP 示例设计的。

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/Bdoc24a_2511836_3090053/tpeb21c448/vnt-ex11419635/SampleECU.a2l'
               ServerName: 'SampleServer'
                 Warnings: [0x0 string]

   Parameter Details
                   Events: {'Event DAQ 100ms'}
                EventInfo: [1x1 xcp.a2l.Event]
             Measurements: {'Line'  'PWM'  'Sine'}
          MeasurementInfo: [3x1 containers.Map]
          Characteristics: {'Gain'  'yData'}
       CharacteristicInfo: [2x1 containers.Map]
                 AxisInfo: [1x1 containers.Map]
            RecordLayouts: [3x1 containers.Map]
             CompuMethods: [1x1 containers.Map]
                CompuTabs: [0x1 containers.Map]
               CompuVTabs: [0x1 containers.Map]

   XCP Protocol Details
        ProtocolLayerInfo: [1x1 xcp.a2l.ProtocolLayer]
                  DAQInfo: [1x1 xcp.a2l.DAQ]
    TransportLayerCANInfo: [1x1 xcp.a2l.XCPonCAN]
    TransportLayerUDPInfo: [0x0 xcp.a2l.XCPonIP]
    TransportLayerTCPInfo: [1x1 xcp.a2l.XCPonIP]

启动 XCP Sample 服务器

XCP Sample 服务器以可控方式模拟真实 XCP 服务器的行为。在这种情况下,它仅用于演示功能有限的示例。使用本地 SampleECU 类创建 sampleServer 对象。将在 MATLAB 工作区中创建一个 sampleServer

sampleServer = SampleECU(a2LInfo,"CAN","MathWorks","Virtual 1",1);

打开示例模型

open_system("XCPDataAcquisitionInSimulinkExample.slx")

设置 XCP 模块参数

创建一个模型,以设置从 Sample 服务器采集测量变量 PWMSineLine 的 XCP 数据。

  • 使用 XCP Configuration 模块并选择 A2L 文件 SampleECU.a2l。

  • 使用 XCP CAN Transport Layer 模块并将 Device 设置为 Mathworks Virtual 1 Channel 2。传输层配置为在 CAN 上通过指定的虚拟通道传输 XCP 报文。

  • 使用 XCP Data Acquisition 模块在发生指定事件时接收所选的测量变量值。对于此示例,我们已为所有三个测量变量选择了 XCP Data Acquisition 模块。

可视化从服务器接收的测量变量值

运行模型并绘制结果,以查看来自服务器的 PWMSineLine 测量变量的值。X 轴对应于仿真时间步。最初,示波器没有数据输出,因为 Sample 服务器需要时间来初始化。

demoVNTSL_XCPCANCommunication_Scope.PNG

关闭模型并进行清理

close_system("XCPDataAcquisitionInSimulinkExample.slx")
clear sampleServer a2LInfo