Рабочая точка является снимком состояния Simulink® модель в определенное время во время симуляции. For a Stateflow® график, рабочая точка включает в себя:
Активность состояний графика
Значения локальных данных графика
Значения выходных данных графика
Значения стойких данных в MATLAB® функции и блоки таблицы истинности
Для получения дополнительной информации смотрите Использование рабочих точек в Stateflow.
Предположим, что вы хотите протестировать ответ old_sf_car
модель к внезапному изменению значения для gear
.
Эта модель моделируется в течение 30 секунд, но вы хотите увидеть, что происходит, когда значение gear
изменения при t = 10. Можно симулировать модель, сохранить рабочую точку при t = 10, загрузить и изменить рабочую точку, а затем снова симулировать между t = 10 и 20.
Шаг | Задача | Ссылка |
---|---|---|
1 | Определите рабочую точку для графика. | Определите рабочую точку |
2 | Загрузите рабочую точку и измените значения. | Загрузка рабочей точки и изменение значений |
3 | Протестируйте измененную рабочую точку, запустив модель. | Тестируйте измененную рабочую точку |
Откройте модель old_sf_car
.
Включите сохранение рабочей точки.
Откройте диалоговое окно Model Параметры Конфигурации и перейдите к панели 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 двигатель работает при установившемся значении 2500 об/мин.
Отключите сохранение рабочей точки.
Этот шаг препятствует перезаписи рабочей точки, сохраненной на предыдущем шаге.
Откройте диалоговое окно Model Параметры Конфигурации и перейдите к панели Data Import/Export.
Снимите флажок Save final operating point.
Снимите флажок Final states.
Нажмите OK.
Включите загрузку рабочей точки.
Откройте диалоговое окно Model Параметры Конфигурации и перейдите к панели 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');
Совет
Если график появляется подсвеченным в окне модели, можно задать путь блока используя gcb
(Simulink):
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), когда состояние активно, и false (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
. Кроме того, вы не можете задать новое значение, которое попадает за пределы области значений, заданных параметрами Minimum и Maximum. Для получения дополнительной информации смотрите Правила изменения значений данных.Сохраните измененную рабочую точку.
Используйте эту команду:
old_sf_car_ctx01 = old_sf_car_ctx01.set(blockpath, c);
Определите новое время остановки для тестируемого сегмента симуляции.
В диалоговом окне Model Configuration Parameters перейдите к панели Solver.
Для Stop time введите 20
.
Нажмите OK.
Вы не должны вводить новое время запуска, потому что симуляция продолжается с того места, где оно остановилось.
Запустите симуляцию.
Двигатель реагирует следующим образом: