S32K144—autoMBD是什么?

news2024/9/21 2:37:54

基于模型的设计(Model-Based Design,MBD)是一项非常具有发展潜力的技术,autoMBD 致力于分享和传播 MBD 相关技术,让更多人可以快速、高效地在项目开发中使用 MBD。

MBD能做什么?

从大的范围来说,MBD 本质上属于嵌入式开发领域,但它不适用于所有的嵌入式项目。MBD 适用于具有控制器(Controller)和执行器(Actuator)的嵌入式电控装置。这些应用中一般具有特定的算法、信号处理、控制执行、通讯等组成要素。例如无人机、电机控制、电池管理系统、机器人等。

作为反例,不适合 MBD 的应用包括各种穿戴设备、影音设备等,因为它们并不适合建模。同样地,MBD 也不适合桌面端的软件开发。

MBD 支持不同的嵌入式芯片开发,包括 DSP、MCU、FPGA 等各种类型的芯片。由于作者能力有限,接触最多的是在 MCU 上的 MBD 开发,autoMBD 介绍的也以这种为主。不过不同芯片的 MBD 本质是相同的,它们更多的体现在工具链的使用是不同的。

MBD 的核心——模型——便是对控制器和执行器进行的建模,有时候还包括执行器所处的环境,所建的模型称为控制器模型执行器模型(也称被控对象模型)和环境模型。控制器、执行器和环境之间,以及所建模型和实际对象之间的界限和范围,也需要有清晰的定义。

MBD具体应用

开发产品软件

利用 MBD 开发控制软件时,经常使用到模型在环(Model In the Loop,MIL)、软件在环(Software In the Loop,SIL)和处理器在环(Processor In the Loop,PIL)。这些在环测试都有一个共同的特点:被控对象(执行器)都是非实时的仿真模型。它们之间的区别就在于控制器模型的所处的位置不同:

  • 1) MIL 的控制器是仿真模型,在 Simulink 中运行。
  • 2) SIL 的控制器是控制器仿真模型生成的代码编译产生的可执行文件(.exe 文件),在 Windows 环境下运行。
  • 3) PIL 相比 SIL 更进一步,将控制器仿真模型生成的代码编译生成二进制文件,并下载到目标 MCU 中运行。

被控对象(也称执行器模型)可以在 Simulink 中搭建,也可以使用其他建模软件。例如开发无人机,可以使用 Unity 3D、SolidWorks 等 3D 建模软件,创建无人机模型,通过与 Simulink 联合仿真的方式来设计和开发无人机的控制算法。这种联合仿真将会是 MBD的一大发展趋势。

MBD与底层驱动?

1) 在 Simulink 中是可以实现底层驱动的,但繁琐且效率不高;

2) MBD 应当重点关注上层应用和算法,没必要做底层驱动;

3) MBD 的核心是算法验证,即验证上层应用和算法。

MBD硬件支持包的局限性

首先,MBD 硬件支持包功能受限。

其次,MCU 有专门的底层配置工具。

第三,MBD 硬件支持包调试困难。

第四,底层驱动会使模型变得复杂。

最后,也是很现实的问题,大部分的芯片厂商不提供 MBD 支持包。

提供MDB硬件支持包的公司

1) TI(德州仪器)

2) NXP(恩智浦)

3) ST(意法半导体)

4) Renesas(瑞萨)

5) Infineon(英飞凌)

6) Microchip(微芯科技)

7) Arduino

8) Raspberry Pi(树莓派)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14 Python 办公自动化

目录 1、普通文件自动化管理 1.1 文件的复制 1.2 文件内容的复制 1.3 文件的裁剪 1.4 文件的删除 1.5 文件的压缩与解压缩 1.6 文件的查找 1.7 查找含有指定内容的文件 1.8 清理重复的文件 1.9 批量修改目录中的文件名称 2、文件夹的自动化管理 2.1 文件夹的复制 …

机器学习中的数学原理——线性可分问题

这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下《白话机器学习中的数学——线性可分问题》! 一、什么是线性可分问题 线性可分…

kibana和elasticsearch-head安装手册

kibana和elasticsearch-head安装手册 0 安装包下载 组件安装包下载地址kibanakibana-8.5.2-linux-x86_64.tar.gzelastic官网:https://www.elastic.co/cn/downloads/past-releases#kibana elastic中文社区:https://elasticsearch.cn/download/nodenode-…

关键字:static

文章目录一、static关键字的使用static修饰属性实例变量静态变量(类变量)内存解析static修饰方法static注意点如何确定什么时候使用static?方法属性单例设计模式饿汉式懒汉式区分饿汉式和懒汉式一、static关键字的使用 1、可以用来修饰&…

回首满是自豪

