Журнал данных в библиотечных Графиках

В Simulink®можно создать собственные библиотеки блоков как способ повторно использовать функциональность блоков или подсистем в одной или нескольких моделях. Точно так же можно повторно использовать набор Stateflow® алгоритмы путем инкапсуляции функциональности в библиотечный график.

Как и в других библиотеках блоков Simulink, можно специализироваться на каждом образце библиотечных блоков графиков в модели, чтобы использовать различные типы данных, шаги расчета и другие свойства. Образцы библиотеки, которые наследуют одни и те же свойства, могут повторно использовать сгенерированный код.

Дополнительные сведения о библиотеках блоков Simulink см. в разделе «Пользовательские библиотеки» (Simulink).

Как настройки журнала библиотеки влияют на связанные образцы

График образцов наследование свойств ведения журнала из библиотечного графика, с которым они связаны. Вы можете переопределить свойства регистрации в образце, но только для сигналов, которые вы выбираете в библиотеке. Вы не можете выбрать дополнительные сигналы для регистрации из образца.

Переопределение свойств журнала в образцах графика

Чтобы переопределить свойства записанных сигналов в образцах графика, используйте один из следующих подходов.

ПодходКак использовать
Диалоговое окно Simulink Signal Logging SelectorСм. «Переопределение свойств логгирования с помощью селектора логгирования»
Интерфейс командной строкиСмотрите Переопределение свойств регистрации с помощью Command-Line API

Переопределение свойств регистрации в атомарных субдиаграммах

Модель sf_atomic_sensor_pair моделирует избыточную пару датчиков как атомарные субдиаграммы Sensor1 и Sensor2 на графике RedundantSensors. Каждая атомарная субдиаграмма содержит образцы состояний Fail, FailOnce, и OK из библиотеки графика sf_atomic_sensor_lib.

Переопределите свойства логгирования с помощью селектора логгирования

  1. Откройте библиотеку примеров sf_atomic_sensor_lib.

  2. Разблокируйте библиотеку. На вкладке Simulation нажмите Locked Library.

  3. В редакторе Simulink выберите Stateflow SingleSensor график. На вкладке Simulation нажмите Log States from List.

  4. В диалоговом окне Stateflow Signal Logging задайте следующие свойства логгирования, затем нажмите OK.

    Для сигнала:Что указать:
    Fail
    • Установите флажок Log signal data.

    • Измените Logging name на пользовательское имя LogFail.

    • Нажмите Apply.

    FailOnce
    • Установите флажок Log signal data.

    • Измените Logging name на пользовательское имя LogFailOnce.

    • Нажмите Apply.

    OK
    • Установите флажок Log signal data.

    • Измените Logging name на пользовательское имя LogOK.

    • Нажмите Apply.

  5. Откройте модель sf_atomic_sensor_pair. Эта модель содержит два образцов библиотечных графиков.

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

  7. На панели Data Import/Export щелкните Configure Signals to Log, чтобы открыть Simulink Signal Logging Selector.

  8. На панели Model Hierarchy разверните RedundantSensors, и нажмите Sensor1 и Sensor2.

    Каждый образец наследует свойства ведения журнала от библиотечного графика. Для примера:

  9. Теперь переопределите некоторые свойства журнала для Sensor1:

    1. На панели Model Hierarchy выберите Sensor1.

    2. Измените Logging Mode на Override signals.

      Селектор снимает все DataLogging флажки для модели.

    3. Включите ведение журнала только для Fail и FailOnce состояния в Sensor1:

      Выберите DataLogging для этих двух сигналов. Оставьте DataLogging очищенным для OK сигнал.

    4. Добавьте текст Sensor1 к именам журналов для Fail и FailOnce:

      Дважды кликните имена регистрации для сигналов Fail и FailOnce, и переименовать их LogFailSensor1 и LogFailOnceSensor1, соответственно.

    Настройки должны выглядеть следующим образом:

Переопределите свойства регистрации с помощью Command-Line API

  1. Откройте библиотеку примеров sf_atomic_sensor_lib.

  2. Логгирование сигналов Fail, FailOnce, и OK в SingleSensor график с помощью следующих команд:

    % Get states in the SingleSensor chart
    rt=sfroot;
    states = rt.find('-isa', 'Stateflow.State');
    
    % Enable logging for each state
    for i = 1: length(states)
       states(i).LoggingInfo.DataLogging = 1;
    end
    
  3. Откройте модель sf_atomic_sensor_pair. Эта модель содержит два образцов библиотечных графиков.

  4. Создайте ModelLoggingInfo объект для модели.

    Этот объект содержит вектор Signals который хранит все записанные сигналы.

    mi = Simulink.SimulationData.ModelLoggingInfo. ...
    createFromModel('sf_atomic_sensor_pair')
    

    Результатом является:

    mi = 
    
      Simulink.SimulationData.ModelLoggingInfo
      Package: Simulink.SimulationData
    
      Properties:
                         Model: 'sf_atomic_sensor_pair'
                   LoggingMode: 'OverrideSignals'
        LogAsSpecifiedByModels: {}
                       Signals: [1x6 Simulink.SimulationData.SignalLoggingInfo]

    The Signals вектор содержит сигналы, отмеченные для логгирования в библиотечном графике:

    • Библиотечные образцы Fail, FailOnce, и OK состояния в атомарной субдиаграмме Sensor1

    • Библиотечные образцы Fail, FailOnce, и OK состояния в атомарной субдиаграмме Sensor2

  5. Убедитесь, что LoggingMode равен 'OverrideSignals'.

  6. Создайте блок путь к каждому записанному сигналу, свойства которого вы хотите переопределить.

    Для доступа к сигналам внутри диаграмм Stateflow используйте Simulink.SimulationData.BlockPath(paths, subpath), где subpath представляет сигнал внутри графика.

    Чтобы создать блочные пути для сигналов Fail, FailOnce, и OK в атомарной субдиаграмме Sensor1 в RedundantSensors график:

    failPath = Simulink.SimulationData. ...
    BlockPath('sf_atomic_sensor_pair/RedundantSensors/Sensor1','Fail')
    
    failOncePath = Simulink.SimulationData. ...
    BlockPath('sf_atomic_sensor_pair/RedundantSensors/Sensor1','FailOnce')
    
    OKPath = Simulink.SimulationData. ...
    BlockPath('sf_atomic_sensor_pair/RedundantSensors/Sensor1','OK')
  7. Получите индекс каждого зарегистрированного сигнала в Simulink.SimulationData.BlockPath объект.

    Чтобы получить индекс для сигналов Fail, FailOnce, и OK:

    failidx = mi.findSignal(failPath);
    failOnceidx = mi.findSignal(failOncePath);
    OKidx = mi.findSignal(OKPath);
  8. Переопределите некоторые свойства регистрации для сигналов в Sensor1:

    1. Отключите логгирование для сигнальных OK:

      mi.Signals(OKidx).LoggingInfo.DataLogging = 0;
    2. Добавьте текст Sensor1 к именам журналов для Fail и FailOnce:

      % Enable custom naming
      mi.Signals(failidx).LoggingInfo.NameMode = 1;
      mi.Signals(failOnceidx).LoggingInfo.NameMode = 1;
      
      % Enter the custom name
      mi.Signals(failidx).LoggingInfo.LoggingName = 'LogFailSensor1';
      mi.Signals(failOnceidx).LoggingInfo.LoggingName = 'LogFailOnceSensor1';
  9. Применить изменения:

    set_param(bdroot, 'DataLoggingOverride', mi);

См. также

(Simulink) | (Simulink)