В Stateflow возможно экспортировать графические функции из корневого уровня диаграммы в модель диаграммы. Экспорт функций расширяет их видимости на все другие диаграммы той же самой модели. Можно также экспортировать в модель графические функции библиотечных диаграмм, если библиотечных диаграмм присутствуют в модели. Чтобы экспортировать графические функции из корневого уровня диаграммы, отметьте свойство Export Chart Level Graphical Functions в диалоговом окне Chart Properties (Свойств Диаграмм) диаграммы.
Например, модель main_model имеет две библиотечные Stateflow-диаграммы, lib1Chart и lib2Chart.
Перетащим lib1Chart и lib2Chart в модель main_model из библиотек lib1 и lib2, в которых они были созданы. В диалоговом окне Chart Properties всех трех диаграмм выбрано свойство Export Chart Level Graphical Functions. Каждая диаграмма теперь определяет графическую функцию, которая может вызываться любой другой диаграммой, помещенной в main_model.
Последовательность действий при выполнении main_model следующая:
диаграмма modChart вызывает графическую функцию lib1_func с аргументами x и y;
Lib1_func вызывает графическую функцию lib2_func, передавая те же самые аргументы;
Lib2_func вызывает графическую функцию mod_func, которая складывает x и y;
наконец результат сложения сохраняется в x.
Второй пример - Exporting a Graphical Function (экспортирование графической функции).
Этот демонстрационный пример поясняет, как графические функции могут экспортироваться и использоваться как средства для вызова данных. Откроем модель. В ней присутствуют две Stateflow-диаграммы: вызывающая (Caller) и вызываемая (Callee)
Выходной сигнал output, отображаемый блоком Scope, равен 1, когда ручной переключатель Manual switch находится в состоянии On_switch, и равен 0, когда переключатель находится в состоянии Off_switch. Stateflow-диаграмма Caller активизируется переключением Manual switch.
Графические функции, которые определены в диаграмме Callee, вызываются диаграммой Caller.
В диаграмме Callee вычодной сигнал output устанавливается в 0 в состоянии A и в 1 в состоянии B. Графические функции, которые называются диаграммой Caller, сначала проверяют, активно ли состояние A, а затем посылают и передают сигнал even в соответствующее состояние. Этот метод позволяет создавать гибкие модели, содержащие различные переключающие события, которые и определяют выходные сигналы.
И наконец рассмотрим пример Recursive graphical function demonstration (пример рекурсивной графической функции).
Этот пример показывает, что графические функции могут использоваться как рекурсивные функции.
Графическая функция с именем factorial в диаграмме Chart возвращает факториала входного числа. Это возможно потому, что графические функции могут вызывать себя сами или вызываться из других графических функций. Риск в использовании рекурсивной функции, состоит в возможности создания бесконечной петли. Поэтому в данном примере factorial вызывается, когда входной сигнал удовлетворяет некоторому условию. Если условие не выполнено, выбирается другой путь выполнения функции, и выход в этом случае не зависит от функции factorial.