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

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

Похожие темы