Simulink 模型生成 C 代码(四):比较模型仿真和生成代码的结果

接下来将验证生成的代码执行时在数值上等效于 Simulink 中建模的算法。您使用测试框架模型在普通模式下对 RollAxisAutopilot 进行仿真,并在 SIL 模式下进行仿真,然后使用仿真数据检查器比较这两个仿真。

要测试生成的代码,您可以运行软件在环 (SIL) 和处理器在环 (PIL) 仿真。SIL 仿真在开发计算机上编译并运行生成的代码。PIL 仿真在开发计算机上交叉编译源代码,然后,PIL 仿真在目标处理器或等效的指令集仿真器上下载并运行目标代码。您可以使用 SIL 和 PIL 仿真:

  • 验证代码的数值行为。
  • 收集代码覆盖率和执行时间度量。
  • 优化代码。
  • 推动 IEC 61508、IEC 62304、ISO 26262、EN 50128 或 DO-178 认证的进展。

检查并配置测试框架模型

模型 RollAxisAutopilotHarness 通过 Model 模块引用待测模型 RollAxisAutopilot。框架模型为引用的模型生成测试输入。还可以轻松地在普通、SIL 或 PIL 仿真模式之间切换 Model 模块。

        1.通过键入以下命令打开模型 RollAxisAutopilotHarness

openExample('RollAxisAutopilotHarness');

        2. 如果您关闭了您的 RollAxisAutopilot 模型副本,请重新打开它。

        3. 在 RollAxisAutopilotHarness 模型中,右键点击 Model 模块并选择子系统和模型引用 > 刷新所选模型模块

        4. 在当前工作文件夹中保存 RollAxisAutopilotHarness 的副本。

        5. 打开 RollAxisAutopilotHarness 和 RollAxisAutopilot 的“配置参数”对话框。

        6. 要运行 SIL 和 PIL 仿真,请在代码生成窗格中,确认已清除参数仅生成代码。对两个模型均执行此操作。

        7. 对于这两个模型,在硬件实现窗格中展开设备详细信息。确认已选择支持 long long

        8. 点击确定。然后保存模型。

在普通模式下仿真模型

在普通模式下运行框架模型,并在仿真数据检查器中捕获结果。

  1. 在 RollAxisAutopilotHarness 模型中,打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器
  2. 在模型数据编辑器中,选择信号选项卡。
  3. 更改视图列表设置为“插桩”。
  4. 在数据表中,选择所有行。
  5. 要将信号配置为将仿真数据记录到仿真数据检查器,请选中记录数据列中的复选框。完成后,确保该列中的所有复选框都处于选中状态。
  6. 右键点击 Model 模块 Roll Axis Autopilot。从上下文菜单中选择模块参数
  7. 在“模块参数”对话框中,验证为仿真模式选择了“普通”选项。点击确定
  8. 仿真 RollAxisAutopilotHarness
  9. 完成仿真后,在仿真数据检查器中查看仿真结果。如果仿真数据检查器尚未打开,请在仿真选项卡上,点击数据检查器
  10. 对于最近(当前)运行,请双击运行名称字段并将运行重命名为 roll_harness: Normal mode
  11. 选择 Ail_Cmd 以绘制信号。

在 SIL 模式下仿真模型

SIL 仿真在开发计算机上生成、编译和执行代码。仿真数据检查器记录结果。

  1. 在 RollAxisAutopilotHarness 模型窗口中,右键点击 Roll Axis Autopilot 模型模块,然后选择模块参数
  2. 在“模块参数”对话框中,将仿真模式设置为 Software-in-the-loop (SIL),将代码接口设置为 Top model。点击确定
  3. 从编译过程中排除外部代码文件。在模型 RollAxisAutopilot 的“配置参数”对话框中,将代码生成 > 自定义代码 > 代码信息 > 源文件设置为默认值,即为空。保存模型。
  4. 仿真 RollAxisAutopilotHarness 模型。

最小化代码生成报告窗口,以便在本教程中的后面部分进行浏览。

        5. 在仿真数据检查器中,双击运行名称字段并将新运行重命名为 roll_harness: SIL mode

        6. 选择 Ail_Cmd 以绘制信号。

        7. 重新配置模型 RollAxisAutopilot 的编译过程以包括外部源文件 roll_input_data.c 和 roll_heading_mode.c。在“模型配置参数”对话框中,将代码生成 > 自定义代码 > 代码信息 > 源文件设置为 roll_input_data.c roll_heading_mode.c。点击应用,关闭对话框,然后保存模型。

比较仿真结果

在仿真数据检查器中:

  1. 点击比较选项卡。
  2. 基线字段中,选择 roll_harness: Normal mode
  3. 比较项字段中,选择 roll_harness: SIL mode
  4. 点击比较

仿真数据检查器显示普通模式和 SIL 模式的结果相匹配。使用 SIL 和 PIL 仿真比较普通模式仿真的结果可以帮助您验证生成的应用程序是否按预期执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/367998.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes基于helm安装 harbor

Kubernetes基于helm安装 harbor 之前harbor的安装都是借助docker完成一键安装部署,安装完成之后harbor组件均运行到一台机器上面,本文实践harbor在k8s环境中的部署。 准备工作 根据harbor官方要求: Kubernetes cluster 1.20Helm v3.2.0 …

