Пакет: Simulink
Суперклассы:
Хранение и совместное использование данных таблицы поиска и точек останова, настройка данных для создания кода ASAP2 и AUTOSAR
Объект Simulink.LookupTable В классе хранятся данные таблицы поиска и точки останова. Эти данные можно использовать в блоке таблицы подстановки, таком как n-D блок таблицы подстановки. С помощью объекта можно указать типы данных и параметры генерации кода для таблицы и наборов точек останова.
При сохранении всех данных набора таблиц и точек останова в одном Simulink.LookupTable все данные отображаются в единой структуре в сгенерированном коде. Для настройки генерации кода STD_AXIS для калибровки используйте этот метод.
Для совместного использования набора точек останова между несколькими таблицами подстановки, например, для создания кода COM_AXIS, используйте Simulink.Breakpoint объект в одном или нескольких блоках Prelookup. Использовать Simulink.LookupTable объекты в блоках интерполяции с использованием прелюдирующих блоков. Затем настройте объекты таблицы подстановки для обращения к объекту точки останова. Дополнительные сведения см. в разделах Общая точка останова пакета и Данные таблицы для таблиц подстановки.
В подкласс из Simulink.LookupTable и унаследовать от этого базового класса, введите этот синтаксис в качестве первой строки файла определения класса, где myLookuptable является именем нового класса:
classdef myLookuptable < Simulink.LookupTable
Пример подклассирования см. в разделе Определение классов данных.
При добавлении свойств в подкласс их можно просмотреть, отображая объект подкласса в командной строке MATLAB ®. В диалоговом окне свойств эти свойства отображаются на новой вкладке.
LUTObj = Simulink.LookupTable возвращает Simulink.LookupTable объект LUTObj со значениями свойств по умолчанию.
Создание Simulink.LookupTable с помощью Обозревателя моделей (Model Explorer) нажмите кнопку
на панели инструментов. Имя по умолчанию для объекта: Object.
Установка для спецификации точек останова значения Explicit (по умолчанию) отображает этот вид диалогового окна свойств.

