Когда вы используете 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';
Используйте структуру, чтобы создать специфичное для экземпляра значение аргумента для второго блока Model. Задайте точку останова и табличные данные для структуры.
StructForInst2.Table = [9 8; 7 7]; StructForInst2.BP1 = [3 4]; StructForInst2.BP2 = [5 6];
В ex_arg_LUT
модель, для экземпляра модели Model
, установите значение LUTArg
к LUTForInst1
. Для экземпляра модели Model1
, установите значение LUTArg
к StructForInst2
.
instSpecParams = get_param('ex_arg_LUT/Model','InstanceParameters'); instSpecParams(1).Value = 'LUTForInst1'; instSpecParams1 = get_param('ex_arg_LUT/Model1','InstanceParameters'); instSpecParams1(1).Value = 'structForInst2'; set_param('ex_arg_LUT/Model','InstanceParameters',instSpecParams); set_param('ex_arg_LUT/Model1','InstanceParameters',instSpecParams1);
Один экземпляр ex_arg_LUT_ref
использует таблицу и данные о точке останова, хранимые в Simulink.LookupTable
объект в базовом рабочем пространстве и другом экземпляре использует таблицу и данные о точке останова, хранимые в структуре.