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

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

  • Действие состояний графика

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

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

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

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

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

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

  • Порожденные машиной данные

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

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

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

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

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

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

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

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

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

Похожие темы