Сконфигурируйте специфичные для экземпляра данные для интерполяционных таблиц программно

Когда вы используете Simulink.LookupTable объекты для хранения и настройки данных интерполяционной таблицы для генерации кода ASAP2 или AUTOSAR (для примера, STD_AXIS или CURVE), можно сконфигурировать объекты как аргументы модели. Затем можно задать уникальные данные таблицы и данные точек по оси Х для каждого образца компонента.

В этом примере показов, как сконфигурировать несколько образцы ссылочной модели, чтобы использовать различные значения для одних и тех же параметров блоков с помощью интерполяционных таблиц и командной строки.

Сконфигурируйте аргументы модели в модели-ссылке

Откройте ex_arg_LUT_ref модели, который представляет переиспользуемый алгоритм.

open_system('ex_arg_LUT_ref')

Создайте Simulink.LookupTable объект в базовом рабочем пространстве. В данном примере назовите объект LUTArg.

temp = Simulink.LookupTable;

Задайте значения для таблицы и данных точек по оси Х. Когда вы моделируете или генерируете код непосредственно из ex_arg_LUT_ref, модель использует эти значения.

temp.Table.Value = [3 4; 1 2];
temp.Breakpoints(1).Value = [1 2];
temp.Breakpoints(2).Value = [3 4];

Установите имя структуры равным LUTArg_Type.

temp.StructTypeInfo.Name = 'LUTArg_Type';

Скопируйте структуру в рабочее пространство модели.

mdlwks = get_param('ex_arg_LUT_ref','ModelWorkspace');
assignin(mdlwks,'LUTArg',copy(temp))

Задайте LUTArg как аргумент модели.

set_param('ex_arg_LUT_ref','ParameterArgumentNames','LUTArg')

Для блока n-D Интерполяционная таблица задайте 'Data specification' на 'Lookup table object' и задайте имя LUTArg.

set_param('ex_arg_LUT_ref/n-D Lookup Table',...
    'DataSpecification','Lookup table object','LookupTableObject','LUTArg')

Создайте значения аргументов для конкретного экземпляра

Откройте ex_arg_LUT модели, который использует переиспользуемый алгоритм дважды.

open_system('ex_arg_LUT')

Создайте Simulink.LookupTable объект в базовом рабочем пространстве.

LUTForInst1 = Simulink.LookupTable;

Задайте данные таблицы и точки по оси Х для объекта.

LUTForInst1.Table.Value = [8 7; 6 5];
LUTForInst1.Breakpoints(1).Value = [5 6];
LUTForInst1.Breakpoints(2).Value = [3 4];

Укажите имя структуры, которое совпадает с именем, заданным объектом в рабочем пространстве модели-ссылки.

LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type';

Используйте структуру, чтобы создать значение аргумента конкретного экземпляра для второго блока Model. Укажите данные точек по оси Х и данные таблицы для структуры.

StructForInst2.Table = [9 8; 7 7];
StructForInst2.BP1 = [3 4];
StructForInst2.BP2 = [5 6];

В ex_arg_LUT модель, например, образец Model, установите значение LUTArg на LUTForInst1. Например, образец Model1, установите значение LUTArg на StructForInst2.

set_param('ex_arg_LUT/Model','ParameterArgumentValues',...
    struct('LUTArg','LUTForInst1'))
set_param('ex_arg_LUT/Model1','ParameterArgumentValues',...
    struct('LUTArg','StructForInst2'))

Один из образцов ex_arg_LUT_ref использует данные таблицы и точек по оси Х, хранящиеся в Simulink.LookupTable объект в базовом рабочем пространстве и другом образце использует данные таблицы и точек по оси Х, хранящиеся в структуре.