This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

XCP Direct Data Acquisition

This example shows how to use XCP connections to directly acquire measurement values from a slave. It uses a freely available XCP slave simulator from Vector and Vector Virtual CAN channels. It is also recommended to run Vehicle CAN Bus Monitor in conjunction with this example.

Run a Slave Simulator

This example requires installing a free, third-party XCP implementation from Vector. The package includes an XCP slave simulator and A2L file. To install this driver, please follow these instructions:

  1. Go to and navigate to the "DOWNLOADS" page.

  2. Search for "Demos" under "Categories" and "XCP" under "Standards".

  3. Download and install the available version of "XCP Sample Implementation".

  4. In MATLAB, navigate to where you installed the sample package, and then go to .\Samples\XCPSim\CANape.

  5. The MATLAB XCP examples will use the XCPSIM.a2l file and the XCPsim.exe slave simulator. Run XCPsim.exe.

Open the A2L File

Establishing a connction to an XCP slave requires using the A2L file that describes the slave module.

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

  A2L with properties:

                 FileName: 'XCPSim.a2l'
                 FilePath: [1x65 char]
                SlaveName: 'CPP'
        ProtocolLayerInfo: [1x1 struct]
                  DAQInfo: [1x1 struct]
    TransportLayerCANInfo: [1x1 struct]
                   Events: {1x6 cell}
             Measurements: {1x38 cell}

Create an XCP Channel

Create an XCP channel in order to prepare a connection to the slave.

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

  Channel with properties:

               SlaveName: 'CPP'
             A2LFileName: 'XCPSim.a2l'
          TransportLayer: 'CAN'
    TransportLayerDevice: [1x1 struct]
              SeedKeyDLL: []

Connect to the Slave

To make communication with the slave active, connect to it.


Directly Acquire Measurement Samples

Acquire some samples of a measurement from the slave.

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


ans =


ans =


Directly Acquire a Series of Measurement Samples

Using a loop, acquire and plot many measurement samples from the slave.

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

Disconnect from the Slave

To make communication with the slave inactive, disconnect from it.

Was this topic helpful?