全文约3415字,你将看到以下内容:
1 MBD的基本应用形式 前文提到,MBD的核心模型由“控制器模型 + 执行器模型”组成,这是MBD的基础应用形式。 实际的MBD项目中,控制器模型可以由实际的控制器(或原型控制器)代替,组成“实际控制器 + 执行器模型”的形式。 或者执行器模型由实际的开发产品替换,组成“控制器模型 + 实际执行器”的形式。 或者模型只用于仿真模型进行分析和生成代码,功能开发和调试都由实际的对象来实现,组成“实际控制器+ 实际执行器”的形式。 Tips:上述的四种形式均没有提到“运行环境”或“环境模型”,这是因为执行器的运行环境应当和执行器保持一致,即:执行器为模型,则运行环境也为模型;执行器为实际对象,则运行环境也为实际环境。 更进一步,实际对象和仿真模型可以根据需要,灵活地混合同步使用。这样可以实现由模型探索和设计软件框架、控制算法和产品功能,再由实际对象来验证和测试模型的实际效果。如下图所示: MBD的不同组合形式 实际中往往都是同时使用不同的组合形式,这里我总结了以下几点。 2 利用MBD开发产品软件 这是MBD最基本的功能,一般是“控制器模型 + 执行器模型”或“实际控制器 +执行器模型”或“实际控制器 +实际执行器”的形式。autoMBD开源的项目“基于MBD开发FOC电机控制算法”就属于这种应用。 使用MBD开发控制软件,控制器模型成为主要的设计对象,而执行器模型可以适当简化。 控制器模型的设计主要包含软件框架模型设计、状态机设计、算法设计等,包括底层驱动、控制算法、数据处理等都可以实现。 我在GitHub上公开的基于MBD的电机控制项目,详细地展示了如何使用MBD开发永磁无刷电机控制软件,下图是开发的控制器模型和执行器模型: 基于MBD开发永磁无刷电机控制软件 利用MBD开发控制软件时,经常使用到模型在环(Model In the Loop,MIL)、软件在环(SoftwareIn the Loop,SIL)和处理器在环(Processor In the Loop,PIL)。 这些在环测试都有一个共同的特点:被控对象(执行器)都是非实时的仿真模型。它们之间的区别就在于控制器的形式不同:
被控对象(执行器模型)可以在Simulink中搭建,也可以使用其他建模软件。 例如开发无人机,可以使用Unity 3D、SolidWorks等3D建模软件,创建无人机模型,通过与Simulink联合仿真的方式来设计和开发无人机的控制算法。 3 利用MBD进行产品功能测试 这种应用最常见的便是硬件在环测试(Hardware In the Loop,HIL),它的MBD形式是“实际控制器 + 执行器模型”。 HIL已经有了一定的市场规模,在汽车行业广泛被使用。HIL是将被控对象(即执行器模型)进行建模,有时候还需要对环境进行建模,下载到实时操作系统中。运行被控对象和环境模型的设备一般被称为实时仿真机。 Speedgoat不同规格的实时仿真机 HIL的目的是要测试的是控制器在不同条件下的功能是否完善,是否能应对极端工况,故障率是多少,稳定性有多高,等等。这些测试在汽车行业中是必不可少的。 要注意的是,HIL中的实际控制器是功能设计和电气电路都相对完整的ECU(Electronic Control Unit,ECU);而PIL中的实际控制器仅仅只是MCU而已。 为什么要使用HIL呢?因为HIL中的被控对象往往是复杂且成本高昂的,使用实际对象进行测试还有可能具有一定的危险性。 例如:整车控制单元(Vehicle Control Unit,VCU)的测试,他的控制对象是一辆整车。如果待测试的VCU功能不完善,很可能对整车造成不可逆的破坏。还有测试员也不是赛车手,他很难做到驾驶整车实现漂移、急转弯等工况,要做这些测试也是很危险的。 所以搭建一个整车模型,可以很方便的在实时仿真器中跑各种极端工况,从而实现对VCU进行有效的测试,这样的模型一般复杂程度都非常高。 在“2 利用MBD开发产品软件”中提到的MIL、SIL和PIL也能在一定程度上做产品功能测试。它们用于测试时,其目的是不一样的,这里总结如下:
根据实际情况,选择MIL、SIL、PIL或HIL可以达到不同的测试目的。 HIL的市场化程度很高,相应的公司和解决方案有非常多,更多信息可以参考“重新认识一下MBD:MBD的市场情况”。 4 利用MBD做快速原型开发 快速控制原型(Rapid Control Prototype,RCP)也是MBD的经典应用,它的MBD形式可以是“控制器模型 + 实际执行器”或者“实际控制器+ 实际执行器”。 这两种形式中,控制器都被称为是原型控制器;这两种形式也对应两种不同的原型控制器:
Tips:Simulink Real-Time可以认为是Simulink设计的实时操作系统,该操作系统可以直接运行Simulink模型,而不需要转化为C代码。 RCP一般用于验证算法的可行性,开发原型机,探索产品的系统框架和功能需求,为后期的产品设计提供理论支持和参考设计。 RCP可以避免繁琐的代码编写和调试过程,专注于算法开发,专注于产品的系统设计和功能设计,专注于执行器的开发和迭代。 相比于利用MBD开发软件,RCP更加侧重于产品执行器的功能设计。控制器只需要使用现有的原型控制器即可。 因此RCP适合体量较小、易于打样的产品。在RCP的项目中,原型控制器一般具有丰富的接口和强大的外设,方便快速实现算法,同时也易于算法的更新迭代;执行器是可以通过3D打印、标准零件等快速组装和实现的原型执行器。 举一个例子。开源的无人机飞控原型机Pixhawk4,它内置了很多飞控所需要的传感器和接口,可以帮助开发者快速实现简单的飞控算法,而飞控算法则可以通过建模来设计、实现和自动生成代码。控制器和执行器(带螺旋桨的电机)可以轻松地购买和组装。 将原型控制器Pixhawk4、基于模型设计生成的飞控算法和原型无人机(无人机架、电机、螺旋桨有机)等适当组装开发,便实现了无人机的RCP的开发,如下图所示: 无人机飞控原型机Pixhawk4 有的原型控制器会提供丰富的模型库(硬件支持包),集成在Simulink中。结合“2 利用MBD开发产品软件”中提到的方法,可以快速地开发控制算法,并轻易地部署到原型控制器中。 Tips:要注意RCP和HIL的区别。HIL本质上是一种测试方法,而RCP是一种具有探索性质的产品设计方法,RCP也非常适合用来个人学习和DIY。 5 利用MBD做项目管理 我们比较熟知的是,MBD的控制器模型是可以直接生成代码的,实际上MBD还可以生成需求报告和测试报告。 在MATLAB中,通过Simulink Requirements和Simulink Test这两个工具就可以实现这样的功能,如下图所示: Simulink Requirements和Simulink Test工具 Simulink Requirements和Simulink Test这两个工具可以将项目管理中的需求文档和测试文档与MBD模型关联起来,做到模型围绕需求搭建,测试围绕模型测试,实现基于模型的文档管理和追踪。 使用MBD做项目管理,在实际中是比较少被使用的,我对这部分的应用也了解的不多。刘杰教授在他出版的《基于模型的设计——MCU篇》中,对基于模型的需求管理和追踪有系统的讲解,感兴趣的读者可以参考这本书。 6 MBD应用总结 在实践中,不同MBD应用看起来差异很多,但始终离不开四种最基本的形式,即:
这里对这四种基本形式的应用进行简单的总结: MBD不同形式的应用总结 除了上述的应用,还有基于模型的项目管理。MBD的这种应用相对较少,我也不太熟悉,感兴趣的读者可以自行查找相关技术文章。 |
|