Начало работы с A2L-файлами

В этом примере показано, как получить доступ и просмотреть информацию, хранившую в A2L-файлах.

XCP (Универсальный Протокол Измерения и Калибровки) является сетевым протоколом, обычно используемым в автомобильной промышленности для соединения калибровочных систем к электронным блокам управления (ЭКЮ). Калибровочная система обычно упоминается как клиент и ECU как сервер. XCP включает доступ для чтения и доступ для записи к переменным и содержанию памяти во времени выполнения.

Наборы данных в целом могут быть получены или стимулированы синхронные к событиям, инициированным таймерами или условиями работы. Спецификация протокола XCP задана ASAM (Ассоциация для Стандартизации Автоматизации и Измеряющихся Систем), и допускает множество транспортных уровней, таких как XCP по CAN или Ethernet.

A2L-файл является структурированным текстовым ASCII-файлом, который содержит измерение, калибровку и определения события, используемые с XCP для получения и стимулирования данных. Этот пример использует A2L-файл, сконфигурированный для XCP по Ethernet. A2L-файл следует стандарту ASAM MCD-2 MC (ASAP2), который задает формат описания внутренних серверных переменных, используемых в измерении и калибровке. .a2l расширение файла является сокращением "языка ASAM MCD-2 MC".

Откройте A2L-файл

A2L-файл содержит измерение, калибровку и определения события за одно или несколько ЭКЮ. Если вы намереваетесь считать данные из или записать данные непосредственно к памяти о сервере XCP, необходимый первый шаг должен открыть A2L-файл, представляющий ту систему. Чтобы получить доступ к A2L-файлу, создайте объект файла в своем сеансе работы с MATLAB с помощью xcpA2L функция:

a2lfile = xcpA2L("XCPServerSineWaveGenerator.a2l")
a2lfile = 
  A2L with properties:

   File Details
                 FileName: 'XCPServerSineWaveGenerator.a2l'
                 FilePath: 'C:\examplefiles\XCPServerSineWaveGenerator.a2l'
               ServerName: 'ModuleName'
                 Warnings: [0×0 string]

   Parameter Details
                   Events: {'100 ms'}
                EventInfo: [1×1 xcp.a2l.Event]
             Measurements: {'Sine'  'SineAfterGain'  'SineAfterTable'  'XCPServer_DW.lastCos'  'XCPServer_DW.lastSin'  'XCPServer_DW.systemEnable'}
          MeasurementInfo: [6×1 containers.Map]
          Characteristics: {'Gain'  'ydata'}
       CharacteristicInfo: [2×1 containers.Map]
                 AxisInfo: [1×1 containers.Map]
            RecordLayouts: [4×1 containers.Map]
             CompuMethods: [3×1 containers.Map]
                CompuTabs: [0×1 containers.Map]
               CompuVTabs: [0×1 containers.Map]

   XCP Protocol Details
        ProtocolLayerInfo: [1×1 xcp.a2l.ProtocolLayer]
                  DAQInfo: [1×1 xcp.a2l.DAQ]
    TransportLayerCANInfo: [0×0 xcp.a2l.XCPonCAN]
    TransportLayerUDPInfo: [0×0 xcp.a2l.XCPonIP]
    TransportLayerTCPInfo: [1×1 xcp.a2l.XCPonIP]

Доступ к информации об измерении

Измерение описывает свойства записываемой, внутренней переменной сервера. Эта переменная может быть скаляром или массивом. Битовые маски и битовые операции могут быть применены к измерению. Адрес, порядок байтов, метод расчета, верхний и нижние пределы и другие свойства, описаны. Стандарт также позволяет писать в объекты измерения, чтобы стимулировать сервер во время времени выполнения.

Просмотрите все доступные измерения через Measurements свойство объекта A2L-файла.

a2lfile.Measurements
ans = 1×6 cell
    {'Sine'}    {'SineAfterGain'}    {'SineAfterTable'}    {'XCPServer_DW.lastCos'}    {'XCPServer_DW.lastSin'}    {'XCPServer_DW.systemEnable'}

