Рабочая точка является снимком состояния состояния 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.
Диаграммы Stateflow, которые используют операторы обнаружения ребра, не поддерживают рабочие точки. Для получения дополнительной информации смотрите, Обнаруживают Изменения в Значениях Данных и Выражения.
Когда вы загружаете рабочую точку, полная рабочая точка доступна как переменная в базовом рабочем пространстве MATLAB. Вы не можете выполнить частичную загрузку рабочей точки для подмножества объектов диаграммы.
Используйте clone
метод, чтобы скопировать целую рабочую точку в новую переменную (см. Методы для Взаимодействия с Рабочей точкой Графика). Вы не можете скопировать подмножество значений рабочей точки, потому что clone
метод работает только на уровне графика.
Предположим, что вы получаете указатель на рабочую точку вашего графика с помощью этих команд:
blockpath = 'model/chart'; c = xFinal.get(modelOperatingPoint, blockpath);
Операторы присваивания, такие как stateCopy = c.state
, dataCopy = c.data
, и operatingPointCopy = c
не работать. Эти присвоения создают копии указателей на объект, не значения рабочей точки.