Инструкции для предотвращения нежелательной рекурсии в графике
Рекурсия может быть полезна для управления подызменениями состояния среди параллельных состояний на том же уровне иерархии графика. Например, можно отправить направленную широковещательную передачу события от одного параллельного состояния до одноуровневого состояния параллели, чтобы задать подызменение состояния. (Для получения дополнительной информации смотрите, что Направленное Событие Широковещательно передает.) Этот тип рекурсивного поведения желателен и эффективен.
Однако нежелательная рекурсия может также произойти во время выполнения графика. Чтобы избежать нежелательной рекурсии, следуйте этим инструкциям:
Не вызывайте функции рекурсивно
Предположим, что у вас есть функции с именем f
, g
и h
в графике. Эти функции могут быть любой комбинацией графических функций, функций таблицы истинности, функций MATLAB® или функций Simulink®.
Чтобы избежать рекурсивного поведения, не делайте:
Имейте f
, вызывая g
, вызывая h
, вызывая f
Имейте f
, g
или h
, вызывая себя
Не используйте неориентированные локальные широковещательные сообщения события
Следуйте этим правилам:
Используйте направленные локальные широковещательные сообщения события с синтаксисом send(event,state)
. event
является локальным событием в графике, и state
является целевым состоянием, что вы хотите разбудить использование широковещательной передачи события.
Если источник локальной широковещательной передачи события является актом государственной власти, гарантируйте, что целевое состояние не является предком исходного состояния в иерархии графика.
Если источник локальной широковещательной передачи события является переходом, гарантируйте, что целевое состояние не является предком перехода в иерархии графика.
Кроме того, гарантируйте, что переход не соединяется с целевым состоянием.
Если у вас есть неориентированные локальные широковещательные сообщения события в актах государственной власти или действиях условия в вашем графике, предупреждение появляется по умолчанию во время симуляции. Примеры актов государственной власти с неориентированными локальными широковещательными сообщениями события включают:
entry: send(E1)
, где E1
является локальным событием в графике
exit: E2
, где E2
является локальным событием в графике
Можно управлять уровнем диагностического действия для неориентированных локальных широковещательных сообщений события в > панель диалогового окна Configuration Parameters. Установите диагностику Undirected event broadcasts на none
, warning
или error
.