初始设置

确保模型是新打开的。

model='rtwdemo_sil_topmodel';

close_system(model,0)

open_system(model)

删除现有编译文件夹。

buildFolder=RTW.getBuildDir(model);

if exist(buildFolder.BuildDirectory,'dir')

rmdir(buildFolder.BuildDirectory,'s');

end

配置模型覆盖率报告的生成设置。

set_param(model, 'RecordCoverage','on')

clear covCumulativeData

设置激励数据。

T=0.1; % sample time

[ticks_to_count, reset, counter_mode, count_enable, ...

counter_mode_values_run1, counter_mode_values_run2, ...

count_enable_values_run1, count_enable_values_run2] = ...

rtwdemo_sil_topmodel_data(T);

在 Normal 模式下运行仿真

该模型配置为收集模型覆盖率指标。仿真完成后,将打开模型覆盖率报告。使用覆盖率显示窗口从模型中的模块导航到覆盖率报告的相应部分。

counter_mode.signals.values = counter_mode_values_run1;

count_enable.signals.values = count_enable_values_run1;

set_param(model,'SimulationMode','normal');

设置仿真数据检查器以交互式查看和比较仿真结果。

Simulink.sdi.view;

Simulink.sdi.clear;

运行仿真。

simout_normal_run1 = sim(model, 'ReturnWorkspaceOutputs', 'on');

捕获结果。

Simulink.sdi.createRun('Run 1 (normal mode)', 'namevalue',...

{'simout_normal_run1'}, {simout_normal_run1});

在 Normal 模式下运行第二次仿真

对于第一次仿真,报告显示实现的覆盖率小于 100%。使用不同输入信号运行第二次仿真,将 MC/DC 覆盖率水平提高到 100%。请注意,模型覆盖率报告配置为显示两个仿真运行的累积覆盖率。

counter_mode.signals.values = counter_mode_values_run2;

count_enable.signals.values = count_enable_values_run2;

set_param(model,'SimulationMode','normal');

simout_normal_run2 = sim(model, 'ReturnWorkspaceOutputs', 'on');

Simulink.sdi.createRun('Run 2 (normal mode)', 'namevalue',...

{'simout_normal_run2'}, {simout_normal_run2});

配置模型以测量代码覆盖率

在运行 SIL 仿真之前,请检查第三方工具的可用性,并配置模型以收集代码覆盖率指标。如果第三方工具不可用,则模型将使用 Simulink® Verification and Validation™。

covToolPath = '';

ldraPath = coder.coverage.LDRA.getPath;

bullseyePath = coder.coverage.BullseyeCoverage.getPath;

coverageSettings = get_param(model,'CodeCoverageSettings');

coverageSettings.TopModelCoverage='on';

if ~isempty(ldraPath)

coverageSettings.CoverageTool='LDRA Testbed';

elseif ~isempty(bullseyePath)

coverageSettings.CoverageTool='BullseyeCoverage';

else

coverageSettings.CoverageTool='None';

end

set_param(model,'CodeCoverageSettings',coverageSettings);

在 SIL 模式下运行仿真

Normal 模式仿真得出了模型的覆盖率指标。使用 SIL 仿真,您可以对生成的代码应用相同的输入激励信号并测量代码覆盖率。

在 SIL 模式下运行第一个仿真。

counter_mode.signals.values = counter_mode_values_run1;

count_enable.signals.values = count_enable_values_run1;

set_param(model,'SimulationMode','software-in-the-loop');

set_param(model,'CodeExecutionProfiling','off');

set_param(model,'CodeProfilingInstrumentation','off');

simout_sil_run1 = sim(model, 'ReturnWorkspaceOutputs', 'on');

Simulink.sdi.createRun('Run 1 (SIL mode)', 'namevalue',...

{'simout_sil_run1'}, {simout_sil_run1});

### Starting build procedure for: rtwdemo_sil_topmodel

### Generated code for 'rtwdemo_sil_topmodel' is up to date because no structural, parameter or code replacement library changes were found.

### Successful completion of build procedure for: rtwdemo_sil_topmodel

Build Summary

Top model targets built:

Model Action Rebuild Reason

==============================================================================

rtwdemo_sil_topmodel Code compiled Compilation artifacts were out of date.

1 of 1 models built (0 models already up to date)

Build duration: 0h 0m 21.252s

### Preparing to start SIL simulation ...

Building with 'Microsoft Visual C++ 2017 (C)'.

MEX completed successfully.

### Updating code generation report with SIL files ...

### Starting SIL simulation for component: rtwdemo_sil_topmodel

### Stopping SIL simulation for component: rtwdemo_sil_topmodel

### Completed code coverage analysis

在 SIL 模式下运行第二个仿真。

counter_mode.signals.values = counter_mode_values_run2;

count_enable.signals.values = count_enable_values_run2;

set_param(model,'SimulationMode','software-in-the-loop');

set_param(model,'CodeExecutionProfiling','off');

set_param(model,'CodeProfilingInstrumentation','off');

simout_sil_run2 = sim(model, 'ReturnWorkspaceOutputs', 'on');

Simulink.sdi.createRun('Run 2 (SIL mode)', 'namevalue',...

{'simout_sil_run2'}, {simout_sil_run2});

### Starting build procedure for: rtwdemo_sil_topmodel

### Generated code for 'rtwdemo_sil_topmodel' is up to date because no structural, parameter or code replacement library changes were found.

### Successful completion of build procedure for: rtwdemo_sil_topmodel

Build Summary

Top model targets built:

Model Action Rebuild Reason

==============================================================================

rtwdemo_sil_topmodel Code compiled Compilation artifacts were out of date.

1 of 1 models built (0 models already up to date)

Build duration: 0h 0m 12.723s

### Preparing to start SIL simulation ...

