Регистрируйте симуляцию Выход для состояний и данных

Когда вы симулируете график Stateflow® в модели Simulink®, можно регистрировать значения для локальной переменной, вывести, и активные данные состояния в Simulink.SimulationData.Dataset объект. После симуляции можно получить доступ к этому объекту через Инспектора Данных моделирования или в рабочей области 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 и измените свойства по мере необходимости. Для получения дополнительной информации смотрите Logging Properties.

Например, в 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. Выберите который объекты диаграммы регистрировать из списка всех состояний, локальных, и выходных данных. Для получения дополнительной информации смотрите Logging Properties.

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

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

  2. Чтобы регистрировать несколько сигналов, нажмите и содержите сдвиг, чтобы выбрать состояния для логгирования. Во вкладке Simulation, под Prepare, выбирают Log Self Activity.

  3. Метки значка логгирования регистрировали сигналы в модели.

Добавьте выходной порт

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

Регистрируйте сигналы графика при помощи API командной строки

Сконфигурируйте свойства логгирования для состояний и объектов данных программно из командной строки. Чтобы позволить регистрировать для состояния или объект данных, получите указатель для объекта и установите его LoggingInfo.DataLogging свойство к 1. Для получения дополнительной информации о 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 объект логгирования сигнала.

Например, предположите, что вы конфигурируете sf_semantics_hotel_checkin модель, чтобы регистрировать service локальные данные и действие Dining_area состояние. После запуска симуляции вы зарегистрировались в отеле путем переключения первого переключателя и заказываете обслуживание номеров многократно путем переключения второго переключателя. После остановки симуляции можно просмотреть записанные данные через Инспектора Данных моделирования или в рабочем пространстве MATLAB.

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

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

  1. Чтобы открыть Инспектора Данных моделирования, во вкладке Simulation, кликают по значку.

  2. Смотрите и сравните сигналы, регистрируемые в процессе моделирования. Смотрите Инспектора Данных моделирования.

Просмотрите записанные данные в рабочем пространстве 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 метод. Можно получить доступ к регистрируемым элементам по наименованию, индексу или блоку path.

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

Смотрите также

| | | | | |

Похожие темы