Организуйте определения связанных Параметров блоков в структурах

Когда вы используете числовой MATLAB® переменные, чтобы задать параметры блоков значения в модели, большие модели могут накапливать много переменных, увеличивая усилия по обслуживанию и заставляя имена переменных увеличиваться в длину.

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

Используйте структуры для:

  • Уменьшите количество переменных рабочей области, которые вы должны поддерживать.

  • Избегайте конфликтов по совпадению имен между переменными рабочей области.

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

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

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

Основные сведения о создании и манипулировании структурами MATLAB см. в разделе Структуры. Для получения основной информации об установке параметров блоков значений в модели, смотрите Задать Параметры блоков значения.

Чтобы использовать структуры для инициализации сигналов шины, см. Раздел «Задание начальных условий для элементов шины».

Создайте и используйте структуру параметра

В этом примере показано, как создать и использовать структуру параметра в модели.

Пример модели f14 использует несколько переменных из базового рабочего пространства, чтобы задать значения параметров блоков. Для примера, когда вы открываете модель, она создает переменные Zw, Mw, и Mq в базовом рабочем пространстве. Чтобы организовать эти переменные в одну структурную переменную:

  1. В командной строке откройте пример модели.

    f14

  2. В командной строке создайте структуру параметра myGains. Установите значения полей с помощью значений целевых переменных.

    myGains.Zw = Zw;
    myGains.Mw = Mw;
    myGains.Mq = Mq;

  3. В Model Explorer на панели Model Hierarchy нажмите Base Workspace. На панели Contents щелкните правой кнопкой мыши переменную Mq и выберите Find Where Used.

  4. В диалоговом окне Select a system щелкните узел f14 и нажмите OK. Нажмите OK, когда спросят об обновлении схемы.

  5. На панели Contents щелкните правой кнопкой мыши строку, соответствующую маркированному блоку Gain1 и выберите Properties. Откроется Gain1 диалогового окна блока.

  6. Измените значение параметра Gain из Mq на myGains.Mq и нажмите OK.

  7. На панели Contents щелкните правой кнопкой мыши строку, соответствующую блоку Transfer Fcn.1, и выберите Properties.

  8. Измените значение параметра Denominator coefficients из [1,-Mq] на [1,-myGains.Mq] и нажмите OK.

  9. На панели Model Hierarchy нажмите Base Workspace. Используйте Find Where Used, чтобы найти блоки, которые используют переменные Mw и Zw. В диалоговые окна блока замените ссылки на имена переменных согласно таблице.

    Имя переменнойИмя замены
    MwmyGains.Mw
    ZwmyGains.Zw

  10. Очистите старые переменные.

    clear Zw Mw Mq

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

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

Сохраните информацию о типах данных в значениях полей

Чтобы использовать структуру или массив структур для организации значений параметров, которые используют тип данных, отличный от doubleможно явным образом задать тип при создании структуры. Когда вы создаете структуру, используйте типизированные выражения, такие как single(15.23) для определения значений полей.

myParams.Gain = single(15.23);

Если вы хотите изменить значение поля позже, вы должны не забывать, чтобы явным образом задать тип снова. Если вы не задаете тип, значение поля использует тип данных double вместо этого:

myParams.Gain = 15.23;
% The field 'Gain' now uses the data type 'double' instead of 'single'.

Чтобы сохранить спецификацию типов, можно использовать назначение под индексом для присвоения нового значения полю:

% Assign value of type 'single'.
myParams.Gain = single(15.23);

% Assign new value while retaining type 'single'.
myParams.Gain(:) = 11.79;

Чтобы соответствовать типу данных с фиксированной точкой, установите значение поля с помощью fi (Fixed-Point Designer) объект.

Управление типами данных и характеристиками поля путем создания объекта параметра

A Simulink.Parameter объект позволяет вам отделить значение параметров блоков от его типа данных. Если вы используете объект параметра для хранения структуры или массива структур, можно создать Simulink.Bus объект для использования в качестве типа данных всей структуры.

Можно использовать объект шины и объект параметра для явного управления:

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

  • Сложность, размерности и модули каждого поля.

  • Минимальное и максимальное значение каждого поля, если поле представляет настраиваемому параметру значение.

  • Форма всей структуры. shape структуры - это число, имена и иерархия полей.

  • Настраиваемость структуры в коде, который вы генерируете из модели.

  1. Создайте структуру параметра myParams.

    myParams = struct(...
        'SubsystemA',struct(...
            'Gain',15.23,...
            'Offset',89,...
            'Init',0.59),...
        'SubsystemB',struct(...
            'Coeffs',[5.32 7.99],...
            'Offset',57,...
            'Init1',1.76,...
            'Init2',2.76)...
    );

  2. Используйте функцию Simulink.Bus.createObject для создания Simulink.Bus объекты, которые представляют структуру и подструктуры.

    Simulink.Bus.createObject(myParams)
    

    Потому что myParams содержит две уникальные подструктуры, функция создает три Simulink.Bus объекты: один именованный slBus1 для представления родительской структуры myParams, один по наименованию SubsystemA для подструктуры SubsystemA, и один именованный SubsystemB для подструктуры SubsystemB.

  3. Переименуйте объект шины slBus1 как myParamsType.

    myParamsType = slBus1;
    clear slBus1

  4. Сохраните структуру myParams в Simulink.Parameter объект.

    myParams = Simulink.Parameter(myParams);

    The Value свойство объекта параметра содержит структуру.

  5. Установите тип данных объекта параметра в объект шины myParamsType.

    myParams.DataType = 'Bus: myParamsType';

  6. Откройте Редактор шин, чтобы просмотреть объекты шины.

    buseditor

  7. На панели Model Hierarchy щелкните узел SubsystemA. На панели Contents установите типы данных полей согласно рисунку.

  8. Вы можете задать типы данных полей для подструктуры SubsystemB.

Объект параметра myParams сохраняет структуру параметра. Тип данных объекта параметра является объектом шины myParamsType. Перед симуляцией и генерацией кода объект параметра приводит значения полей к типам данных, которые вы задали в объекте шины.

Чтобы использовать одно из полей для задания параметров блоков значения, задайте такое выражение, как myParams.SubsystemB.Init1.

Для доступа к значениям полей в командной строке используйте Value свойство объекта параметра. Поскольку объект шины управляет типами данных поля, вам не нужно использовать типизированное выражение, чтобы задать значение поля.

myParams.Value.SubsystemA.Gain = 12.79;

Объект шины строго управляет характеристиками поля и формой структуры. Для примера, если вы задаете значение двухэлементного поля myParams.SubsystemB.Coeffs для массива с тремя элементами модель генерирует ошибку, когда вы задаете параметры блоков значение. Чтобы изменить размерности поля, измените элемент Coeffs в объекте шины SubsystemB.

Для управления объектами шины после их создания смотрите Создать и Задать Simulink Объекты .Bus и Сохранить объекты Simulink .Bus.

Соответствие типа данных поля с типом данных сигнала

Предположим, что вы используете поле myParams.SubsystemA.Gain чтобы задать значение параметра Gain в блоке Gain. Если вы хотите, чтобы тип данных поля совпадал с типом данных выходного сигнала блока, вы не можете полагаться на контекстно-зависимое типирование данных (см. Раздел «Контекстно-чувствительный тип данных»). Рассмотрите использование Simulink.AliasType или Simulink.NumericType объект для установки типа данных поля и сигнала. Если вы не используете объект типа данных, необходимо не забывать изменять тип данных поля всякий раз, когда вы изменяете тип данных сигнала.

  1. В командной строке создайте Simulink.AliasType объект, который представляет тип данных single.

    myType = Simulink.AliasType;
    myType.BaseType = 'single';

  2. В диалоговом окне Gain блока, на вкладке Signal Attributes, установите Output data type равным myType.

  3. В командной строке откройте Редактор шин.

    buseditor

  4. На панели Model Hierarchy выберите объект шины SubsystemA. На панели Contents задайте тип данных поля Gain на myType.

Теперь и выходной сигнал блока Gain, и поле структуры myParams.SubsystemA.Gain использовать тип данных, который вы задаете при помощи BaseType свойство myType.

Для получения дополнительной информации об объектах типа данных смотрите Simulink.AliasType и Simulink.NumericType.

Управление структурными переменными

Чтобы создать, изменить и просмотреть переменную, значение которой является структурой, можно использовать Редактор переменных. Для получения дополнительной информации смотрите Изменение переменных структуры и массива в интерактивном режиме.

Определите иерархию параметров путем создания вложенных структур

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

Например, предположим, что вы создаете подсистемы с именем SubsystemA и SubsystemB в вашей модели. Вы используете такие переменные, как Offset_SubsystemA и Offset_SubsystemB для установки параметров блоков значений в подсистемах.

Gain_SubsystemA = 15.23;
Offset_SubsystemA = 89;
Init_SubsystemA = 0.59;

Coeffs_SubsystemB = [5.32 7.99];
Offset_SubsystemB = 57;
Init1_SubsystemB = 1.76;
Init2_SubsystemB = 2.76;

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