SpringMVC基础详解

文章目录 一、SpringMVC简介1、什么是MVC2、MVC架构模式与三层模型的区别3、什么是SpringMVC 二、HelloWorld程序1、pom文件2、springmvc.xml3、配置web.xml文件4、html文件5、执行Controller 三、RequestMapping注解1、value属性1.1、基础使用1.2、Ant风格(模糊匹配…

如何清理电脑内存?让电脑运行如飞!

电脑内存(RAM)的清理对于维持系统的流畅运行至关重要。随着使用时间的增加,系统内存会被各种应用程序和后台进程占用,导致系统响应变慢,甚至出现卡顿现象。通过有效地清理内存,可以提升电脑的性能&#xff…

数据库安全:MySQL权限体系划分与实战操作

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

网络基础:OSPF 协议

OSPF(Open Shortest Path First)是一种广泛使用的链路状态路由协议,用于IP网络中的内部网关协议(IGP)。OSPF通过在网络中的所有路由器之间交换路由信息,选择从源到目的地的最优路径。OSPF工作在OSI模型的第…

优化页面加载时间

注:机翻,未校对。 本文年代久远,除了少部分不合时宜的,其他仍有借鉴意义。 Optimizing Page Load Time 优化页面加载时间 It is widely accepted that fast-loading pages improve the user experience. In recent years, many …

【Elasticsearch】Elasticsearch动态映射与静态映射详解

文章目录 📑前言一、Elasticsearch 映射概述1.1 什么是映射?1.2 映射的分类 二、动态映射2.1 动态映射的定义2.2 动态映射的优点2.3 动态映射的缺点2.4 动态映射的应用场景2.5 动态映射的配置示例 三、静态映射3.1 静态映射的定义3.2 静态映射的优点3.3 …

Zookeeper:Zookeeper集群角色

文章目录 一、Leader选举二、Zookeeper集群角色 一、Leader选举 Serverid:服务器ID;比如有三台服务器,编号越大在选择算法中的权重越大。Zxid:数据ID;服务器中存放的最大数据ID,值越大说明数据越新&#x…

JS(JavaScript) 数据校验 正则表达式

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

摸鱼大数据——Spark Core——RDD的基本介绍和如何构建RDD

1、什么是RDD RDD:英文全称Resilient Distributed Dataset,叫做弹性分布式数据集,代表一个不可变、可分区、里面的元素可并行计算的分布式的抽象的数据集合。 Resilient弹性:RDD的数据可以存储在内存或者磁盘当中,RDD…

java常用类(3)

目录 一. 正则表达式 二. Math类 三. Random类 四. Date类 五. Calendar类 六. SimpDateFormate类 七. BigInteger类 八. BigDecimal类 一. 正则表达式 正则表达式(Regular Expression)就是用一些特殊的符号去匹配一个字符串是否符合规则,利用String类中的matches()方…

[Leetcode 136][Easy]-只出现一次的数字

目录 题目描述 具体思路 题目描述 原题链接 具体思路 ①首先看到数组中重复的数字,想到快慢指针,但是数组的元素是乱序的不好求。因此先对数组排序。使用了STL库的sort函数,时间复杂度O(nlogn)不符合题目要求,空间复杂度O(1)。…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…

打卡第一天

今天是参加算法训练营的第一天,希望我能把这个训练营坚持下来,希望我的算法编程题的能力有所提升,不再面试挂了,面试总是挂编程题,记录我leetcode刷题数量: 希望我通过这个训练营能够实现两份工作的无缝衔接…

用720云搭建数字孪生VR智慧安防系统,赋能安防升级!

“安全防范"一直是我国城镇化发展进程中重点关注的工作板块,随着时代发展需求与科技的日新月异,安防行业正在积极融合VR3D数字孪生技术,升级安防数字基础设施和安防产品服务创新。 今年2月,《数字中国建设整体布局规划》的出…

docker容器间网络仿真工具-pumba

docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预,包括延迟,丢包,带宽限制等。 但是我在实际使用时,发现docker-tc这个工具在进行网络进行模…

如何使用python网络爬虫批量获取公共资源数据教程?

原文链接:如何使用python网络爬虫批量获取公共资源数据教程?https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608240&idx4&snef281f66727afabfaae2066c6e92f792&chksmfa826657cdf5ef41571115328a09b9d34367d8b11415d5a5781dc4c…

84 柱状图中最大的矩形

题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 输入:heights [2,1,5,6,2,3] 输出:10 解释:最大的矩…

从全连接到卷积

一、全连接到卷积 1、卷积具有两个原则: 平移不变性:无论作用在哪个部分,它都要有相同的作用,而不会随着位置的改变而改变 局部性:卷积核作用处,作用域应该是核作用点的周围一小部分而不作用于更大的部分 …

【无需公网IP】在树莓派上搭建Web站点

目录 1.概述 2.使用 Raspberry Pi Imager 安装 Raspberry Pi OS 3.设置 Apache Web 服务器 3.1测试 web 站点 3.2安装静态样例站点 3.3将web站点发布到公网 3.4安装 Cpolar 3.5cpolar进行token认证 3.6生成cpolar随机域名网址 3.7生成cpolar二级子域名 3.8将参数保存…