Получите информацию о Sine измерение с помощью getMeasurementInfo функция. Эта функция возвращает информацию о заданном измерении из заданного A2L-файла.

measInfo = getMeasurementInfo(a2lfile,"Sine")
measInfo = 
  Measurement with properties:
                   Name: 'Sine'
         LongIdentifier: 'Sine wave signal'
            LocDataType: FLOAT64_IEEE
             Conversion: [1×1 xcp.a2l.CompuMethod]
             Resolution: 0
               Accuracy: 0
             LowerLimit: -3
             UpperLimit: 3
              Dimension: 1
              ArraySize: []
                BitMask: []
           BitOperation: [1×0 xcp.a2l.BitOperation]
              ByteOrder: MSB_LAST
               Discrete: []
             ECUAddress: 1586712
    ECUAddressExtension: 0
                 Format: ''
                 Layout: ROW_DIR
               PhysUnit: ''
              ReadWrite: []

Используя xcpChannel можно считать и записать данные об измерении непосредственно в память о сервере XCP с readMeasurement и writeMeasurement функции, соответственно. readMeasurement функционируйте читает и масштабирует значение для заданного measurement через XCP образовывают канал объект. Это действие выполняет прямое чтение из памяти о сервере. writeMeasurement функционируйте масштабирует и пишет значение для заданного measurement через XCP образовывают канал объект. Это действие выполняет прямую запись к памяти о сервере.

Доступ к характеристической информации

Характеристика описывает свойства настраиваемого параметра (Калибровка). Возможные типы настраиваемых параметров включают скаляры, строки и интерполяционные таблицы. Адрес, размещение записи, метод расчета, верхние и более низкие калибровочные пределы заданы.

Просмотрите все доступные характеристики по наименованию через Characteristics свойство объекта A2L-файла.

a2lfile.Characteristics
ans = 1×2 cell
    {'Gain'}    {'ydata'}

Получите информацию о Gain характеристика с помощью getCharacteristicInfo функция. Эта функция возвращает информацию о заданной характеристике из заданного A2L-файла.

charInfo = getCharacteristicInfo(a2lfile,"Gain")
charInfo = 
  Characteristic with properties:
                   Name: 'Gain'
         LongIdentifier: ''
     CharacteristicType: VALUE
             ECUAddress: 549960
                Deposit: [1×1 xcp.a2l.RecordLayout]
                MaxDiff: 0
             Conversion: [1×1 xcp.a2l.CompuMethod]
             LowerLimit: -5
             UpperLimit: 5
              Dimension: 1
         AxisConversion: {1×0 cell}
                BitMask: []
              ByteOrder: MSB_LAST
               Discrete: []
    ECUAddressExtension: 0
                 Format: ''
                 Number: []
               PhysUnit: ''

Используя xcpChannel можно считать и записать характеристические данные непосредственно в память о сервере XCP с помощью readCharacteristic и writeCharacteristic функции, соответственно. readCharacteristic функционируйте читает и масштабирует значение для заданного characteristic через канал XCP. Это действие выполняет прямое чтение из памяти о сервере. writeCharacteristic функционируйте масштабирует и пишет значение для заданного characteristic через XCP образовывают канал объект. Это действие выполняет прямую запись к памяти о сервере.

Доступ к информации о событии

Данные могут быть получены или стимулированы синхронные к событиям, инициированным таймерами или условиями работы.

Просмотрите все доступные события через Events свойство объекта A2L-файла.

a2lfile.Events
ans = 1×1 cell array
    {'100 ms'}

Получите информацию о 100 ms событие с помощью getEventInfo функция. Эта функция возвращает информацию о заданном событии из заданного A2L-файла.

