Функция Simulink ® - это графический объект, позволяющий вызывать подсистему Simulink в действиях состояний и переходов. Функции Simulink поддерживаются только в диаграммах Stateflow ® в моделях Simulink.
Функции Simulink позволяют повысить эффективность проектирования и удобочитаемость модели. Типичные приложения:
Определение функции, для которой требуются блоки Simulink
Планирование выполнения нескольких контроллеров
Функция Simulink может находиться в любом месте диаграммы, состояния или вложенной диаграммы. Расположение функции определяет набор состояний и переходов, которые могут вызывать функцию.
Если вы хотите вызвать функцию в одном состоянии или подшарте и его подшаблонах, переведите свою функцию Simulink в это состояние или подшаблон. Эта функция переопределяет любые другие функции с тем же именем в родителях и предках этого состояния или подначертания.
Если необходимо вызвать функцию в любом месте диаграммы, поместите функцию Simulink на уровень диаграммы.
Если требуется вызвать функцию из любой диаграммы в модели, используйте блок Simulink Function (Simulink) для определения функции непосредственно в холсте Simulink. Дополнительные сведения см. в разделе Обзор функций Simulink (Simulink).
Примечание
Функция Simulink не может получить доступ к данным диаграммы или состояния в иерархии Stateflow.
Например, эта функция Simulink имеет имя sim_fcn. Требуется три аргумента (a, b, и c) и возвращает два выходных значения (x и y).

Функция содержит подсистему Simulink, которая умножает первый аргумент на коэффициент усиления 25 и объединяет два других аргумента в комплексный выходной сигнал.

В палитре объектов щелкните значок функции «Симуляция».
Переместите указатель в расположение новой функции Simulink на диаграмме.
Введите подпись подписи для функции.
Метка подписи функции определяет имя функции и формальные имена ее аргументов и возвращаемых значений. Подпись подписи имеет следующий синтаксис:
[return_val1,return_val2,...] = function_name(arg1,arg2,...)Необходимо использовать уникальные имена переменных для всех аргументов и возвращаемых значений.
Чтобы запрограммировать функцию, откройте редактор Simulink, дважды щелкнув поле функции. Первоначально редактор содержит блок триггера вызова функции (Simulink) и блоки Inport (Simulink) и Outport (Simulink), соответствующие сигнатуре функции. Невозможно удалить блок триггера.
В редакторе Simulink добавьте блоки и подключите их к блокам Inport и Outport.
Сконфигурируйте блоки Inport и Outport.
Дважды щелкните каждый блок, чтобы открыть диалоговое окно «Параметры блока».
На вкладке Signal Attributes введите тип данных и размеры порта входного параметра или возвращаемого значения.
Нажмите кнопку ОК.
Примечание
Блок Inport в функции Simulink не может наследовать размеры itsData и Port. Дополнительные сведения см. в разделе Явное задание свойств блоков ввода.
Функции Simulink можно вызывать из действий любого состояния или перехода. Можно также вызвать функции Simulink из других функций.
Чтобы вызвать функцию Simulink, используйте сигнатуру функции и включите фактическое значение аргумента для каждого формального аргумента в сигнатуру функции. Если типы данных фактических и формальных аргументов различаются, функция приводит фактический аргумент к типу формального аргумента.
Свойства функции Simulink можно задать в Обозревателе моделей или в диалоговом окне Параметры блока (Block Parameters).
Чтобы использовать Обозреватель моделей (Model Explorer):
Чтобы открыть Обозреватель моделей (Model Explorer), на вкладке Моделирование (Modeling) выберите Обозреватель моделей (Model Explorer).
На панели Иерархия модели (Model Hierarchy) выберите функцию Simulink.
На панели «Параметры блока» измените свойства функции Simulink.
Для использования диалогового окна «Параметры блока»:
В редакторе Stateflow щелкните правой кнопкой мыши функцию Simulink.
Выберите Свойства.
Измените свойства функции Simulink.
Описание свойств функции Simulink см. в разделах Подсистема, Атомная подсистема, CodeReuse Подсистема (Simulink).
Дополнительные свойства функций Simulink можно задать программным путем с помощью Stateflow.SLFunction объекты. Дополнительные сведения о программном интерфейсе Stateflow см. в разделе Обзор API Stateflow.
Это руководство обеспечивает совместимость имен блоков Inport и Output с правилами именования идентификаторов диаграмм Stateflow.
Блоки Inport в функции Simulink не могут наследовать типы и размеры данных. Поэтому необходимо задать тип данных и размеры порта для каждого блока Inport, который не является скаляром типа double.
Блоки Outport в функции Simulink могут наследовать размеры и типы данных на основе соединений внутри подсистемы. Поэтому можно указать тип данных и размеры порта для этих блоков как унаследованных.
Совет
Чтобы упростить обновление свойств блоков Inport, в качестве параметров можно указать типы и размеры данных.
Блоки аутпорта в функциях Simulink не поддерживают несмежные сигналы. Если функция содержит блок, выводящий несмежный сигнал, вставьте блок преобразования сигнала (Simulink) между несмежным выходом и блоком исходящего сигнала. Это действие обеспечивает непрерывность выходного сигнала.
Блоки, которые могут выводить несмежный сигнал, включают в себя блок Bus Creator (Simulink) и блок Mux (Simulink). Для блока Bus Creator выходной сигнал является несмежным, когда блок выводит виртуальную шину. Если выбрать Output в качестве невиртуальной шины, выходной сигнал является непрерывным и преобразование не требуется.
Экспорт функции Simulink приводит к ошибке во время выполнения во время моделирования. Чтобы избежать этой ошибки, откройте диалоговое окно Свойства диаграммы и снимите флажок Экспортировать функции уровня диаграммы.
Нельзя использовать функции Simulink в диаграммах Мура. Это ограничение предотвращает нарушения семантики Мура во время выполнения диаграммы.
При выборе свойства диаграммы Execute (enter) Chart At Initialization нельзя вызывать функции Simulink в переходах по умолчанию, которые выполняются при первом пробуждении диаграммы. В противном случае при моделировании на диаграмме генерируется ошибка времени выполнения.
During Действия или условия перехода графиков непрерывного времениВ диаграммах непрерывного времени нельзя вызывать функции Simulink во время второстепенных временных шагов. Вместо этого вызовите функции Simulink в действиях, которые происходят во время основных временных шагов: entry или exit действия и переходные действия. Вызов функций Simulink в состоянии during действия или условия перехода приводят к ошибке времени выполнения во время моделирования.
Функции симулятора не поддерживают генерацию кода HDL. Создание кода HDL для диаграмм, содержащих функции Simulink, приводит к ошибке во время выполнения во время моделирования.
Передача аргумента функции Simulink по ссылке приводит к ошибке времени выполнения во время моделирования.
Автор шины (Simulink) | Inport (Simulink) | Mux (Simulink) | Outport (Simulink) | Преобразование сигнала (Simulink) | Функция Simulink (Simulink) | Триггер (Simulink)