В Simulink® можно создать собственные библиотеки блоков как способ снова использовать функциональность блоков или подсистем в одной или нескольких моделях. Точно так же можно снова использовать набор алгоритмов Stateflow® путем инкапсуляции функциональности в графике библиотеки.
Как с другими библиотеками блока Simulink, можно специализировать каждый экземпляр библиотечных блоков графика в модели, чтобы использовать различные типы данных, шаги расчета и другие свойства. Экземпляры библиотеки, которые наследовали те же свойства, могут снова использовать сгенерированный код.
Для получения дополнительной информации о библиотеках блока Simulink, смотрите Пользовательские Библиотеки (Simulink).
Стройте диаграмму экземпляры наследовали свойства логгирования от графика библиотеки, до которого они соединяются. Можно заменить свойства логгирования в экземпляре, но только для сигналов вы выбираете в библиотеке. Вы не можете выбрать дополнительные сигналы регистрировать от экземпляра.
Чтобы заменить свойства регистрируемых сигналов в экземплярах графика, используйте один из следующих подходов.
Подход | Как использовать |
---|---|
Simulink Signal, Регистрирующий Селекторное диалоговое окно | Смотрите, что переопределение регистрирует свойства с селектором логгирования |
Интерфейс командной строки | Смотрите, что переопределение регистрирует свойства с API командной строки |
Модель sf_atomic_sensor_pair
симулирует избыточную пару датчика как атомарные субдиаграммы Sensor1
и Sensor2
в графике RedundantSensors
. Каждая атомарная субдиаграмма содержит экземпляры состояний Fail
, FailOnce
, и OK
от библиотеки строят диаграмму sf_atomic_sensor_lib
.
Откройте библиотеку sf_atomic_sensor_lib
в качестве примера.
Разблокируйте библиотеку. Во вкладке Simulation нажмите Locked Library.
В Редакторе Simulink выберите Stateflow SingleSensor
график. Во вкладке Simulation нажмите Log States from List.
В диалоговом окне Stateflow Signal Logging, набор следующие свойства логгирования, затем нажимают OK.
Для сигнала: | Что задать: |
---|---|
Fail |
|
FailOnce |
|
OK |
|
Откройте модель sf_atomic_sensor_pair
. Эта модель содержит два экземпляра графика библиотеки.
Откройте диалоговое окно Model Configuration Parameters.
В панели Data Import/Export нажмите Configure Signals to Log, чтобы открыть Селектор Логгирования Simulink Signal.
В панели Model Hierarchy расширьте RedundantSensors
, и нажмите Sensor1
и Sensor2
.
Каждый экземпляр наследовал свойства логгирования от графика библиотеки. Например:
Теперь замените некоторые свойства логгирования для Sensor1
:
В панели Model Hierarchy выберите Sensor1
.
Измените Logging Mode в Override signals
.
Селектор снимает все флажки DataLogging для модели.
Позвольте регистрировать только для Fail
и FailOnce
состояния в Sensor1
:
Выберите DataLogging для этих двух сигналов. Оставьте DataLogging очищенным для OK
сигнал.
Добавьте текст Sensor1
к логгированию называет для Fail
и FailOnce
:
Дважды кликните имена логгирования для сигналов Fail
и FailOnce
, и переименуйте их LogFailSensor1
и LogFailOnceSensor1
, соответственно.
Настройки должны выглядеть так:
Откройте библиотеку sf_atomic_sensor_lib
в качестве примера.
Регистрируйте сигналы 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 |
Откройте модель sf_atomic_sensor_pair
. Эта модель содержит два экземпляра графика библиотеки.
Создайте 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
Убедитесь тот LoggingMode
равняется 'OverrideSignals'
.
Создайте блок 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') |
Получите индекс каждого регистрируемого сигнала в Simulink.SimulationData.BlockPath
объект.
Получить индекс для сигналов Fail
, FailOnce
, и OK
:
failidx = mi.findSignal(failPath); failOnceidx = mi.findSignal(failOncePath); OKidx = mi.findSignal(OKPath); |
Замените некоторые свойства логгирования для сигналов в Sensor1
:
Отключите логгирование для OK
сигнала:
mi.Signals(OKidx).LoggingInfo.DataLogging = 0;
Добавьте текст 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'; |
Примените изменения:
set_param(bdroot, 'DataLoggingOverride', mi);
Simulink.SimulationData.BlockPath
(Simulink) | Simulink.SimulationData.ModelLoggingInfo
(Simulink)