eventInfo = getEventInfo(a2lfile, "100 ms")
eventInfo = 
  Event with properties:
                         Name: '100 ms'
                    ShortName: '100 ms'
                ChannelNumber: 0
                    Direction: DAQ
                   MaxDAQList: 255
             ChannelTimeCycle: 1
              ChannelTimeUnit: 8
              ChannelPriority: 0
    ChannelTimeCycleInSeconds: 0.1000

Используя xcpChannel и задавая событие, можно получить и стимулировать измерения с помощью доступных функций XCP, таких как readDAQ and writeSTIM. Использование событий, чтобы получить данные об измерении далее исследуется в Чтении в качестве примера Измерения XCP с Динамическими Списками DAQ.

Просмотрите информацию о слое протокола

Слой протокола задает часть базовой операции и организация обмена сообщениями между сервером XCP и клиентом. Это включает калибровку и структуру байтов в сообщениях команды и ответа XCP.

Отобразите детали слоя протокола через ProtocolLayerInfo свойство объекта A2L-файла.

a2lfile.ProtocolLayerInfo
ans = 
  ProtocolLayer with properties:
                    T1: 1000
                    T2: 200
                    T3: 0
                    T4: 0
                    T5: 0
                    T6: 0
                    T7: 0
                MaxCTO: 255
                MaxDTO: 65532
             ByteOrder: BYTE_ORDER_MSB_LAST
    AddressGranularity: ADDRESS_GRANULARITY_BYTE

Просмотрите информацию о DAQ

XCP предлагает синхронный режим (DAQ) сбора данных, как описано в ASAM MDC-2 MC. DAQ является одной из основных услуг XCP, которые может предоставить сервер. События XCP DAQ могут быть заданы клиентом, чтобы инициировать выборку данных об измерении. Когда алгоритм в сервере достигает местоположения такого события выборки, сервер собирает значения параметров измерения и отправляет их клиенту. Отобразите детали DAQ через DAQInfo свойство объекта A2L-файла.

a2lfile.DAQInfo
ans = 
  DAQ with properties:
                    ConfigType: DYNAMIC
                        MaxDAQ: 65535
              MaxEventChannels: 128
                        MinDAQ: 0
              OptimizationType: OPTIMISATION_TYPE_DEFAULT
              AddressExtension: ADDRESS_EXTENSION_FREE
       IdentificationFieldType: IDENTIFICATION_FIELD_TYPE_ABSOLUTE
    GranularityODTEntrySizeDAQ: GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE
            MaxODTEntrySizeDAQ: 255
            OverloadIndication: NO_OVERLOAD_INDICATION
       DAQAlternatingSupported: []
            PrescalerSupported: []
               ResumeSupported: []
                          STIM: [1×0 xcp.a2l.STIM]
                     Timestamp: [1×1 xcp.a2l.TimestampSupported]
                        Events: [1×1 xcp.a2l.Event Map]

Просмотрите информацию о транспортном уровне

Пакет XCP встраивается в систему координат транспортного уровня, который является пакетом выбранного транспортного протокола. A2L-файл предоставляет информацию о транспортном уровне для поддерживаемых протоколов. Если информация о транспортном уровне для конкретного протокола пуста, сервер не поддерживает тот транспорт. Спецификация протокола XCP допускает множество транспортных уровней, таких как CAN или Ethernet.

Этот пример использует A2L-файл, сконфигурированный для XCP по Ethernet, который требует IP-адреса и порта. Они заданы в A2L-файле.

Отобразите детали транспортного уровня через TransportLayerTCPInfo свойство объекта A2L-файла.

a2lfile.TransportLayerTCPInfo
ans = 
  XCPonIP with properties:
          CommonParameters: [1×1 xcp.a2l.CommonParameters]
    TransportLayerInstance: ''
                      Port: 17725
                   Address: 2.1307e+09
             AddressString: '127.0.0.1'

Закройте A2L-файл

Закройте доступ к A2L-файлу путем очищения его переменной из рабочей области.

clear a2lfile
Для просмотра документации необходимо авторизоваться на сайте