湖北大学本科毕业论文外文翻译
形化编程语言(“G”)进行的。它配备了一个巨大的数学、统计和数字信号处理(DSP)功能库。图形化编程意味着声明、变量和函数都可通过图标和“线”在屏幕上显示,而不是由文本代码表示。在LabVIEW程序中,执行过程并不是由源代码的顺序(线性程序)来控制的,相反,是由所产生的数据(数据流导向)控制的。例如,子程序并不执行A / D转换板程序,直到作为输入的原始数据全部获取。
LabVIEW的开发人员一直使用这样一个比喻,使用虚拟仪器(VI)模仿真实世界的测量仪器。 LabVIEW虚拟仪器的前面板(用户界面),可以同时接受来自用户的输入(推子,旋钮,从键盘输入的值,按钮,选择开关)和输出给用户的信号(指标,发光二极管组成,图,带状图,声音)。一个LabVIEW程序(框图)有点像电子电路的原理图。线代表保存数据的变量,各种变量处理的控件由图标(小图形对象,控制他们执行的操作)代表。传统的编程语言的所有基本要素都有贯彻和落实。例如,条件分支(IF ... THEN ... ELSE)代表一个CASE结构。重复操作可以用FOR... NEXT或WHILE循环。在LabVIEW中,循环的直接意思就是循环运行在边界内的所有图形化元素。
创建一个LabVIEW程序
创建一个LabVIEW程序(虚拟仪器VI)从确定哪些变量作为输入并把它们作为控件放在前面板上开始。有许多可供选择的图形化元素代表数字控件、文本(字符串)控件、下拉菜单控件、声音控件或布尔控制。同样,程序的输出控件也放置在前面板上。再次,输出量可能是数值量、文本或者图形波形。然后程序员切换到底层程序框图放置的前面板矩形框表示的控件和指标。矩形框内的颜色和数字表示的数据类型和精度(整数或浮点数)。程序员从下拉菜单选择函数或子程序(子VI),当鼠标变为一种特殊的光标,程序员使用布线工具的功能连接输入和输出端子。颜色和线条粗细的连线代表的数据类型的信息。蓝色的线代表整数表示,而橙色表示浮点数,粗线代表数组,平行线代表多维数组。重复操作被适当地放置在一个WHILE或FOR-NEXT循环中。条件分支由CASE结构实现,但需要在条件结构框内设置条件(一个布尔值TRUE或FALSE,或整数),它使用一个绿色的问号作为输入连接。在CASE结构中,每一种情况可以填充适当的操作或子程序(子VI)。因为它是不可能将所有可能情况在同一时间内显示,在CASE结构的顶部边界,允许程序员遍历,检查各种情况下的内容。打印一个文档中的图表时,每个CASE条件的内容可以单独打印。调试非常便利,因为程序中的每个VI或者子VI是一个独立的程序,当前面板或主程序需要调用他们时,他们可以单独运行,而且可以检查结果。
对屏幕对象的排列将变得非常容易,而连线也是以一个合乎逻辑的方式进行的。程序员可以通过减少画面杂乱和避免连线交叉来提高程序框图的可读性,而不是减少一些函数或子VI。一些绘图工具,如对齐和分布,可用来帮助简化程序框图和前面板的外观。
LabVIEW程序例子:一个简单的信号平均器
图1是一个基本信号平均器虚拟仪器的程序框图。信号平均器是许多项目的核心,用于获取诱发电位(EPS)。EPS是一个1?2个数量级大小命令,小于他们必须提取的脑电图(EEG)。体感EP电压的峰-峰值幅度可能小于1uV。信号平均器依赖于一个事实,即时间锁定唤起刺激诱发电位。通过总结和平均几百段紧随刺激脑电背景活动(“噪音”),可以消除,而保存感兴趣的信号。
程序使用一个while循环,直到指定的扫描数量已获得。一个移位寄存器在循环的边界位置,持有求和波形阵列。使用移位寄存器来记住先前的循环获得或计算的数据值是一种方
22
湖北大学本科毕业论文外文翻译
便的方式。数据输入移位寄存器右侧循环,并可用于左端寄存器用于下一次迭代。在图1的例子中,每个EP扫描加入到求和波形,以获取平均的EP,求和波形除以获取的扫描数值。两个计数器更新每次扫描:第一个计数器持有平均扫描次数;另一个计数器持有拒绝扫描的次数。一个CASE结构是用于条件检测算法的一部分。一个专门的子VI测试每个传入的扫描,以确定是否符合一个或多个条件标准。输出结果是一个布尔变量(TRUE或FALSE)。只有当条件不符合标准(案例选择= FALSE),才会将最近获取的最扫添加到求和波形,否则扫描被拒绝,并拒绝扫描计数器递增。
图1 信号平均器的程序框图
易于编程和生成文档
LabVIEW代码相当灵活并可重复使用,VIS几乎可以无限地嵌套使用。程序员可以为每个VI或子VI设计图标,而且可以判断前面板控件和显示器件将被用于为终端接收或提供数据。可以只对子VI设置计算功能或在调用时,打开前面板。 VI可以在许多应用共享。例如,一个数字滤波器VI可能使用一个整数数组,截止频率,坡度作为输入,并提供数字滤波输出的数据。这个VI只需要编写一次,然后它可以在若干项目中被重用。 LabVIEW的另一个重要方面是,许多操作显示了多态性“加法,减法,乘法,除法;甚至一些更复杂的操作可以接受任何数据类型上的输入。例如,可以用一个单一的数字乘以数字阵列,或两个数组可以彼此相乘,他们使用相同的乘法函数图标连线。
面向行的程序语言的一个常见的问题是,除非认真记录每一个语句和函数,否则不仅是别人,一段时间后,即使是设计该LabVIEW程序的程序员,对该程序可能也会迅速变得难以理解。LabVIEW图形化编程语法的性质,几乎提供了自我记录的代码;也就是说,人们通常可以依据连线之间的各种函数和子VI推导程序的功能。此外可以不用搞乱整个程序框图的情况下对每一个控件、显示器件、连线或者函数进行单独注释。可以通过点击函数显示注
23
湖北大学本科毕业论文外文翻译
释。 LabVIEW不允许收集和索引列表中的个人意见。前面板、程序框图和子程序的层次结构可以打印。另外各种条件结构的内容可以单独打印。
时序注意事项和实时应用
有几个选项用于控制操作的时间或更新显示。因为一个LabVIEW程序的事件序列是由数据驱动的,在处理时,使用连续数据采集的速度应当与产生数据的速度相匹配,并将这个速度作为支配抽样硬件时钟。只要电脑是能够保持处理速度,显示和存储结果,该程序将同步采集。为了保留计算机内存中的缓冲区空间,程序员可以运行一些常见的需要大量的处理器时间任务。缓冲区将保持未处理的数据段(积压),直到电脑再继续处理。该处理器将尝试,以弥补失去的时间。当缓冲区溢出时,出现错误,数据采集就会停止。在实践中,大多数用于临床监测、更新屏幕彩色图形对象的计算机平台由于采样率的原因,数据采集性能会有所限制。减少屏幕显示指标和图表的更新率可能是必要的。或者经过每一个循环的第n次迭代 只更新他们一次,或通过使用LabVIEW的伪并行处理机制。这涉及到要显示一个全局变量的值写入,读取和显示这个全局变量,以低得多的速度在一个单独的WHILE循环中运行。一个while循环重复操作的速度包括软件延时功能(等待NN毫秒)可以控制采集硬件。
LabVIEW在临床监控上的典型应用
LabVIEW可用来以各种方式接收现实世界的数据。在同一个A / D转换器面板,模拟信号可以被获取、处理和显示或写入到磁盘。一个例子是记录手术室的病人监护仪上的模拟信号或屏幕上的趋势记录用于未来分析。作为一个简单的数据记录,在线信号处理可能会对将要到来的信号进行操作,例如,频谱分析脑电图,心电图分析,分析血压波形,计算心率变异性,压力/容积的延伸或流量/容积循环。这些计算的结果可以存储在磁盘和显示在屏幕上。
在EP监测中,触发采集用于定长采样。一个板上的时钟产生脉冲同时触发刺激(触觉,听觉,视觉,或脑运动)和神经电生理信号的采集。常见的例子包括神经肌肉阻滞监测,触觉EPs,听觉EPs和 脑运动EPs。当信号信噪比太小不足以对单扫描波形进行评估,可以采用信号平均器。
LabVIEW还包含一个丰富的库函数,使电脑能够与拥有RS-232串口或IEEE-488接口的外部设备进行通信。这意味着,除了模拟信号的采集,程序可以与无创血压监测器、脉搏血氧仪或一些更深奥的监测器,如无创心输出量监测,经颅近红外光谱仪,经颅多普勒超声显示器进行通信。 LabVIEW的这些功能设置可以使用模拟和数字(串行/并行)通信同时获得来自不同信号源的数据,并可以整合计算得出数值并且向用户展示这些有意义的值。
LabVIEW的库函数
无论是使用串口或者国家仪器的某一个模拟或者数字输入板,LabVIEW丰富的库函数都可以对数据采集提供帮助。这些库中的许多VI包含源代码(框图),用户可以任意修改。各种窗口函数、频谱分析和大量的数字滤波器可用来检查或改变采集到的波形数据内容。此外,大量作为统计的库函数可用于基本的数据统计、假设检验和曲线拟合。对于字符串操作的支持便于基于RS-232或IEEE-488协议的设备的通信。为了有助于用户对LabVIEW程序的交互使用,屏幕上大量的控件和指标可从下拉菜单中获取。这些控件和指标,包括数字
24
湖北大学本科毕业论文外文翻译
显示或数值输入、推子、旋钮、仪表、表盘、指针和温度计。这些图形元素可以设置为控制器件或显示器件。常见的布尔控件和指标按钮有旋钮、开关和LED。以图形的形式显示数据已直接列入到可调整大小的图表中并且可以放置在在屏幕上的任何地方。可以在程序中使用属性节点设置控件的能见度、缩放大小、标记、网格线、颜色和指标。
LabVIEW的应用实例:感觉诱发电位监测项目
这个计划的目的是对连续单个或多通道监测神经皮层感觉诱发电位(PTNSEPs)进行测量。它采用传统的信号平均单脑电图扫描(100至200毫秒)应用于脚踝后的神经体感刺激。图2显示了前面板SEP监测程序。左边的图形窗口上跟踪显示目前的平均进度。在它下面,在同一个窗口,显示以前的SEP波形。一个简单的算法决定第一次正负峰值的位置。这些峰值的范围是由用户设置的。为了帮助调整这些范围,他们用不同颜色表示SEP波形不同的区域。这个简单的算法只在子域的局部极小和极大范围内寻找低通滤波器的副本的SEP波形的副本,并返回发现峰的指标。LabVIEW最具吸引力的一个方面是,该算法包含在一个单独的VI里,它接受的SEP波形和搜索领域的界限,输出峰值指数。这个VI可以很容易地替换更加复杂和强大的算法是程序有更大的用途。峰潜伏期和振幅值连同采集时间和用户输入的意见被写入到一个ASCII文本文件。如果有的话,可以用单独的潜伏期和振幅图显示潜伏期和振幅的趋势。用户可以设置峰值上限,如果超过接受的范围就会提醒用户。最后,SEP波形使用瀑布式显示方式绘制在“历史”窗口中,类似用于处理脑电压缩谱阵列。每个完成的SEP波形的数据点和附加数据(采集参数,采集的开始和结束时间,拒绝扫描的数量,注释字符串)相结合,它会自动写入磁盘。
25
湖北大学本科毕业论文外文翻译
图2 SEP监测器程序的前面板
汽车诱发电位程序
这个程序是以上所述的SEP监测程序修改而成的。用户可以设置传递的经颅刺激器的数据。为了安全起见,经颅刺激器是由操作员手动触发,同时观察手术室的操作情况。这消除了病人不当或危险的移动操作在手术期间不慎引发刺激的机会。该程序获取了1-8个通道的EMG信号,然后在两个波形图里面显示。每个后续的运动诱发电位(MEP)波形叠加超过先前的波形。每个刺激后,平均波形也被计算和显示出来。使用简单的寻找峰值算法描述上述现象,在相关子区间波形的最大和最小的振幅转化为最大峰峰值。这些值被显示并写入一个ASCII文本文件。原始波形、采集时间、采集参数和注释评论被写入到一个二进制文件。使用屏幕上的光标手动确定延迟,自动测定潜伏期可能会在稍后阶段实施。
讨论
当几个方面开始发挥作用可以确定哪一个数据采集系统用于临床监测。如果唯一的目标是获得现实世界的数据,并以数字信号形式存储那么许多选项可供选择。许多市售系统非常适用于从各种渠道获得数据,并结合用户输入的数据。例如,麻醉“记录者”可以预先设定接口和病人监护仪广泛阵列从而接受用户输入。这些程序并不是设计用来对在线数据进行分析的,通常情况下,他们都是可配置的,但是不可以编程。各种电脑程序可允许用户为特定应用程序和获取连续数据或者用户有特定事件发生时配置PC的数据采集板。这些程序包括分析函数和各级可编程函数。在频谱的另一端,由一个独立的计算机数据采集/监控应用程序使用一个传统的编程语言和数据采集硬件构成。当一个数据采集系统被用于特定的监控函数,例如,获取MEPs数据,其他几个方面也应该加以考虑。市售的显示器是否可以执行所需的功能?许多开发商制造神经电生理监测器用于手术室或监测,这个也可能用于专门开发设计手术室术中的监控软件。市售监测器已经对硬件和软件进行过测试,并纳入了许多安全功能。当现存和产生的技术投入使用时,这样一个系统可能是最好的选择。然而,在设计新的监测案例或评估新技术时,市售监测器的软件架构可能太过严格。除非商业监测器的设计是开放式和可编程的,否则它是很难实现和测试新的技术或算法。
传统的编程语言LabVIEW的主要优势是其发展时间短。一些作者公布了开发时间,只需要传统开发语言的四分之一。 LabVIEW框图结构程序的另一个重要方面是,它可以很容易做出修改,例如,为前面板上添加指示灯。这种修改通常可以在几分钟内完成。当程序在开发实验装置或新的监测技术的过程中需要不断更新和修改,这个特点将成为一个特别重要的优势。更重要的因素是LabVIEW的商业认可度,它允许普通人或者非专业程序员写他们自己的数据采集和处理程序,并且不用担心乏味的底层数据采集硬件编程。 LabVIEW支持所有NI硬件:A / D转换,数模(A / D)转换器,输入/输出(I / O的)板,数字信号处理板。LabVIEW允许使用第三方硬件制造商的驱动软件,而美国国家仪器公司也拥有支持GPIB实验测量仪器通信的驱动程序的大型数据库。
易于编程和建立曲线
即使以往计算机编程的经验是有限的,掌握LabVIEW编程还是比较容易的。只需几个星期到几个月的学习就可以逐渐对这个系统感到适应,而且能够建立涉及超过最基本应用的数据采集系统,处理数据和文件的输入输出。这使得LabVIEW的不太适合使用数据采集系
26