Рабочая точка является снимком состояния состояния модели Simulink® в определенное время во время симуляции. Для графика Stateflow® рабочая точка включает:
Действие состояний графика
Значения графика локальные данные
Значения выходных данных графика
Значения персистентных данных в функциях MATLAB® и блоках Таблицы истинности
Для получения дополнительной информации смотрите Используя Рабочие точки в Stateflow.
Предположим, что вы хотите протестировать ответ модели old_sf_car
к внезапному изменению в значении для gear
.
Эта модель моделирует в течение 30 секунд, но вы хотите видеть то, что происходит, когда значение gear
изменяется в t = 10. Можно моделировать модель, сохранить рабочую точку в t = 10, загрузить и изменить рабочую точку, и затем моделировать снова между t = 10 и 20.
Шаг | Задача | Ссылка |
---|---|---|
1 | Задайте рабочую точку для своего графика. | Задайте рабочую точку |
2 | Загрузите рабочую точку и измените значения. | Загрузите рабочую точку и измените значения |
3 | Протестируйте измененную рабочую точку путем выполнения модели. | Протестируйте измененную рабочую точку |
Откройте модель old_sf_car
.
Позвольте сохранить рабочей точки.
Откройте диалоговое окно Model Configuration Parameters и перейдите к панели Data Import/Export.
Установите флажок Final states.
Введите имя, такое как old_sf_car_ctx01
.
Установите флажок Save final operating point.
Нажмите Apply.
Задайте запуск и времена остановки для этого сегмента симуляции.
В диалоговом окне Model Configuration Parameters перейдите к панели Solver.
Для Start time введите 0
.
Для Stop time введите 10
.
Нажмите OK.
Запустите симуляцию.
Когда вы моделируете модель, вы сохраняете полную рабочую точку в t = 10 в переменной old_sf_car_ctx01
в базовом рабочем пространстве MATLAB.
В t = 10, механизм действует в установившемся значении 2 500 об/мин.
Отключите сохранение рабочей точки.
Этот шаг препятствует тому, чтобы вы перезаписали рабочую точку вы сохраненный на предыдущем шаге.
Откройте диалоговое окно Model Configuration Parameters и перейдите к панели Data Import/Export.
Снимите флажок Save final operating point.
Снимите флажок Final states.
Нажмите OK.
Позвольте загрузить рабочей точки.
Откройте диалоговое окно Model Configuration Parameters и перейдите к панели Data Import/Export.
Установите флажок Initial state.
Введите переменную, которая содержит рабочую точку вашего графика: old_sf_car_ctx01
.
Нажмите OK.
Задайте указатель на объект для значений рабочей точки графика shift_logic
.
В командной строке введите:
blockpath = 'old_sf_car/shift_logic'; c = old_sf_car_ctx01.get(modelOperatingPoint, 'blockpath');
Если график кажется подсвеченным в окне модели, можно задать блок path с помощью gcb
:
c = old_sf_car_ctx01.get(gcb);
Посмотрите на содержимое рабочей точки.
c = Block: "shift_logic" (handle) (active) Path: old_sf_car/shift_logic Contains: + gear_state "State (AND)" (active) + selection_state "State (AND)" (active) gear "Block output data" double [1, 1]
Рабочая точка вашего графика содержит список состояний и данных в иерархии.
Подсветите состояния, которые активны в вашем графике в t = 10.
В командной строке введите:
c.highlightActiveStates;
В графике все активные состояния кажутся подсвеченными.
Чтобы проверять, активно ли одно состояние, можно использовать метод isActive
. Например, введите:
c.gear_state.fourth.isActive
Эта команда возвращает true (1), когда состояние активно и ложное (0) в противном случае. Для получения информации о других методах см. Методы для Взаимодействия с Рабочей точкой Графика.
Измените активное подсостояние selection_state
к downshifting
.
Используйте эту команду:
c.selection_state.downshifting.setActive;
Недавно активное подсостояние кажется подсвеченным в графике.
Измените значение выходных данных gear
.
При вводе c.gear
в командной строке, вы видите список свойств данных, подобных этому:
>> c.gear ans = Description: 'Block output data' DataType: 'double' Size: '[1, 1]' Range: [1x1 struct] InitialValue: [1x0 double] Value: 4
Можно изменить значение gear
с 4 до 1 путем ввода
c.gear.Value = 1;
gear
. Кроме того, вы не можете задать новое значение, которое выходит за пределы области значений, установленной параметрами Maximum и Minimum. Для получения дополнительной информации см. Правила для Изменения Значений данных.Сохраните измененную рабочую точку.
Используйте эту команду:
old_sf_car_ctx01 = old_sf_car_ctx01.set(blockpath, c);
Задайте новое время остановки для сегмента симуляции, чтобы протестировать.
В диалоговом окне Model Configuration Parameters перейдите к панели Solver.
Для Stop time введите 20
.
Нажмите OK.
Вы не должны вводить новое время начала, потому что симуляция продолжается от того, где она кончила.
Запустите симуляцию.
Механизм реагирует можно следующим образом: