- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
使用基于模型的设计进行早期验证和确认
MATLAB 简化了线性控制设计,但是在实际应用中,系统很少是线性的。因此,即使在设计了控制器后,对其进行测试和调整仍然意味着需要构建系统的硬件原型,并对算法进行编码。或者,因为没有样机而无法进行测试,只有等到开发流程后期才能开展测试活动。
为了将算法应用到硬件之前验证这些算法,工程师们借助数值技术来仿真控制算法对系统(也称为“对象”)的控制行为。控制工程师们学习编写 C 或 Fortran 程序来尝试构建系统模型,借用他们认为可能会适用于其系统类型的数值积分例程,在系统模型程序中复制其控制算法,并仿真整个系统。如果要使系统完全正常工作,那么整个仿真-开发流程需要耗费大量时间并且极具挑战性。
The MathWorks 在 1990 年发布了 Simulink,一种用于对动态系统进行建模和仿真的软件环境。在控制设计中使用 Simulink 可带来两大好处。首先,该软件提供了一种直观的框图环境,可用于对算法和对象以及可能影响系统行为的非线性实际效果进行建模。其次,该软件包括一个基于一流数值积分方法创建的仿真引擎。这些核心功能极大地简化了控制工程师通过仿真来验证控制算法的工作。但是控制工程师们仍然必须在最后对算法进行编码,以在硬件样机或实际系统上测试这些算法。
大约五年后,随着 Simulink 模型自动代码生成的推出,此流程变得简单得多。对于调试和测试在原型系统中运行的代码,控制工程师们不必再担心将算法模型转换为代码时出现错误。
控制工程发展的下一步曾是个很大的挑战:产品级的代码生成。快速原型代码通常包含许多调试例程、数据收集代码、主机-目标通信代码以及用于交互测试的其他补充代码。一般而言,这些代码的优化程度不足以将其运用在可交付使用的系统中。代码生成工具经过改进后,可以生成高效率的代码,足以部署到产品级嵌入式系统中。今天,许多行业都认为从控制模型自动生成产品级代码是最佳的做法。
Model-Based Design(基于模型的设计)
处理器速度和内存的快速增加有助于在桌面上开发建模、仿真和代码生成工具,同样也使嵌入式软件开发人员可以改进嵌入式控制器的功能和复杂性。此步骤继而推动了这样一种需求:即使用文本编辑器和调试器的传统代码开发技术不再是一种局限,未来的设计将以模型为中心。这种以模型为中心的开发方法称为 Model-Based Design(基于模型的设计)(图 1)。
图1:以模型为中心的开发方法称为 Model-Based Design(基于模型的设计)。
通过基于模型的设计,团队可根据书面需求使用模型开发其设计。由于采用了仿真引擎,因此这些模型成为“可执行的规范”。对于开发和检查规范的团队而言,“规范可执行”是个极大的好处。检查完高级模型后,可使用设计详细信息修改模型,以便将其转换为代码。从详细设计模型自动生成代码极大优化了实现过程,并避免了从设计到代码转换过程中引入错误的可能。
传统的嵌入式控制系统的开发过程和V 型图一致(图 2)。
图2:传统的嵌入式控制系统的开发过程和V 型图一致。
此过程使所有验证和测试都位于 V 型图右侧,即完成设计和实现之后。对于基于 C 代码的传统嵌入式控制开发流程,集成测试通常在其他形式且级别逐渐提高的测试(例如硬件在环测试以及全系统测试)之前。虽然此开发顺序有助于组织复杂的系统设计,但还是有一些缺点:该顺序直到开发末期才考虑验证和测试,而此时修复所找到的任何错误都要付出最高代价且最耗时;用户必须实现所有组件后才能测试系统;并且该顺序未能考虑开发过程中的迭代。
通过基于模型的设计,可以将验证作为并行活动,贯穿整个开发流程(图 3)。
图3:通过基于模型的设计,可以将验证作为并行活动,贯穿整个开发流程。
在开发流程的每一步进行测试和验证,意味着可在引入错误之处发现这些错误。与传统的 V 型图流程相比,可以更快地重复、修复和验证设计。那么该如何着手实现早期验证,从而减少在开发末期花费在测试和调试设计上的时间呢?下文概述了一些最佳做法。
上一篇:针对客观视频质量的实时测量进行
像质量分析
下一篇:诊断线束中的开路和短路的构想