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

Когда вы используете объекты 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;
LUTForInst2 = Simulink.LookupTable;

Задайте таблицу и установите точки останова данные для каждого объекта.

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

Задайте имя структуры, чтобы совпадать с именем, заданным объектом в рабочем пространстве модели, на которое ссылаются.

LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type';
LUTForInst2.StructTypeInfo.Name = 'LUTArg_Type';

В модели ex_arg_LUT, для образцового экземпляра Model, устанавливает значение LUTArg к LUTForInst1. Для образцового экземпляра Model1, установленный значение LUTArg к LUTForInst2.

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

Каждый экземпляр ex_arg_LUT_ref использует таблицу и данные точки останова, хранившие в одном из объектов Simulink.LookupTable в базовом рабочем пространстве.

Была ли эта тема полезной?