Экспорт функций Stateflow для повторного использования

Когда вы экспортируете функции уровня диаграммы, вы расширяете возможности своих функций для других блоков в Simulink® модель. Для получения примера см. Раздел «Совместное использование функций через Simulink и Stateflow». Можно экспортировать следующие функции:

  • Графические функции

  • MATLAB® функции

  • Таблицы истинности

Экспорт функций уровня диаграммы

  1. Откройте график, где находится ваша функция.

  2. В Property Inspector откройте раздел Advanced.

  3. Выберите Export Chart Level Functions.

  4. Если ваша функция находится в библиотечном графике, соедините этот график с вашей основной моделью.

Когда вы выбираете Export Chart Level Functions, можно вызвать экспортированные функции с помощью Simulink Caller блоков с запись через точку chartName.functionName. Чтобы вызвать экспортированные функции по всей модели из любого Stateflow® или Simulink Caller блока выберите Treat Exported Functions as Globally Visible. Не используйте запись через точку для вызова этих функций. Вы не можете экспортировать функции с таким же именем.

Функции Simulink также могут быть определены непосредственно в холсте Simulink. Для получения дополнительной информации смотрите Simulink Function (Simulink).

Правила экспорта функций уровня диаграммы

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

 Не экспортируйте функции уровня диаграммы, которые содержат неподдерживаемые входы или выходы

 Не экспортировать функции Simulink

 Не экспортируйте функции через контуры модели-ссылки

Экспорт функций уровня диаграммы

Этот пример описывает, как экспорты функций в библиотеке графиков к вашей основной модели.

  1. Создайте следующие объекты:

    • Добавьте модель с именем main_model, с именем графика modChart.

    • Добавьте модель библиотеки с именем lib1, с именем графика lib1Chart.

    • Добавьте модель библиотеки с именем lib2, с именем графика lib2Chart.

  2. Создайте следующие графические функции в библиотечных графиках:

    • Для lib1Chart, добавьте эту графическую функцию.

    • Для lib2Chart, добавьте эту графическую функцию.

    • В Model Explorer для каждого из входных параметров функции и выходов a, b, и c, установите следующие свойства:.

      • Size на 1

      • Complexity на Off

      • Type на double

  3. Для modChart, добавьте графическую функцию и переход по умолчанию с lib1_func действие.

  4. Для каждого графика выполните следующие шаги:

    1. В Model Explorer для каждого из входных параметров функции и выходов a, b, и c, установите:

      • Size на 1

      • Complexity на Off

      • Type на double

    2. Откройте диалоговое окно Свойства графика.

    3. В диалоговом окне свойств графика» выберите Export chart level functions и Treat exported functions as globally visible.

    4. Нажмите OK.

  5. Перетащите мышью lib1Chart и lib2Chart в main_model от lib1 и lib2, соответственно. Ваша основная модель должна выглядеть примерно так:

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

  6. Откройте Model Explorer.

  7. На панели Model Hierarchy Model Explorer перейдите к main_model.

  8. Добавьте данные x и y на машину Stateflow:

    1. Выберите Add > Data.

    2. В столбце Name введите x.

    3. В столбце Initial Value введите 0.

    4. Используйте настройки по умолчанию для других свойств x.

    5. Выберите Add > Data.

    6. В столбце Name введите y.

    7. В столбце Initial Value введите 1.

    8. Используйте настройки по умолчанию для других свойств y.

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

  9. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).

  10. В диалоговом окне Model Configuration Parameters перейдите к панели Solver.

  11. В Solver selection разделе внесите следующие изменения:

    1. Для Type выберите Fixed-step.

    2. Для Solver выберите Discrete (no continuous states).

  12. В Solver details разделе внесите следующие изменения:

    1. Для Fixed-step size введите 1.

    2. Нажмите OK.

    Этот шаг гарантирует, что при моделировании модели используется дискретный решатель. Для получения дополнительной информации см. «Сравнение решателей (Simulink)».

Что происходит во время симуляции

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

ФазаОбъект...Вызывает графическую функцию...Который...
1modChartlib1_funcЧитает два входных параметров x и y
2lib1_funclib2_funcПередает два входных параметров
3lib2_funcmod_funcДобавляет x и y и присваивает сумму x

Как просмотреть результаты симуляции

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

  1. Откройте браузер библиотеки Simulink.

  2. В библиотеке Simulink/Sinks выберите блок Scope и добавьте его в main_model.

  3. Откройте Model Explorer.

  4. На панели Model Hierarchy перейдите к modChart.

  5. Добавьте выходные данные z на график:

    1. Выберите Add > Data.

    2. В столбце Name введите z.

    3. В Scope столбце выберите Output.

    4. Используйте настройки по умолчанию для других свойств.

  6. Для modChart, обновите действие перехода по умолчанию следующим образом:

    {x = lib1_func(x,y); z = x;}
  7. В модели соедините выходной порт из modChart к входному порту блока Scope.

  8. Дважды кликните блок Scope, чтобы открыть отображение.

  9. Запустите симуляцию.

  10. После завершения симуляции щелкните правой кнопкой мыши на отображении возможностей видимости и выберите Autoscale.

    Результаты выглядят примерно так: