Simulink® Code Inspector™ поддерживает подмножество Stateflow® объекты для инспекции кода. Инспектор кода проверяет использование поддерживаемых объектов. Для поддерживаемых объектов могут применяться некоторые ограничения. Перед инспекцией кода, когда вы проверяете совместимость своей модели с правилами инспекции кода, программа контроля совместимости обнаруживает и сообщает о нарушениях ограничений Stateflow. Simulink Code Inspector поддерживает следующие объекты Stateflow для инспекции кода:
Поля
Графики
Данные и События
Графические функции
Соединения
Неатомарные субдиаграммы
Функции Simulink
Состояния
Переходы
Таблицы истинности
Построения цикла for, например:
Ограничения Объекта Stateflow представляют ограничения Stateflow. Для каждого объекта Stateflow с ограничением обеспечивает раздел:
Имя объекта. Для получения информации об объекте см. Stateflow.
Ограничения, которые применяются к объекту.
Для каждой записи:
Списки столбцов Constraint ограничение Simulink Code Inspector на блок Stateflow или объект.
Столбец FATAL / Nonfatal идентифицирует, отключает ли нарушение ограничения инспекцию кода.
Когда вы смотрите код, сгенерированный из моделей с КРИТИЧЕСКОЙ несовместимостью, инспекция кода завершает работу. Код, сгенерированный из моделей с КРИТИЧЕСКИМИ несовместимостями, не может быть проверен.
Когда вы смотрите код, сгенерированный из моделей с нефатальными несовместимостями, инспекция кода не завершает работу. Несмотря на то, что не может быть возможно полностью проверить сгенерированный код, инспекция кода продолжается. Simulink Code Inspector может частично проверить сгенерированный код. Можно сконфигурировать инспекцию кода так, чтобы нефатальное нарушение ограничений отключило инспекцию кода.
Списки столбцов Compatibility Check проверка совместимости, которая проверяет на нарушение ограничения и соединяется с описанием проверки.
Для поддерживаемых объектов Stateflow Simulink Code Inspector поддерживает структурированный поток управления, но не неструктурированный поток управления. Это - КРИТИЧЕСКОЕ ограничение, что означает, что нарушение этого ограничения отключает инспекцию кода. Проверки Check that control flows are structured подпроверки, поддерживается ли тип потока управления вашей диаграммы Stateflow и сообщает о нарушении ограничения.
Поток управления в диаграмме Stateflow является порядком состояния и выполнения действий перехода, когда график активен. Состояние и действия перехода являются инструкциями, что вы пишете в состоянии или рядом с переходом, чтобы задать, как диаграмма Stateflow ведет себя в процессе моделирования. Можно использовать принятие решения, цикличное выполнение и переходящую логику, чтобы управлять порядком выполнения действий. В структурированном потоке управления порядок выполнения действий предсказуем и конкретен. В неструктурированном потоке управления порядок выполнения действий непредсказуем. Непредсказуемость является результатом использования непредсказуемых скачков к меткам или адресам команды, которые определяются во времени выполнения. В результате поток управления может:
Перейдите к другому соединению
Перескочите через фрагмент блок-схемы
Вызовите ранний выход из ветви
Этот пример показывает поведение структурированного потока управления в диаграмме Stateflow.
Когда условие для перехода 1 или 2 верно, поток управления следует за путем к переходу 1 и 2 соответственно и переходит к завершающему работу соединению. Когда условия для перехода 1 и 2 являются ложными, поток управления следует за путем к переходу 3 и переходит к завершающему работу соединению. Для каждого перехода существует определенная трасса. Нет никаких непредсказуемых скачков, пропуская или рано не выходят.
Этот пример показывает поведение неструктурированного потока управления в диаграмме Stateflow.
Когда условия для переходов 1 и 2 являются ложными, поток управления перескакивает через промежуточное соединение, следует за путем к переходу 3 и переходит к завершающему работу соединению непосредственно. Поскольку условия для переходов 1 и 2 могут быть оценены только во время выполнения, не возможно предсказать заранее, перейдет ли поток управления непосредственно к завершающему работу соединению, пропуская промежуточное соединение.