Журнал выхода симуляции для состояний и данных

Когда вы симулируете Stateflow® график в Simulink® модель, можно записать значения для локальных, выходных и активных данных о состоянии в Simulink.SimulationData.Dataset объект. После симуляции вы можете получить доступ к этому объекту через Данные моделирования Inspector, Логический анализатор или в MATLAB® рабочей области. Рабочий процесс для логгирования данных:

  1. Включите логгирование сигнала для графика и выберите формат логгирования. См. «Включение логгирования сигналов».

  2. Сконфигурируйте состояния и данные для логгирования сигналов. См. раздел Конфигурирование состояний и данных для логгирования.

  3. Моделируйте график.

  4. Доступ к записанным в записанные данные. Смотрите Данные Регистрации Сигнала Доступа.

Включите логгирование сигналов

Логгирование сигналов включено по умолчанию для моделей и графиков. Для отключения или повторного включения логгирования сигналов:

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).

  2. Выберите Data Import/Export.

  3. На панели Signals установите флажок Signal logging, чтобы включить ведение журнала для графика. Чтобы отключить логгирование, снимите флажок.

  4. (Необязательно) Задайте пользовательское имя для объекта логгирования сигналов. Имя по умолчанию logsout. Используя этот объект, вы можете получить доступ к данным журнала в переменном Рабочем пространстве MATLAB. Для получения дополнительной информации смотрите Экспорт данных сигнала с использованием регистрации сигналов (Simulink).

  5. (Необязательно) В поле Format выберите формат логгирования сигналов. Опции включают:

    • Array

    • Structure

    • Structure with time

    • Dataset

    Настройкой по умолчанию является Dataset. Для получения дополнительной информации смотрите Время, Состояние и Формат выходных данных (Simulink).

  6. Нажмите OK.

Конфигурирование состояний и данных для логгирования

Можно задать свойства регистрации для состояний, локальных данных и выходных данных из графика, через диалоговое окно Stateflow Signal Logging или программно из командной строки.

Логгирование отдельных состояний и данных

Сконфигурируйте свойства регистрации для одного состояния или объекта данных за раз через Property Inspector, Model Explorer или диалоговое окно свойств для состояния или объекта данных. Выберите вкладку Logging и измените свойства по мере необходимости. Для получения дополнительной информации см. раздел Свойств ведения журнала».

Для примера, в sf_semantics_hotel_checkin модель:

  1. Откройте Hotel график.

  2. Откройте панель «Символы». На вкладке Simulation, в Prepare, нажмите Symbols Pane.

  3. Откройте Property Inspector. На вкладке Simulation, в Prepare, нажмите Property Inspector.

  4. Сконфигурируйте service локальные данные для логгирования.

    1. На панели «Символы» выберите service.

    2. В Property Inspector в разделе Logging установите флажок Log signal data.

  5. Сконфигурируйте Dining_area состояние для логгирования.

    1. В редакторе Stateflow выберите Dining_area состояние.

    2. На вкладке Simulation, в Prepare, выберите Log Self Activity. Кроме того, в Property Inspector в разделе Logging установите флажок Log self activity.

    3. По умолчанию логгирующее имя для этого состояния является иерархическим именем сигнала Check_in.Checked_in.Executive_suite.Dining_area. Чтобы назначить более короткое имя состоянию, установите Logging Name равным Custom и вводите Dining Room.

Логгирование нескольких сигналов

Сконфигурируйте свойства регистрации для нескольких состояний и объектов данных в диалоговом окне Stateflow Signal Logging. Выберите объекты графика для регистрации в списке всех состояний, локальных и выходных данных. Для получения дополнительной информации см. раздел Свойств ведения журнала».

Для примера, в sf_semantics_hotel_checkin модель:

  1. Откройте Hotel график.

  2. Для регистрации нескольких сигналов нажмите и удерживайте сдвиг, чтобы выбрать состояния для логгирования. На вкладке Simulation, под Prepare, выберите Log Self Activity.

  3. Логгирующий значок помечает записанные сигналы в модели.

Добавление Выхода порта

Можно добавить порт выхода для мониторинга графика активности. В редакторе Stateflow, на вкладке Simulation, нажмите Add Output Port. Новый порт появится на диаграмме Stateflow. Подключите этот порт к средству просмотра для контроля дочерней активности графика.

Журнал сигналов графика при помощи Command-Line API

Сконфигурируйте свойства регистрации для состояний и объектов данных программно из командной строки. Чтобы включить ведение журнала для состояний или объекта данных, получите указатель для объекта и установите его LoggingInfo.DataLogging свойство к 1. Для получения дополнительной информации о программном интерфейсе Stateflow, смотрите Обзор API Stateflow.

Для примера, в sf_semantics_hotel_checkin модель:

  1. Откройте Hotel график.

  2. Получите указатель на Dining_area состояние:

    rt = sfroot;
    diningState = rt.find('-isa','Stateflow.State','Name','Dining_area');

  3. Получите указатель для локальных данных service:

    serviceData = rt.find('-isa','Stateflow.Data','Name','service');

  4. Включите ведение журнала для Dining_area состояние и service данные:

    diningState.LoggingInfo.DataLogging = 1;
    serviceData.LoggingInfo.DataLogging = 1;

  5. Измените имя регистрации 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.

Просмотр записанных данных через Данные моделирования Inspector

Когда вы моделируете модель, значок Simulation Data Inspector подсвечивается, чтобы указать, что у него есть новые данные моделирования.

  1. Чтобы открыть Simulation Data Inspector, на вкладке Simulation, щелкните значок.

  2. Смотрите и сравните сигналы, записанные во время симуляции. См. Данные моделирования Inspector (Simulink).

Просмотр записанных данных через Logic Analyzer

Когда вы моделируете модель, значок Logic Analyzer подсвечивается, чтобы указать, что у него есть новые данные моделирования. Для использования Logic Analyzer необходимо иметь DSP System Toolbox™ или SoC- Blockset™.

  1. Чтобы открыть Logic Analyzer, на вкладке Simulation, щелкните значок.Logic Analyzer icon

  2. Просмотрите, измерите и сравните состояния, зарегистрированные во время симуляции. См. раздел Logic Analyzer (DSP System Toolbox).

Просмотр записанных данных в рабочем пространстве MATLAB

  1. Для доступа к объекту логгирования сигналов в командной строке 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
    

  2. Для доступа к записанным в журнал элементам используйте 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]
    

  3. Для доступа к записанным данным и времени каждого записанного элемента используйте 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 включенным, любой прогон после первого прогона дублирует первые точки записанных данных. Когда вы запускаете алгоритмы, которые обрабатывают эти точки данных, вы должны принять во внимание это дублирование.

См. также

| | | | | (Simulink) | (Simulink)

Похожие темы