exponenta event banner

Выполнение и единичное тестирование объектов диаграммы состояния потока

Автономная диаграмма Stateflow ® - это класс MATLAB ®, определяющий поведение конечного конечного автомата. Автономные диаграммы реализуют классическую семантику диаграмм с MATLAB в качестве языка действий. Можно запрограммировать диаграмму с помощью всех функциональных возможностей MATLAB, включая функции, ограниченные для генерации кода в Simulink ®. Дополнительные сведения см. в разделе Создание диаграмм потока состояний для выполнения в виде объектов MATLAB.

Пример автономной диаграммы потока состояний

Файл sf_chart.sfx содержит автономную диаграмму Stateflow sf_chart. Диаграмма содержит локальные данные u, x, и y.

В этом примере показано, как выполнить эту диаграмму из редактора Stateflow Editor и в окне команд MATLAB.

Выполнение автономной диаграммы из редактора Stateflow

Чтобы выполнить модульное тестирование и отладку автономной диаграммы, ее можно выполнить непосредственно из редактора Stateflow Editor. Во время выполнения из пользовательского интерфейса вводятся значения данных и широковещательные события.

  1. Откройте диаграмму в редакторе Stateflow:

    edit sf_chart.sfx

  2. На панели «Символы» введите значение u = 1 и нажмите «Выполнить». Диаграмма выполняет переход по умолчанию и:

    • Инициализирует x до значения 0.

    • Делает состояние A активное состояние.

    • Назначает y до значения 1.

    • Увеличивает значение x на 1.

    Анимация диаграммы выделяет активное состояние A. На панели «Символы» отображаются значения u = 1, x = 1, и y = 1. Диаграмма сохраняет текущее состояние и локальные данные до следующей команды выполнения.

  3. Щелкните Шаг (Step). Потому что значение u не удовлетворяет условию [u<0] к переходу из состояния A, это состояние остается активным и значения x и y увеличение до 2. Теперь на панели «Символы» отображаются значения u = 1, x = 2, и y = 2.

  4. На панели «Символы» введите значение u = − 1 и щелкните Шаг (Step ). Отрицательное значение данных инициирует переход в состояние B. На панели «Символы» отображаются значения u = −1, x = 1, и y = 3.

  5. На панели «Символы» можно изменить значение любых данных диаграммы. Например, введите значение x = 3. Диаграмма будет использовать это значение данных на следующем шаге выполнения.

  6. Введите значение, равное u = 2 и щелкните Шаг (Step). Диаграмма возвращается в состояние A. На панели «Символы» отображаются значения u = 2, x = 4, и y = 5.

  7. Чтобы остановить анимацию диаграммы, нажмите кнопку Остановить.

Чтобы прервать выполнение и выполнить каждое действие в диаграмме, добавьте точки останова перед выполнением диаграммы. Дополнительные сведения см. в разделе Отладка автономной диаграммы статусов.

Выполнение автономной диаграммы в MATLAB

Автономную диаграмму можно выполнить в MATLAB без открытия редактора Stateflow Editor. Если диаграмма открыта, редактор подсвечивает активные состояния и переходы с помощью анимации диаграммы.

  1. Откройте диаграмму в редакторе Stateflow. В окне команд MATLAB введите:

    edit sf_chart.sfx

  2. Создайте объект диаграммы Stateflow с помощью имени sfx для автономной диаграммы как функции. Укажите начальное значение для данных u как пара имя-значение.

    s = sf_chart('u',1)
    Stateflow Chart
    
       Execution Function
        y = step(s)
    
       Local Data
          u         : 1
          x         : 1
          y         : 1
       Active States: {'A'}
    Эта команда создает объект диаграммы s, выполняет переход по умолчанию и инициализирует значения x и y. Редактор Stateflow анимирует диаграмму и выделяет активное состояние A.

  3. Для выполнения диаграммы вызовите step функция. Например, предположим, что вы вызываете step функция со значением u = 1:

    step(s,'u',1)
    disp(s)
    Stateflow Chart
    
       Execution Function
        y = step(s)
    
       Local Data
          u         : 1
          x         : 2
          y         : 2
       Active States: {'A'}
    Потому что значение u не удовлетворяет условию [u<0] к переходу из состояния A, это состояние остается активным и значения x и y увеличение до 2.

  4. Снова выполните диаграмму, на этот раз со значением u = −1:

    step(s,'u',-1)
    disp(s)
    Stateflow Chart
    
       Execution Function
        y = step(s)
    
       Local Data
          u         : -1
          x         : 1
          y         : 3
       Active States: {'B'}
    Отрицательное значение данных инициирует переход в состояние B. Значение x уменьшается до 1 и значение y увеличивается до 3.

  5. Чтобы получить доступ к значению любых данных диаграммы, используйте точечную нотацию. Например, локальным данным можно присвоить значение 3. x путем ввода:

    s.x = 3
    Stateflow Chart
    
       Execution Function
        y = step(s)
    
       Local Data
          u         : -1
          x         : 3
          y         : 3
       Active States: {'B'}
    Автономная диаграмма будет использовать это значение данных на следующем шаге выполнения.

  6. Выполните диаграмму со значением u = 2:

    step(s,'u',2)
    disp(s)
    Stateflow Chart
    
       Execution Function
    
        y = step(s)
    
       Local Data
          u         : 2
          x         : 4
          y         : 5
       Active States: {'A'}
    Диаграмма возвращается в состояние A и изменяет значения x и y.

  7. Чтобы остановить анимацию диаграммы, удалите объект диаграммы Stateflow s:

    delete(s)

Выполнение нескольких объектов диаграммы

Можно выполнить несколько объектов диаграммы, определенных одной и той же автономной диаграммой. Параллельные объекты диаграммы поддерживают свое внутреннее состояние независимо, но остаются связанными с той же диаграммой в редакторе. Анимация диаграммы отражает состояние последнего выполненного объекта диаграммы. Выполнение нескольких объектов диаграммы при открытом редакторе Stateflow может привести к путанице и не рекомендуется.

См. также

| |

Связанные темы