myParams = struct(...
    'SubsystemA',struct(...
        'Gain',Gain_SubsystemA,...
        'Offset',Offset_SubsystemA,...
        'Init',Init_SubsystemA),...
    'SubsystemB',struct(...
        'Coeffs',Coeffs_SubsystemB,...
        'Offset',Offset_SubsystemB,...
        'Init1',Init1_SubsystemB,...
        'Init2',Init2_SubsystemB)...
);

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

Как использовать Offset поле от подструктуры SubsystemB в качестве значения параметров блоков задайте значение параметров в диалоговом окне блока в качестве выражения myParams.SubsystemB.Offset.

Группируйте несколько структур параметров в массив

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

Предположим, что вы создаете две одинаковые подсистемы в модели.

Предположим, что для блоков в каждой подсистеме требуется три числовых значения, чтобы задать значения параметров. Создайте массив из двух структур для хранения значений.

myParams(1).Gain = 15.23;
myParams(1).Offset = 89;
myParams(1).Init = 0.59;

myParams(2).Gain = 11.93;
myParams(2).Offset = 57;
myParams(2).Init = 2.76;

Каждая структура в массиве хранит три значения параметров для одной из подсистем.

Чтобы задать значение параметров блоков в одной из подсистем, задайте выражение, которое ссылается на поле одной из структур массива. Для примера используйте выражение myParams(2).Init.

Организуйте значения параметров для переиспользуемых компонентов и итерационных алгоритмов

Можно также разбить массив структур на For Each Subsystem блок. Этот метод помогает вам организовать переменные рабочей области, когда модель выполняет алгоритм неоднократно, для примера путем итерации алгоритма по вектору сигналу. Для получения примера смотрите Повторить алгоритм Используя для каждой подсистемы.

Если вы используете аргументы модели, чтобы задать различные значения параметров для нескольких образцов модели-ссылки, можно использовать массивы структур, чтобы организовать значения аргументов модели. В рабочем пространстве модели-ссылки создайте переменную структуры и сконфигурируйте модель, чтобы использовать структуру в качестве аргумента модели. Используйте поля структуры, чтобы задать параметры блоков значения в модели. Затем создайте массив структур в базовом рабочем пространстве или словаре данных, с которым связаны родительская модель или модели. В родительской модели или моделях используйте каждую из структур в массиве в качестве значения аргумента модели в блоке Model. Каждая структура в массиве хранит значения параметров для одного образца ссылочных моделей.

Пример модели sldemo_mdlref_datamngt содержит три образцов (Model блоков) маскированной ссылочной модели sldemo_mdlref_counter_datamngt. Базовые переменные базового рабочего пространства IC1, IC2, Param1, и Param2 являются Simulink.Parameter объекты, значениями которых являются структуры. Родительская модель использует эти переменные, чтобы задать значения параметров маски на блоках Model. Начиная с IC1 структурно идентичен IC2, и Param1 на Param2можно объединить эти четыре структуры в два массива структур.

  1. Откройте пример родительской модели.

    sldemo_mdlref_datamngt

    Модель создает четыре Simulink.Parameter объекты в базовом рабочем пространстве.

  2. Откройте пример, на который ссылаются модели.

    sldemo_mdlref_counter_datamngt

    Это рабочее пространство модели задаёт два аргумента модели, CounterICs и CounterParams, значения которого являются структурами. Блоки в модели используют поля этих структур, чтобы задать значения параметров.

  3. В модель sldemo_mdlref_datamngt, откройте Model Data Editor (на вкладке Modeling нажмите Model Data Editor). В Model Data Editor смотрите вкладку Parameters.

  4. В модели щелкните один из блоков Model.

    В Model Data Editor подсвечиваются строки, которые соответствуют двум параметрам маски на выбранном блоке Model. Блок использует маскирующие параметры, чтобы задать значения двух аргументов модели, заданных ссылочной моделью sldemo_mdlref_counter_datamngt. Каждый Model блок использует разную комбинацию четырех объектов параметра из базового рабочего пространства, чтобы задать значения аргументов.

  5. В столбце Value Model Data Editor щелкните один из камер, чтобы начать редактирование значения соответствующего параметра маски (для примера IC1). Рядом со значением параметров нажмите кнопку действия и выберите Open. Откроется диалоговое окно свойств объекта параметра.

  6. В диалоговом окне свойств, рядом с полем Value, нажмите кнопку действия и выберите Open Variable Editor.

    Редактор переменных показывает, что объект параметра хранит структуру. Структуры в Param2 и IC2 иметь те же поля, что и структуры в Param1 и IC1 но различные значения полей.

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

    % Create a new parameter object by copying Param1.
    Param = Param1.copy;
    
    % Use the structure in Param2 as the second structure in the new object.
    Param.Value(2) = Param2.Value;
    % The value of Param is now an array of two structures.
    
    % Delete the old objects Param1 and Param2.
    clear Param1 Param2
    
    % Create a new parameter object by copying IC1.
    % Use the structure in IC2 as the second structure in the new object.
    IC = IC1.copy;
    IC.Value(2) = IC2.Value;
    clear IC1 IC2

  8. В родительской модели, в Model Data Editor, используйте столбец Value, чтобы заменить значения параметров маски согласно таблице

    Предыдущее значениеНовое значение
    Param1Param(1)
    IC1IC(1)
    Param2Param(2)
    IC2IC(2)

Каждый Model блок устанавливает значение аргумента модели CounterICs при помощи одной из структур массива IC. Точно так же каждый блок устанавливает значение CounterParams при помощи одной из структур в Param.

Обеспечение однородности в массиве структур

Все структуры в массиве структур должны иметь одинаковую иерархию полей. Каждое поле иерархии должно иметь одинаковые характеристики во всем массиве. Можно использовать объект параметра и объект шины, чтобы обеспечить это единообразие среди структур.

Чтобы использовать объект параметра для представления массива параметрических структур, установите значение объекта в массив структур:

% Create array of structures.
myParams(1).Gain = 15.23;
myParams(1).Offset = 89;
myParams(1).Init = 0.59;
myParams(2).Gain = 11.93;
myParams(2).Offset = 57;
myParams(2).Init = 2.76;

% Create bus object.
Simulink.Bus.createObject(myParams);
myParamsType = slBus1;
clear slBus1

% Create parameter object and set data type.
myParams = Simulink.Parameter(myParams);
myParams.DataType = 'Bus: myParamsType';

Чтобы использовать одно из полей для задания параметров блоков значения, задайте такое выражение, как myParams(2).Offset.

Для доступа к значениям полей в командной строке используйте Value свойство объекта параметра.

myParams.Value(2).Offset = 129;

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

Можно использовать структуру в блоке Constant, чтобы создать один сигнал шины, который передает несколько числовых констант. Для получения дополнительной информации см. раздел Constant. Для получения информации о сигналах шины см. Раздел «Виртуальная шина».

Факторы перед миграцией на Параметр структуры

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

    Например, предположим, что два блока в модели используют переменную рабочей области myVar. Если вы создаете структуру myParams с полем myVar, и установите значение параметров только в одном из блоков равным myParams.myVarдругой блок продолжает использовать переменную myVar. Если вы удаляете myVarмодель генерирует ошибку, поскольку оставшийся блок требует удаленной переменной.

    Чтобы обнаружить все блоки, которые используют переменную:

    1. Откройте все модели, которые могут использовать переменную. Если модели находятся в иерархии модели-ссылки, можно открыть только модель верхней части.

    2. В Model Data Editor или на панели Contents Model Explorer щелкните правой кнопкой мыши переменную и выберите Find Where Used. В Model Explorer отображаются все блоки, которые используют переменную.

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

    Также можно воздержаться от удаления myVar. Однако, если вы измените значение myParams.myVar поле структуры, вы должны не забывать изменить значение myVar чтобы соответствовать.

  • Можно объединить несколько отдельных переменных или объектов параметра (таких как Simulink.Parameter) в структуру, которую вы храните в одной переменной или объекте параметра (для объединения объектов параметра смотрите Объединить существующие объекты параметра в структуру). Однако получившаяся переменная или объект действует как одна сущность. В результате нельзя применить различные настройки генерации кода, такие как классы памяти, к отдельным полям в структуре.

Объединение существующих объектов параметров в структуру

Когда вы используете объекты параметров, чтобы задать параметры блоков значения (для примера, так что можно применить классы памяти), чтобы объединить объекты в одну структуру:

  1. Создайте структуру MATLAB и сохраните ее в переменной. Чтобы задать значения полей, используйте значения параметров, которые хранят каждый существующий объект параметра.

  2. Преобразуйте переменную в объект параметра. Создайте и используйте Simulink.Bus объект как тип данных объекта параметра (см. Управление типами данных поля и характеристиками путем создания объекта параметра).

  3. Выберите класс памяти для применения к полученному объекту параметра. Можно выбрать только один класс памяти, который применяется ко всей структуре.

  4. Передайте метаданные параметра, такие как Min и Max свойства существующих объектов параметров к соответствующим свойствам Simulink.BusElement объекты в объекте шины.

Например, предположим, что у вас есть три отдельных объекта параметра.

