利用先进的处理器功能来促进设计的便利性在近几十年来一直被讨论。如今,更大的设计灵活性使工程师能够利用MATLAB和Simulink的标准基于模型的设计来车辆控制系统的功能,比如新能源整车和电机控制系统开发,ADAS规划控制系统开发,通过基于模型的设计尽量减少整体设计时间。它还使设计工程师能够重复使用仿真模型,以确保系统在其最终市场应用中的正确功能和所需性能。
基于模型的设计(MBD)已经是一个讨论了几十年的话题,但只是在最近几年才发展成为一个完整的设计流程--从模型的创建到完整的实现。在20世纪70年代,模拟计算平台可用于仿真,但控制硬件的实现是在晶体管水平上完成的。仿真工具的发展到2000年代,引入了图形化的控制原理图输入工具和控制设计工具,极大地简化了复杂的控制设计和评估任务。然而,控制系统设计者仍然通过编写C代码来开发硬件控制算法,以反映模拟设计。现在,在这个十年的开始,完整的MBD允许仿真和硬件实施平台的共同控制设计,使复杂的控制算法能够快速部署在硬件平台上。
MBD是一个在整个开发过程中使用系统模型作为可执行规范的过程。与传统的基于硬件原型的设计方法相比,这种基于仿真的方法提供了对设计替代方案和权衡的更好理解,使能够优化设计以满足预定的性能标准。与其使用复杂的结构和大量的软件代码,设计者可以使用连续时间和离散时间构件定义具有高级功能特性的模型。现有的C代码可以与标准的控制库块集成,以最大限度地提高设计效率。这些模型与仿真工具一起使用,可以实现快速原型Demo设计、软件测试(MIL)、硬件在环(HIL)仿真以及整车在环测试(VIL)。仿真使规格差异和建模错误能够立即被发现,而不是在设计周期的后期。自动代码生成消除了在硬件平台上实现相同算法的手动步骤。这简化了设计过程,最大限度地减少了硬件设计实现中的错误,并缩短了整体上市时间。在MBD内有多个步骤,可以对整个设计中的各个任务进行优化。这些任务可以由不同的设计工程师或设计团队完成,然后组合成整体设计和完整的系统。通过这种方法,可以对单个任务进行更高层次的抽象,从而形成一个为特定的最终应用而优化的整体设计流程。总而言之,MBD允许设计者从更经典的设计方案中扩展出来,并以一种可控的方式直接从模型创建到仿真、代码生成和HIL测试,甚至VIL测试等,允许在不完全重新设计系统的情况下逐渐改变系统行为。不同的设计阶段和流程中各个步骤的规模是可视化的。这些步骤共同描述了MBD的 "标准 "流程。从电机控制设计的角度来看,它们是:仿真平台建模/架构-被控对象,环境场景等算法模型的开发验证和测试-基于仿真平台的系统验证和离线标定及实时仿真这一起形成了一个多步骤的方法来调整整体设计,并允许独立分析各个控制步骤。一旦完成了硬件和软件规范,就可以设置完整的系统结构,以部署整个系统的具体算法和功能。可以对控制器和平台模型的仿真进行评估。不接触硬件的离线开发算法可以被架构和标定以满足整个系统的性能要求。最初的代码生成,无论是现有的代码 "复用"还是由代码生成工具生成的代码,都可以部署到嵌入式控制器上,以比较PC上的系统仿真和硬件目标上的实际执行数据。在为MBD定义一个正确的平衡结构时,设计者必须考虑模型的复杂性。然而,一旦实现了平衡的概念,就有可能迅速改变设计中的独立模型,并从整个驱动系统中获得更精确的结果。对于目标平台,现在已经有了一个实时开发环境,用于建模、仿真、评估、部署和优化整体系统性能和能力。这都是基于MBD和系统参数的平衡选择,在需要具体优化的地方产生了一流的灵活性。通过这种方式,一个可扩展的系统模型已经实现,有利于使用和重用代码,无论是基于现有的遗留代码或功能,还是基于标准C或图形功能的完整的新构件(Simulink/MATLAB模型与完整的仿真和部署阶段相一致)。不仅从软件的角度可以改变整体设置,而且一旦为系统开发了合适的设备驱动程序,设计者就可以改变系统资源、硬件元素以及最终应用或系统的整体应用软件。此外,鉴于能够控制整个系统的实时性,系统调度的优化可以直接通过这个环境实现。上面讨论的每个步骤都与可用的工具和整体实现有直接联系。每个工具链都提供了一系列的价值。在MBD中,设计者必须选择如何平衡这些工具链的使用和独立MBD平台的整体价值创造。通过MBD设计流程,并通过MathWorks和相应的环境及感知仿真如那件,现在可以实现整体模型的实施和代码的编译。目前国外多数企业的传统控制器算法及智能驾驶的规划控制算法开发等中的每个阶段或元素都由MATLAB和Simulink模型开发,同时也兼容C/C++与MATLAB混合编程的环境,该模型的比例符合最佳设计标准的要求。模型中的多数元素都是基于MathWorks公司的标准工具箱和块组,可以在特定设计中的任何元素中重复使用。通过实时部署方法和在这种混合环境中的编译,还可以将现有的手工编写的C代码与由MATLAB和Simulink的生产代码生成工具Embedded Coder C代码相结合。