В этом примере показано, как использовать связи XCP, чтобы создать и использовать динамические списки сборов данных. Это использует ведомое средство моделирования XCP в свободном доступе от Векторных и Векторных виртуальных каналов CAN. Для доступа к виртуальным каналам должны быть установлены Векторные драйверы устройств. Также рекомендуется запустить Vehicle CAN Bus Monitor в сочетании с этим примером.
Этот пример требует установки свободной, сторонней реализации XCP от Вектора. Пакет включает ведомое средство моделирования XCP и файл A2L. Чтобы установить этот драйвер, следуйте этим инструкциям:
Перейдите к www.vector.com и перейдите к странице "DOWNLOADS".
Ищите "Демонстрации" под "Категориями" и "XCP" в соответствии со "Стандартами".
Загрузите и установите доступную версию "Демонстрационной Реализации XCP".
В MATLAB перейдите туда, где вы установили демонстрационный пакет, и затем перейдите к.\Samples\XCPSim\CANape.
Примеры XCP MATLAB будут использовать файл XCPSIM.a2l и ведомое средство моделирования XCPsim.exe. Запустите XCPsim.exe.
Установление связи с ведомым устройством XCP требует использования файла A2L, который описывает ведомый модуль.
a2lObj = xcpA2L('XCPSIM.a2l')
a2lObj = A2L with properties: FileName: 'XCPSIM.a2l' FilePath: '\\central-mi\home\jpyle\documents\MATLAB\examples\vnt-ex33137552\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 для того, чтобы подготовить связь с ведомым устройством.
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)
Создайте список DAQ с помощью одного из событий, заданных в A2L и присвоении к нему некоторые измерения, заданные в файле A2L.
createMeasurementList(xcpCh, 'DAQ', '10 ms', {'Triangle', 'PWM', 'channel3'})
Стартовые измерения начинают передачу сообщений DAQ от ведомого устройства. После выполнения в течение нескольких секунд остановите измерения.
startMeasurement(xcpCh) pause(3); stopMeasurement(xcpCh)
Получите полученные данные из канала для каждого измерения.
dataTriangle = readDAQListData(xcpCh, 'Triangle');
plot(dataTriangle)
Получите полученные данные из канала для каждого измерения.
dataPWM = readDAQListData(xcpCh, 'PWM');
plot(dataPWM)
Получите полученные данные из канала для каждого измерения.
datachannel3 = readDAQListData(xcpCh, 'channel3');
plot(datachannel3)
Чтобы сделать связь с ведомым устройством неактивной, отключитесь от него.
disconnect(xcpCh)