Этот пример показывает, как получить доступ к информации, хранившей в файлах A2L для использования со связями XCP. Это использует ведомое средство моделирования XCP в свободном доступе от Вектора.
Этот пример требует установки свободной, сторонней реализации XCP от Вектора. Пакет включает ведомое средство моделирования XCP и файл A2L. Чтобы установить этот драйвер, следуйте этим инструкциям:
Перейдите к www.vector.com и перейдите к странице "DOWNLOADS".
Ищите "Демонстрации" под "Категориями" и "XCP" в соответствии со "Стандартами".
Загрузите и установите доступную версию "Демонстрационной Реализации XCP".
В MATLAB перейдите туда, где вы установили демонстрационный пакет, и затем перейдите к.\Samples\XCPSim\CANape.
Примеры XCP MATLAB будут использовать файл XCPSIM.a2l и ведомое средство моделирования XCPsim.exe. Запустите XCPsim.exe.
Откройте файл A2L, чтобы проанализировать и осмотреть содержимое и сделать его применимым для последующих действий XCP.
a2lObj = xcpA2L('XCPSIM.a2l')
a2lObj = A2L with properties: FileName: 'XCPSIM.a2l' FilePath: '\\central-mi\home\jpyle\documents\MATLAB\examples\vnt-ex15095408\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]
Свойства объекта файла A2L позволяют вам осматривать много параметров конфигурации, содержавших в файле. Из специального замечания свойство Measurements
, которое содержит имена всех доступных измерений для использования в списках DAQ/STIM.
a2lObj.Measurements
ans = 1×45 cell array Columns 1 through 4 {'BitSlice'} {'BitSlice0'} {'BitSlice1'} {'BitSlice2'} Columns 5 through 8 {'Counter_B4'} {'Counter_B5'} {'Counter_B6'} {'Counter_B7'} Columns 9 through 12 {'DtChannel1'} {'FW1'} {'KL1Output'} {'MaxChannel1'} Columns 13 through 16 {'MinChannel1'} {'PWM'} {'PWMFiltered'} {'PWM_Level'} Columns 17 through 20 {'ShiftByte'} {'Shifter_B0'} {'Shifter_B1'} {'Shifter_B2'} Columns 21 through 24 {'Shifter_B3'} {'TestStatus'} {'Triangle'} {'ampl'} Columns 25 through 29 {'bit12Counter'} {'byte1'} {'byte2'} {'byte3'} {'byte4'} Columns 30 through 33 {'byteCounter'} {'bytePWMFilter'} {'channel1'} {'channel2'} Columns 34 through 37 {'channel3'} {'dwordCounter'} {'limit'} {'map1InputX'} Columns 38 through 41 {'map1InputY'} {'map1Output'} {'offset'} {'period'} Columns 42 through 45 {'sbytePWMLevel'} {'v'} {'vin'} {'wordCounter'}
Используйте команду getEventInfo
, чтобы получить подробную информацию о событии по наименованию.
getEventInfo(a2lObj, '10 ms')
ans = Event with properties: Name: '10 ms' Direction: 'DAQ_STIM' MaxDAQList: 255 ChannelNumber: 1 ChannelTimeCycle: 10 ChannelTimeUnit: 6 ChannelPriority: 0 ChannelTimeCycleInSeconds: 0.0100
Используйте команду getMeasurementInfo
, чтобы получить подробную информацию об измерении по наименованию.
getMeasurementInfo(a2lObj, 'Triangle')
ans = Measurement with properties: Resolution: 0 Accuracy: 0 LocDataType: 'SBYTE' Name: 'Triangle' LongIdentifier: 'Triangle test signal used for PWM output PWM' ECUAddress: 4951377 ECUAddressExtension: 0 Conversion: [1×1 xcp.CompuMethodRational] Dimension: 1 LowerLimit: -50 UpperLimit: 50 BitMask: []