coeff = Simulink.Parameter(17.5);
coeff.Min = 14.33;
coeff.DataType = 'single';
coeff.StorageClass = 'ExportedGlobal';

init = Simulink.Parameter(0.00938);
init.Min = -0.005;
init.Max = 0.103;
init.DataType = 'single';
init.StorageClass = 'Model default';

offset = Simulink.Parameter(199);
offset.DataType = 'uint8';
offset.StorageClass = 'ExportedGlobal';

  1. Создайте структурную переменную.

    myParams.coeff = coeff.Value;
    myParams.init = init.Value;
    myParams.offset = offset.Value;

  2. Преобразуйте переменную в объект параметра.

    myParams = Simulink.Parameter(myParams);

  3. Создайте объект шины и используйте его как тип данных объекта параметра.

    Simulink.Bus.createObject(myParams.Value);
    paramsDT = copy(slBus1);
    
    myParams.DataType = 'Bus: paramsDT';

  4. Передайте метаданные от старых объектов параметра к элементам шины в объекте шины.

    % coeff
    paramsDT.Elements(1).Min = coeff.Min;
    paramsDT.Elements(1).DataType = coeff.DataType;
    
    % init
    paramsDT.Elements(2).Min = init.Min;
    paramsDT.Elements(2).Max = init.Max;
    paramsDT.Elements(2).DataType = init.DataType;
    
    % offset
    paramsDT.Elements(3).DataType = offset.DataType;

    Чтобы помочь вам написать скрипт, который выполняет эту операцию переноса, можно использовать properties функция для поиска свойств, которые имеют общие элементы шины и старые объекты параметра. Чтобы перечислить поля структуры, чтобы можно было выполнять итерацию по ним, используйте fieldnames функция.

  5. Применить класс памяти к объекту параметра.

    myParams.StorageClass = 'ExportedGlobal';

Теперь можно использовать поля myParams, вместо старых объектов параметров, чтобы задать значения параметров блоков.

Параметрические структуры в сгенерированном коде

Можно сконфигурировать структуры параметров, чтобы они появлялись в сгенерированном коде как структуры и массивы структур. Для получения информации о генерации кода со структурами параметров смотрите Организовать данные в Структуры в Сгенерированном Коде (Simulink Coder).

Ограничения структуры параметра

  • Значение поля, которое вы используете для установки параметров блоков, должно быть числовым или перечисляемого типа. Значение поля может быть вещественным или комплексным скалярным, векторным или многомерным массивом.

  • Если значение любого из полей структуры является многомерным массивом, вы не можете настроить любое из значений поля во время симуляции.

  • Все структуры в массиве структур должны иметь одинаковую иерархию полей. Каждое поле иерархии должно иметь одинаковые характеристики в массиве:

    • Имя поля

    • Тип числовых данных, такой как single или int32

    • Сложность

    • Размерности

    Предположим, что вы задаете массив из двух структур.

    paramStructArray = ...
    [struct('sensor1',int16(7),'sensor2',single(9.23)) ...
     struct('sensor1',int32(9),'sensor2',single(11.71))];

    Вы не можете использовать ни одно из полей в параметрах блоков, потому что поле sensor1 использует различные типы данных в каждой структуре.

  • Структуры параметров не поддерживают контекстно-зависимое типирование данных в сгенерированном коде. Если структура параметра настраивается в коде, в полях структуры используются типы числовых данных, которые вы задаете, используя либо типизированные выражения, либо Simulink.Bus объект. Если вы не используете типизированные выражения или Simulink.Bus объект, поля структуры используют double тип данных.

Упакуйте общие данные точек по оси Х и данные таблицы для интерполяционных таблиц

Когда вы делитесь данными между блоками интерполяционной таблицы, рассмотрите использование Simulink.LookupTable и Simulink.Breakpoint объекты вместо структур для хранения и группировки данных. Этот метод улучшает читаемость модели путем четкой идентификации данных как частей интерполяционной таблицы и явной связи данных точек по оси Х с данными таблицы. Смотрите Общие данные точек по оси Х и Данные таблицы для интерполяционных таблиц.

Создайте структуру параметра согласно типу структуры из существующего кода С

Можно создать структуру параметров, которая соответствует struct введите определение, которое задает существующий код С. Используйте этот метод для:

В MATLAB сохраните структуру параметра в объекте параметра и используйте объект шины в качестве типа данных (см. «Типы данных поля управления и характеристики путем создания объекта параметра»). Чтобы создать объект шины в соответствии с вашим код С struct type, использовать Simulink.importExternalCTypes функция.

Похожие темы