Настройте сгенерированный файл ASAP2

Можно настроить поля файла ASAP2 при помощи генератора кода любым из этих способов:

Настройте поля ASAP2 при помощи базового класса

  1. Создайте объект из базового класса.

    obj = coder.asap2.UserCustomizeBase;

  2. Измените поля объекта.

    obj.HeaderComment = 'Header comment';
    obj.ModParComment = 'Mod Par comment';
    obj.ModCommonComment = 'Mod Common comment';
    obj.ASAP2FileName = 'File name';
    obj.ByteOrder = 'BYTEORDER MSB_LAST';

  3. Передайте объект функции, которая генерирует файл ASAP2.

    coder.asap2.export(modelName,'CustomizationObject',obj);

Настройте разделы ASAP2 путем получения из базового класса

  1. Выведите из базового класса coder.asap2.UserCustomizeBase. Можно поместить производный файл куда угодно в путь MATLAB.

  2. Чтобы отредактировать раздел Header, используйте writeHeader функция.

  3. Используйте writeHardwareInterface функционируйте, чтобы отредактировать раздел аппаратного интерфейса, состоящий из MOD_PAR и MOD_COMMON поля файла ASAP2.

  4. Чтобы добавить текст в начале файла ASAP2, используйте writeFileHead функция.

  5. Чтобы добавить текст в конце файла ASAP2, используйте writeFileTail функция.

    Например, код для генерации производного класса TestASAP2Customization может выглядеть так код:

    classdef TestASAP2Customization < coder.asap2.UserCustomizeBase
        %   Customization class for asap2 file
        methods
            function header = writeHeader(obj)
                header = sprintf(['  /begin HEADER ' 'test Header text'  '\n',...
                    'header test comments from user\n',...
                    '  /end HEADER']);
            end
    
            function hardwareInterface = writeHardwareInterface(obj)
                hardwareInterface = sprintf(['    /begin MOD_PAR "' 'UserDefined' '"\n',...
                    '      test comments from user\n',...
                    '    /end MOD_PAR\n\n',...
                    '    /begin MOD_COMMON "'  'UserDefined MOD_COMMON' '"\n',...
                    '      user defined values for MOD_COMMON\n',...
                    '     ' obj.ByteOrder '\n',...
                    '     /end MOD_COMMON']);
            end
            
            function fileTail = writeFileTail(obj)
                fileTail = sprintf(['/* This File can be used for ' ,...
                    'calibration .*/\n'...
                    '/* EOF ',obj.ASAP2FileName, '*/']);
            end
            
            function fileHeader = writeFileHead(obj)
                fileHeader = sprintf(['/******************************************************************************\n',...
                    ' This is a a2l file which can be used for calibration with INCA or CANAPE\n',...
                    ' ******************************************************************************/'
                    ]);
            end
        end
    end

  6. Создайте объект из производного класса. Например, эта команда создает объект из TestASAP2Customization.

    obj = TestASAP2Customization;

  7. Передайте объект функции, которая генерирует файл ASAP2.

    coder.asap2.export(modelName,'CustomizationObject',obj);

Настройте имена методов расчета

В сгенерированных файлах ASAP2 методы расчета переводят электронный блок управления (ECU), внутреннее представление количеств измерения и калибровки в физическую модель ориентировало представление. Используя Simulink® Программное обеспечение Coder™, можно настроить имена методов расчета. Можно обеспечить имена, которые более интуитивны, улучшая удобочитаемость файла ASAP2 или имена, которые удовлетворяют организационные требования.

Чтобы настроить имена методов расчета, используйте MATLAB® функция getCompuMethodName, который задан в matlabroot/toolbox/rtw/targets/asap2/asap2/user/getCompuMethodName.m.

getCompuMethodName функционируйте создает имя метода расчета. Прототип функции

cmName = getCompuMethodName(dataTypeName, cmUnits)

где dataTypeName имя типа данных, сопоставленного с методом расчета, cmUnits модули, как задано в Unit свойство Simulink.Parameter or Simulink.Signal объект (например, rpm или m/s), и cmName возвращает созданное имя метода расчета.

Созданное имя значения по умолчанию, возвращенное функцией, имеет формат

