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

Рабочая точка является снимком состояния Simulink® модель в определенное время во время симуляции. For a Stateflow® график, рабочая точка включает в себя:

  • Активность состояний графика

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

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

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

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

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

Рабочая точка не включает информацию об этих элементах:

  • Машинно-родительские данные

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

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

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

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

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

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

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

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

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

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

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

Эти правила применяются, когда вы используете setActive метод при исключительном (ИЛИ) состоянии листа:

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

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

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

  • 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 не работают. Эти назначения создают копии указателей на объекты, а не значения рабочих точек.

Похожие темы