功能原型系统:算法工程开发常见问题及图形化解决的优点介绍
扫描二维码
随时随地手机看文章
概览
功能原型系统系列 是帮助您了解原型开发过程的一系列文章。通过阅读,可以了解关键概念、原型开发的优点、产品选择讨论以及其他技术资源。
算法工程
算法工程是为应用算法设计而造的术语。它所指的是将纸上的算法草稿转换为鲁棒、经过完整测试、简单易用实现的过程。在原型系统中实现算法提供需要的功能可能是整个产品开发生命周期中最具有挑战性的部分,但是它也可能是最有回报的部分。通过应用现实世界的I/O,您能够亲眼看到算法实现工作。
本文说明了开发员可能会在设计算法中遇到的问题,以及使用图形化设计来克服这些挑战的优点。算法工程挑战少数系统级设计师才能够熟练掌握的编程知识。为不同平台编程需要的编程知识通常是少数系统级设计师能精确掌握的。
基本算法实现
为基本功能实现底层算法需要时间。速度在原型开发中是至关重要的,因为缺少现有代码而陷入从头开发的已知算法的困境是开发人员无法接受的。
为多个平台重复实现算法
随着功能原型的发展,算法需要多次重复功能以便移植到不同类型的系统中。代码通常无法在不同的运行环境中工作,这使得应用程序从原型系统到部署的扩展变得困难起来。
测试和验证
通常只有到较晚的时候才能够确定系统是否可以真正满足功能需求,重头开始的代价是昂贵的。举例而言,处理器可能无法足够快速地执行多个并行任务。它可能无法达到需要的循环时间。它还可能无法实时处理处理器密集的分析。
图形化系统设计为算法工程带来的优点
图形化系统设计解决了功能原型系统算法工程中的许多潜在问题。图形化系统设计是将直观的图形化编程与灵活的商用(COTS)硬件结合在一起解决设计挑战的方法。您可以使用这个方法,在设计的所有阶段中使用同一个环境。现在我们来深入了解一下这个方法如何解决以上提出的挑战。
多个计算模型
图形化系统设计的优点之一是它让程序员能够无需考虑实现用的计算模型(MoC)创建算法。随着算法的复杂度不断增加,程序员必须使用不同的计算模型扩展他们的代码能力。下面是您可以用于图形化系统设计的几个计算模型:
数据流
数据流是与NI LabVIEW软件紧密关联的计算模型。使用数据流,需要开发员在开始执行前,输入所有输入的数据。数据流是直观的代码结构,将并行处理等应用的实现变得十分简单。
文本数学
文本数学是简单创建复杂功能的另一个工具。基于文本的数学是将可以用脚本描述形式编写的复杂算法,用人类可以阅读的形式实现的方法。文本数学的实例包括公式节点和LabVIEW MathScript实时模块。使用LabVIEW MathScript,您可以选择最有效的语法用于算法开发,无论您是开发算法、探索信号处理概念或是分析结果。
图1:使用LabVIEW MathScript实时模块重用基于文本的代码
C 代码
有时候您使用的代码原来是用C或C++创建的。在这个情况下,您不必舍弃过去的工作。您可以在LabVIEW中使用内嵌C节点或调用库函数节点直接调用您之前的代码。使用内嵌C节点用于现有的C代码或编写小型的数字或矩阵算法,使用调用库函数节点访问DLL或共享库中的C代码。
开放式软件体系结构
在过去的几年中,LabVIEW平台在众多设计学科中得到了广泛应用,因此需要将数据与不同的设计与仿真工具整合在一起。LabVIEW使用多种整合工具、库和文件格式实现这种交互兼容性。LabVIEW还提供了与其他软件工具和测量资源的众多标准集成,其中包括:
* DLLs, 共享库
* ActiveX, COM, 以及 .NET (Microsoft)
* DDE, TCP/IP, UDP, 以太网、蓝牙
* CAN, DeviceNet, Modbus, OPC
* USB, IEEE 1394, RS232/485, GPIB
* 数据库(ADO、SQL等等)
使用这些工具,来自几乎任何测量和控制设备的数据集成都是可能的。通过将LabVIEW与硬件通信的通用标准整合在一起,开发者可以确保未来多年的兼容性和可扩展性。
LabVIEW方法
LabVIEW中的数百个函数涵盖了数学、信号处理、概率、控制中的许多传统算法,是构造任何定制算法的基础。这些函数减轻了编写底层代码的负担,为工程师提供了关注解决方案而不是关注实现细节的时间。
因为使用LabVIEW将采集现实世界的数据变得十分简单,用户认为能够使用实际数据对算法进行测试,从而使用重复的方法进行微调是十分有价值的。采用这种交互式的测试方法,您可以用不同函数进行实验,检查它们是否给出了期望的结果。举例而言,在使用滤波器处理信号时,您可以从不同解决方案中进行选择,采集您所需要的实际信号,然后在图或文件中查看结果。如果结果并不适用于应用程序,您可以选择其他滤波器。通常采集实际信号应用算法比花时间用软件仿真更加简单。
商业硬件
商业硬件步进提供了快速开始原型开发的简单方法,而且使用图形化系统设计帮助您在许多带有集成I/O的目标上实现本地算法。使用在NI CompactRIO和PXI平台中的实时处理器,集成带有确定性控制的I/O,得到更多可靠性。这对于硬件在环应用是很重要的,因为需要将硬件和软件紧密整合在一起,动态仿真控制算法设法控制的环境。
处理使用带有FPGA的实时处理器,您可以将LabVIEW集成到您的应用中,将代码从一个类型的商用硬件移植到另一个硬件上。举例而言,您可以移植在台式机上对实际世界I/O信号进行分析的代码,无需大量重写就可以将它用于PXI、PDA以及嵌入式处理器等平台上。实际上,先在台式机上设计并验证原型,然后将它转换到32位处理器上,进行嵌入式系统部署可以大大节省因为忽略设计限制而增加的开发时间和重复编码。
图2:LabVIEW目标
用于仿真和控制设计的工具
由于LabVIEW是一个开放式平台,您可以将您的测量数据映射到仿真结果上。您可以将用于行为建模的仿真数据与实时数据进行互换。此外,您可以使用仿真激励驱动物理测量,提供鲁棒的测试环境。
使用LabVIEW仿真验证并估计设计准则的性能。您可以将设计导入到不同的仿真工具中,进行早期设计评估。下一步包括自动化布局或模型建立工具,对构造过程进行自动化。保存可用的系统状态信息和输出信号帮助您调试应用程序以及建立应用程序性能规范。
使用例如LabVIEW控制设计和仿真模块中的控制方块图设计线性、非线性、离散或连续控制系统。使用这个抽象编程风格,您可以使用例如传递函数模块、积分器、微分器和反馈循环等传统控制概念进行编程。使用高级方块图,您可以在概念级开发解决方案,从而可以利用过去的系统经验和知识。
图3:使用控制设计与仿真的PID控制
下一步
对算法进行工程设计,实现原型系统的功能是个具有挑战性的过程。图形化系统设计是利用直观的图形化软件与商业硬件之间紧密整合优点帮助您克服与算法工程相关挑战的方法,从而让您可以用更低的成本更快地完成原型系统开发。