若是想了解基于模型的设计方法有什么样的优势,就需要看看当前系统设计的基本过
程,对比一下传统的设计手段和基于模型的设计手段的不同。通常情况下,无论工程师所
面对的系统有多么简单或者多么复杂,其设计方法都可以分为以下七个步骤。
1. 需求分析
在需求分析阶段,工程师通常需要根据客户的需要定义自己需要完成的工作,以及工 作结果需要满足的某种特性要求。例如对于军用作战飞机,需要具有若干公里的作战半径, 需要有若干吨的起飞重量,能够搭载若干类型的作战武器,这些都是军方向武器制造商提 出的需求。武器制造商就需要根据军方的要求分解需求,分析出为了满足这些需求分别需 要完成哪些工作,工作的步骤以及不同工作阶段的产出与验收手段等。
2. 系统规范
需求分析结束之后,工程师基本明确了工作阶段以及不同阶段具体的产出。那么此时 需要完成的工作就是根据任务的要求详细定义工作的步骤以及解决问题的方法,同时制定 给不同分系统设计实现人员的任务书。定义正确的设计规范是进行分系统设计的重要前提, 只有规范是正确的,才能够保证设计的结果是可靠的。
3. 子系统设计
当工程师拿到设计规范以及任务书之后,就需要根据自己掌握的知识逐步完成子系统 的设计。例如,对于控制系统设计工程师,需要建立被控对象的模型,然后分析对象特性, 再根据任务书或者规范要求设计具体的控制算法以满足需求所要求的技术指标;而对于数 字信号处理算法工程师,则需要根据处理信号的特点以及需求的要求,设计不同的滤波器 算法,以满足需求提出的技术指标。不同专业的工程师解决自己的问题时,都会选择自己 熟悉可靠的设计工具,快速完成算法设计。
4. 子系统实现
算法设计完毕之后最终需要实现到某些嵌入式系统中。无论是飞机的飞控系统、航电 系统或者作战飞机的火控系统等,都包含了丰富的嵌入式软/硬件设备。工程师需要根据系 统的特点选择合适的硬件设备,将算法具体实现在相应的嵌入式系统中。此时往往需要进行大量的编程工作以及硬件设计实现工作。
5. 子系统集成与测试
子系统实现出来之后需要一步一步地进行集成。例如飞机起落架的电子控制单元首先 需要与被控的起落架进行集成测试,而飞机飞控计算机也需要首先与飞行操纵系统进行相 应的集成检测。
6. 分系统集成与测试
当子系统完成集成之后,需要进行分系统集成与测试。例如对于飞机的飞控系统,需 要把不同的子系统——惯性导航设备、飞行控制计算机、舵系统等集成起来,构成完整的 飞行控制系统以进行集成与测试,检查各个子系统是否能够正确地集成工作。
7. 全系统集成与测试
整个系统全部设计完毕之后就需要进行全系统的集成与测试,把所有分系统放在一起,
构成最后产品的原理样机或者原型机,进行各种任务的测试工作,检查产品是否能够满足
设计任务书的要求,是否满足了设计需求。
基于模型的设计优势
在基于模型的系统设计过程中,执行不同设计任务的工程师彼此在统一的环境下完成 开发工作,在他们之间传递的不仅仅是设计文档,还包含系统模型。而随着工作不断的细 化,越到开发后期,模型就越来越复杂,每个工程师都要把自己的设计工作增加到相应的 模型中。当需要具体实现产品或者进行集成测试时,只要通过自动代码生成就可以迅速地 完成代码生成、硬件实时仿真与测试,甚至还可以生成直接应用于产品的嵌入式产品级代码,避免了大量的手写代码工作。
采用基于模型的系统设计主要解决了传统设计手段中手写规范文档、测试工作在后期
阶段的主要问题,它具有如下的优势:
(1)
模型就是可执行规范。在基于模型的系统设计过程中,所有过程遵循统一环境下的统一的模型。由于模型能够进行仿真计算,因而在设计初期就可以针对设计思想进行仿真验证,这相当于把测试手段从系统设计的初期就引入到了整个设计流程中。作为规范的模型能够通过执行仿真来验证自己的正确性,从而保证了规范的正确性。
(2) 连续不断的测试与验证。在整个基于模型的系统设计过程中,从设计初期就进行离线的算法仿真测试,在产品实现之前通常还需要完成快速原型仿真、软件在回路仿真、处理器在回路仿真等步骤,而产品实现之后需要完成硬件在回路仿真、人在回路仿真等集成测试手段。这些测试都基于前面开发出来的系统模型,即在每个环节都引入了测试仿真手段。利用充分的仿真,可以考察系统不同组件对整个系统的影响。
(3)
自动代码生成。自动代码生成技术的逐步成熟是基于模型的系统设计被广大工程师 逐步接受的重要突破。利用自动代码生成技术,工程师摆脱了繁琐的代码编写与调试工作。 自动生成代码的源头为前面开发过程中一步一步经过测试验证过的模型,只要模型是正确 的,则生成的代码也基本是正确的。自动代码生成技术使快速控制原型仿真和硬件在回路 仿真成为了简便易行的测试手段。而嵌入式产品级代码生成技术则能够帮助工程师节约大 约 70%
以上的工作时间,极大地提高了工作效率。一旦在测试过程中发现了模型算法还需 要修改,只需直接回到模型中修改模型,然后在仿真之后生成产品代码即可。