Когда вы симулируете Stateflow® график в Simulink® модель, можно записать значения для локальных, выходных и активных данных о состоянии в Simulink.SimulationData.Dataset
объект. После симуляции вы можете получить доступ к этому объекту через Данные моделирования Inspector, Логический анализатор или в MATLAB® рабочей области. Рабочий процесс для логгирования данных:
Включите логгирование сигнала для графика и выберите формат логгирования. См. «Включение логгирования сигналов».
Сконфигурируйте состояния и данные для логгирования сигналов. См. раздел Конфигурирование состояний и данных для логгирования.
Моделируйте график.
Доступ к записанным в записанные данные. Смотрите Данные Регистрации Сигнала Доступа.
Логгирование сигналов включено по умолчанию для моделей и графиков. Для отключения или повторного включения логгирования сигналов:
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).
Выберите Data Import/Export.
На панели Signals установите флажок Signal logging, чтобы включить ведение журнала для графика. Чтобы отключить логгирование, снимите флажок.
(Необязательно) Задайте пользовательское имя для объекта логгирования сигналов. Имя по умолчанию logsout
. Используя этот объект, вы можете получить доступ к данным журнала в переменном Рабочем пространстве MATLAB. Для получения дополнительной информации смотрите Экспорт данных сигнала с использованием регистрации сигналов (Simulink).
(Необязательно) В поле Format выберите формат логгирования сигналов. Опции включают:
Array
Structure
Structure with time
Dataset
Настройкой по умолчанию является Dataset
. Для получения дополнительной информации смотрите Время, Состояние и Формат выходных данных (Simulink).
Нажмите OK.
Можно задать свойства регистрации для состояний, локальных данных и выходных данных из графика, через диалоговое окно Stateflow Signal Logging или программно из командной строки.
Сконфигурируйте свойства регистрации для одного состояния или объекта данных за раз через Property Inspector, Model Explorer или диалоговое окно свойств для состояния или объекта данных. Выберите вкладку Logging и измените свойства по мере необходимости. Для получения дополнительной информации см. раздел Свойств ведения журнала».
Для примера, в sf_semantics_hotel_checkin
модель:
Откройте Hotel
график.
Откройте панель «Символы». На вкладке Simulation, в Prepare, нажмите Symbols Pane.
Откройте Property Inspector. На вкладке Simulation, в Prepare, нажмите Property Inspector.
Сконфигурируйте service
локальные данные для логгирования.
На панели «Символы» выберите service
.
В Property Inspector в разделе Logging установите флажок Log signal data.
Сконфигурируйте Dining_area
состояние для логгирования.
В редакторе Stateflow выберите Dining_area
состояние.
На вкладке Simulation, в Prepare, выберите Log Self Activity. Кроме того, в Property Inspector в разделе Logging установите флажок Log self activity.
По умолчанию логгирующее имя для этого состояния является иерархическим именем сигнала Check_in.Checked_in.Executive_suite.Dining_area
. Чтобы назначить более короткое имя состоянию, установите Logging Name равным Custom
и вводите Dining Room
.
Сконфигурируйте свойства регистрации для нескольких состояний и объектов данных в диалоговом окне Stateflow Signal Logging. Выберите объекты графика для регистрации в списке всех состояний, локальных и выходных данных. Для получения дополнительной информации см. раздел Свойств ведения журнала».
Для примера, в sf_semantics_hotel_checkin
модель:
Откройте Hotel
график.
Для регистрации нескольких сигналов нажмите и удерживайте сдвиг, чтобы выбрать состояния для логгирования. На вкладке Simulation, под Prepare, выберите Log Self Activity.
Логгирующий значок помечает записанные сигналы в модели.
Можно добавить порт выхода для мониторинга графика активности. В редакторе Stateflow, на вкладке Simulation, нажмите Add Output Port. Новый порт появится на диаграмме Stateflow. Подключите этот порт к средству просмотра для контроля дочерней активности графика.
Сконфигурируйте свойства регистрации для состояний и объектов данных программно из командной строки. Чтобы включить ведение журнала для состояний или объекта данных, получите указатель для объекта и установите его LoggingInfo.DataLogging
свойство к 1
. Для получения дополнительной информации о программном интерфейсе Stateflow, смотрите Обзор API Stateflow.
Для примера, в sf_semantics_hotel_checkin
модель:
Откройте Hotel
график.
Получите указатель на Dining_area
состояние:
rt = sfroot; diningState = rt.find('-isa','Stateflow.State','Name','Dining_area');
Получите указатель для локальных данных service
:
serviceData = rt.find('-isa','Stateflow.Data','Name','service');
Включите ведение журнала для Dining_area
состояние и service
данные:
diningState.LoggingInfo.DataLogging = 1; serviceData.LoggingInfo.DataLogging = 1;
Измените имя регистрации Dining_area
состояние на пользовательское имя Dining Room
:
% Enable custom naming diningState.LoggingInfo.NameMode = 'Custom'; % Enter the custom name diningState.LoggingInfo.LoggingName = 'Dining Room';
Во время симуляции Stateflow сохраняет записанные данные в Simulink.SimulationData.Dataset
(Simulink) объект логгирования сигналов.
Например, предположим, что вы конфигурируете sf_semantics_hotel_checkin
модель, чтобы логгировать service
локальные данные и активность Dining_area
состояние. После запуска симуляции вы регистрируетесь в отеле, переключая первый переключатель и заказывая обслуживание в номере несколько раз, переключая второй переключатель. После остановки симуляции можно просмотреть записанные данные через Данные Моделирования Inspector, Logic Analyzer или в рабочем пространстве MATLAB.
Когда вы моделируете модель, значок Simulation Data Inspector подсвечивается, чтобы указать, что у него есть новые данные моделирования.
Чтобы открыть Simulation Data Inspector, на вкладке Simulation, щелкните значок.
Смотрите и сравните сигналы, записанные во время симуляции. См. Данные моделирования Inspector (Simulink).
Когда вы моделируете модель, значок Logic Analyzer подсвечивается, чтобы указать, что у него есть новые данные моделирования. Для использования Logic Analyzer необходимо иметь DSP System Toolbox™ или SoC- Blockset™.
Чтобы открыть Logic Analyzer, на вкладке Simulation, щелкните значок.
Просмотрите, измерите и сравните состояния, зарегистрированные во время симуляции. См. раздел Logic Analyzer (DSP System Toolbox).
Для доступа к объекту логгирования сигналов в командной строке MATLAB введите:
logsout = out.logsout
logsout =
Simulink.SimulationData.Dataset 'logsout' with 2 elements
Name BlockPath
___________ ________________________________
1 [1x1 State] Dining Room sf_semantics_hotel_checkin/Hotel
2 [1x1 Data ] service sf_semantics_hotel_checkin/Hotel
Для доступа к записанным в журнал элементам используйте get
(Simulink) метод. Вы можете получить доступ к записанным элементам по имени, индексу или пути к блоку.
diningLog = logsout.get('Dining Room')
diningLog =
Stateflow.SimulationData.State
Package: Stateflow.SimulationData
Properties:
Name: 'Dining Room'
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
Values: [1×1 timeseries]
serviceLog = logsout.get('service')
serviceLog =
Stateflow.SimulationData.Data
Package: Stateflow.SimulationData
Properties:
Name: 'service'
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
Values: [1×1 timeseries]
Для доступа к записанным данным и времени каждого записанного элемента используйте Values.Data
и Values.Time
свойства. Для примера:
Расположите записанные данные в табличной форме с помощью table
функция.
T1 = table(diningLog.Values.Time,diningLog.Values.Data); T1.Properties.VariableNames = {'Time','Data'}
T1 =
6×2 table
Time Data
__________ ____
0 0
1.8607e+06 1
1.9653e+06 0
1.9653e+06 1
1.9653e+06 0
2.2912e+06 1
T2 = table(serviceLog.Values.Time,serviceLog.Values.Data); T2.Properties.VariableNames = {'Time','Data'}
T2 =
6×2 table
Time Data
__________ ____
1.7076e+06 0
1.8607e+06 1
1.9653e+06 2
1.9653e+06 3
1.9653e+06 4
2.2912e+06 5
Просмотрите записанные данные в окне рисунка с помощью plot
функция.
X = serviceLog.Values.Time; Y = serviceLog.Values.Data; plot(X,Y,'-o') xlabel('Time') ylabel('Data')
Экспорт записанных данных в Excel® электронная таблица путем передачи массива записанных значений в xlswrite
функция:
A = [double(diningLog.Values.Time) double(diningLog.Values.Data)];
xlswrite('dining_log.xls',A);
Stateflow регистрирует каждое обновление многомерного сигнала как одно изменение. Например, обновление двух элементов массива матрицы A
отдельно
A[1][1] = 1; A[1][2] = 1;
A
в одной команде A = 1;
A[i][j] = 1
для всех значений i
и j
.При симуляции моделей во режиме external mode логгирование данных Stateflow не поддерживается.
Если вы регистрируете действие состояния или данные из графика с Fast Restart включенным, любой прогон после первого прогона дублирует первые точки записанных данных. Когда вы запускаете алгоритмы, которые обрабатывают эти точки данных, вы должны принять во внимание это дублирование.
plot
| Stateflow.SimulationData.Data
| Stateflow.SimulationData.State
| table
| xlswrite
| get
(Simulink) | Simulink.SimulationData.Dataset
(Simulink)