抑制诊断消息以编程方式
下面的例子展示了如何通过编程方式管理诊断方案。
抑制诊断消息以编程方式
这个例子展示了如何访问仿真元数据管理诊断方案和以编程方式恢复诊断消息。
创建一个新的文件夹,复制相关文件
例如,创建一个本地工作目录
c: \ diagnostic_suppressor_demo
。改变
docroot \工具箱\仿真软金宝app件\例子
文件夹中。在MATLAB®命令行输入:cd (fullfile (docroot,“工具箱”,“模型”,金宝app“示例”))
复制
getDiagnosticObjects.m
,suppressor_script.m
,Suppressor_CLI_Demo.slx
文件下载到本地工作目录。的
getDiagnosticObjects.m
函数查询仿真元数据访问期间被诊断仿真。的suppressor_script.m
脚本包含命令的抑制和恢复诊断Suppressor_CLI_Demo
模型。
开放和模拟模型
打开模型。访问金宝appSimulink.SimulationMetadata
,设置ReturnWorkspaceOutputs
参数值“上”
。模拟模型。
模型=“Suppressor_CLI_Demo”;open_system(模型);set_param(模型,“ReturnWorkspaceOutputs”,“上”);= sim(模型);
从仿真得到消息标识符元数据
找到诊断消息标识符的名称使用模拟存储在元数据MSLDiagnostic
对象。
如果(存在(“出”,“var”))diag_objects = getDiagnosticObjects(出);结束
几个警告时生成的仿真,包括一个饱和的数据类型转换块。查询diag_objects
变量标识符的更多信息。
diag_objects (5)
ans = MSLDiagnostic属性:标识符:“SimulinkFixedPoint: uti金宝appl: Saturationoccurred”的信息:“发生饱和。这源于“Suppressor_CLI_Demo /反对…”道路:{“Suppressor_CLI_Demo /转换/ FixPt FixPt3”}:{}栈:[0×1 struct]
抑制饱和诊断在一块
使用金宝appSimulink.suppressDiagnostic
功能抑制的饱和诊断数据类型转换块。模拟模型。
金宝appSimulink.suppressDiagnostic (“Suppressor_CLI_Demo /转换/ FixPt FixPt3”,…“金宝appSimulinkFixedPoint: util: Saturationoccurred”);set_param(模型,“SimulationCommand”,“开始”);
恢复饱和诊断
使用金宝appSimulink.restoreDiagnostic
功能恢复饱和诊断相同的块。
金宝appSimulink.restoreDiagnostic (“Suppressor_CLI_Demo /转换/ FixPt FixPt3”,…“金宝appSimulinkFixedPoint: util: Saturationoccurred”);set_param(模型,“SimulationCommand”,“开始”);
抑制多个源诊断
可以抑制多个警告在单个源通过创建一个单元阵列的消息标识符。压制精度损失和参数下溢的警告常数块,一个
在模型中,。
诊断接头= {“金宝appSimulinkFixedPoint: util: fxpParameterPrecisionLoss”,…“金宝appSimulinkFixedPoint: util: fxpParameterUnderflow”};金宝appSimulink.suppressDiagnostic (“Suppressor_CLI_Demo /一个”、诊断接头);set_param(模型,“SimulationCommand”,“开始”);
恢复所有诊断在一块
恢复所有诊断指定块使用金宝appSimulink.restoreDiagnostic
函数。
金宝appSimulink.restoreDiagnostic (“Suppressor_CLI_Demo /一个”);set_param(模型,“SimulationCommand”,“开始”);
抑制一个诊断在许多块
你可以抑制一个或多个诊断在许多块。例如,使用find_system
函数创建一个单元阵列数据类型转换块在一个系统中,并抑制所有饱和警告在指定的块。
dtc_blocks = find_system (“Suppressor_CLI_Demo /转换”,…“BlockType”,“DataTypeConversion”);金宝appSimulink.suppressDiagnostic (dtc_blocks“金宝appSimulinkFixedPoint: util: Saturationoccurred”);set_param(模型,“SimulationCommand”,“开始”);
恢复所有诊断子系统
您还可以使用金宝appSimulink.restoreDiagnostic
函数在指定恢复所有诊断子系统。
金宝appSimulink.restoreDiagnostic (“Suppressor_CLI_Demo /转换”,…“FindAll”,“上”);set_param(模型,“SimulationCommand”,“开始”);
添加评论和用户信息抑制
一个SuppressedDiagnostic
对象包含信息的源头抑制以及抑制诊断消息标识符。你还可以包括评论,最后修改的用户的名义压制。
对象= Simul金宝appink.SuppressedDiagnostic (“Suppressor_CLI_Demo /转换/ FixPt FixPt1”,…“金宝appSimulinkFixedPoint: util: Saturationoccurred”);对象。评论=“回顾:John Doe”;对象。LastModifiedBy =“乔笨蛋”set_param(模型,“SimulationCommand”,“开始”);
对象与属性= SuppressedDiagnostic:来源:“Suppressor_CLI_Demo /转换/ FixPt FixPt1”Id:“SimulinkFixedPoint: util: Satura金宝apptionoccurred”LastModifiedBy:“乔笨蛋”评论:“回顾:John Doe”LastModified:“2016 - 6月21日18:23:01”
得到抑制数据
能抑制某一子系统或数据块,使用金宝appSimulink.getSuppressedDiagnostics
函数。
对象= Simul金宝appink.getSuppressedDiagnostics (“Suppressor_CLI_Demo /转换/ FixPt FixPt1”);set_param(模型,“SimulationCommand”,“开始”);
恢复所有诊断模型
当一个模型包含许多诊断排除,你想恢复所有诊断模型,使用金宝appSimulink.getSuppressedDiagnostics
函数返回一个数组金宝appSimulink.SuppressedDiagnostic
对象。然后使用恢复
像你遍历该数组的方法。
对象= Simuli金宝appnk.getSuppressedDiagnostics (“Suppressor_CLI_Demo”);为iter = 1:元素个数(对象)恢复(对象(iter));结束set_param(模型,“SimulationCommand”,“开始”);
抑制引用模型的诊断消息
这个例子展示了如何抑制诊断,诊断来源于一个参考模型。通过访问MSLDiagnostic
对象的具体实例的警告,你只能抑制警告实例时引用的模型是模拟从指定的模型。
这个示例模型包含两个实例相同的参考模型,RefModel
。该模型RefModel
引用另一个模型,RefModel_Low
。RefModel_Low
包含两个获得块,每个生产包装在溢出警告模拟。抑制的四个实例模型通过访问这个警告MSLDiagnostic
对象与包装相关的溢出警告由增益模块之一RefModel_Low
只有当它是引用的模型Ref_block1
。
打开模型。模拟模型和输出存储在一个变量,出
。
= sim卡(TopModel的);
访问模拟存储在元数据MSLDiagnostic
对象。
诊断接头= getDiagnosticObjects ()
诊断接头= 1×4 MSLDiagnostic数组属性:标识符消息路径导致堆栈
您可以查看诊断和诊断的原因查看器或命令行。
为i = 1:元素个数(诊断接头)disp(诊断接头(我));disp(诊断接头(i)长入{1});结束
抑制的一个包装上溢出的警告RefModel_Low
只有当它是模拟的TopModel / Ref_block1
通过访问特定的诊断。模拟模型。
金宝appSimulink.suppressDiagnostic(诊断接头(1));= sim卡(TopModel的)
仿真元数据的访问。这个模拟生产的只有三个警告。
诊断接头= getDiagnosticObjects ()
诊断接头= 1×3 MSLDiagnostic数组属性:标识符消息路径导致堆栈
恢复的诊断模型。
金宝appSimulink.restoreDiagnostic(诊断接头(1));
另请参阅
金宝appSimulink.getSuppressedDiagnostics
|金宝appSimulink.suppressDiagnostic
|金宝appSimulink.restoreDiagnostic
|恢复
|金宝appSimulink.SuppressedDiagnostic
|金宝appSimulink.SimulationMetadata