Поддержка Stateflow

Simulink® Code Inspector™ поддерживает подмножество Stateflow® объекты для инспекции кода. Инспектор кода проверяет использование поддерживаемых объектов. Для поддерживаемых объектов могут применяться некоторые ограничения. Перед инспекцией кода, когда вы проверяете совместимость вашей модели с инспекцией кода правилами, проверка совместимости обнаруживает и сообщает о нарушениях ограничений Stateflow. Simulink Code Inspector поддерживает следующие объекты Stateflow для инспекции кода:

  • Коробки

  • Чарты

  • Данные и события

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

  • Соединения

  • Неатомные субдиаграммы

  • Функции Simulink

  • Государства

  • Переходы

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

  • Для цикла конструкций, для примера:

Ограничения объекта Stateflow представляют ограничения Stateflow. Для каждого объекта Stateflow с ограничением в разделе предусмотрены:

  • Имя объекта. Для получения информации об объекте см. Stateflow.

  • Ограничения, применяемые к объекту.

Для каждой записи:

  • В Constraint столбце перечислено ограничение Simulink Code Inspector на блоке или объекте Stateflow.

  • Столбец FATAL / Nonfatal определяет, прекращает ли нарушение ограничения инспекцию кода.

    • При проверке кода, сгенерированного из моделей с несовместимостью FATAL, инспекция кода прекращается. Код, сгенерированный из моделей с несовместимостью FATAL, не может быть проверен.

    • Когда вы проверяете код, сгенерированный из моделей с нефатальными несовместимостями, инспекция кода не прекращается. Несмотря на невозможность полной проверки сгенерированного кода, инспекция кода продолжается. Simulink Code Inspector может частично проверить сгенерированный код. Можно сконфигурировать инспекцию кода так, чтобы нефатальное нарушение ограничений завершало инспекцию кода.

  • В Compatibility Check столбце перечислены проверки совместимости, которая проверяет на нарушение ограничения, и ссылки на описание проверки.

Структурированные и неструктурированные типы потока управления в Stateflow

Для поддерживаемых объектов Stateflow Simulink Code Inspector поддерживает структурированный поток управления, но не неструктурированный поток управления. Это ограничение FATAL, что означает, что нарушение этого ограничения прекращает инспекцию кода. Подчек Check that control flows are structured проверяет, поддерживается ли тип потока управления вашей диаграммы Stateflow, и сообщает о нарушении ограничения.

Поток управления в диаграмме Stateflow является порядком выполнения действий состояния и перехода, когда график активен. Действия состояния и перехода являются инструкциями, которые вы записываете внутри состояния или рядом с переходом, чтобы определить, как диаграмма Stateflow ведет себя во время симуляции. Можно использовать логику принятия решений, закольцовывания и ветвления для управления порядком выполнения действий. В структурированном потоке управления порядок выполнения действий предсказуем и специфичен. В неструктурированном потоке управления порядок выполнения действий непредсказуем. Непредсказуемость возникает из-за использования непредсказуемых переходов к меткам или адресам команд, которые определяются во время выполнения. В результате поток управления может:

  • Переход к другому соединению

  • Пропустите фрагмент графика потока

  • Причина раннего выхода из ветви

Пример структурированного потока управления в диаграмме Stateflow

Этот пример показывает поведение структурированного потока управления на диаграмме Stateflow.

Когда условие для перехода 1 или 2 верно, поток управления следует по переходному пути 1 и 2 соответственно и переходит к оконечному соединению. Когда условия для перехода 1 и 2 являются ложными, поток управления следует по переходному пути 3 и переходит к оконечному соединению. Для каждого перехода существует определенный путь. Нет никаких непредсказуемых переходов, пропусков или раннего выхода.

Пример неструктурированного потока управления в диаграмме Stateflow

Этот пример показывает поведение неструктурированного потока управления на диаграмме Stateflow.

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

Похожие темы