Можно настроить поля файла ASAP2 при помощи генератора кода любым из этих способов:
Создайте объект из базового класса.
obj = coder.asap2.UserCustomizeBase;
Измените поля объекта.
obj.HeaderComment = 'Header comment'; obj.ModParComment = 'Mod Par comment'; obj.ModCommonComment = 'Mod Common comment'; obj.ASAP2FileName = 'File name'; obj.ByteOrder = 'BYTEORDER MSB_LAST';
Передайте объект функции, которая генерирует файл ASAP2.
coder.asap2.export(modelName
,'CustomizationObject',obj
);
Выведите из базового класса coder.asap2.UserCustomizeBase
. Можно поместить производный файл куда угодно в путь MATLAB.
Чтобы отредактировать раздел Header, используйте writeHeader
функция.
Используйте writeHardwareInterface
функционируйте, чтобы отредактировать раздел аппаратного интерфейса, состоящий из MOD_PAR
и MOD_COMMON
поля файла ASAP2.
Чтобы добавить текст в начале файла ASAP2, используйте writeFileHead
функция.
Чтобы добавить текст в конце файла 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
Создайте объект из производного класса. Например, эта команда создает объект из TestASAP2Customization
.
obj = TestASAP2Customization;
Передайте объект функции, которая генерирует файл 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>
где
<local_Prefix>
локальный префикс, CM_
, заданный в
.matlabroot
/toolbox/rtw/targets/asap2/asap2/user/getCompuMethodName.m
<datatype>
и <cmUnits>
аргументы, которые вы задали к getCompuMethodName
функция.
Специальные символы используются в
не поддерживаются в имени метода расчета в файле ASAP2. Специальные символы преобразованы как показано в этой таблицеcmUnits
Специальный символ | Преобразование |
---|---|
% | _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
на основе подсистем, существующих в модели.
Откройте sldemo_fuelsys
модель.
open_system("sldemo_fuelsys")
Создайте модель.
Сгенерируйте файл ASAP2 при помощи Generate Calibration Files
инструмент или
coder.asap2.export("sldemo_fuelsys")
Можно найти элементы данных сгруппированными на основе архитектуры модели. Топ-модель отнесена как 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
Следующие оперативные группы штаба scalar
объекты группе под названием GROUP_TYPE_SCALAR
в файле ASAP2.
coder.asap2.export("sldemo_fuelsys",'CustomizeGroupsBy',{'SCALAR'})
Таким образом можно также сгруппировать объекты типа array
. И интерполяционные таблицы в MAP
, CURVE
, CUBOID
, CUBE_4
, и CUBE_5
на основе размерностей таблицы.
Откройте sldemo_fuelsys
модель.
open_system("sldemo_fuelsys")
Создайте модель.
Сгенерируйте файл ASAP2.
coder.asap2.export("sldemo_fuelsys","IncludeAllRecordLayouts",true)
Можно найти RecordLayouts.a2l
файл сгенерирован с файлом ASAP2. Проверьте следующую линию в файле ASAP2, который включает файл размещений записи.
/include "RecordLayouts.a2l"
Сгенерированный RecordLayouts.a2l
файл содержит размещения записи всех типов данных, существующих в модели.
Примечание
Файл ASAP2 требует что RecordLayouts.a2l
файл находится в той же папке.
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
от топ-модели как значение параметров экземпляра.