写在前面hi朋友,我是几何心凉,感谢你能够点开这篇文章,看到这里我觉得我们是有缘分的,因着这份缘分,我希望你能够看完我的分享,因为下面的分享就是要汇报给你听的,这篇文章是在 2022 年 12 月 3…

【柔性数组与局部性原理】

柔性数组概念 柔性数组特点 局部性原理 柔性数组概念 对于柔性数组,也许你之前从未听说过,柔性数组,顾名思义,就是数组,它的柔性柔在元素个数可以动态变化, 即柔性数组是未知大小的,数组大小…

Elasticsearch:使用 Node.js 将实时数据提取到 Elasticsearch 中(二)

在我的上一篇文章 “Elasticsearch:使用 Node.js 将实时数据提取到 Elasticsearch 中(一)”,我详细描述了如何如何使用 Node.js 来采集地震数据。在今天的文章中,我们来详细描述如何对数据可视化。我们还将创建一个 we…

推荐七个Python效率工具!让你事半功倍

为了提高效率,我们在平时工作中常会用到一些Python的效率工具,Python作为比较老的编程语言,它可以实现日常工作的各种自动化。为了更便利的开发项目,这里给大家推荐几个Python的效率工具。 1、Pandas-用于数据分析 Pandas是一个强…

UEditorPlus v2.8.0发布 颜色自定义,文档功能完善

UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…

vim使用教程图文教程(超详细)

1. 三种模式 vim编辑器有三种模式:命令模式、编辑模式、末行模式。 「命令模式」:可以进行删除、复制、粘贴等快捷操作。「编辑模式」:可以编辑文件内容。「末行模式」:可以通过命令操作文件,比如搜索、保存、退出等…

【C语言】字符串小练习(每日小细节012)

前言: 欢迎打开这篇博客,从今天开始,每天和大家分享一个C语言小细节,不久之后还会追加C 一些常常被忽视的小细节和思想统一的编程题目是这个专栏的核心哦 虽然简单但千万别在细节处失分!!!&…

【Linux编辑神器:vim】

目录 1. vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4. vim底行模式命令集 5. 简单vim配置 6 总结 什么是Vi/Vim? vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令&#xff0…

【算法】关于双指针的奇技淫巧(一):对撞指针

一、对撞指针 对撞指针由两个指针组成,分别指向数据的头部和尾部: 两个指针分别从两头移动,寻找符合答案的位置后停下。对撞指针主要应用于有序数组的求和,我们使用一个题目进行说明: 示例如下: 根据题目可…

元数据管理Datahub基本介绍和特点

目录1. 基本介绍2. 功能特色2.1 支持不同平台的元数据同步和搜索2.2 血缘关系2.3 查询数据集的统计信息2.4 实时治理2.5 Datahub的权限管理2.6 使用Domains、Glossary Terms、tags对数据Entity进行管理2.7 在Web界面对元数据进行管理1. 基本介绍 Datahub是现代数据栈的元数据管…

TypeScript(一)TypeScript下载安装,编译运行的三种方式:tsc命令行/webpack搭建环境/tsc-node库

什么是TypeScript? TypeScript是拥有类型的JavaScript超集,它可以编译成普通、干净、完整的JavaScript代码。 简单理解:TypeScript就是加强版的JavaScript TypeScript环境搭建 搭建前准备 TypeScript最终会被编译成JavaScript代码,那么我…

JavaSE笔记——函数式编程(类库)

文章目录前言一、基本类型二、重载解析三、FunctionalInterface四、默认方法五、Optional总结前言 前面知道了如何编写 Lambda 表达式,下面将详细阐述另一个重要方面:如何使用 Lambda 表达式。即使不需要编写像 Stream 这样重度使用函数式编程风格的类库…

find_package()的使用

find_package()命令是用来查找依赖包的,理想情况下,一句find_package()把一整个依赖包的头文件包含路径、库路径、库名字、版本号等情况都获取到,后续只管用就好了。但实际中往往CMake失败就是出在find_package()的失败上(这里不考…

朝花夕拾 - 2023 莽一年

Hello 2023,我来了~今年,又是一个怎样的楚门世界,我要如何在里面撒泼,期待~一 回收 2022 不及格答卷 回首 2022,那真的不堪回首,细节太多了,没做好没把握住~但是,不管 2022 过得怎样…

Qt6 中如何使用 qsb

【写在前面】 Qt 5 的图形体系结构非常依赖 OpenGL 作为底层 3D 图形 API。但过去 8 年来随着 Metal 和 Vulkan 的推出,市场发生了巨大变化。现在,Qt 6 加入了大量不同平台的图形 API,以确保用户可以在所有平台上以最高性能运行 Qt。 在 Qt Q…

【类和对象(完结)】

目录 1. 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 2. static成员 2.1 概念 2.2 特性 3. 友元 3.1 友元函数 3.2 友元类 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 7. 再次理解类和对象 8.总结 1. 再谈构造函数 1.1 构造函数体…