Determine whether model logs as specified in model or uses override settings

您所在的位置:网站首页 INSmodel Determine whether model logs as specified in model or uses override settings

Determine whether model logs as specified in model or uses override settings

2023-03-22 17:04| 来源: 网络整理| 查看: 265

Open Live Script

You can use the setLogAsSpecifiedInModel function to override signal logging settings specified in a model. For example, you can log only the top model or only a referenced model in a model hierarchy. The model sldemo_mdlref_bus contains a Model block named CounterA that references the model sldemo_mdlref_counter_bus. In total, four signals are marked for logging. The top model has three signals marked for logging: COUNTERBUS, INCREMENTBUS, and OUTERDATA. The referenced model has one signal marked for logging: INNERDATA.

mdl = 'sldemo_mdlref_bus'; mdlInner = 'sldemo_mdlref_bus/CounterA'; open_system(mdl)

Create an empty Simulink.SimulationData.ModelLoggingInfo object so that no signals are logged when the logging mode is set to the override settings specified in the Signals property.

mdlInfo = Simulink.SimulationData.ModelLoggingInfo(mdl);

You can use the setLogAsSpecifiedInModel function to log only signals in the top model using the logging settings specified in that model. Set the outer model to log signals as specified in the model. Then, set the inner model to use override settings. Since the Signals property vector is empty, no signals are logged when override settings are applied.

mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdl,true); mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdlInner,false);

The getLogAsSpecifiedInModel function returns the logging mode.

outerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdl)outerLogMode = logical 1 innerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdlInner)innerLogMode = logical 0

Apply the model override object settings. Then, simulate the model. The software logs only those signals marked for logging in the top model.

set_param(mdl,'DataLoggingOverride',mdlInfo); sim(mdl); topOuttopOut = Simulink.SimulationData.Dataset 'topOut' with 3 elements Name BlockPath ____________ _____________________________________ 1 [1x1 Signal] COUNTERBUS sldemo_mdlref_bus/Concatenate 2 [1x1 Signal] OUTERDATA sldemo_mdlref_bus/CounterA 3 [1x1 Signal] INCREMENTBUS sldemo_mdlref_bus/IncrementBusCreator - Use braces { } to access, modify, or add elements using index.

You can also use the setLogAsSpecifiedInModel function to log only signals in the referenced model using the logging settings specified in that model. Set the outer model to use override settings. Then, set the inner model to log signals as specified in the model.

mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdl,false); mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdlInner,true);

To verify that the logging mode for the top model and inner model have changed, you can use the getLogAsSpecifiedInModel function .

outerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdl)outerLogMode = logical 0 innerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdlInner)innerLogMode = logical 1

Apply the model override object settings. Then, simulate the model. This time, the software logs only the INNERDATA signal.

set_param(mdl,'DataLoggingOverride',mdlInfo); sim(mdl); topOuttopOut = Simulink.SimulationData.Dataset 'topOut' with 1 element Name BlockPath _________ ________________________________________ 1 [1x1 Signal] INNERDATA ...erA|sldemo_mdlref_counter_bus/COUNTER - Use braces { } to access, modify, or add elements using index.


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3