exponenta event banner

Данные журнала в диаграммах библиотеки

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

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

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

Как параметры журнала библиотеки влияют на связанные экземпляры

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

Переопределить свойства ведения журнала в экземплярах диаграммы

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

ПодходКак использовать
Диалоговое окно выбора регистрации сигналов SimulinkСм. раздел Переопределение свойств ведения журнала с помощью селектора ведения журнала
Интерфейс командной строкиСм. раздел Переопределение свойств ведения журнала с помощью 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 выберите поток состояния SingleSensor диаграмма. На вкладке Моделирование (Simulation) щелкните Состояние журнала из списка (Log States from List).

  4. В диалоговом окне «Регистрация сигналов статофлоу» задайте следующие свойства регистрации и нажмите кнопку «ОК».

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

    • Изменить имя ведения журнала на пользовательское имя LogFail.

    • Нажмите кнопку «Применить».

    FailOnce
    • Установите флажок Log signal data (Данные сигнала регистрации).

    • Изменить имя ведения журнала на пользовательское имя LogFailOnce.

    • Нажмите кнопку «Применить».

    OK
    • Установите флажок Log signal data (Данные сигнала регистрации).

    • Изменить имя ведения журнала на пользовательское имя LogOK.

    • Нажмите кнопку «Применить».

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

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

  7. На панели Импорт/экспорт данных (Data Import/Export) щелкните Настроить сигналы для регистрации (Configure Signals to Log), чтобы открыть селектор регистрации сигналов Simulink.

  8. На панели Иерархия модели (Model Hierarchy) разверните RedundantSensorsи нажмите Sensor1 и Sensor2.

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

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

    1. На панели Иерархия модели (Model Hierarchy) выберите Sensor1.

    2. Изменить режим ведения журнала на 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. Создайте путь блокировки для каждого зарегистрированного сигнала, свойства которого требуется переопределить.

    Для доступа к сигналам внутри диаграмм 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) | (Симулинк)