- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
LabVIEW 8-设计、控制及测试的分散式智慧
NI最新LabVIEW 8引进了分散式智能技术,可简化在测试或控制系统中加入此技术的复杂度,并获得分散式智能带来的多重运算效率提升益处。本文将介绍分散式智能的概念,以及包括协同运作、I/O整合、混合技术应用程式开发…等分散式系统开发挑战与因应之道。
善用分散式智能技术
在听到分散式系统这几个字时,你会想到什么?对数学家而言,它可能意味着将运算工作分散到一群电脑上去进行。企业主管可能想到用网页商务系统处理全球的订单。设施管理人员可能想到用无线感测器网路监督建筑物的状况。然而这些例子都有一个共同的基本主题──分散式系统是指任何使用多颗处理器来解决问题的系统。由于半导体技术的高昂费用和效能提升,工程师一直透过加入更多运算引擎的方式,希望用更有效率的方法来满足应用程式的需求。如此而设计出来的产品,以及用于测试及控制这些产品的系统,会变得更加分散。
但是,在测试或控制系统中加入多重运算引擎,并不像工程师所期望的那么简单。开发分散式系统要面对全新的程式设计挑战,而传统的工具并没有妥善处理这些问题。本文介绍应用于工程设计、控制或测试应用程式上的分散式系统的核心特性,并摘要说明开发这类系统的主要挑战。此外,本文也介绍National Instruments LabVIEW 8图形化开发环境如何使用新的分散式智能技术来处理这些挑战。分散式智能技术包括:
• 针对多种目标进行程式设计,例如桌上电脑、工业电脑、可携式,以及嵌入式设备
• 新增的LabVIEW Project提供直觉的系统检视,可以在单一环境中操作及管理分散式系统
• 新的通信界面LabVIEW共用变数(shared variable),用以简化分散式设备和系统之间的资料通讯。
• 简化在分散式设备和系统之内或之间进行计时及同步化的工具
用于设计、控制及测试的分散式系统范例
开发分散式系统需要採用独特的程式设计法。以感测器网路为例,无线感测器是自行组织的元件,会机动地连接到同区中的其它感测器,以建立一个通信网路。很显然地,使用这项技术的研究者面对的是全新的软件挑战。这些高级概念还不普及,但是正如以下的应用环境所示,工程师和科学家所面对的程式设计挑战之中,有许多同样存在于他们现在所设计、控制及测试的系统中。
设计
• 汽车电力稳定控制器使用靠近重力中心的微处理器来监督剎车和驾驶系统传来的资料,并进行细微的调整,以保持车辆稳定。
• 智能型电话结合处理语音的高效能DSP,以及处理其它作业(例如PDA功能)的微处理器。
控制
•控制制造过程的机器(例如压出机,印刷机或包装机)结合多个联动的控制器,以管理原料进入制造程序的流程,并将完成的产品移出。
• 工业监督系统具备远端分散式无人操作控制机件,以监督及控制不同工厂的状况,同时将资料记录至企业资料库。
测试
• 结构测试及监督系统──测量机翼的结构反应或在冲撞测试中测量汽车的安全性──可能具备数百个I/O点,收集位于结构体各处各种次系统的资料。若要有效率地分析结果,必须透过先进的计时及同步化运算来计算这些分散测量之间的关系。
• 硬件迴路(HIL) 测试(测试动态控制系统)使用一部由与开发中之引擎控制机件(ECU)紧密连结之系统所控制的高速即时I/O来模拟外部环境。这两个程序配合运作,构成一部测试及控制系统。
听起来像是一件简单的工作──增加一颗处理器以提升效能,整合一颗DSP以进行专用信号处理,使用智能型感测器取代一部简单的量测设备──却使得工程师和科学家面对开发分散式系统的全新挑战。但是解决方法已经出现,就是一种运用分散式开发并利用新的处理能力的全新软件开发方式。
何谓分散式系统?
回到最初的问题,分散式系统的基本定义是"使用多颗处理器以建立应用程式的系统"。但是,就分散式系统所使用的处理器而言,这个定义还有两个延伸:
1. 分散式系统所使用的处理器可以用不同的技术,包括MCU、DSP,或FPGA
2. 分散式系统可以在实体上位于同一块电路板、机箱或机架上,或是分散在网路上的不同设备或系统中
这个定义透露出工程师和科学家在开发分散式系统时所面对的程式设计特殊挑战。
分散式系统的开发挑战
以上所举的应用环境是来自不同的行业及产品开发阶段,但是有一个共同点──它们都是不同形式的分散式系统。工程师和科学家在开发分散式系统时所面对的挑战包括:
1. 设计能够发挥多颗同种或混合技术之处理器功能的应用程式
2. 有效率地在多颗处理器之间分享资料;这些处理器可能直接连接至单一的PCB或机箱,或是远端连接至网路
3. 协调所有的节点,使之如同单一系统般地运作,包括节点之间的计时及同步化
4. 整合不同类型的I/O,例如高速数字、模拟、运动及视觉
5. 结合额外的服务至节点间所分享的资料,例如记录、警讯、以远端VI进行检视,以及和企业系统整合
图一:分散式系统可以是实际上位于一个机箱或机架上的多个系统,也可以是分散在网路上的独立设备或系统。
利用LabVIEW 8的新功能,工程师和科学家可以处理这些挑战,在下文中将进行详细的探讨。
为混合不同技术的分散式运算节点设计程式
分散式系统往往包括各种执行不同功能的节点,例如感测器、设备或系统。举例来说,一个工厂自动化系统可能包括三个独立的节点──一个是运动控制,一个是自动化检验,第三个则是环境控制。运动控制器可以使用G来设计程式,视觉系统使用C,PLC环境控制器则使用阶梯逻辑(ladder logic)。此外,这些节点或许都和一部记录资料的监督主系统连接。目前这类分散式系统的技师要求程式设计者使用不同的工具来设计每一个节点。再者,运动控制系统可能具备高级的需求,可以用现成即时可用的硬件来满足,因此工程师必须使用可设定组态硬件(例如FPGA)来执行复杂的数学运算。这种情形令开发过程更加复杂,开发人员必须拥有多种工具和程式语言的专业能力,需要更多的时间才能确定各系统能够配合运作。
LabVIEW 8透过单一开发环境,提供工具以设计不同节点的程式,从而解决这种程式设计的挑战。使用LabVIEW时,工程师可以开发程式,在多种运算设备(诸如桌上型电脑、嵌入式控制器、FPGA及DSP)上执行。此外,LabVIEW平台包括各项作业所需的专用函数,例如自动化检验的影像模式匹配、运动控制的轨迹生成,以及环境控制的量测及数字逻辑。再者,LabVIEW也运用复杂的先进信号处理运算程式设计,提供直接连接网页的功能,作为本地及远端操作界面。能够用一个工具突破节点功能的界限,即可大幅降低开发分散式应用程式的复杂度,并提高开发效率。
图二:利用种类繁多的LabVIEW运算目标,工程师和科学家可以选择正确的执行时
段环境供其应用程式使用,并随着需求的变动而扩充。
当程式设计师获得了设计其运算引擎的工具之后,他们必须运用多颗处理器的优势。举例来说,如果系统中包括多个运算引擎,那么平行执行就很重要。但是这个简单的概念却难以在文字式程式语言中实行,因为它们一向是採取循序执行的方式。相对地,LabVIEW早在二十年前即以平行程式语言着称。图形化语言架构很自然地呈现平行运算的概念。利用LabVIEW,工程师和科学家可以轻易地开发平行运算应用程式,只需将多个迴圈架构置入其程式码中即可。图三是两个独立迴圈以平行方式个别执行的图例。
图三:LabVIEW的图形化结构自然地呈现重要的程式设计概念,例如平行运算。
这是一个自然而直觉的方式,可以处理非常困难的程式设计挑战。在自动化测试系统中,平行执行非常重要,因为可能必须同时测试多部机器;在控制系统,即时作业一方面关闭控制迴圈,同时将资料传送给主界面;或是在嵌入式应用中,必须以决定性的方式来处理多种类型的输入。
通信及资料传输
分散式应用程式需要各种形式的通信和资料共享。举例来说,一个零件分类系统即必须在节点之间分享资料。运动控制器将零件移到一个位置上,视觉节点可以在该处取得影像,然后判断应该将零件移到何处。就最简单的通信层级来看,这些节点可以透过实体的数字界面来进行通信,以触发影像撷取和发送回馈。但是,原始的模拟及数字I/O线路往往有距离的限制,不容易扩充,而且不能发送复杂的资料。再者,这种方法并没有和系统的其余元件(可能包括一个主要使用者界面和远端手持型用户端)分享资料。基于这个原因,越来越多的工程师在大型的分散式系统中使用通信层级(例如乙太网路)的技术。
处理功能不同的节点之间的通信需求,是极具挑战性的一件事。虽然目前有许多种通信用的标准及协定──例如TCP/IP、Modbus TCP、OPC──但是通常一种协定规格无法满足工程师所有的需求,而且每一种协定的API都不一样。这种现象迫使系统整合者必须使用多种通信协定来完成整个系统。至于节点间的可确定性资料传输,工程师往往被迫使用昂贵的解决方案,採用反射记忆体(reflective memory)之类的技术。此外,工程师使用的任何通信协定或系统也都必须与现有的网路通信协定(例如OPC)整合。处理这些往往互不相容的需求的方法之一,就是抽取出特定的传输层及协定。这样做的时候,工程师可以在表面下使用多种协定,统一程式开发,并大幅节省开发时间。
LabVIEW 8的分散式智能使用一个具备弹性的开放性通信界面来处理这些问题,此界面在即时控制器节点之间(例如视觉系统和运动控制系统)提供资料共享的功能,并且和OPC整合。LabVIEW 8的共用变数(shared variable)是协定传输的抽取层,它可以处理先进分散式应用程式所需要的复杂资料类型,也可以扩大规模以涵盖高阶功能(例如记录及警告)。工程师可以使用LabVIEW共用变数,在系统的任意节点间来回分享资料,包括即时节点、歷史资料库,以及网页监督控制台。
图四:LabVIEW共用变数是协定传输的抽取层,可以处理复杂的
资料类型,也可以扩大规模以涵盖记录及警告的功能。
工程师可以透过互动式的对话方块来设定共用变数,轻松地将控制器和指示器结合至任何网路上的资料来源。
操作、除错,以及将程式码佈署至分散节点
在分散式系统的不同运算节点之间移动资料及指令只是开发分散式系统时所面对的挑战之一。管理及佈署在这些分散节点上执行的资料来源是系统开发商所必须面对的一项基本挑战。在最简单的分散式环境中,同类型的运算节点执行完全相同的原始程式码,工程师可以在一个地方维护主要原始程式,然后在修改程式码之后,将它佈署至所有的节点上。在较高级的分散式环境中,每个节点上都有不同的可执行码在不同的技术上执行,而且所有的节点不一定同时都上线。
LabVIEW 8使用单一环境来管理整个系统运算节点的原始程式码及应用程式佈署。LabVIEW 8中新增的LabVIEW Project储存分散式系统中的所有节点所使用的程式码及设定,包括PC、即时控制器、FPGA处理器,以及手持型设备。专案中亦包括数项工具,开发团队可以用它们来管理大型应用程式,包括:
• 整合之程式码控制,与主导市场的SCC工具相容
• 专案函式库,将程式码包装成模组化的可重覆使用函数,开发人员可以轻易依照需求加入系统中
• 系统硬件组态,开发人员可以直接从专案中设定系统中任一远端节点的撷取及控制I/O
• 版本规格,开发人员可以用来定义并储存多个专案版本,以便进行程式码发佈、除错、元件建立,或是最终佈署阶段
图五:新增的LabVIEW专案储存分散式系统中所有节点的程式码及
设定,包括PC、即时控制器、FPGA处理器,以及手持型设备。
利用LabVIEW 8,开发人员可以大幅简化整个系统的开发工作。系统中所有的即时、FPGA和手持型设备都可以在LabVIEW Project中看到,让开发人员能够轻松管理系统。开发人员可以将目标加入专案,即使目标离线亦无妨,因此更容易在缺少元件之时设计技术及开发系统。开发人员可以使用专案的直觉式树状选单检视,对在系统中任一节点上执行的程式码进行检视、编辑、重新佈署、执行及除错。开发人员可以即时观察分散式系统上所有节点之间的互动,这一点非常重要,因为智能型节点可以同时执行。这种能力改善通讯及同步化的设计、开发及除错,同时也大幅减少整体的开发时间。
在多颗处理器及多部目标之间,将系统同步化
许多分散式系统的重要元件之一是对网路上的所有智能型节点进行协调及同步化。对许多测试及控制系统而言,与外接系统之间的界面是透过I/O──感测器,致动器,或直接电子信号──来达成。传统仪器透过GPIB、USB或乙太网路连接至电脑,可以视之为分散式系统上的一个节点,因为这些仪器可以使用一颗处理器来执行机器内处理及分析。但是系统开发者可能无法直接存取传统仪器的内部作业,因此难以从整部系统的角度来将仪器效能进行最佳化。
透过虚拟仪控平台──例如PXI或CompactRIO,它们都使用以背板和可由使用者选择的模组所构成的机箱──工程师有更多的选择,可以用于同步化及控制。LabVIEW 8可以快速开发FPGA可重设组态I/O (RIO)设备,并且和专用迴路紧密整合,可以将多部设备同步化,形成一部机器,用于分散式及高通道数应用程式。工程师可以将PXI机箱背板延伸,跨越两部或多部机箱,以分享计时和触发信号。PXI计时及同步化模组(NI PXI-665x)使用PXI的触发匯流排、星状触发器,以及系统参考时脉功能,以运用高级的多设备同步化功能。此外,工程师可以使用LabVIEW FPGA模组及NI RIO设备上的FPGA,将多部PC、PXI系统或NI CompactRIO系统同步化。利用LabVIEW图形化程式设计以及可重设组态FPGA上的数字线路,工程师可以轻易将多部设备同步化。
图六:LabVIEW 8提供专用的确定性通信,供高级分散式应用程式使用。
除了使用硬件来传送计时和同步化信号之外,LabVIEW 8亦推出新的可确定性乙太网路方案,可以在系统之间获得同步化。新增的以时间触发的共用变数(shared variable)可以处理先进分散式应用程式,包括分散式控制及模拟系统、分散式模拟,以及网路上的关联式资料撷取。LabVIEW 8提供立即可用的解决方案,可以在节点间获得100 μs至100 ms的网路循环速率,以及±5 μs时脉同步化。
LabVIEW 8引进分散式智能
设计、控制及测试系统正在转变成结合更多运算威力的分散式系统。LabVIEW 8为工程师和科学家提供一个功能强大的架构,得以轻易地设计、管理、佈署及同步化分散式系统。为了解决今日及未来所面对的分散式开发挑战,LabVIEW 8具备了以下特点:
• 以多种技术为目标,包括桌上型电脑、工业电脑、移动式及嵌入式设备,例如MPU、DSP,以及FPGA
• 推出LabVIEW Project,一个直觉式的系统检视,用于在单一环境中操作及管理分散式设备
• 使用新增的共用变数功能,简化不同的运算引擎之间的资料通信
• 提供多种计时及进行系统同步化的方法,包括新增用于网路同步化的可确定性乙太网路技术
从最简单的工作檯设计实验室,到嵌入式设计的先进世界,LabVIEW图形化开发平台为科学家及工程师提高生产力。直觉式图形化程式设计语言、与多种I/O的相容性、容易开发的分散式系统,以及越来越多以LabVIEW平台为制作基础的使用者,这些因素互相结合,将激盪出更多的创意。(本文由NI美商国家仪器提供)