<localPrefix><datatype>_<cmUnits>

где

Специальные символы используются в cmUnits не поддерживаются в имени метода расчета в файле ASAP2. Специальные символы преобразованы как показано в этой таблице

Специальный символПреобразование
%_percent_
-_dash_
/_per_
*_into_
°_deg_

Например, если вы вызываете getCompuMethodName функция с dataTypeName аргумент 'int16' и cmUnits аргумент 'm/s', и затем сгенерируйте файл ASAP2 для модели под названием myModel, имя метода расчета появляется в сгенерированном файле можно следующим образом:

/begin COMPU_METHOD
   /* Name of CompuMethod */ myModel_CM_int16_m_per_s
   /* Units */ "m/s"
   ...
/end COMPU_METHOD

Экспортируйте характеристики и объекты измерения в группах

Начиная в релизе R2021b, можно сгруппировать характеристические и объекты измерения в файле ASAP2 на основе их свойств. По умолчанию сгенерированный файл ASAP2 содержит GROUPS и SUB_GROUPS на основе подсистем, существующих в модели.

  1. Откройте sldemo_fuelsys модель.

    open_system("sldemo_fuelsys")

  2. Создайте модель.

  3. Сгенерируйте файл ASAP2 при помощи Generate Calibration Files инструмент или

    coder.asap2.export("sldemo_fuelsys")

  4. Можно найти элементы данных сгруппированными на основе архитектуры модели. Топ-модель отнесена как GROUP и подсистемы в модели отнесены как SUB_GROUPS. Сгенерированный файл содержит эти линии.

     /begin GROUP
        /* Name                   */      sldemo_fuelsys
        /* Long identifier        */      "sldemo_fuelsys"
        /* Root                   */      ROOT
        /begin SUB_GROUP
          rtB.es_o
          sldemo_fuelsys_Dashboard
          sldemo_fuelsys_Engine_Gas_Dynamics
          sldemo_fuelsys_Throttle_Command
          sldemo_fuelsys_To_Controller
          sldemo_fuelsys_To_Plant
          sldemo_fuelsys_fuel_rate_control
        /end SUB_GROUP
      /end GROUP

  5. Следующие оперативные группы штаба scalar объекты группе под названием GROUP_TYPE_SCALAR в файле ASAP2.

    coder.asap2.export("sldemo_fuelsys",'CustomizeGroupsBy',{'SCALAR'})

Таким образом можно также сгруппировать объекты типа array. И интерполяционные таблицы в MAP, CURVE, CUBOID, CUBE_4, и CUBE_5 на основе размерностей таблицы.

Сгенерируйте размещения записи

  1. Откройте sldemo_fuelsys модель.

    open_system("sldemo_fuelsys")

  2. Создайте модель.

  3. Сгенерируйте файл ASAP2.

    coder.asap2.export("sldemo_fuelsys","IncludeAllRecordLayouts",true)

  4. Можно найти RecordLayouts.a2l файл сгенерирован с файлом ASAP2. Проверьте следующую линию в файле ASAP2, который включает файл размещений записи.

    /include "RecordLayouts.a2l"

  5. Сгенерированный RecordLayouts.a2l файл содержит размещения записи всех типов данных, существующих в модели.

    Примечание

    Файл ASAP2 требует что RecordLayouts.a2l файл находится в той же папке.

  6. coder.asap2.export("sldemo_fuelsys","IncludeAllRecordLayouts",false) не генерирует отдельный файл размещений записи, но включает размещения записи типов данных экспортируемых объектов данных в файле ASAP2.

    /begin  RECORD_LAYOUT Scalar_FLOAT32_IEEE
        FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT
      /end  RECORD_LAYOUT 
    
      /begin  RECORD_LAYOUT Scalar_FLOAT64_IEEE
        FNC_VALUES 1 FLOAT64_IEEE COLUMN_DIR DIRECT
      /end  RECORD_LAYOUT
    ...

Совет

В файле ASA2P, чтобы сохранить форму интерполяционной таблицы, которая используется в качестве аргумента модели, это, рекомендуют иметь блок LookUp Table в модели, на которую ссылаются, и передать Lookup table object от топ-модели как значение параметров экземпляра.

Смотрите также

Похожие темы

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