基于模型的设计(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(树莓派)