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

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

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

Для получения дополнительной информации о библиотеках блока 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);

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

(Simulink) | (Simulink)