exponenta event banner

Правила использования рабочей точки диаграммы

Операционная точка - это снимок состояния модели Simulink ® в определенное время во время моделирования. Для диаграммы Stateflow ® операционная точка включает:

  • Активность состояний диаграммы

  • Значения локальных данных диаграммы

  • Значения выходных данных диаграммы

  • Значения постоянных данных в блоках MATLAB ® и таблицы истинности

Дополнительные сведения см. в разделе Использование операционных точек в Stateflow.

Ограничения на значения, которые можно изменить

Операционная точка не включает информацию о следующих элементах:

  • Машинно-зависимые данные

  • Постоянные данные в пользовательском коде C

  • Постоянные данные во внешнем коде MATLAB

Поэтому изменять значения этих элементов нельзя.

Правила изменения значений данных

При изменении значений данных применяются следующие правила:

  • Изменить тип или размер данных невозможно. Скалярные данные должны оставаться скалярными. Векторные и матричные данные должны иметь одинаковые размеры. Единственным исключением из этого правила являются данные потока состояний ml (для получения более подробной информации см. ml Тип данных).

  • Для перечисляемых типов данных можно выбрать только перечисляемые значения из определения типа. Для других типов данных новые значения должны находиться в диапазоне, указанном в параметрах Минимум (Minimum) и Максимум (Maximum).

  • Используйте индексирование по одному для определения строк и столбцов матрицы.

    Предположим, что требуется изменить значение элемента в матрице 21 на 12. Чтобы изменить элемент в первой строке и втором столбце, введите:

    c.state_name.data_name.Value(1,2) = newValue;

Правила изменения активности состояния

Эти правила применяются при использовании setActive метод для исключающего (OR) состояния листа:

  • Локальные данные, подчиненные состоянию, не инициализируются повторно.

  • Новое активное состояние не выполняет никаких действий входа. Аналогично, ранее активное состояние не выполняет никаких действий выхода.

    Если необходимо выполнить эти действия состояния, их необходимо выполнить отдельно. Например, если действия состояния присваивают значения данным, необходимо назначить значения явно.

  • setActive метод пытается поддерживать непротиворечивость состояний посредством:

    • Обновление активности штата для родительских, бабушкиных и однородных состояний

    • Сброс временных счетчиков для новых активных состояний

    • Обновление значений выходных данных состояния (только для чтения)

    • Включение или отключение подсистем вызова функций и функций Simulink, связанных с состояниями

  • highlightActiveStates метод также выполняется, когда выполняются следующие условия:

    • Модель открыта.

    • Диаграмма видна.

    • highlightActiveStates метод выполнен, по крайней мере, один раз, но не removeHighlighting способ.

Ограничение для графиков непрерывного времени

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

Отсутствие частичной загрузки рабочей точки

При загрузке операционной точки полная операционная точка становится доступной в качестве переменной в базовом рабочем пространстве MATLAB. Невозможно выполнить частичную загрузку рабочей точки для подмножества объектов диаграммы.

Ограничение копирования значений рабочих точек

Используйте clone метод копирования всей рабочей точки в новую переменную (см. раздел Методы взаимодействия с рабочей точкой диаграммы). Невозможно скопировать подмножество значений рабочих точек, поскольку clone метод работает только на уровне диаграммы.

Предположим, что вы получаете маркер перемещения к рабочей точке диаграммы с помощью следующих команд:

blockpath = 'model/chart';
c = xFinal.get(modelOperatingPoint, blockpath);

Операторы назначения, такие как stateCopy = c.state, dataCopy = c.data, и operatingPointCopy = c не работают. Эти назначения создают копии дескрипторов объектов, а не значения рабочих точек.

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