Данные логов в графиках библиотеки

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

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

Для получения дополнительной информации о библиотеках блока Simulink, смотрите Пользовательские Библиотеки.

Как логарифмическое влияние настроек библиотеки соединенные экземпляры

Стройте диаграмму экземпляры наследовали свойства логгирования от графика библиотеки, до которого они соединяются. Можно заменить свойства логгирования в экземпляре, но только для сигналов вы выбираете в библиотеке. Вы не можете выбрать дополнительные сигналы регистрировать от экземпляра.

Замените свойства логгирования в экземплярах графика

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

ПодходКак использовать
Simulink Signal, Регистрирующий Селекторное диалоговое окноСмотрите, что переопределение регистрирует свойства с селектором логгирования
Интерфейс командной строкиСмотрите, что переопределение регистрирует свойства с 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.

  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, соответственно.

    Настройки должны выглядеть так:

Замените свойства логгирования с 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]

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

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

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

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

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

    К сигналам доступа в диаграммах 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);

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

|