В нижней части диалогового окна содержатся данные таблицы и точки останова. Дополнительные сведения об этой табличной области см. в разделе Просмотр данных объекта Simulink.LookupTable с помощью табличного интерфейса диалогового окна свойств. Содержимое этой таблицы эквивалентно свойству Value, видимому, если для свойства спецификации Breakpoints установлено значение Even spacing или Reference.
Количество измерений таблицы подстановки. Укажите целое значение до 30 (включительно). Например, чтобы представить трехмерную таблицу поиска, укажите целое число 3.
Информация для данных таблицы. Можно сконфигурировать следующие признаки:
Данные таблицы. Укажите числовой вектор или многомерный массив, содержащий не менее двух элементов.
Данные таблицы Value совпадают с содержимым табличного интерфейса, видимого в нижней части диалогового окна, если для свойства спецификации Breakpoints установлено значение Explicit. Дополнительные сведения об этой табличной области см. в разделе Просмотр данных объекта Simulink.LookupTable с помощью табличного интерфейса диалогового окна свойств.
Примечание
Это свойство появляется, только если для спецификации точек останова установлено значение Even spacing или Reference.

Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) если выражение возвращает числовой вектор или многомерный массив. При нажатии кнопки «Применить» или «ОК» объект выполняет выражение и использует результат для задания значения этого свойства.
Если для параметра «Тип данных» задано значение auto, чтобы задать значение, используйте типизированное выражение, такое как single([1 2 3]) или используйте fi Конструктор (Конструктор фиксированных точек) для встраивания fi объект.
При указании табличных данных с тремя или более измерениями Значение отображает данные как выражение, содержащее вызов reshape функция. Чтобы изменить значения в данных, измените первый аргумент reshape , который содержит все значения в сериализованном векторе. При добавлении или удалении элементов вдоль размера необходимо также исправить аргумент, представляющий длину измененного размера.
Эти данные можно редактировать с помощью более интуитивно понятного интерфейса в блоке таблицы подстановки. См. раздел Импорт данных таблицы подстановки из MATLAB.
Тип данных таблицы. Значение по умолчанию: auto, что означает, что данные таблицы получают тип данных из значения, указанного в поле Значение. Если используется нетипизированное выражение, например [1 2 3] для установки значения в табличных данных используется тип данных double. Если указано типизированное выражение, например single([1 2 3]) или fi данные таблицы используют тип данных, заданный выражением или объектом. Также поддерживаются перечислимые типы данных.
Можно явно указать целочисленный тип данных, половинный тип данных, тип данных с плавающей запятой, тип данных с фиксированной запятой или выражение типа данных, например имя Simulink.AliasType объект.
Дополнительные сведения о типах данных в Simulink ® см. в разделе Типы данных, поддерживаемые Simulink. Как управлять типами данных таблицы и данных точки останова вSimulink.LookupTable и Simulink.Breakpoint см. раздел Управление типами данных объектов таблицы подстановки (Simulink Coder).
Длины измерений данных таблицы подстановки.
Для использования символьных размеров укажите символьный вектор. См. раздел Реализация вариантов измерения для размеров массива в сгенерированном коде (встроенном кодере).
Минимальное значение элементов в данных таблицы. Значение по умолчанию пустое, []. Можно указать числовое вещественное значение.
Дополнительные сведения об использовании этого свойства в Simulink см. в разделе Указание минимальных и максимальных значений для параметров блока.
Максимальное значение элементов в данных таблицы. Значение по умолчанию пустое, []. Можно указать числовое вещественное значение.
Дополнительные сведения об использовании этого свойства в Simulink см. в разделе Указание минимальных и максимальных значений для параметров блока.
Для Simulink.LookupTable объекты с типом данных с фиксированной точкой, минимальное значение элементов в данных таблицы, указанное как сохраненное целое значение. Значение является производным от реального значения Мин. Это свойство доступно только в диалоговом окне свойств.
Для Simulink.LookupTable объекты с типом данных с фиксированной точкой, максимальное значение элементов в данных таблицы, указанное как сохраненное целое значение. Значение получается из реального значения Max. Это свойство доступно только в диалоговом окне свойств.
Физические единицы элементов в таблице подстановки. Можно указать текст, например degC. См. раздел Спецификация единиц измерения в моделях Simulink.
Имя поля структуры в созданном коде. В этом поле хранятся данные таблицы при настройке Simulink.LookupTable для отображения в созданном коде в виде структуры. Значение по умолчанию: Table. Чтобы изменить имя поля, укажите текст.
Описание таблицы подстановки. Можно указать текст, например This lookup table describes the action of a pump.
Сведения о наборе точек останова. Каждая строка представляет собой один набор точек останова. Чтобы настроить дополнительные наборы точек останова, укажите целое значение в поле Число размеров таблицы.
Для наборов точек останова можно сконфигурировать следующие характеристики:
Источник информации о наборах точек останова, указанный как Explicit values (по умолчанию), Reference, или Even spacing.
Сохранение всех данных набора таблиц и точек останова в Simulink.LookupTable объект, задайте для параметра Спецификация значение Explicit values.
Simulink.LookupTable объект появляется в созданном коде как одна структурная переменная.
Сохранение данных таблицы в Simulink.LookupTable объект и сохранить данные набора точек останова в Simulink.Breakpoint объекты, задайте для параметра «Спецификация» значение Reference.
Simulink.LookupTable появляется в созданном коде как отдельная переменная массива, содержащая данные таблицы. Каждый Simulink.Breakpoint появляется как отдельный массив или структурная переменная, содержащая данные набора точек останова.
Сохранение данных таблицы и равномерно расположенных точек останова в Simulink.LookupTable объект, задайте для параметра Спецификация значение Even spacing. Используйте параметры Первая точка (First point) и Интервал (Spacing), чтобы создать набор равномерно расположенных точек останова.
Примечание
Если для параметра «Спецификация» установлено значение Explicit values или Even spacing, можно изменить порядок настраиваемого размера, точки останова и записей таблицы в создаваемой объектом структуре таблицы подстановки.
Спецификация, позволяющая настраивать эффективный размер таблицы в сгенерированном коде. В коде структура, соответствующая объекту, имеет дополнительное поле для каждого вектора точки останова. В каждом дополнительном поле сохраняется длина соответствующего вектора точки останова. Можно изменить значение каждого поля, чтобы скорректировать фактический размер таблицы.
Это свойство появляется только в том случае, если для параметра «Спецификация» задано значение Explicit values или Even spacing.
Примечание
При сохранении данных точек останова в Simulink.Breakpoint путем установки для параметра «Спецификация» значения Reference, чтобы включить настройку размера таблицы в сгенерированном коде, используйте свойство Support tunable size каждого Simulink.Breakpoint объект.
Данные для набора точек останова. Укажите числовой вектор, содержащий не менее двух элементов.
Примечание
Это свойство появляется только в том случае, если Breakpoints specification имеет значение Even spacing или Reference. Данные набора точек останова значения совпадают с содержимым табличного интерфейса, видимого в нижней части диалогового окна, если для свойства спецификации точек останова установлено значение Explicit. Дополнительные сведения об этой табличной области см. в разделе Просмотр данных объекта Simulink.LookupTable с помощью табличного интерфейса диалогового окна свойств.
Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) если выражение возвращает числовой вектор. При нажатии кнопки «Применить» или «ОК» объект выполняет выражение и использует результат для задания значения этого свойства.
Если для параметра «Тип данных» задано значение auto, чтобы задать значение, используйте типизированное выражение, такое как single([1 2 3]) или используйте fi Конструктор (Конструктор фиксированных точек) для встраивания fi объект.
Эти данные можно редактировать с помощью более интуитивно понятного интерфейса в блоке таблицы подстановки. См. раздел Импорт данных таблицы подстановки из MATLAB.
Тип данных набора точек останова. Значение по умолчанию: auto, что означает, что набор точек останова получает тип данных из значения, указанного в поле Значение. Если используется нетипизированное выражение, например [1 2 3] для установки значения в данных точки останова используется тип данных double. Если указано типизированное выражение, например single([1 2 3]) или fi , данные точки останова используют тип данных, указанный выражением или объектом.
Можно явно указать целочисленный тип данных, тип данных с плавающей запятой, тип данных с фиксированной запятой или выражение типа данных, например имя Simulink.AliasType объект.
Дополнительные сведения о типах данных в Simulink см. в разделе Типы данных, поддерживаемые Simulink. Как управлять типами данных таблицы и данных точки останова в Simulink.LookupTable и Simulink.Breakpoint см. раздел Управление типами данных объектов таблицы подстановки (Simulink Coder).
Длины размеров набора точек останова.
Для использования символьных размеров укажите символьный вектор. См. раздел Реализация вариантов измерения для размеров массива в сгенерированном коде (встроенном кодере).
Минимальное значение элементов в наборе точек останова. Значение по умолчанию пустое, []. Можно указать числовое вещественное значение.
Дополнительные сведения об использовании этого свойства в Simulink см. в разделе Указание минимальных и максимальных значений для параметров блока.
Максимальное значение элементов в наборе точек останова. Значение по умолчанию пустое, []. Можно указать числовое вещественное значение.
Дополнительные сведения об использовании этого свойства в Simulink см. в разделе Указание минимальных и максимальных значений для параметров блока.
Физическая единица элементов в наборе точек останова. Можно указать текст, например degF. См. раздел Спецификация единиц измерения в моделях Simulink.
Имя поля структуры в созданном коде. В этом поле хранятся данные набора точек останова. Значение по умолчанию: BP1 для первого набора точек останова и BP2 для второго набора. Чтобы изменить имя поля, укажите текст.
Имя поля структуры в созданном коде. В этом поле хранится длина (количество элементов) набора точек останова, которую алгоритм создания кода использует для определения размера таблицы. Чтобы настроить эффективный размер таблицы во время выполнения кода, измените значение этого поля структуры в памяти. Имя по умолчанию: N1 для первого набора точек останова и N2 для второго набора. Чтобы изменить имя поля, укажите текст.
Этот столбец отображается только в том случае, если выбран параметр «Поддерживать настраиваемый размер».
Описание набора точек останова. Можно указать текст, например This breakpoint set represents the pressure input.
Первая точка в равномерно разнесенных данных точек останова. Этот параметр доступен, если для параметра Спецификация (Specification) задано значение Even spacing.
Интервал между точками в равномерно разнесенных данных точек останова. Этот параметр доступен, если для параметра Спецификация (Specification) установлено значение Even spacing.
Название Simulink.Breakpoint объект, хранящий информацию для этого набора точек останова.
Этот столбец появляется, только если для параметра Спецификация (Specification) задано значение Reference.
Название Simulink.Breakpoint объект, в котором хранится информация для первой точки. Этот параметр доступен, если для параметра Спецификация (Specification) установлено значение Even spacing.
Название Simulink.Breakpoint объект, в котором хранится информация для интервала. Этот параметр доступен, если для параметра Спецификация (Specification) установлено значение Even spacing.
Класс хранения структурной переменной (если для параметра Спецификация задано значение Explicit values или Even spacing) или переменная массива (Reference) в сгенерированном коде. Переменная хранит данные таблицы и, если переменная является структурой, данные набора точек останова. Значение по умолчанию: Auto.
Дополнительные сведения о классах хранения см. в разделе Конфигурация генерации кода C для элементов интерфейса модели (Simulink Coder).
Если у вас есть Embedded Coder ®, вы можете выбрать пользовательский класс хранения. Сведения о пользовательских классах хранения см. в разделе Организация данных параметров в структуру с помощью класса хранения Struct (встроенный кодер).
Альтернативное имя структурной переменной (если для параметра Спецификация задано значение Explicit values или Even spacing) или переменная массива (Reference) в сгенерированном коде. Значение по умолчанию пустое, в этом случае созданный код использует имя Simulink.LookupTable в качестве имени структуры или переменной массива. Чтобы задать идентификатор, укажите текст.
Чтобы включить это свойство, установите класс Data definition: Storage в значение, отличное от Auto.
Граница выравнивания данных в сгенерированном коде. Начальный адрес памяти для данных, выделенных для структуры или переменной массива, кратен указанному значению. Значение по умолчанию: -1, что позволяет генератору кода определять оптимальное выравнивание на основе использования.
Укажите положительное целое число в степени 2, не превышающей 128. Дополнительные сведения об использовании выравнивания данных для замены кода см. в разделе Выравнивание данных для замены кода (встроенный кодер).
Имя типа структуры, используемого структурной переменной в сгенерированном коде. Значение по умолчанию пустое. Укажите текст.
Это свойство появляется только в том случае, если для параметра «Спецификация» задано значение Explicit values или Even spacing.
Область определения типа структуры (импортирована из пользовательского кода или экспортирована из созданного кода). Значение по умолчанию: Auto. При выборе Auto:
Если в поле Определение типа структуры: Файл заголовка не указано значение, созданный код экспортирует определение типа структуры в файл . model_types.h - имя модели.model
Если указать значение в поле Определение типа структуры: Файл заголовка, например myHdr.h, созданный код импортирует определение типа структуры из myHdr.h.
Чтобы явно указать область данных:
Для импорта определения типа структуры в созданный код из пользовательского кода выберите Imported.
Для экспорта определения типа структуры из созданного кода выберите Exported.
Если в поле Определение типа структуры: Файл заголовка не указано значение, созданный код импортирует или экспортирует определение типа из или в . StructName.h - это имя, которое задается с помощью свойства Struct Type definition: Name.StructName
Это свойство появляется только в том случае, если для параметра «Спецификация» задано значение Explicit values или Even spacing.
Имя файла заголовка, содержащего определение типа структуры. Можно импортировать определение из созданного файла заголовка или экспортировать определение в созданный файл заголовка. Чтобы управлять областью действия типа структуры, настройте параметр для определения типа структуры: свойство области данных.
Это свойство появляется только в том случае, если для параметра «Спецификация» задано значение Explicit values или Even spacing.
Информация для таблицы и данных точки останова. Можно ввести выражение MATLAB в соответствующее текстовое поле или добавить данные непосредственно в прилагаемую таблицу. Выберите требуемый тип данных:
Table - Табличные данные. Укажите числовой вектор или многомерный массив, содержащий не менее двух элементов.
Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) если выражение возвращает числовой вектор или многомерный массив. При нажатии клавиши Enter объект выполняет выражение и использует результат для задания значения этого свойства.
При указании данных таблицы с тремя или более измерениями данные отображаются как выражение, содержащее вызов reshape функция. Чтобы изменить значения в данных, измените первый аргумент reshape , который содержит все значения в сериализованном векторе. При добавлении или удалении элементов вдоль размера необходимо также исправить аргумент, представляющий длину измененного размера.
Эти данные можно редактировать с помощью более интуитивно понятного интерфейса в блоке таблицы подстановки. См. раздел Импорт данных таблицы подстановки из MATLAB.
BPN - данные для набора точек останова.
Укажите числовой вектор, содержащий не менее двух элементов.
Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) если выражение возвращает числовой вектор. При нажатии клавиши Enter объект выполняет выражение и использует результат для задания значения этого свойства.
Эти данные можно редактировать с помощью более интуитивно понятного интерфейса в блоке таблицы подстановки. См. раздел Импорт данных таблицы подстановки из MATLAB.
Ввод данных в таблицу или управление ими является простым и интуитивно понятным. Как и электронные таблицы Microsoft ® Excel ®, с таблицей можно работать с такими операциями, как:
Выбор элементов таблицы
Используйте стандартные сочетания клавиш, например:
Копировать - Ctrl + C
Вставить - Ctrl + V
Отменить - Ctrl + Z
Удалить
Повтор - Shift + Ctrl + Z
Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.
Создать Simulink.LookupTable объект с именем LUTObj.
LUTObj = Simulink.LookupTable;
Укажите данные таблицы.
LUTObj.Table.Value = [1.1 2.2 3.3 4.4 5.5];
Укажите данные набора точек останова.
LUTObj.Breakpoints(1).Value = [-2 -1 0 1 2];
Укажите имя типа структуры в созданном коде.
LUTObj.StructTypeInfo.Name = 'myLUTStruct';
Вы можете использовать LUTObj в 1-D Справочной таблице блокируют диалоговое окно. В блоке задайте для параметра «Спецификация данных» значение Lookup table object и имя для LUTObj.
Для просмотра данных используйте диалоговое окно свойств, как описано в разделе Просмотр Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface.
Создать Simulink.LookupTable объект с именем LUTObj.
LUTObj = Simulink.LookupTable;
Укажите данные таблицы.
LUTObj.Table.Value = [1.1 2.2 3.3 4.4 5.5; ...
6.6 7.7 8.8 9.9 10.1];Укажите данные набора точек останова. В Breakpoints свойство, используйте векторный индекс 2 для установки значений во втором наборе точек останова.
LUTObj.Breakpoints(1).Value = [-1 1]; LUTObj.Breakpoints(2).Value = [-2 -1 0 1 2];
LUTObj создает Simulink.lookuptable.Breakpoint объект в качестве второго векторного элемента в значении Breakpoints собственность. За исключением Value новый объект имеет значения свойств по умолчанию.
Укажите имя типа структуры в созданном коде.
LUTObj.StructTypeInfo.Name = 'myLUTStruct';
Вы можете использовать LUTObj в 2-й Справочной таблице блокируют диалоговое окно.
Для просмотра данных используйте диалоговое окно свойств, как описано в разделе Просмотр Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface.
Чтобы равномерно разместить каждое второе значение, начиная с 1, используйте объект Breakpoint.
Создать Simulink.LookupTable объект с именем LUTObj.
LUTObj=Simulink.LookupTable
LUTObj =
LookupTable with properties:
Table: [1×1 Simulink.lookuptable.Table]
BreakpointsSpecification: 'Explicit values'
Breakpoints: [1×1 Simulink.lookuptable.Breakpoint]
SupportTunableSize: 0
CoderInfo: [1×1 Simulink.CoderInfo]
StructTypeInfo: [1×1 Simulink.lookuptable.StructTypeInfo]Задайте для свойства точки останова четный интервал.
LUTObj.BreakpointsSpecification='Even spacing'
LUTObj =
LookupTable with properties:
Table: [1×1 Simulink.lookuptable.Table]
BreakpointsSpecification: 'Even spacing'
Breakpoints: [1×1 Simulink.lookuptable.Evenspacing]
SupportTunableSize: 0
CoderInfo: [1×1 Simulink.CoderInfo]
StructTypeInfo: [1×1 Simulink.lookuptable.StructTypeInfo]Получение свойств точки останова.
LUTObj.Breakpoints(1)
ans =
Evenspacing with properties:
FirstPoint: 0
Spacing: 1
DataType: 'auto'
Min: []
Max: []
Unit: ''
FirstPointName: 'BPFirstPoint1'
SpacingName: 'BPSpacing1'
TunableSizeName: 'N1'
Description: ''Чтобы задать свойство первой точки, используйте объект Breakpoint FirstPoint собственность.
LUTObj.Breakpoints(1).FirstPoint=1
Чтобы задать свойство spacing, используйте объект Breakpoint.
LUTObj.Breakpoints(1).Spacing=2
Получение свойств точки останова.
LUTObj.Breakpoints(1)
ans =
Evenspacing with properties:
FirstPoint: 1
Spacing: 2
DataType: 'auto'
Min: []
Max: []
Unit: ''
FirstPointName: 'BPFirstPoint1'
SpacingName: 'BPSpacing1'
TunableSizeName: 'N1'
Description: ''Создать Simulink.LookupTable объект с именем LUTObj.
LUTObj = Simulink.LookupTable;
Укажите данные таблицы.
LUTObj.Table.Value = [1.00 2.25 3.50 4.75 6.00; ...
7.25 8.50 9.75 11.00 12.25];Укажите данные набора точек останова. В Breakpoints свойство, используйте индекс массива 2 для создания дополнительного Simulink.lookuptable.BreakpointInfo объект, представляющий второй набор точек останова.
LUTObj.Breakpoints(1).Value = [-1 1]; LUTObj.Breakpoints(2).Value = [-2 -1 0 1 2];
Укажите типы данных для таблицы подстановки и каждого набора точек останова.
LUTObj.Table.DataType = 'fixdt(1,16,2)'; LUTObj.Breakpoints(1).DataType = 'int16'; LUTObj.Breakpoints(2).DataType = 'int16';
Укажите уникальные имена полей структуры, которые хранят данные таблицы и наборы точек останова в созданном коде.
LUTObj.Table.FieldName = 'myTable'; LUTObj.Breakpoints(1).FieldName = 'myBPSet1'; LUTObj.Breakpoints(2).FieldName = 'myBPSet2';
Экспорт определения структурной переменной из созданного кода с помощью класса хранения ExportedGlobal.
LUTObj.CoderInfo.StorageClass = 'ExportedGlobal';Назовите тип структуры в созданном коде LUTStructType. Экспорт определения типа структуры в созданный файл заголовка с именем myLUTHdr.h.
LUTObj.StructTypeInfo.Name = 'LUTStructType'; LUTObj.StructTypeInfo.DataScope = 'Exported'; LUTObj.StructTypeInfo.HeaderFileName = 'myLUTHdr.h';
В блоке n-D Lookup Table в модели задайте для спецификации Data значение Lookup table object и имя для LUTObj.
load_system('myModel_LUTObj') set_param('myModel_LUTObj/Lookup Table','DataSpecification','Lookup table object',... 'LookupTableObject','LUTObj')
Создайте код из модели.
slbuild('myModel_LUTObj')### Starting build procedure for: myModel_LUTObj ### Generated code for 'myModel_LUTObj' is up to date because no structural, parameter or code replacement library changes were found. ### Successful completion of code generation for: myModel_LUTObj Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 0m 2.141s
Созданный код определяет тип структуры. LUTStructType в созданном файле заголовка myLUTHdr.h.
file = fullfile('myModel_LUTObj_ert_rtw','myLUTHdr.h'); rtwdemodbtype(file,'typedef struct {','} LUTStructType;',1,1)
typedef struct {
int16_T myBPSet1[2];
int16_T myBPSet2[5];
int16_T myTable[10];
} LUTStructType;
Код использует переменную глобальной структуры. LUTObj для хранения данных набора таблиц и точек останова. Данные таблицы масштабируются на основе указанного типа данных с фиксированной точкой.
file = fullfile('myModel_LUTObj_ert_rtw','myModel_LUTObj.c'); rtwdemodbtype(file,'LUTStructType LUTObj = {','/* Variable: LUTObj',1,1)
LUTStructType LUTObj = {
{ -1, 1 },
{ -2, -1, 0, 1, 2 },
{ 4, 29, 9, 34, 14, 39, 19, 44, 24, 49 }
} ; /* Variable: LUTObj
Предположим, что рукописный код условно выделяет память и инициализирует таблицу подстановки на основе длины измерения, указанной как #define макросы. В этом примере показано, как создать код, использующий данные внешней таблицы и точки останова.
Символьные размеры требуют использования целевого файла системы на основе ERT, для которого требуется Embedded Coder ®.
Изучение внешнего кода
В текущей папке скопируйте эти определения макросов в файл заголовка с именем ex_myHdr_LUT.h.
#include "rtwtypes.h"
#ifndef _HEADER_MYHDR_H_
#define _HEADER_MYHDR_H_
#define bp1Len 2
#define bp2Len 2
typedef struct {
real_T BP1[bp1Len];
real_T BP2[bp2Len];
real_T Table[bp1Len * bp2Len];
} LUTObj_Type;
extern LUTObj_Type LUTObj;
#endif
Копировать этот статический код инициализации в исходный файл с именем ex_mySrc_LUT.c.
#include "ex_myHdr_LUT.h"
#if bp1Len == 2 && bp1Len == 2
LUTObj_Type LUTObj = {
{ 1.0, 2.0 },
{ 3.0, 4.0 },
{ 3.0, 2.0, 4.0, 1.0 }
} ;
#endif
#if bp1Len == 3 && bp1Len == 3
LUTObj_Type LUTObj = {
{ 1.0, 2.0, 3.0 },
{ 4.0, 5.0, 6.0 },
{ 1.0, 6.0, 2.0, 3.0, 8.0, 9.0, 5.0, 4.0, 7.0 }
} ;
#endif
Чтобы создать код, импортирующий эти данные, создайте bp1Len и bp2Len как Simulink.Parameter объекты в MATLAB. Создать LUTObj в качестве Simulink.LookupTable объект. Используйте объекты параметров, чтобы указать длины размеров для таблицы и данных набора точек останова в Simulink.LookupTable объект.
Создание модели-примера
Создание модели-примера ex_LUTObj с помощью блока n-D Lookup Table. В диалоговом окне «Блок таблицы поиска» на вкладке «Таблица и точки останова» задайте для параметра «Количество размеров таблицы» значение 2.
open_system('ex_LUTObj')

Создать Simulink.LookupTable Объект
На панели «Иерархия моделей» обозревателя моделей выберите «Базовая рабочая область».
На панели инструментов нажмите кнопку «Добавить таблицу поиска Simulink». A Simulink.LookupTable объект с именем Object отображается в базовой рабочей области.
На панели «Содержимое» (средняя панель) переименуйте объект как LUTObj.
Можно также создать объект в командной строке:
LUTObj = Simulink.LookupTable;
Настроить Simulink.LookupTable Объект
На панели «Содержимое» выберите новый объект LUTObj. Диалоговое окно свойств появляется на панели «Диалоговое окно» (правая панель).
Задать для параметра «Количество табличных размеров» значение 2.
В разделе «Таблица» задайте значение «Значение» [3 4; 2 1].
В первой строке в разделе «Точки останова» задайте значение «Значение» [1 2].
Во второй строке в разделе «Точки останова» задайте значение «Значение» [3 4]. Нажмите кнопку «Применить».
В разделе Определение типа структуры (Struct Type definition) задайте для области данных значение Imported. Задать для файла заголовка значение ex_myHdr_LUT.h. Задать для имени значение LUTObj_Type.
В диалоговом окне «Блок таблицы поиска» задайте для параметра «Спецификация данных» значение Lookup table object. Задать для имени значение LUTObj. Нажмите кнопку «Применить».
Кроме того, чтобы настроить объект и блоки, используйте следующие команды:
LUTObj.Breakpoints(1).Value = [1 2]; LUTObj.Breakpoints(2).Value = [3 4]; LUTObj.Table.Value = [3 4; 2 1]; LUTObj.StructTypeInfo.DataScope = 'Imported'; LUTObj.StructTypeInfo.HeaderFileName = 'ex_myHdr_LUT.h'; LUTObj.StructTypeInfo.Name = 'LUTObj_Type'; set_param('ex_LUTObj/Lookup Table','LookupTableObject','LUTObj') set_param('ex_LUTObj/Lookup Table',... 'DataSpecification','Lookup table object')
Включить генератор кода для использования Simulink.Parameter объекты в виде макросов, задающих длины размеров. Выберите параметр конфигурации Разрешить спецификацию символьных размеров.
set_param('ex_LUTObj','AllowSymbolicDim','on')
Создать Simulink.Parameter объекты, представляющие макросы bp1Len и bp2Len. Создание кода для импорта макросов из файла заголовка ex_myHdr_LUT.h, применить класс хранения ImportedDefine.
bp1Len = Simulink.Parameter(2); bp1Len.Min = 2; bp1Len.Max = 3; bp1Len.DataType = 'int32'; bp1Len.CoderInfo.StorageClass = 'Custom'; bp1Len.CoderInfo.CustomStorageClass = 'ImportedDefine'; bp1Len.CoderInfo.CustomAttributes.HeaderFile = 'ex_myHdr_LUT.h'; bp2Len = Simulink.Parameter(2); bp2Len.Min = 2; bp2Len.Max = 3; bp2Len.DataType = 'int32'; bp2Len.CoderInfo.StorageClass = 'Custom'; bp2Len.CoderInfo.CustomStorageClass = 'ImportedDefine'; bp2Len.CoderInfo.CustomAttributes.HeaderFile = 'ex_myHdr_LUT.h';
Конфигурирование существующего Simulink.LookupTable объект LUTObj для использования Simulink.Parameter объекты. Задайте длины размеров данных набора точек останова и данных таблицы, используя имена объектов параметров.
LUTObj.Breakpoints(1).Dimensions = '[1 bp1Len]'; LUTObj.Breakpoints(2).Dimensions = '[1 bp2Len]'; LUTObj.Table.Dimensions = '[bp1Len bp2Len]';
Настроить LUTObj как импортированные данные путем применения класса хранения ImportFromFile. Импорт определения LUTObj, добавить имя файла ex_mySrc_LUT.c к параметру конфигурации модели Параметры конфигурации > Создание кода > Пользовательский код > Дополнительная информация о построении > Исходные файлы.
LUTObj.CoderInfo.StorageClass = 'Custom'; LUTObj.CoderInfo.CustomStorageClass = 'ImportFromFile'; LUTObj.CoderInfo.CustomAttributes.HeaderFile = 'ex_myHdr_LUT.h'; set_param('ex_LUTObj','CustomSource','ex_mySrc_LUT.c')
Создание и проверка кода
Настройте модель для компиляции исполняемого файла из созданного кода.
set_param('ex_LUTObj','GenCodeOnly','off')
Создайте код из модели.
slbuild('ex_LUTObj')
### Starting build procedure for: ex_LUTObj ### Successful completion of build procedure for: ex_LUTObj Build Summary Top model targets built: Model Action Rebuild Reason ========================================================================================== ex_LUTObj Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 18.541s
В отчете о создании кода просмотрите созданный файл. ex_LUTObj.h. Файл импортирует определения макросов и определения типа структуры, включая файл заголовка. ex_myHdr_LUT.h.
file = fullfile('ex_LUTObj_ert_rtw','ex_LUTObj.h'); rtwdemodbtype(file,'#include "ex_myHdr_LUT.h"','#include "ex_myHdr_LUT.h"',1,1)
#include "ex_myHdr_LUT.h"
В исходном файле ex_LUTObj.c, алгоритм кода в модели step передает данные точки останова и таблицы функции, выполняющей поиск таблицы. Алгоритм также проходит bp1Len таким образом, функция поиска может пересекать строки и столбцы данных таблицы, которые отображаются в сгенерированном коде как сериализованный массив 1-D.
file = fullfile('ex_LUTObj_ert_rtw','ex_LUTObj.c'); rtwdemodbtype(file,'/* Model step function */','/* Model initialize function */',1,0)
/* Model step function */
void ex_LUTObj_step(void)
{
/* Outport: '<Root>/Out1' incorporates:
* Inport: '<Root>/In1'
* Inport: '<Root>/In2'
* Lookup_n-D: '<Root>/Lookup Table'
*/
ex_LUTObj_Y.Out1 = look2_binlcapw(ex_LUTObj_U.In1, ex_LUTObj_U.In2,
(&(LUTObj.BP1[0])), (&(LUTObj.BP2[0])), (&(LUTObj.Table[0])),
ex_LUTObj_ConstP.LookupTable_maxIndex, (uint32_T)bp1Len);
}
Вы не можете использовать Simulink.Breakpoint объекты или Simulink.LookupTable объекты, которые ссылаются на Simulink.Breakpoint объекты в качестве специфичных для экземпляра данных параметров для многократно используемых компонентов. Например, нельзя использовать один из этих объектов в качестве:
Аргумент модели в рабочем пространстве модели или значение аргумента модели в блоке модели.
Значение параметра маски в блоке CodeReuse Subsystem.
Значение параметра маски в подсистеме, которая повторно используется при создании пользовательской библиотеки.
Однако можно использовать автономный Simulink.LookupTable объекты, которые не относятся к Simulink.Breakpoint объекты, такими способами.
При использовании блоков в подсистеме Simulink.LookupTable или Simulink.Breakpoint невозможно задать переопределение типа данных только в подсистеме. Вместо этого задайте переопределение типа данных для всей модели.
Simulink.Breakpoint | Simulink.lookuptable.Breakpoint | Simulink.lookuptable.Evenspacing | Simulink.lookuptable.StructTypeInfo | Simulink.lookuptable.Table | Simulink.Parameter