В этом примере показано, как получить доступ к информации, хранившей в файлах 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: []