Стандарт ASAM MCD-2 MC, также известный как ASAP2, является стандартом определения данных, предложенным Ассоциацией для Стандартизации Автоматизации и Измеряющихся Систем (ASAM). ASAP2 является необъектно-ориентированным описанием данных, используемых для измерения, калибровки и диагностических систем. Для получения дополнительной информации о ASAM и ASAM MCD-2 MC (ASAP2) стандарт, смотрите веб-сайт ASAM в https://www.asam.net
.
Генератор кода позволяет вам экспортировать файл ASAP2, содержащий информацию о вашей модели во время процесса генерации кода.
Можно запустить интерактивный пример генерации файла ASAP2. Чтобы открыть пример в командной строке MATLAB®, введите следующую команду:
rtwdemo_asap2
Поддержка Simulink® Coder™ генерации файла ASAP2 нейтральна в отношении версии. По умолчанию программное обеспечение генерирует формат версии 1.31 ASAP2, но сгенерированная информация модели обычно совместима со всеми версиями ASAP2. Генерация файла ASAP2 также нейтральна относительно определенных потребностей измерения ASAP2 и инструментов калибровки. Программное обеспечение обеспечивает API индивидуальной настройки, которые можно использовать, чтобы настроить генерацию файла ASAP2, чтобы сгенерировать версию ASAP2 и удовлетворить определенные потребности инструментов ASAP2.
Чтобы использовать генерацию файла ASAP2, необходимо познакомиться со следующими темами:
ASAM и стандарт ASAP2 и терминология. Смотрите веб-сайт ASAM в https://www.asam.net
.
Объекты данных Simulink. Объекты данных используются, чтобы предоставить информацию, не содержавшуюся в модели. Для обзора смотрите Объекты данных (Simulink).
Устройство хранения данных и представление сигналов и параметров в сгенерированном коде. Смотрите Доступ к данным для Прототипирования и Отладки (Simulink Coder).
Если вам лицензируют для Embedded Coder®, см. также Представление данных темы Embedded Coder и доступ.
Генерация файла ASAP2 доступна всем системным настройкам конечного файла генератора кода. Например,
Generic Real-Time Target
(grt.tlc
) позволяет вам сгенерировать файл ASAP2 как часть генерации кода и процесса сборки.
Embedded Coder
(ert.tlc
) системные выборы конечного файла также позволил вам сгенерировать файл ASAP2 как часть генерации кода и процесса сборки.
ASAM-ASAP2 Data Definition Target
(asap2.tlc
) позволяет вам сгенерировать только файл ASAP2, не создавая исполняемую программу.
Процедуры для генерации файлов ASAP2 при помощи этих целевых настроек сданы, Генерируют Файл ASAP2.
Процесс генерации файла ASAP2 запрашивает информацию о параметрах и сигналах в вашей модели. Часть этой информации содержится в самой модели. Необходимо предоставить остальных при помощи Объектов данных Simulink в словаре данных или рабочей области. В некоторых случаях использование объектов рабочей области является дополнительным.
Можно использовать Model Data Editor и встроенные Объекты данных Simulink, чтобы предоставить информацию. Например, можно использовать объекты Simulink.Signal
предоставить информацию об ИЗМЕРЕНИИ, и Simulink.Parameter
возражает, чтобы предоставить ХАРАКТЕРИСТИЧЕСКУЮ информацию. Кроме того, можно использовать объекты данных от классов данных, которые выведены от Simulink.Signal
и Simulink.Parameter
, чтобы предоставить информацию. Для получения информации об объектах данных смотрите Объекты данных (Simulink). Для получения информации о Model Data Editor смотрите Configure Data Properties при помощи Model Data Editor (Simulink).
Следующая таблица содержит минимальный набор атрибутов данных, требуемых для генерации файла ASAP2. Некоторые атрибуты данных заданы в модели; другие предоставляются в свойствах объектов. Для атрибутов, которые заданы в Simulink.Signal
или объектах Simulink.Parameter
, таблица дает связанное имя свойства.
Атрибут данных | Заданный в | PropertyName |
---|---|---|
Назовите (символ) | Модель и объект данных | Наследованный от указателя объекта данных, к которому параметр или сигнал называют твердость |
Описание | Объект данных |
|
Тип данных | Модель или объект данных |
|
Масштабирование | Модель или объект данных | DataType |
Минимальное допустимое значение |
Модель или объект данных |
|
Максимальное допустимое значение |
Модель или объект данных |
|
Модуль |
Модель или объект данных |
|
(Дополнительный) адрес памяти |
Модель или объект данных |
|
Если атрибут адреса памяти неизвестен, прежде чем генерация кода, генератор кода вставит текст заполнителя ECU Address
в сгенерированный файл ASAP2. Можно заменить исполнительным адресом заполнителя путем постобработки сгенерированного файла. Смотрите файл
для примера. matlabroot/toolbox/rtw/targets/asap2/asap2/asap2post.m
asap2post.m
анализирует через файл карты компоновщика, который вы обеспечиваете, и заменяет заполнителей ECU Address
в файле ASAP2 с фактическими адресами памяти. Поскольку файлы карты компоновщика отличаются от компилятора до компилятора, вы можете должны быть изменить код регулярного выражения в asap2post.m
, чтобы соответствовать, формат компоновщика сопоставляют вас использование.
Если Embedded Coder лицензируется и устанавливается в вашей системе, и если вы генерируете Исполняемый и Связываемый Формат (ELF) или База данных Программы (PDB) файлы для вашего целевого процессора, можно использовать функцию rtw.asap2SetAddress
, чтобы автоматизировать замену адреса ECU. Для получения дополнительной информации смотрите Автоматическую Замену Адреса ECU для Файлов ASAP2 (Embedded Coder).
Если атрибут адреса памяти известен перед генерацией кода он может быть задан в элементе данных или объекте данных. По умолчанию свойство MemoryAddress_ASAP2
не существует в Simulink.Signal
или классах объекта данных Simulink.Parameter
. Если вы хотите добавить атрибут, добавьте свойство под названием MemoryAddress_ASAP2
к пользовательскому классу, который является подклассом класса ASAP2
или Simulink
. Для получения информации о разделении на подклассы классов данных Simulink смотрите, Задают Классы Данных (Simulink).
В предыдущих релизах, для генерации файла ASAP2, необходимо было задать объекты явным образом как ASAP2.Signal
и ASAP2.Parameter
. Это больше не ограничение. Как объяснено выше, можно использовать встроенные объекты Simulink для генерации файла ASAP2. Если вы использовали более ранний релиз, можно продолжить использовать объекты ASAP2. Если один из этих объектов ASAP2 был создан в предыдущем релизе, и вы используете его в этом релизе, Окно Команды MATLAB выводит предупреждение в первый раз, когда объекты загружаются.
Следующая таблица указывает на свойства объектов Simulink, которые заменили свойства объектов ASAP2 предыдущего релиза:
Различия между ASAP2 и Simulink Parameter и свойствами объектов сигнала
(Предыдущие) свойства объектов ASAP2 | (Текущие) свойства объектов Simulink |
---|---|
LONGID_ASAP2 | Описание |
PhysicalMin_ASAP2 | Min |
PhysicalMax_ASAP2 | Max |
Units_ASAP2 | Модуль |
Если Embedded Coder лицензируется и устанавливается в вашей системе, и если вы генерируете Исполняемый и Связываемый Формат (ELF) или База данных Программы (PDB) файлы для вашего целевого процессора, можно использовать функцию rtw.asap2SetAddress
, чтобы автоматизировать замену значений адреса памяти заполнителя ECU Address
с исполнительными адресами в сгенерированном файле ASAP2.
Если атрибут адреса памяти неизвестен, прежде чем генерация кода, генератор кода вставит текст заполнителя ECU Address
в сгенерированный файл ASAP2, как показано в пример ниже.
/begin CHARACTERISTIC /* Name */ Ki /* Long Identifier */ "" /* Type */ VALUE /* ECU Address */ 0x0000 /* @ECU_Address@Ki@ */
Чтобы заменить исполнительными адресами заполнителей ECU Address
, обработайте сгенерированный файл ASAP2 с помощью функции rtw.asap2SetAddress
. Общий синтаксис следующие:
rtw.asap2SetAddress(ASAP2File,InfoFile)
Аргументы являются векторами символов, задающими имя сгенерированного файла ASAP2 и имя сгенерированного исполняемого файла ELF, файла PDB от набора инструментальных средств Microsoft или файлов отладочной информации DWARF для модели. Когда названо, rtw.asap2SetAddress
извлекает фактический адрес ECU от заданного ELF, PDB или файла DWARF и заменяет заполнителя в файле ASAP2 с исполнительным адресом, например:
/begin CHARACTERISTIC /* Name */ Ki /* Long Identifier */ "" /* Type */ VALUE /* ECU Address */ 0x40009E60
Программное обеспечение Simulink Coder генерирует описания ASAP2 для данных об интерполяционной таблице и его точек останова. Программное обеспечение представляет 1D табличные данные как информацию о CURVE
, 2D табличные данные как информация о MAP
, и устанавливает точки останова как информация о AXIS_PTS
и AXIS_DESCR
. Можно смоделировать интерполяционные таблицы с помощью одного из следующих блоков Интерполяционной таблицы Simulink:
Прямая Интерполяционная таблица (n-D) — 1 и 2 размерности
Интерполяция Используя Предварительный поиск — 1 и 2 размерности
1D интерполяционная таблица
2D интерполяционная таблица
Интерполяционная таблица n-D — 1 и 2 размерности
Программное обеспечение поддерживает следующие типы точек останова интерполяционной таблицы (точки оси):
Установите точки останова тип | Генерирует |
---|---|
Настраиваемый и общий для несколько табличных осей (общая ось) |
|
Зафиксированный и ненастраиваемый (зафиксированная ось) | Один из этих вариантов
|
Настраиваемый, но не общий для несколько таблиц (стандартная ось) |
|
Когда вы конфигурируете блоки для генерации кода ASAP2:
Для табличных данных используйте объект данных Simulink.Parameter
с non-Auto
классом памяти.
Для настраиваемых данных о точке останова, которые являются общими для несколько табличных осей (COM_AXIS
), используйте объект данных Simulink.Parameter
с non-Auto
классом памяти.
Для фиксированных, ненастраиваемых данных о точке останова (FIX_AXIS
) используйте переменные рабочей области или массивы, заданные в диалоговом окне параметров блоков. Точки останова должны храниться как целые числа в коде, таким образом, тип данных должен быть встроенным целочисленным типом (int8
, int16
, int32
, uint8
, uint16
или uint32
), тип данных с фиксированной точкой или эквивалентный тип псевдонима.
Для настраиваемых данных о точке останова, которые не являются общими для несколько таблиц (STD_AXIS):
Создайте объект Simulink.Bus
задать упаковку struct
(имена и порядок полей). Поля структуры параметра должны соответствовать данным об интерполяционной таблице и каждой оси блока интерполяционной таблицы. Например, в n-D блоке Lookup Table с 2 размерностями, структура должна содержать только три поля. Этот объект шины описывает размещение записи для характеристики поиска.
Создайте объект Simulink.Parameter
представлять настраиваемый параметр.
Составьте значения оси и таблица.
Опционально, задайте Units, Minimum и свойства Maximum для объекта параметра. Свойства будут применены к табличным данным только.
Вот пример n-D записи Интерполяционной таблицы, сгенерированной в файл ASAP2 в Стандартном формате Оси:
/begin CHARACTERISTIC /* Name */ STDAxisParam ... /* Record Layout */ Lookup1D_X_WORD_Y_FLOAT32_IEEE ... begin AXIS_DESCR /* Description of X-Axis Points */ /* Axis Type */ STD_AXIS ... /end AXIS_DESCR /end CHARACTERISTIC /begin RECORD_LAYOUT Lookup1D_X_WORD_Y_FLOAT32_IEEE AXIS_PTS_X 1 WORD INDEX_INCR DIRECT FNC_VALUES 2 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT
Модель rtwdemo_asap2
в качестве примера иллюстрирует генерацию файла ASAP2 для блоков Интерполяционной таблицы, и включая настраиваемый (COM_AXIS) и включая зафиксированные точки останова интерполяционной таблицы (FIX_AXIS).
Можно сгенерировать файл ASAP2 из модели одним из следующих способов:
Используйте Типичную Цель В реальном времени или цель Embedded Coder, чтобы сгенерировать файл ASAP2 как часть генерации кода и процесса сборки.
Используйте Цель Определения данных ASAM-ASAP2, чтобы сгенерировать только файл ASAP2, не создавая исполняемый файл.
В этом разделе рассматриваются, как сгенерировать файл ASAP2 при помощи целей, которые имеют встроенную поддержку ASAP2. Для примера см. модель rtwdemo_asap2
в качестве примера ASAP2.
Процедура для генерации определения данных ASAP2 для модели с помощью Типичного системного конечного файла Целевого или Embedded Coder В реальном времени следующие:
Используйте Model Data Editor (View> Model Data Editor), чтобы применить классы памяти к сигналам, состояниям блока, и параметры блоков, как описано в Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра. Используйте сигнал и утвердите имена, чтобы относиться к соответствующим записям ИЗМЕРЕНИЯ и именам объекта параметра, чтобы относиться к ХАРАКТЕРИСТИЧЕСКИМ записям.
Используйте класс памяти или пользовательский класс памяти кроме Auto
, FileScope
, или, если вы устанавливаете класс памяти по умолчанию соответствующей категории данных к Default
в Коде, Сопоставляющем Редактор (настройка по умолчанию), Model default
. Например, использование ExportedGlobal
конфигурирует элемент данных как неструктурированную глобальную переменную в сгенерированном коде.
Элемент данных не представлен в файле ASAP2, если один или несколько следующих условий существует:
Вы применяете один из классов памяти Auto
, FileScope
или Default
(через Model default
).
Вы применяете пользовательский класс памяти, который заставляет генератор кода генерировать макро-или неадресуемую переменную.
Используйте Model Data Editor, чтобы сконфигурировать остающиеся свойства, как желаемый для каждого элемента данных.
На панели Code Generation нажмите Browse, чтобы открыть Системный Браузер Конечного файла. В браузере выберите grt.tlc
или основанный на ERT конечный файл и нажмите OK.
На Code Generation> панель Interface , в подгруппе Data exchange interface, выбирают ASAP2 interface.
Установите флажок Generate code only на панели Code Generation.
Нажмите Apply.
Создайте модель.
Генератор кода записывает файл ASAP2 в папку сборки. По умолчанию файл называют
, где model.a2l
является именем модели. Файл настройки ASAP2 управляет именем файла ASAP2. Для получения дополнительной информации смотрите, Настраивают Сгенерированный Файл ASAP2.model
Процедура для генерации определения данных ASAP2 для модели с помощью Цели Определения данных ASAM-ASAP2 следующие:
Используйте Model Data Editor (View> Model Data Editor), чтобы применить классы памяти к сигналам, состояниям блока, и параметры блоков, как описано в Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра. Используйте сигнал и утвердите имена, чтобы относиться к соответствующим записям ИЗМЕРЕНИЯ и именам объекта параметра, чтобы относиться к ХАРАКТЕРИСТИЧЕСКИМ записям.
Используйте класс памяти или пользовательский класс памяти кроме Auto
, FileScope
, или, если вы устанавливаете класс памяти по умолчанию соответствующей категории данных к Default
в Коде, Сопоставляющем Редактор (настройка по умолчанию), Model default
. Например, использование ExportedGlobal
конфигурирует элемент данных как неструктурированную глобальную переменную в сгенерированном коде.
Элемент данных не представлен в файле ASAP2, если один или несколько следующих условий существует:
Вы применяете один из классов памяти Auto
, FileScope
или Default
(через Model default
).
Вы применяете пользовательский класс памяти, который заставляет генератор кода генерировать макро-или неадресуемую переменную.
Используйте Model Data Editor, чтобы сконфигурировать остающиеся свойства, как желаемый для каждого элемента данных.
На панели Code Generation нажмите Browse, чтобы открыть Системный Браузер Конечного файла. В браузере выберите asap2.tlc
и нажмите OK.
Установите флажок Generate code only на панели Code Generation.
Нажмите Apply.
Создайте модель.
Генератор кода Simulink Coder записывает файл ASAP2 в папку сборки. По умолчанию файл называют
, где model.a2l
является именем модели. Файл настройки ASAP2 управляет именем файла ASAP2. Для получения дополнительной информации смотрите, Настраивают Сгенерированный Файл ASAP2.model
Процесс сборки может сгенерировать файл ASAP2 для каждой модели, на которую ссылаются, в иерархии модели - ссылки. В сгенерированном файле ASAP2 записи ИЗМЕРЕНИЯ представляют сигналы и состояния в модели, на которую ссылаются.
Чтобы сгенерировать файлы ASAP2 для моделей, на которые ссылаются, выберите генерацию файла ASAP2 для топ-модели и для каждой модели, на которую ссылаются, в ссылочной иерархии. Например, если вы используете Типичную Цель В реальном времени или цель Embedded Coder, выполняете процедуру, описанную в GRT Использования или Системном Конечном файле ERT для топ-модели и каждой модели, на которую ссылаются.
Используйте функциональный rtw.asap2MergeMdlRefs
, чтобы объединить файлы ASAP2, сгенерированные для главных и моделей, на которые ссылаются. Функция имеет следующий синтаксис:
[status,info] = rtw.asap2MergeMdlRefs(topModelName,asap2FileName)
topModelName
является именем модели, содержащей одну или несколько моделей, на которые ссылаются.
asap2FileName
является именем, которое вы задаете для объединенного файла ASAP2.
Дополнительный:: status
возвращает false (логический ноль), если слияние завершается и верный (логическая единица) в противном случае.
Дополнительный:: info
возвращает дополнительную информацию об отказе слияния, если status
верен. В противном случае это возвращает пустой символьный вектор.
Рассмотрите следующий пример.
[status,info] = rtw.asap2MergeMdlRefs('myTopMdl','merged.a2l')
myTopMdl
и его модели, на которые ссылаются, в файле merged.a2l
.Модель rtwdemo_asap2
в качестве примера включает пример слияния файлов ASAP2.
Следующая таблица обрисовывает в общих чертах базовую структуру файла ASAP2 и описывает функции Компилятора выходного языка (TLC), и файлы раньше создавали каждую часть файла:
Статические части файла ASAP2 показывают полужирным.
Вызовы функции обозначаются %<FunctionName()>
.
Раздел файла | Содержимое asap2main.tlc | Файл TLC, содержащий функциональное определение |
---|---|---|
Заголовок файла |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Образцово-зависимое содержимое |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Нижний колонтитул/хвост файла |
|
|
Эта модель показывает экспорт данных ASAP2. ASAP2 является стандартом определения данных, предложенным Ассоциацией для Стандартизации Автоматизации и Измеряющихся Систем (ASAM).
Открытая модель в качестве примера
Откройте модель rtwdemo_asap2
в качестве примера.
open_system('rtwdemo_asap2');
ASAP2 является необъектно-ориентированным описанием данных, используемых для измерения, калибровки и систем диагностики. Для получения дополнительной информации о ASAM и стандарте ASAP2, смотрите веб-сайт ASAM: https://www.asam.de.
Определение данных ASAP2 достигается с объектами данных Simulink® и сигналами тестовой точки. Используя Компилятор выходного языка (TLC), можно создать очень специализированные решения для приложения. См. документацию Simulink Coder® для получения дополнительной информации о генерации файла ASAP2.
Можно сконфигурировать генерацию файла ASAP2 путем выбора интерфейса ASAP2 на Генерации кода> Интерфейсная панель диалогового окна Configuration Parameters.