### Starting SIL simulation for component: rtwdemo_sil_topmodel

### Stopping SIL simulation for component: rtwdemo_sil_topmodel

### Completed code coverage analysis

仿真完成后,点击命令行窗口中的链接以打开代码覆盖率报告,并查看累积代码覆盖率结果。只有安装了第三方工具,该链接才可用。

使用代码覆盖率报告中的超链接可以转到模块图中的相应位置。然后,通过使用覆盖率显示窗口,您可以打开模型覆盖率报告的相应部分。比较模型覆盖率和代码覆盖率结果。

仿真数据检查器会自动打开,从而允许以交互方式查看和分析结果。使用 Compare 和 Inspect 窗格确认 SIL 和 Normal 模式记录的信号在两次运行中是相同的。

结语

在此示例中,您执行了下列操作:

在 Normal 模式仿真期间收集模型覆盖率指标。

在 SIL 仿真期间收集代码覆盖率指标。

在代码覆盖率和模型覆盖率报告之间进行导航。

交叉检查两个报告中的各项指标。

matlab求覆盖率程序,使用第三方工具收集代码覆盖率指标相关推荐

  1. matlab求偏微分方程程序,用MATLAB解偏微分方程.pdf

    用MATLAB解偏微分方程.pdf 年 月 阴 山 学 刊 第 卷 第 期 丫叫 加 用 解偏微分方程 田 兵 包头师范学院 学报编辑部 , 内蒙古 包头 摘 要 讨论 了以 中偏徽分方程工具箱的用法 ...

  2. matlab求根的原程序,MATLAB求根程序求帮助

    我有一个函数g=m*(m1/m)*(m2/m)*(r^2)*rm*Wc1*cos(2*u),我需要一个程序求这个函数在在(-2*pi,2*pi)上所有的根. 其中u是自变量,其他所有参数都是已知.已知 ...

  3. matlab求直线斜率程序,使用matlab实现批量线性回归并出图(需要得到每条拟合直线斜率、截距以及R)...

    使用matlab实现批量线性回归并出图(需要得到每条拟合直线斜率.截距以及R) 我只会使用origin对多组数据进行线性回归,不会用matlab.现在数据比较多,大约100多组,我想请大家帮忙,能不能 ...

  4. 程序员好用的工具收集系列

    程序员好用的工具收集系列 文章目录 程序员好用的工具收集系列 第一节 Windows 软件 1. 软件推荐 第二节 VScode 插件 1. 软件推荐 第三节 Chrome插件 1. 软件推荐 第四节 ...

  5. matlab计算原点矩,关于用matlab求样本均值方差以及k阶原点矩的matlab程序

    关于用matlab求样本均值方差以及k阶原点矩的matlab 程序 关于用matlab求样本均值和方差以及matlab程 序 1n1. 样本均值,公式xX,(其中X为样本).程序如下: ,i,1in ...

  6. 哈密顿圈 MATLAB程序,matlab求最佳哈密顿圈遇到错误

    问题描述: matlab求最佳哈密顿圈遇到错误 求最佳哈密顿圈遇到错误 程序如下 %用矩阵翻转方法来实现二边逐次修**过程,求最佳哈密尔顿圈(H圈) clc clear load('zd.mat'); ...

  7. matlab矩阵指定行最大值,求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.*...

    导航:网站首页 > 求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.* 求Matlab程序:在2行矩阵中,如何求 ...

  8. python虚假评论识别程序_还在刷虚假评论?小心了,可以检测虚假评论的第三方工具来了...

    逛亚马逊,经常能看到些不可思议的好评,那这些评论有可能都是真的吗? 雨果网从外媒近日的报道中了解到,产品评论是消费者网购是一个重要参考指标.比如亚马逊的产品范围这么广,借助评论消费者就能进一步了解产品 ...

  9. Java第三方工具库/包汇总

    一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...

最新文章

  1. css3之border-radius理解
  2. 好的产品经理是怎样炼成的?
  3. android toast有焦点,android – 如何在显示Toast后进行edittext自动对焦?
  4. win10录屏工具_win10怎么录屏?这才是最长情陪伴你的录屏工具
  5. python中提取几列_自己录制的公开课视频中提取字幕(python+opencv+Tesseract-OCR)
  6. Ubuntu下添加打印机---之寻找设备lpinfo
  7. 【图像隐写】基于matlab GUI DCT数字水印嵌入+提取【含Matlab源码 1671期】
  8. PS制作加载GIF图片教程
  9. centos防火墙的关闭,硬盘挂载,yum配置,创建实验快照
  10. 自己动手编写CSDN博客备份工具-blogspider之源码分析(1)
  11. 《云计算》shell高级编程-正则表达式
  12. python里面的报错语句翻译_翻译《Writing Idiomatic Python》(二):函数、异常
  13. java仿QQ聊天室群聊(快速写一个简易QQ)
  14. sql中以sa命名的用户名无法使用,错误码1845
  15. [转帖]惠普笔记本Win7激活方法
  16. github pages 一些需要注意的问题
  17. 用计算机despair,despair造句
  18. 非常好用的短视频解析除水印软件
  19. esxi里挂载新磁盘_esxi挂载usb移动硬盘
  20. Linux 系统 top 命令详解

热门文章

  1. elink企业即时通讯案例赏析(十一)——中国疾病预防控制中心
  2. 进程和线程:进程的开销比线程大在了哪里?
  3. 旅游指南之十五----拉萨餐饮
  4. 集成电路测试简介(2)
  5. orm 对象关系映射
  6. 用dwg查看器打开dwg文件的步骤
  7. 开始VT-x各种电脑进入BIOS界面按什么?
  8. PDF去水印资源索引
  9. word2013html,Word 2013
  10. centos命令窗口如何复制粘贴