В 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 C как поля одной структуры. Чтобы управлять характеристиками типа структуры, например ее именем, используйте свойства объекта.
Соедините Curve или Map блок.
Добавьте рабочие точки AUTOSAR к интерполяционным таблицам. Подключите входной порт корневого уровня к блоку Curve или Map. Также сконфигурируйте входной сигнал в Curve или Map блок со статической глобальной памятью.
Соедините выходной порт с блоком Curve или Map.
В перспективе кода AUTOSAR используйте редактор Отображения, чтобы сопоставить Simulink.LookupTable
объекты для параметров внутренней калибровки AUTOSAR. На вкладке Parameters выберите каждую Simulink.LookupTable
созданный вами объект. Сопоставьте каждый объект с типом параметра AUTOSAR ConstantMemory
, SharedParameter
, или Auto
. Чтобы принять значения по умолчанию для сопоставления программного обеспечения, задайте Auto
.
В этом примере STD_AXIS объект интерполяционной таблицы L_4_single
сопоставлен с AUTOSAR ConstantMemory
.
Для каждого параметра, если вы выбираете тип параметра, отличный от Auto
используйте Property Inspector для просмотра или изменения другого кода и атрибутов калибровки. Для получения дополнительной информации о свойствах параметра см. Раздел «Сопоставить параметры рабочего пространства модели с параметрами компонента AUTOSAR».
Сконфигурируйте модель, чтобы сгенерировать код С на основе библиотеки AUTOSAR 4.0. Откройте диалоговое окно Параметров конфигурации и выберите Code Generation > Interface. Установите параметр Code replacement library равным AUTOSAR 4.0
. Для получения дополнительной информации см. раздел «Генерация кода с библиотекой замены кода AUTOSAR».
Создайте модель. Сгенерированный код C содержит ожидаемые Ifl
и Ifx
поиск вызовов функций и Rte
вызовы функций доступа к данным. Для примера можно выполнить поиск по HTML генерации кода отчету для Ifl
или Ifx
префикс процедуры.
Сгенерированные файлы ARXML содержат типы данных категории CURVE (данные таблицы 1-D) и MAP (данные таблицы 2-D). Типы данных имеют настроенные свойства калибровки данных.
В этом примере показано, как создать 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 строения, вы соединяете блоки Prelookup AUTOSAR Blockset с блоками Curve Using Prelookup или Map Using Prelookup.
Сконфигурируйте блоки Prelookup.
В сопоставленной модели программного компонента AUTOSAR добавьте один или несколько блоков Prelookup AUTOSAR Blockset. Этот пример добавляет один 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
.
Сконфигурируйте Curve Using Prelookup и Map Using Prelookup блоки.
В модель добавьте один или несколько блоков AUTOSAR Blockset Curve Using Prelookup или Map 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 со статической глобальной памятью.
Соедините выходные порты с блоками Curve Using Prelookup и Map 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
сопоставлены с AUTOSAR SharedParameter
s. Все образцы программного компонента AUTOSAR совместно используют параметры COM_AXIS.
Для каждого параметра, если вы выбираете тип параметра, отличный от Auto
используйте Property Inspector для просмотра или изменения другого кода и атрибутов калибровки. Для получения дополнительной информации о свойствах параметра см. Раздел «Сопоставить параметры рабочего пространства модели с параметрами компонента AUTOSAR».
Сконфигурируйте модель, чтобы сгенерировать код С на основе библиотеки AUTOSAR 4.0. Откройте диалоговое окно Параметров конфигурации и выберите Code Generation > Interface. Установите параметр Code replacement library равным AUTOSAR 4.0
. Для получения дополнительной информации см. раздел «Генерация кода с библиотекой замены кода AUTOSAR».
Создайте модель. Сгенерированный код C содержит ожидаемые Ifl
и Ifx
поиск вызовов функций и Rte
вызовы функций доступа к данным. Для примера можно выполнить поиск по HTML генерации кода отчету для Ifl
или Ifx
префикс процедуры.
Сгенерированные файлы ARXML содержат типы данных категории CURVE (1-D данные таблицы), MAP (данные таблицы 2-D) и COM_AXIS (данные оси). Типы данных имеют настроенные свойства калибровки данных.
Если модель AUTOSAR содержит многомерные интерполяционные таблицы, можно сконфигурировать размещение данных массива интерполяционной таблицы для генерации кода как основной столбец или основная строка. В диалоговом окне Simulink Параметры Конфигурации, Interface панели, установите размещение Array (Simulink Coder) на Column-major
(по умолчанию) или Row-major
. Выбор размещения массива влияет на генерацию кода, включая код С и экспортированные описания ARXML.
Если вы выбираете размещение основной строки, перейдите на панель Math and Data Types и выберите опцию строения Использовать алгоритмы, оптимизированные для размещения массива основной строки. Выбор алгоритма влияет на симуляцию и генерацию кода.
Экспорт многомерных интерполяционных таблиц генерирует описания интерполяционных таблиц ARXML с SwRecordLayout
для категории задано значение COLUMN_DIR
или ROW_DIR
. Для примера в этом списке программ показаны SwRecordLayout
описания, экспортированные для модели AUTOSAR, содержащей двухмерную интерполяционную таблицу с основной строкой. Интерполяционная таблица реализована при помощи блока Map AUTOSAR.
<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 включена.
Curve | Curve Using Prelookup | getParameter
| Map | Map Using Prelookup | mapParameter
| Prelookup | Simulink.Breakpoint
| Simulink.LookupTable