用户中心

资讯 > 专题文章

设计嵌入式系统程序时最重要的三个设计决策

作者:NI公司2013.04.25阅读 3890

  当工程师们计划大型、复杂的项目,却又面临较短的开发时间时,将会作出许多的设计折衷和设计决策。决定将开发时间重点放置在设计过程的哪一个阶段是一个很大的挑战。本文提出了三个重要的在设计嵌入式系统程序时所需要的设计决策,并且为您的应用需求提供了指导。安排一定的时间来对这三个方面进行考虑可以为您提供一条正确的道路来设计开发一个可靠、可扩展并且易于维护的嵌入式系统。
  应该使用哪种软件架构?
  当开发一个时间很紧的项目时,代码通常都不能够保证其可扩展性和可维护性,因为它们并不是该项目的主要目标。但是,从长远的角度来讲,一个可扩展的应用项目会节省更多的项目经费,因为它可以添加新的功能并且可以对软件缺陷进行修复。所以,凡是会比设计原型走得更远的项目,我们都强力建议为其设计一个可扩展及易于维护的架构。


 用于CompactRIO软件架构的LabVIEW FPGA控制项目范例

  当决定需要实现哪种软件架构的时候CONTROL ENGINEERING China版权所有,您可以选择一个LabVIEW 2012中预先创建好的NI LabVIEW CompactRIO简单项目来开始系统的设计,这样可以节省绝大部分的设计时间。这些简单项目是专门被设计来作为系统架构起始点的CONTROL ENGINEERING China版权所有,在其基础上可以扩展出各种复杂的嵌入式控制与监测应用系统。从一个简单项目开始您的开发,就可以确保程序的可靠性,可扩展性以及可维护性。
  根据表1中的指导来选择满足您应用需求的合适的简单项目。如果您的应用需求与表1中所列的要求不同,也可以参考CompactRIO应用开发者LabVIEW指南教程中基本架构简介章节里提出的最佳编程实践来设计您自己的应用程序架构。


表1  根据您特定的项目需求从LabVIEW 2012附带的项目范例中选择合适的应用程序架构

  应该实现哪种数据通讯模型?
  数据通讯通常都是绝大多数嵌入式系统软件架构中最具有挑战性的环节,但其同时也是整个架构中最基础的环节。这就表示在设计初期就选取一个正确的数据通讯模型是相当重要的。如果您是选取的NI简单项目来作为您项目的开发起始点,那么最核心的通讯模型已经在简单项目中实现了。但是,如果您需要对简单项目进行扩展或者是您决定不使用这些简单项目作为开发基础,您就需要考虑以下三种常用于嵌入式控制与监测应用的数据通讯模型:基于命令的模型、当前值数据存储模型和数据流模型。在很多的情况下,您的应用程序将会需要三种模型的组合。本节的内容会为您提供一个标准让你了解哪种情况下应该使用哪种模型。
  基于命令的数据通讯模型
  通常情况下CONTROL ENGINEERING China版权所有,嵌入式系统都工作于无用户操作接口的硬件配置下,根据从远程主机终端的用户界面发来的命令来响应的特定操作。这些命令通常是通过以太网从远程的主机传送到嵌入式系统的,然后再从嵌入式系统上分配到对应的进程来完成命令的执行。这种形式的数据可以使用LabVIEW的机制,例如网络数据流或者是简易TCP/IP信息(STM)参考库(该库可从NI.com网站免费下载)来通过以太网传送。
  数据流模型
  数据流通讯可以将每一个数据点进行高吞吐量的传输,通常用于吞吐量比数据延迟更为重要的应用中。典型的数据流通讯会有一个进程专门将数据写入另一个进程来进行数据的读取,显示或者对数据进行处理。一个例子就是车载数据记录装置,它可以将数据从FPGA发送到实时处理器进行数据流盘记录。数据流模型可以使用LabVIEW中基于FIFO的数据传输机制来实现,例如使用网络数据流来在网络上传送数据,实时FIFO在实时进程之间传送数据流www.cechina.cn,又或者是DMA FIFO在FPGA和实时目标之间传送数据流。


 三种常用于嵌入式控制与监测应用的数据通讯模型

  当前值数据存储模型
  通常来说www.cechina.cn,在一个或者多个系统中,机器控制,自动化和应用监测都会作为独立的运行进程来开发。每一个进程都会处理其独立的任务,但是各个进程之间又会共享一组通用的数据或者变量来保证所有的应用任务都可以成功的运行。当我们在设计一个可扩展的应用程序的时候,最佳的选择就是将这些通用的数据保存在中间的位置。这种类型的数据也可以使用LabVIEW中自带的机制来保存和获取,包括共享变量和当前值表(CVT)参考应用库,都可以从ni.com网站免费下载获取。


尽量减少动态内存的分配可以防止实时操作系统中的内存变得支离破碎,从而降低实时应用程序意外中止的风险

  应该使用哪些编程技术来保证程序的可靠性?
  NI嵌入式平台结合了一个运行有实时操作系统的处理器和一个FPGA来提供相当高的系统可靠性。根据您应用需求的不同,可能需要花费额外的开发时间来保证系统已经达到了它应该具有的可靠性。如果您的系统需要连续部署几天、几周、几个月甚至几年,您应该要最大限度地降低实时应用程序中的动态内存分配。因为实时处理器中的内存会随着时间的推移变得支离破碎,如果内存管理器不能够再找到一块连续的内存来支持程序请求的内存分配,程序就会意外中止。能够处理正常重启或者维护的系统可以任意地使用动态内存,因为它们可以监测内存的状况。
  确保已经部署嵌入式系统稳定性的另一个技术就是实现看门狗定时器。看门狗定时器是一个硬件计数器,它直接与嵌入式软件连接来检测软件故障并帮助系统从故障中恢复。一个软件故障的例子就是您的应用程序内存不足导致系统挂起或者崩溃。即使你已经按照最佳实践中的介绍来减少动态内存的分配,准备一个后备的方案还是相当重要的。所有的CompactRIO和NI Single-Board RIO控制器都包括一个内置的看门狗定时器,您可以通过LabVIEW实时开发模块来对其进行编程。您也可以在CompactRIO开发者指南的设计一个LabVIEW实时应用程序章节中来找到最小化动态内存分配和更好地使用看门狗定时器的实用技巧。
版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688