В Simulink®, можно реализовать стандартную ось (STD_AXIS) и общая ось (COM_AXIS) интерполяционные таблицы для приложений AUTOSAR. Приложения AUTOSAR могут использовать интерполяционные таблицы или в или в оба из двух путей:
Реализуйте быстрые поисковые операции.
Поддержите настройку приложения с измерением и инструментами калибровки.
К интерполяционным таблицам модели для автомобильной настройки приложения используйте классы Simulink.LookupTable
и Simulink.Breakpoint
. Путем создания Simulink.LookupTable
и Simulink.Breakpoint
объекты в рабочем пространстве модели, можно сохранить и совместно использовать интерполяционную таблицу и установить точки останова данные и сконфигурировать данные для генерации кода AUTOSAR.
Сконфигурируйте интерполяционные таблицы STD_AXIS при помощи объектов интерполяционной таблицы
Сконфигурируйте размещение массивов для многомерных интерполяционных таблиц
В этом примере показано, как создать интерполяционные таблицы STD_AXIS в Simulink, с помощью Simulink.LookupTable
объекты, и конфигурируют интерполяционные таблицы для генерации кода AUTOSAR. Пример использует модель mAutosarLutObjs.slx
от
. Чтобы скопировать файл модели в вашу рабочую папку, введите этот MATLAB® команда:matlabroot
/help/toolbox/autosar/examples
copyfile(fullfile(matlabroot,'help/toolbox/autosar/examples/mAutosarLutObjs.slx'),'.')
Смоделируйте интерполяционную таблицу AUTOSAR в настройке STD_AXIS.
В сопоставленной модели компонента программного обеспечения AUTOSAR добавьте блок AUTOSAR Blockset Curve или Map. Этот пример добавляет блок Curve.
Откройте блок Curve и сконфигурируйте его, чтобы сгенерировать стандартную программу от заменяющей библиотеки кода (CRL) AUTOSAR 4.0. Когда вы изменяете настройки блока, диалоговое окно блока обновляет имя целенаправленной стандартной программы AUTOSAR.
В диалоговом окне блока сделайте эти выборы:
Чтобы сгенерировать стандартную программу с плавающей точкой, выберите IFL (floating-point).
Во вкладке Table Specification, чтобы задать табличные данные с помощью объекта интерполяционной таблицы, устанавливают Data Specification на Lookup table object
.
В рабочем пространстве модели создайте Simulink.LookupTable
возразите и сконфигурируйте его, чтобы хранить данные об интерполяционной таблице.
В диалоговом окне блока Curve, вкладке Table Specification, вводят Simulink.LookupTable
имя объекта в поле Name.
В диалоговом окне блока, вкладке Algorithm, устанавливает Integer Rounding Method на Zero
. Оставьте набор Interpolation Method Linear point-slope
и набор Index Search Method к Linear search
.
Табличные данные появляются в сгенерированном коде С AUTOSAR как поля одной структуры. Чтобы управлять характеристиками типа структуры, такими как его имя, используют свойства объекта.
Соедините блок Curve или Map.
Добавьте рабочие точки AUTOSAR в интерполяционные таблицы. Соедините импорт корневого уровня в блок Curve или Map. В качестве альтернативы сконфигурируйте входной сигнал с блоком Curve или Map со статической глобальной памятью.
Соедините выходной порт с блоком Curve или Map.
В перспективе кода AUTOSAR используйте редактор Отображений Кода, чтобы сопоставить Simulink.LookupTable
объекты к внутренним калибровочным параметрам AUTOSAR. Во вкладке Parameters выберите каждый Simulink.LookupTable
возразите, что вы создали. Сопоставьте каждый объект с типом параметра AUTOSAR ConstantMemory
, SharedParameter
, или Auto
. Чтобы принять программное обеспечение, сопоставляющее значения по умолчанию, задайте Auto
.
В этом примере, объекте L_4_single
интерполяционной таблицы STD_AXIS сопоставлен с
ConstantMemory
AUTOSAR.
Для каждого параметра, если вы выбираете тип параметра кроме Auto
, кликните по значку, чтобы просмотреть или изменить другой код и калибровочные атрибуты. Для получения дополнительной информации о свойствах параметра смотрите Параметры Рабочего пространства модели Карты к Параметрам Компонента AUTOSAR.
Сконфигурируйте модель, чтобы сгенерировать код С на основе библиотеки AUTOSAR 4.0. Откройте диалоговое окно Configuration Parameters и выберите Code Generation> Interface. Установите параметр Code replacement library на AUTOSAR 4.0
. Для получения дополнительной информации смотрите Генерацию кода с Заменяющей Библиотекой Кода AUTOSAR.
Создайте модель. Сгенерированный код C содержит ожидаемый Ifl
и Ifx
вызовы функции поиска и Rte
вызовы функции доступа к данным. Например, можно искать отчет генерации кода HTML Ifl
или Ifx
стандартный префикс.
Сгенерированные файлы ARXML содержат типы данных категории CURVE (1D табличные данные) и MAP (2D табличные данные). Типы данных имеют калибровочные свойства данных, которые вы сконфигурировали.
В этом примере показано, как создать интерполяционные таблицы COM_AXIS в Simulink, с помощью Simulink.LookupTable
и Simulink.Breakpoint
объекты, и конфигурируют интерполяционные таблицы для генерации кода AUTOSAR. Пример использует модель mAutosarLutObjs.slx
от
. Чтобы скопировать файл модели в вашу рабочую папку, введите эту команду MATLAB:matlabroot
/help/toolbox/autosar/examples
copyfile(fullfile(matlabroot,'help/toolbox/autosar/examples/mAutosarLutObjs.slx'),'.')
В этом примере, чтобы смоделировать интерполяционную таблицу AUTOSAR в настройке COM_AXIS, вы соединяете AUTOSAR Blockset блоки Prelookup с блоки Map Using Prelookup или Curve Using Prelookup.
Сконфигурируйте блоки Prelookup.
В сопоставленной модели компонента программного обеспечения AUTOSAR добавьте один или несколько AUTOSAR Blockset блоки Prelookup. Этот пример добавляет один блок Prelookup.
Откройте каждый блок и сконфигурируйте его, чтобы сгенерировать стандартную программу от заменяющей библиотеки кода (CRL) AUTOSAR 4.0. Когда вы изменяете настройки блока, блок обновляет имя целенаправленной стандартной программы AUTOSAR.
В диалоговом окне блока сделайте эти выборы:
Чтобы сгенерировать стандартную программу с плавающей точкой, выберите IFL (floating-point).
Во вкладке Table Specification, чтобы задать данные о точке останова с помощью объекта точки останова, устанавливают Breakpoints specification на Breakpoint object
.
Для каждого вектора точки останова, в рабочем пространстве модели, создают и конфигурируют Simulink.Breakpoint
объект.
В диалоговом окне блока Prelookup, вкладке Table Specification, вводят Simulink.Breakpoint
имя объекта в поле Name. Можно уменьшать потребление памяти путем совместного использования данных о точке останова между интерполяционными таблицами.
В диалоговом окне блока, вкладке Algorithm, устанавливает Integer Rounding Method на Zero
. Оставьте набор Index Search Method Linear search
.
Сконфигурируйте блоки Map Using Prelookup и Curve Using Prelookup.
В модели добавьте один или несколько AUTOSAR Blockset блоки Map Using Prelookup или Curve Using Prelookup. Каждый блок сразу следует за блоком Prelookup, с которым он соединяется. Этот пример добавляет один блок Curve Using Prelookup.
Откройте каждый блок Curve Using Prelookup или Map Using Prelookup и сконфигурируйте его, чтобы сгенерировать стандартную программу от заменяющей библиотеки кода (CRL) AUTOSAR 4.0. Когда вы изменяете настройки блока, диалоговое окно блока обновляет имя целенаправленной стандартной программы AUTOSAR.
В диалоговом окне блока сделайте эти выборы:
Чтобы сгенерировать стандартную программу с плавающей точкой, выберите IFL (floating-point).
Во вкладке Table Specification, чтобы задать табличные данные с помощью объекта интерполяционной таблицы, устанавливают Data Specification на Lookup table object
.
Для каждого набора табличных данных, в рабочем пространстве модели, создают и конфигурируют Simulink.LookupTable
объект.
В каждом Curve Using Prelookup или диалоговом окне блока Map Using Prelookup, вкладке Table Specification, вводят Simulink.LookupTable
имя объекта в поле Name.
В диалоговом окне блока, вкладке Algorithm, устанавливает Integer Rounding Method на Zero
. Оставьте набор Interpolation Method Linear point-slope
.
Каждый набор табличных данных появляется в сгенерированном коде C как переменная отдельного массива. Если табличный размер является настраиваемым, каждый вектор точки останова появляется как структура. Структура содержит поле, чтобы хранить данные о точке останова и, опционально, поле, чтобы сохранить длину вектора. Второе поле позволяет вам настроить эффективный размер таблицы. Если табличный размер не является настраиваемым, каждый вектор точки останова появляется как массив.
Соедините Prelookup, Curve Using Prelookup и блоки Map Using Prelookup.
Добавьте рабочие точки AUTOSAR в интерполяционные таблицы. Соедините импорт корневого уровня в блоки Prelookup. В качестве альтернативы сконфигурируйте входные сигналы с блоками Prelookup со статической глобальной памятью.
Соедините выходные порты с блоками Map Using Prelookup и Curve Using Prelookup.
Соедините каждый блок Prelookup с его совпадающим блоком Curve Using Prelookup или Map Using Prelookup.
В перспективе кода AUTOSAR используйте редактор Отображений Кода, чтобы сопоставить Simulink.LookupTable
и Simulink.Breakpoint
объекты к внутренним калибровочным параметрам AUTOSAR. Во вкладке Parameters выберите каждый Simulink.LookupTable
и Simulink.Breakpoint
возразите, что вы создали. Сопоставьте каждый объект с типом параметра AUTOSAR ConstantMemory
, SharedParameter
, или Auto
. Чтобы принять программное обеспечение, сопоставляющее значения по умолчанию, задайте Auto
.
В этом примере COM_AXIS устанавливают точки останова объект Bp_4_single
и объект Lcom_4_single
интерполяционной таблицы сопоставлены с
SharedParameter
AUTOSARs. Все экземпляры компонента программного обеспечения AUTOSAR совместно используют параметры COM_AXIS.
Для каждого параметра, если вы выбираете тип параметра кроме Auto
, кликните по значку, чтобы просмотреть или изменить другой код и калибровочные атрибуты. Для получения дополнительной информации о свойствах параметра смотрите Параметры Рабочего пространства модели Карты к Параметрам Компонента AUTOSAR.
Сконфигурируйте модель, чтобы сгенерировать код С на основе библиотеки AUTOSAR 4.0. Откройте диалоговое окно Configuration Parameters и выберите Code Generation> Interface. Установите параметр Code replacement library на AUTOSAR 4.0
. Для получения дополнительной информации смотрите Генерацию кода с Заменяющей Библиотекой Кода AUTOSAR.
Создайте модель. Сгенерированный код C содержит ожидаемый Ifl
и Ifx
вызовы функции поиска и Rte
вызовы функции доступа к данным. Например, можно искать отчет генерации кода HTML Ifl
или Ifx
стандартный префикс.
Сгенерированные файлы ARXML содержат типы данных категории CURVE (1D табличные данные), MAP (2D табличные данные), и COM_AXIS (данные об оси). Типы данных имеют калибровочные свойства данных, которые вы сконфигурировали.
Если модель AUTOSAR содержит многомерные интерполяционные таблицы, можно сконфигурировать размещение данных массива интерполяционной таблицы для генерации кода как упорядоченное по столбцам или упорядоченное по строкам. В диалоговом окне Simulink Configuration Parameters, панели Interface, устанавливает размещение Массивов (Simulink Coder) на Column-major
(значение по умолчанию) или Row-major
. Выбор размещения массивов влияет на генерацию кода, включая код С и экспортируемые описания ARXML.
Если вы выбираете упорядоченное по строкам размещение, перейдите к Math and Data Types, разделяют на области и выбирают алгоритмы Использования параметра конфигурации, оптимизированные для упорядоченного по строкам размещения массивов. Выбор алгоритма влияет на симуляцию и генерацию кода.
Экспорт многомерных интерполяционных таблиц генерирует описания интерполяционной таблицы ARXML с SwRecordLayout
набор категории к любому COLUMN_DIR
или ROW_DIR
. Например, эта распечатка программ показывает SwRecordLayout
описания экспортировали для модели AUTOSAR, которая содержит 2-мерную упорядоченную по строкам интерполяционную таблицу. Интерполяционная таблица реализована при помощи блока AUTOSAR Map.
<AR-PACKAGE> <SHORT-NAME>SwRecordLayouts</SHORT-NAME> <ELEMENTS> <SW-RECORD-LAYOUT UUID="..."> <SHORT-NAME>Map_s16</SHORT-NAME> <SW-RECORD-LAYOUT-GROUP> <SHORT-LABEL>Val</SHORT-LABEL> <CATEGORY>ROW_DIR</CATEGORY> <SW-RECORD-LAYOUT-GROUP-AXIS>1</SW-RECORD-LAYOUT-GROUP-AXIS> <SW-RECORD-LAYOUT-GROUP-INDEX>X</SW-RECORD-LAYOUT-GROUP-INDEX> <SW-RECORD-LAYOUT-GROUP-FROM>1</SW-RECORD-LAYOUT-GROUP-FROM> <SW-RECORD-LAYOUT-GROUP-TO>-1</SW-RECORD-LAYOUT-GROUP-TO> <SW-RECORD-LAYOUT-GROUP> <SW-RECORD-LAYOUT-GROUP-AXIS>2</SW-RECORD-LAYOUT-GROUP-AXIS> <SW-RECORD-LAYOUT-GROUP-INDEX>Y</SW-RECORD-LAYOUT-GROUP-INDEX> <SW-RECORD-LAYOUT-GROUP-FROM>1</SW-RECORD-LAYOUT-GROUP-FROM> <SW-RECORD-LAYOUT-GROUP-TO>-1</SW-RECORD-LAYOUT-GROUP-TO> <SW-RECORD-LAYOUT-V> <SHORT-LABEL>Val</SHORT-LABEL> <BASE-TYPE-REF DEST="SW-BASE-TYPE"> /DataTypes/SwBaseTypes/sint32 </BASE-TYPE-REF> <SW-RECORD-LAYOUT-V-AXIS>0</SW-RECORD-LAYOUT-V-AXIS> <SW-RECORD-LAYOUT-V-PROP>VALUE</SW-RECORD-LAYOUT-V-PROP> <SW-RECORD-LAYOUT-V-INDEX>X Y</SW-RECORD-LAYOUT-V-INDEX> </SW-RECORD-LAYOUT-V> </SW-RECORD-LAYOUT-GROUP> </SW-RECORD-LAYOUT-GROUP> </SW-RECORD-LAYOUT> <SW-RECORD-LAYOUT UUID="..."> <SHORT-NAME>Distr_s8_M</SHORT-NAME> <SW-RECORD-LAYOUT-GROUP> <SHORT-LABEL>Y</SHORT-LABEL> <CATEGORY>INDEX_INCR</CATEGORY> <SW-RECORD-LAYOUT-GROUP-AXIS>1</SW-RECORD-LAYOUT-GROUP-AXIS> <SW-RECORD-LAYOUT-GROUP-FROM>1</SW-RECORD-LAYOUT-GROUP-FROM> <SW-RECORD-LAYOUT-GROUP-TO>-1</SW-RECORD-LAYOUT-GROUP-TO> <SW-RECORD-LAYOUT-V> <SHORT-LABEL>VALUE</SHORT-LABEL> <BASE-TYPE-REF DEST="SW-BASE-TYPE"> /DataTypes/SwBaseTypes/sint32 </BASE-TYPE-REF> <SW-RECORD-LAYOUT-V-AXIS>1</SW-RECORD-LAYOUT-V-AXIS> <SW-RECORD-LAYOUT-V-PROP>VALUE</SW-RECORD-LAYOUT-V-PROP> </SW-RECORD-LAYOUT-V> </SW-RECORD-LAYOUT-GROUP> </SW-RECORD-LAYOUT> </ELEMENTS> </AR-PACKAGE>
Импорт файлов ARXML с многомерными описаниями интерполяционной таблицы создает интерполяционные таблицы Simulink с набором Array layout к Column-major
или Row-major
. Если файлы ARXML содержат только упорядоченные по строкам многомерные описания интерполяционной таблицы, средство импорта ARXML создает интерполяционные таблицы Simulink с набором Array layout к Row-major
и Use algorithms optimized for row-major array layout включен.
В иерархии модели AUTOSAR можно параметрировать интерполяционную таблицу путем размещения его в модели, на которую ссылаются, и затем параметризации модели, на которую ссылаются. Параметризация модели, на которую ссылаются, включает конфигурирование модели, на которую ссылаются, чтобы использовать аргументы модели и затем установку значений аргументов модели в родительской модели.
Параметризация экземпляров допускающих повторное использование интерполяционных таблиц модели, на которые ссылаются, позволяет вам помещать несколько экземпляров субблоков интерполяционной таблицы в иерархии модели AUTOSAR. Можно использовать тестирование уровня субблока с интерполяционными таблицами.
Когда модель, на которую ссылаются, содержит интерполяционную таблицу, и содержание топ-модели передает значения параметров интерполяционной таблицы аргументам модели модели, на которую ссылаются, экспорт топ-модели генерирует типы данных приложения для параметров интерполяционной таблицы.
Рассмотрите эту топ-модель, которая параметрирует два экземпляра модели 2-D lookup table, на которую ссылаются. Параметр топ-модели LUTForInst1
сопоставлен с PerInstanceParameter
AUTOSAR и его значения передаются аргументу модели первого экземпляра интерполяционной таблицы. Параметр топ-модели
LUTForInst2
сопоставлен с SharedParameter
AUTOSAR и его значения передаются аргументу модели второго экземпляра интерполяционной таблицы.
Модель, на которую ссылаются, содержит двумерную интерполяционную таблицу и задает параметр экземпляра LUT_arg
. Для получения дополнительной информации о конфигурировании параметров экземпляра в модели, на которую ссылаются, и определении специфичных для экземпляра значений в блоке Model, смотрите, Параметрируют Экземпляры Допускающей повторное использование Модели, на которую Ссылаются.
Когда вы создаете топ-модель, экспортируемый ARXML задает примитивные типы данных приложения Appl_LUTForInst1
и Appl_LUTForInst2
и сопоставляет их с типом данных реализации LUT_arg_Type
.
<APPLICATION-PRIMITIVE-DATA-TYPE UUID="..."> <SHORT-NAME>Appl_LUTForInst1</SHORT-NAME> <CATEGORY>MAP</CATEGORY> ... </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE UUID="..."> <SHORT-NAME>Appl_LUTForInst2</SHORT-NAME> <CATEGORY>MAP</CATEGORY> ... </APPLICATION-PRIMITIVE-DATA-TYPE> <DATA-TYPE-MAP> <APPLICATION-DATA-TYPE-REF DEST="APPLICATION-PRIMITIVE-DATA-TYPE"> /DataTypes/ApplDataTypes/Appl_LUTForInst1 </APPLICATION-DATA-TYPE-REF> <IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE"> /DataTypes/LUT_arg_Type </IMPLEMENTATION-DATA-TYPE-REF> </DATA-TYPE-MAP> <DATA-TYPE-MAP> <APPLICATION-DATA-TYPE-REF DEST="APPLICATION-PRIMITIVE-DATA-TYPE"> /DataTypes/ApplDataTypes/Appl_LUTForInst2 </APPLICATION-DATA-TYPE-REF> <IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE"> /DataTypes/LUT_arg_Type </IMPLEMENTATION-DATA-TYPE-REF> </DATA-TYPE-MAP>
На примитивные типы данных приложения затем ссылается AUTOSAR параметр на экземпляр LUTForInst1
и AUTOSAR совместно использовал параметр LUTForInst2
.
<PER-INSTANCE-PARAMETERS> <PARAMETER-DATA-PROTOTYPE UUID="..."> <SHORT-NAME>LUTForInst1</SHORT-NAME> <CATEGORY>MAP</CATEGORY> ... <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE"> /DataTypes/ApplDataTypes/Appl_LUTForInst1 </TYPE-TREF> <INIT-VALUE> <CONSTANT-REFERENCE> <SHORT-LABEL>LUTForInst1</SHORT-LABEL> <CONSTANT-REF DEST="CONSTANT-SPECIFICATION"> /DataTypes/Constants/LUTForInst1 </CONSTANT-REF> </CONSTANT-REFERENCE> </INIT-VALUE> </PARAMETER-DATA-PROTOTYPE> </PER-INSTANCE-PARAMETERS> <SHARED-PARAMETERS> <PARAMETER-DATA-PROTOTYPE UUID="..."> <SHORT-NAME>LUTForInst2</SHORT-NAME> <CATEGORY>MAP</CATEGORY> ... <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE"> /DataTypes/ApplDataTypes/Appl_LUTForInst2 </TYPE-TREF> <INIT-VALUE> <CONSTANT-REFERENCE> <SHORT-LABEL>LUTForInst2</SHORT-LABEL> <CONSTANT-REF DEST="CONSTANT-SPECIFICATION"> /DataTypes/Constants/LUTForInst2 </CONSTANT-REF> </CONSTANT-REFERENCE> </INIT-VALUE> </PARAMETER-DATA-PROTOTYPE> </SHARED-PARAMETERS>
Экспортируемые описания интерполяционной таблицы ARXML могут быть смещены раундом между Simulink и инструментами разработки AUTOSAR.
AdminData
Аннотации размещения записиAUTOSAR Blockset поддерживает AdminData
аннотации размещения записи в описаниях интерполяционной таблицы ARXML.
Импорт интерполяционной таблицы ARXML и описаний оси, которые содержат AdminData
аннотации размещения записи создают интерполяционные таблицы Simulink и точки останова в который AdminData
аннотации определяют порядок элементов структуры.
Экспорт интерполяционной таблицы AdminData
отключен по умолчанию. Включить экспорт AdminData
, установите опцию XML только для API 'ExportSwRecordLayoutAnnotationsOnAdminData'
к true
. Например:
hModel = 'mAutosarLutObjs'; addpath(fullfile(matlabroot,'/help/toolbox/autosar/examples')); open_system(hModel); arProps = autosar.api.getAUTOSARProperties(hModel); set(arProps,'XmlOptions','ExportSwRecordLayoutAnnotationsOnAdminData',true); slbuild(hModel)
Когда AdminData
экспорт включен, экспортирование интерполяционных таблиц Simulink и точек останова с элементами структуры генерирует интерполяционную таблицу и ось ImplementationDataType
s, которые включают элемент структуры AdminData
аннотации. Например:
<IMPLEMENTATION-DATA-TYPE UUID="..."> <SHORT-NAME>LUT_4_single</SHORT-NAME> <CATEGORY>STRUCTURE</CATEGORY> <SUB-ELEMENTS> <IMPLEMENTATION-DATA-TYPE-ELEMENT UUID="..."> <SHORT-NAME>Nx</SHORT-NAME> <CATEGORY>TYPE_REFERENCE</CATEGORY> <ADMIN-DATA> <SDGS> <SDG GID="DV:RecLayoutAnnotation"> <SD GID="DV:Type">NO_AXIS_PTS_X</SD> </SDG> </SDGS> </ADMIN-DATA> ... </IMPLEMENTATION-DATA-TYPE-ELEMENT> <IMPLEMENTATION-DATA-TYPE-ELEMENT UUID="..."> <SHORT-NAME>Bp1</SHORT-NAME> <CATEGORY>TYPE_REFERENCE</CATEGORY> <ADMIN-DATA> <SDGS> <SDG GID="DV:RecLayoutAnnotation"> <SD GID="DV:Type">AXIS_PTS_X</SD> </SDG> </SDGS> </ADMIN-DATA> ... </IMPLEMENTATION-DATA-TYPE-ELEMENT> ... </SUB-ELEMENTS> </IMPLEMENTATION-DATA-TYPE>
AdminData
аннотации размещения записи могут использоваться со сторонними инструментами AUTOSAR.
Simulink.LookupTable
| Simulink.Breakpoint
| Curve | Curve Using Prelookup | Map | Map Using Prelookup | Prelookup | getParameter
| mapParameter