本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

XCP 直接数据采集

以下示例说明如何使用 XCP 连接直接从从站采集测量值。它使用 Vector 免费提供的 XCP 从站仿真器和 Vector 虚拟 CAN 通道。要访问虚拟通道,必须安装 Vector 设备驱动程序。同时,建议在此示例中同时运行 Vehicle CAN Bus Monitor。

运行从站仿真器

此示例需要安装 Vector 提供的免费第三方 XCP 实现。该包包括 XCP 从站仿真器和 A2L 文件。要安装此驱动程序,请按照以下说明进行操作:

  1. 访问 www.vector.com 并导航到“DOWNLOADS”页面。

  2. 在“Categories”下搜索“Demos”,在“Standards”下搜索“XCP”。

  3. 下载并安装“XCP Sample Implementation”的可用版本。

  4. 在 MATLAB 中,导航到安装示例包的位置,然后转至 .\Samples\XCPSim\CANape。

  5. MATLAB XCP 示例将使用 XCPSIM.a2l 文件和 XCPsim.exe 从站仿真器。运行 XCPsim.exe。

打开 A2L 文件

建立与 XCP 从站的连接需要使用描述从站模块的 A2L 文件。

a2lObj = xcpA2L('XCPSIM.a2l')
a2lObj = 

  A2L with properties:

                 FileName: 'XCPSIM.a2l'
                 FilePath: '\\central-mi\home\jpyle\documents\MATLAB\examples\vnt-ex81955136\XCPSIM.a2l'
                SlaveName: 'CPP'
        ProtocolLayerInfo: [1×1 xcp.ProtocolLayerInfo]
                  DAQInfo: [1×1 xcp.DAQInfo]
    TransportLayerCANInfo: [1×1 xcp.TransportLayerCANInfo]
    TransportLayerUDPInfo: [1×1 xcp.TransportLayerUDPInfo]
    TransportLayerTCPInfo: []
                   Events: {1×6 cell}
             Measurements: {1×45 cell}
          Characteristics: {1×16 cell}
                EventInfo: [1×6 xcp.Event]
          MeasurementInfo: [45×1 containers.Map]
       CharacteristicInfo: [16×1 containers.Map]
                 AxisInfo: [1×1 containers.Map]
            RecordLayouts: [41×1 containers.Map]
             CompuMethods: [16×1 containers.Map]
                CompuTabs: [0×1 containers.Map]
               CompuVTabs: [2×1 containers.Map]

创建 XCP 通道

创建一个 XCP 通道以准备与从站的连接。

xcpCh = xcpChannel(a2lObj, 'CAN', 'Vector', 'Virtual 1', 1)
xcpCh = 

  Channel with properties:

               SlaveName: 'CPP'
             A2LFileName: 'XCPSIM.a2l'
          TransportLayer: 'CAN'
    TransportLayerDevice: [1×1 struct]
              SeedKeyDLL: []

连接到从站

要激活与从站的通信,请连接到从站。

connect(xcpCh)

直接采集测量样本

从从站采集某测量的一些样本。

readSingleValue(xcpCh, 'channel3')
readSingleValue(xcpCh, 'channel3')
readSingleValue(xcpCh, 'channel3')
ans =

  single

   -3.0390


ans =

  single

   -4.8650


ans =

  single

   -5.5284

直接采集一系列测量样本

使用循环,从从站采集并绘制多个测量样本。

allSamples = [];
for ii = 1:50
    newSample = readSingleValue(xcpCh, 'channel3');
    allSamples = [allSamples newSample];
end
plot(allSamples)

断开与从站的连接

要使与从站的通信处于不活动状态,请断开与它的连接。

disconnect(xcpCh)