exponenta event banner

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

При использовании 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 Lookup Table установите значение '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';

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

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 объект в базовой рабочей области, а другой экземпляр использует данные таблицы и точки останова, хранящиеся в структуре.