Для каждой подсистемы

Подсистема, которая повторяет выполнение на каждом элементе или подмассиве входного сигнала и конкатенирует результаты

  • Библиотека:
  • Simulink / Ports & Subsystems

    HDL Coder / Ports & Subsystems

Описание

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

Набор блоков в подсистеме представляет алгоритм, применился к одному элементу или подмассиву исходного сигнала. Блок For Each в подсистеме позволяет вам конфигурировать разложение входных параметров подсистемы в элементы или подмассивы, и конфигурировать конкатенацию отдельных результатов в выходные сигналы.

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

Дополнительная выгода Для Каждого блока Subsystem - то, что для определенных моделей он улучшает повторное использование кода в сгенерированном коде Simulink®Coder™. Полагайте, что модель, содержащая два допускающих повторное использование блока Атомарной подсистемы с тем же скалярным алгоритмом, применилась к каждому элементу сигнала. Если размерности входного сигнала этих подсистем отличаются, сгенерированный код Simulink Coder включает две отличных функции. Можно заменить эти две подсистемы на два идентичных Для Каждого блоки Subsystem, которые сконфигурированы, чтобы обработать каждый элемент их соответствующих входных параметров с помощью того же алгоритма. Для этого случая сгенерированный код Simulink Coder состоит из одной функции, параметризованной количеством элементов входного сигнала. Эта функция вызывается дважды — однажды для каждого уникального экземпляра Для Каждого блока Subsystem в модели. Для каждого из этих случаев элементы входного сигнала имеют различные значения.

Поддержка S-функции

Для Каждого блока Subsystem поддерживает и S-функции C-MEX и S-функции Level 2 MATLAB®, при условии, что S-функция поддерживает несколько экземпляров выполнения с помощью одного из следующих методов:

  • S-функция C-MEX должна объявить ssSupportsMultipleExecInstances(S, true) в методе mdlSetWorkWidths.

  • Уровень 2 S-функция MATLAB должен объявить block.SupportsMultipleExecInstances = true в методе настройки.

Если вы используете указанные выше технические условия:

  • Не кэшируйте данные во время выполнения, такие как DWork и ввод-вывод Блока, с помощью глобальных или персистентных переменных или в пользовательских данных S-функции.

  • Каждый метод выполнения S-функции от mdlStart до mdlTerminate называется однажды для каждого элемента, обработанного S-функцией, когда это находится в Для Каждого блока Subsystem. Следовательно, необходимо бояться освобождать ту же память на повторных вызовах mdlTerminate. Например, рассмотрите S-функцию C-MEX, которая выделяет память для параметра периода выполнения в mdlSetWorkWidths. Память только должна быть освобождена однажды в mdlTerminate. Как решение, набор указатель, чтобы быть пустым после первого вызова mdlTerminate.

Ограничения

Для Каждого блока Subsystem имеет эти ограничения, и это обходные решения.

ОграничениеРабота вокруг

Вы не можете регистрировать шину, или массив шины сигнализирует непосредственно в Для Каждой подсистемы.

Используйте один из этих подходов:

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

  • Присоедините сигнал к блоку Outport и регистрируйте сигнал вне Для Каждой подсистемы.

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

  • Для Каждой подсистемы находится в симуляции модели в Быстром Режиме Accelerator.

  • Для Каждой подсистемы самой находится в модели, на которую ссылается блок Model в Режиме Accelerator.

Для первого условия используйте Режим Accelerator.

Для второго условия используйте Нормальный или Быстрый Режим Accelerator.

Вы не можете регистрировать состояния блоков в Для Каждой подсистемы.

Сохраните и восстановите состояние симуляции.

Вы не можете использовать Режим normal mode, чтобы моделировать блок Model в Для Каждой подсистемы.

Используйте Акселератор или Быстрый Режим Accelerator.

Повторно используемый код сгенерирован для два Для Каждого Подсистемы с идентичным содержимым, если их сигналы ввода и вывода являются векторами (1D или 2D строка или вектор-столбец). Для n-D сигналов ввода и вывода повторно используемый код сгенерирован только, когда размерность, по которой разделен сигнал, является самой высокой размерностью.

Переставьте размерности сигнала, чтобы преобразовать размерность раздела и размерность конкатенации к самой высокой неодноэлементной размерности для сигналов n-D.

Для Каждого блока Subsystem не поддерживает эти функции:

  • Вы не можете включать эти блоки или S-функции в Для Каждой Подсистемы:

    • Память Хранилища данных, Чтение Хранилища данных или Запись Хранилища данных блокируются в подсистеме

    • Блок From Workspace, если входом является Structure with Time, который имеет пустое поле времени

    • К Рабочей области и Зарегистрировать блоки сохранения данных

    • Goto и От блоков, которые пересекают контур подсистемы

    • Блок Model Reference с набором режима симуляции к Нормальному

    • Теневой Inports

    • S-функции ERT

    Для полного списка блоков, которые поддерживают Для Каждой Подсистемы, введите showblockdatatypetable в командной строке MATLAB.

  • Вы не можете использовать эти типы сигналов:

    • Сигналы с концом теста или сигналы с внешним классом памяти в системе

    • Структурируйте сигналы на контурах ввода и вывода подсистемы

    • Сигналы переменного размера

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

  • Создание линеаризации указывает в подсистеме

  • Распространение якобиевского флага для блоков в подсистеме. Можно проверять это условие в MATLAB с помощью J.Mi.BlockAnalyticFlags.jacobian, где J является якобиевским объектом. Чтобы проверить правильность якобиана Для Каждого блока Subsystem, выполните эти шаги:

    • Посмотрите на тег Для Каждого якобиана Подсистемы. Если это - “not_supported”, то якобиан является неправильным.

    • Переместите каждый блок из Для Каждой Подсистемы и вычислите ее якобиан. Если какой-либо блок является "not_supported" или имеет тег предупреждения, Для Каждого якобиана Подсистемы является неправильным.

  • Вы не можете выполнить эти типы генерации кода:

    • Генерация цели S-функции Simulink Coder

    • Генерация кода Simulink Coder при обоих из следующих условий:

      • Stateflow® или блок MATLAB function находятся в подсистеме.

      • Этот блок пытается получить доступ к глобальным данным вне подсистемы, такой как Блоки памяти Хранилища данных или объекты Simulink.Signal класса памяти ExportedGlobal.

    • Генерация кода PLC

Порты

Входной параметр

развернуть все

Размещение блока Inport в блоке подсистемы добавляет внешний входной порт в блок. Метка порта совпадает с именем блока Inport.

Используйте блоки Inport, чтобы получить сигналы от окружения.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

Вывод

развернуть все

Размещение блока Outport в блоке подсистемы добавляет выходной порт от блока. Метка порта на блоке подсистемы является именем блока Outport.

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

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

Образцовые примеры

Характеристики блока

Типы данных

Boolean[a] | bus[a] | double[a] | enumerated[a] | fixed point[a] | integer[a] | single[a]

Прямое сквозное соединение

no

Многомерные сигналы

limited[a]

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

[a]  Фактическая поддержка типа данных или возможности зависит от реализации блока.

Расширенные возможности

Представленный в R2010a

Для просмотра документации необходимо авторизоваться на сайте