1、 1 引言1.1 课题研究背景和研究意义-信号发生器的应用及发展 信号发生器是一种常用的信号源,它是一种为电子测量和计量工作提供电信号的设备,它和示波器、电压表、计数器等仪器一样是应用最广泛的电子仪器之一,几乎所有的电参量的测量都需要信号发生器。在各种实验应用和实验测试处理中,它不是测量仪器,而是根据使用者的要求,作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要7。信号源有很多种,包括正弦波信号源、函数发生器、脉冲发生器、扫描发生器、任意波形发生器、合成信号源等11。早期的信号发生器主要是由模拟振荡电路构成,这种信号发生器输出的信号稳定度不高,用电位器调节给定的参数误差较
2、大,不能担当复杂系统的调试与测试工作。1980年代出现了单片机,信号发生器逐渐向数字化发展,发展趋势是以单片机、DSP, CPLD,FPGA等可编程器件为平台,结合直接数字合成(DDS)技术,将合成后的信号通过D/A转换为模拟信号,再加上滤波电路而形成的数字信号发生器,它具有高精度、稳定性好、输出灵活的特点4。自1960年代以来信号发生器有了迅速的发展,出现了函数发生器,这个时期的波形发生器多采用模拟电子技术,由分立元件或模拟集成电路构成,其电路结构复杂,且仅能产生正弦波、方波、锯齿波和三角波等几种简单波形,由于模拟电路的漂移较大,使其输出的波形的幅度稳定性差,而且模拟器件构成的电路存在着尺寸
3、大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形则电路结构非常复杂8。自从1970年代微处理器的出现以后,利用微处理器、模数转换器和数模转换器、硬件和软件使信号发生器的功能扩大,产生比较复杂的波形。这时期的信号发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。软件控制波形的一个最大缺点就是输出波形的频率低,这主要是由CPU的工作速度决定的,如果想提高频率可以改进软件程序减少其执行周期时间或提高CPU的时钟周期,但这些办法是有限度的,根本的办法还是要改进硬件电路。随着现代电子、计算机和信号处理等技术的发展,极大促进了数字化技术在电子测量仪器中的应用,使原有
4、的模拟信号处理逐步被数字信号处理所代替,从而扩充了仪器信号的处理能力,提高了信号测量的准确度、精度和变换速度,克服了模拟信号处理的诸多缺点,数字信号发生器随之发展起来。目前信号发生器的基础就是直接数字合成技术,用高速存储器做查询表,通过数字形式存入的波形,由高速数/模转换器产生所需的波形。综上所述,不论是在军事、生产还是在科研与教学上,模拟信号发生器都是电子工程师信号仿真实验的最佳工具。随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,因此开发信号发生器具有重大意义8。1.2 虚拟仪器随着计算机技术、大规模集成电路技术和通讯技术的飞速发展,仪器技术领域发生了巨大的变化,虚
5、拟测试技术引入了仪器领域。随着相关软件的不断诞生,虚拟仪器将会逐步取代传统的测试仪器而成为测试仪器的主流8。1986年,美国NI公司(National Instrument)提出了虚拟仪器的概念,提出了“软件即仪器”的口号,彻底打破了传统仪器只能由生产厂家定义,用户无法改变的局面,从而引起仪器和自动化工业的一场革命,代表着从传统硬件为主的测量系统到以软件为中心的测量系统的根本性转变。简单的说,一套虚拟仪器系统就是一台工业标准计算机或工作站,配上功能强大的应用软件、低成本的硬件(例如插入式板卡)及驱动软件,它们在一起共同完成传统仪器的功能3。最初NI公司提出的虚拟仪器概念实际上是一种编程思想,这
6、种思想可简单地表述为:一个VI可以由前面板、数据流框图和图标连接端口组成,前面板相当于真实物理仪器的操作面板,而数据流框图就相当于仪器的电路结构。随着现代测试水乎与仪器技术的发展,目前虚拟仪器概念已经发展成为一种创新的仪器设计思想,成为设计复杂测试系统和测试仪器的主要方法和手段25。先进的计算机总线技术有力地促进了虚拟仪器技术的发展,包括高速总线技术VXI(VMEbus eXtensions for Instrumentations) 、 PXI(PCI eRtensions for Instrumentations) 、USB (Universal Serial Bus)、IEEE 1934
7、(Firewire)、基于网络的远程测量技术、智能虚拟仪器驱动技术IVI (Interchangable Virtual Instruments)等。采用这些新技术的测试仪器,预计其技术性能可比传统独立的台式仪器提高10倍以上,而且系统互换性和互操作性显著提高。未来的电子测试仪器除了拥有更强大和更完善的功能之外,体积将会更小,甚至可以移植到被测试的设备或电路中去,并且具有自我诊断、自我校准和自我感知的能力16。1986年10月,美国NI公司推出了图形化虚拟仪器专用开发平台LabVIEW,它采用独特的图形化编程方式,编程过程简单方便,是目前最受欢迎的虚拟仪器主流开发平台。经过10年的发展,NI公
8、司从正式发布LabVIEW1.0到目前的LabVIEW8.0,几乎不到两年就推出一个新版本,可见虚拟仪器技术进步的迅速。美国HP公司的HPVEE.Tektronis公司的Ez Test和Tek TNS以及美国HEM Data公司的Snap-Marter平台软件,也是国际上公认的优秀虚拟仪器开发平台。目前,虚拟仪器技术已经在军事、航空、航天、通信、测试与测量、现代汽车、半导体、生物医学等世界范围的众多领域得到广泛应用,如图1.1所示。图1.1 虚拟仪器技术的应用领域1.3 本文结构安排本文以信号模拟器为研究对象,学习使用图形化编程语言以及虚拟仪器专用开发平台Labview,完成信号模拟器总体软件
9、界面的设计.各章内容安排如下:第一章介绍了课题的研究背景、研究意义以及其国内外研究现状,指出了课题研究的重点内容;第二章详细学习介绍了Labview语言的发展及应用;第三章研究了总体方案中的上位机软件部分即LabVIEW进行分析和设计:信号模拟器系统总体组成;系统中软件部分介绍;第四章主要讲述了上位机与下位机的串口通信;第五章对本文的研究内容进行了总结,并提出了以后的研究方向和研究内容。2 LabVIEW开发平台2.1 虚拟仪器定义虚拟仪器,是一种基于计算机的自动化测试仪器系统。虚拟仪器通过软件将计算机硬件资源与仪器硬件有机的融合为一体,从而把计算机强大的计算处理能力和仪器硬件的测量,控制能力
10、结合在一起,大大缩小了仪器硬件的成本和体积,并通过软件实现对数据的显示 、存储以及分析处理。从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能以摩尔定律(每半年提高一倍)飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来较高的技术更新速率6。 虚拟仪器与传统仪器的比较如6:表2.1 :虚拟仪器与传统仪器的性能比较:虚拟仪器传统仪器开放性、灵活,可与计算机技术保持同步发展封闭性、仪器间相互配合较差关键是软件,系统性能升级方便,通过网络下载升级程序既可。关键是硬件,升级成本较高,且升级必须上门服务。价格低廉,仪器间资源可重复利用率高价格昂贵,仪器间一般无法相
11、互利用用户可定义仪器功能只有厂家能定义仪器功能可以与网络及周边设备方便连接功能单一,只能连接有限的独立设备开发与维护费用降至最低开发与维护开销高技术更新周期短(1-2年)技术更新周期长(5-10年)2.2 虚拟仪器的构成从构成要素上讲,虚拟仪器系统是由计算机、应用软件和仪器硬件组成的。从构成方式上讲,则有以DAQ板和信号调理部分为硬件方式组成的PC-DAQ测试系统,以GPIB、VXI、串行总线和现场总线等标准总线仪器为硬件组成的GPIB系统、VXI系统、串行总线系统、现场总线系统等。虚拟仪器系统的构成如图2.1所示。无论哪一种虚拟仪器,都是将硬件仪器搭载到笔记本电脑、台式计算机或工作站等各种计
12、算机平台上,再加上应用软件而构成的22。信号调理数据采集卡GPIB接口仪器GPIB接口卡VXI仪器串行口仪器/PLC现场总线(Fieldbus)设备测控对象Pc机测试软件数据采集与控制硬件图2.1 虚拟仪器的系统构成所有的LabVIEW应用程序,即虚拟仪器(VI),它包括前面板(front panel)、流程图 (bloek diagram)以及图标/连结器(icon/connector)三部分22。(1)前面板前面板是图形用户界面,也就是VI的虚拟仪器面板,这一界面上有用户输入和显示输出两类对象,具体表现有开关、旋钮、图形以及其他控制(contro1)和显示对象(indicator)。图2.
13、2是如图所示分别是正弦、方波、三角波、锯齿波形成的前面板,上面有四个显示对象,分别显示了四种基本波形。显然,并非简单地画两个控件就可以运行,在前面板后还有一个与之配套的流程图。图2.2 生成四种基本波形的前面板(2)流程图流程图提供Vl的图形化源程序。在流程图中对Vl编程,以控制和操纵定义在前面板上的输入和输出功能。流程图中包括前面板上的控件的连线端子,还有一些前面板上没有,但编程必须有的东西,例如函数、结构和连线等。图2.3与图2.2对应的流程图。图2.3 生成四种基本波形的流程图(2)图标/连接器VI具有层次化和结构化的特征。一个VI可以作为子程序,这里称为子VI(SubVI),被其他VI
14、调用。图标与连接器在这里相当于图形化的参数在LabVIEW的用户界面上,应特别注意它提供的操作模板,包括工具(Too1s)模板、控制(Contro1s)模板和函数(FunctionS)模板。这些模板集中反映了该软件的功能与特征。下面我们来大致浏览一下。a 工具模板(Tools Palette)该模板提供了各种用于创建、修改和调试VI程序的工具,如图2. 4所示。如果该模板没有出现,则可以在Windows菜单下选择Show Tools Palette命令以显示该模板。当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。当从Windows菜单下选择了Show HelpWindow功能后
15、,把工具模板内选定的任一种工具光标放在流程图程序的子程序(Sub VI)或图标上,就会显示相应的帮助信息。图2.4 工具模板 b 控制模板(Control Palette) 该模板用来给前面板设置各种所需的输出显示对象和输入控制对象。每个图标代表一类子模板。如果控制模板不显示,可以用Windows菜单的Show Controls Palette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板。控制模板如图2. 5所示,它包括如下所示的一些子模板。图2 图2.5 控制模板c 功能模板(Functions Palette) 功能模板是创建流程图程序的工具,如图2.6所示。该模板上的
16、每一个顶层图标都表示一个子模板。若功能模板不出现,则可以用Windows菜单下Show Functions Palette功能打开它,也可以在流程图程序窗口的空白处点击鼠标右键以弹出功能模板。图2.6 功能模板2.3 Labview的介绍 LabVIEW(laboratory virtual instrument engineering workbench)是一种图形化的编程语言和开发环境,被公认为是标准的数据采集和仪器控制软件。它为设计者提供了一个便捷、轻松的设计环境,利用它设计者可以象搭积木一样,轻松组建一个测量系统或数据采集系统,并任意构造自己的仪器面板,而无需进行任何繁琐的计算机程序代
17、码的编写,从而可以大大简化程序的设计。LabVIEW与VC+, VisualBasic, LabWindows/CVI等编程语言不同,后者采用的是基于文本语言的程序代码,而LabVIEW则是使用图形化程序设计语言G,用对话框代替了传统的程序代码13。电子技术的飞速发展及其在各方面的广泛应用,对仪器的“智能”要求越来越高,仪器中微机的任务不断加重,仪器在很多方面逐渐向微计算机靠拢。此外,随着微计算机和智能仪器的普及,测试系统中包含的重复部件越来越多,而冗余的部件往往不能容错。因此,需要统筹地考虑仪器与计算机之间的系统结构。在这种背景下,1982年出现了一种新型的、与PC机配合使用的模块式仪器,自
18、动测试系统结构也从传统的机架层迭式结构发展成为模块式结构。与传统仪器不同的是,模块式仪器本身不带仪器面板,因此必须借助于PC机强大的图形环境和在线帮助功能,建立图形化的“虚拟的”仪器面板,完成对仪器的控制、数据分析与显示。这种与PC机结合构成的,包含实际仪器使用与操作信息软件的仪器,称为“虚拟仪器”。它是计算机技术介入仪器领域所形成的一种新型的、富有生命力的仪器种类15。以下就是对虚拟仪器的各个方面进行详细介绍。 从虚拟仪器概念提出至今,有关虚拟仪器技术的研究方兴未艾。研究人员在虚拟仪器硬件接口、虚拟仪器软件及其设计方法等方面做了许多有意义的研究工作,并已开发了许多实用的虚拟仪器系统,如卡式仪
19、器、总线式仪器、计算机化仪器等,其共同点是大多强调其软件面板、虚拟界面、控制环境以及数学模型和软件方法。典型的虚拟仪器模式可以理解为,除了信号的输入和输出以外,仪器的其他操作,如测量、控制、变换、分析、显示等功能均由软件来实现,它们依据某种通用或专用总线标准或规约,或以某种接口形式,与计算机进行通信,由计算机统一进行调度和管理的一种数字化仪器13。如图是一个简单的仿真信号采集的构成: 图2.7 仿真信号采集LabVIEW所运用的设备图标与科学家、工程师们习惯的大部分图标基本一致,这使得编程过程和思维过程非常相似。用LabVIEW设计的虚拟仪器可以脱离LabVIEW开发环境,最终用户看见的是和实
20、际的硬件仪器相似的操作面板13。LabVIEW包含有专门用于设计数据采集程序和仪器控制程序的功能库和开发工具库。LabVIEW的程序设计实质上就是设计一个个的“虚拟仪器”,即“VIs(VirtualInstruments) 7。在计算机显示屏幕上利用功能库和开发工具库产生一个前面板(frontpanel);在后台则利用图形化编程语言编制用于控制前面板的程序。程序的前面板具有与传统仪器类似的界面,可接受用户的鼠标指令。一般来说,每一个VI都可以作为其它VI的调用对象,其功能类似于文本语言的子程序。 LabVIEW是带有可扩展功能库和子程序库的通用程序设计系统。它提供了用于GPIB设备控制、VXI
21、总线控制、串行口设备控制、以及数据分析、显示和存储的应用程序模块14。LabVIEW可调用Windows动态链接库和用户自定义的动态链接库中的函数。LabVIEW的CIN节点使用户可以使用由其它语言,如ANSIC,编译的程序模块,使LabVIEW成为一个开放的开发平台。LabVIEW还直接支持动态数据交换(DDE)、结构化查询语言(SQL) , TCP和UDP网络协议等。此外,LabVIEW还提供了专门用于程序开发的工具箱,使得用户能够设置断点,动态执行程序来观察数据的传输过程,以及进行方便的调试。 LabVIEW的运行机制就宏观上讲已经不再是传统上的冯诺依曼计算机体系结构的执行方式。传统的计
22、算机语言(如C)中的顺序执行结构在LabVIEW中被并行机制所代替:从本质上讲,它是一种带有图形控制流结构的数据流模式,这种方式确保程序中的节点只有在获得它的全部数据后才能执行。也就是说,在这种数据流程序的概念中,程序的执行是数据驱动的,它不受操作系统、计算机等因素的影响18。 LabVIEW程序是数据流驱动的。数据流程序设计规定,一个目标只有当它的所有输入有效时才能执行;而目标的输出,只有当它的功能完全时才是有效的。这样,LabVIEW中被连接的对话框之间的数据流控制着程序的执行次序,而不象文本程序受到行顺序执行的约束。从而可以通过相互连接功能对话框快速简洁地开发应用程序,甚至还可以有多个数
23、据通道同步运行。 LabVIEW的核心是VI。VI有一个人机对话的用户界面一前面板(front panel)以及类似于源代码功能的对话框(diagram)。前面板接受来自对话框的指令。在VI的前面板中,控制器(controls)模拟了仪器的输入装置并把数据提供给VI的对话框;而指示器(indicators)则模拟了仪器的输出装置并显示由对话框获得或产生的数据。当把一个控件或指示器放置到前面板上时,LabVIEW在对话框中相应地放置了一个端口(terminals),这个从属于控件或指示器的端口不能随意删除,只有删除它对应的控件或指示器时它才随之一起被删除31。图2.8 信号发生的前面板和流程图用
24、LabVIEW编制对话框程序时,不必受常规程序设计语法细节的限制。首先,从功能菜单中选择需要的功能方框,将之置于面板上适当的位置;然后用导线(wires)连接各功能方框在对话框中的端口,用来在功能方框之间传输数据。这些方框包括了简单的算术功能,高级的采集和分析VI以及用来存储和检索数据的文件输入输出功能和网络功能。用LabVIEW编制出的图形化VI是分层次和模块化的。我们可以将之用于顶层(top level)程序,也可用作其它程序或子程序的子程序。一个VI用在其它V工中,称之为subVI , subVI在调用它的程序中同样是以一个图标的形式出现的。LabVIEW依附并发展了模块化程序设计的概念
25、。用户可以把一个应用题目分解为一系列的子任务,每个子任务还可以进一步分解成许多更低一级的子任务,直到把一个复杂的题目分解为许多子任务的组合。首先设计subVI完成每个子任务,然后将之逐步组合成能够解决最终问题的V1.归纳起来LabVIEW软件开发平台具有以下优点30: 图形化的编程方式,设计者无需写任何文本格式的代码,是真正的工程师的语言。 提供了丰富的数据采集、分析及存储的库函数。 既提供了传统的程序调试手段,如设置断点、单步运行,同时提供有独到的高亮执行工具,使程序动画式运行,利于设计者观察程序运行的细节,使程序的调试和开发更为便捷。 32bit的编译器编译生成32bit的编译程序,保证用
26、户数据采集、测试和测量方案的高速执行。囊括了DAQ, GPIB, PXI, VXI, RS-232/485在内的各种仪器通信总线标准的疥有功能函数,使得不懂总线标准的开发者也能够驱动不同总线标准接口设备与仪器。提供大量与外部代码或软件进行连接的机制,诸如DLL(动态连接库)、DDE(共享库)、ActiveX等。强大的Internet功能,支持常用网络协议,方便网络、远程测控仪器的开发程序设计编程简单、直观、开发效率高。随着虚拟仪器技术的不断发展图形化的编程语言必将成为测试和控制领域内最流行的发展趋势。2.4 Labview的发展前景LabVIEW 作为一个功能强大的图形化编程软件,是开发虚拟仪
27、器的一种方便快捷的工具。作者认为,基于LabVIEW的虚拟仪器技术将沿着高性能、多功能、集成化和网络化方向发展。首先,性能将进一步提高。为了满足不同领域、不同用户的需求,LabVIEW 的性能将不断增强,实时性也将越来越好。其次,目前虚拟仪器硬件和软件都制定了开放的工业标准,使得资源的可重复利用率提高,功能易于扩展,生产、维护和开发的费用降低,这些非常有利于LabVIEW 应用范围的扩大16。随着Internet技术的发展,基于LabVIEW 的虚拟仪器技术也必将朝着网络化方向发展。未来,网络化虚拟仪器将有无限的发展前景。继“计算机就是仪器”、“软件就是仪器”概念之后,“网络就是仪器”的提法也
28、已出现18。虚拟仪器作为现代仪器仪表发展的方向,己经迅速成为一种新的产业,尤其在发达国家中发展更快,其设计、生产和使用己经十分普及。美国是虚拟仪器的诞生地,也是全球最大的虚拟仪器制造国。到1994年底,虚拟仪器制造厂已达95家,共生产1000多种虚拟仪器产品,销售额达2.93亿美元,占整个仪器销售额73亿美元的4%。到1999年,虚拟仪器已在仪器仪表市场中占有10%的份额。生产虚拟仪器的主要公司生产有数百个型号的虚拟仪器产品。同时,虚拟仪器系统及其图形化编程语言,在美国己作为各大学理工类专业学生的一门必修课程。国内虚拟仪器研究的起步较晚,最早的研究也是从引进消化NI的产品开始。但从90年代开始
29、,国内的一些大学相继开展了虚拟仪器系统的研究与开发工作,如:哈尔滨工业大学、重庆大学、国防大学、成都电子科技大学、中国科技大学等,正在积极开展虚拟仪器的研究工作,研制具有自主知识产权的虚拟仪器软件平台,并开发相应的虚拟仪器设备。国家自然科学基金委员会已将虚拟仪器研究作为现代机械工程科学前沿学科之一,并被列为“十一五”期间优先资助领域。国内专家预测,未来的几年内,我国将有50%的仪器为虚拟仪器。不久,我国将会有大批的企业使用虚拟仪器系统对生产设备的运行状况进行实时监测。随着微型计算机的发展,各种有关虚拟仪器开发软件不断诞生,虚拟仪器将会逐步取代传统的测试仪器而成为测试仪器的主流18。3 上位机软
30、件设计3.1 系统总体组成信号模拟器系统的结构框图如图3.1。该模拟器以PC为软件平台,CPLD和DDS互相配合,组成硬件电路,共同完成对所需信号的模拟。主机通过应用程序接收用户输入的频率、幅度、相位、信号公式及信号类型等参数,对其进行相应的二进制数据转化,并通过串口通信,传送给信号模拟器的硬件电路。信号模拟器根据所接收的数据,实时生成所需的各种信号。PC机软件模块串口通信CPLDDDSAD9852控制信号软件部分硬件部分图3.1 信号模拟器系统框图3.2 信号发生器主要参数指标及功能说明信号发生器技术指标:(1)频率范围:0-180MHz;(2)频率稳定度:1ppm;频率准确度:1ppm;(
31、3)温度范围:-65- +150;(4)最大输出电流:30mA;(5)频率间隔:0.4Hz;(6)输出波形:标准波形正弦波、三角波、方波、锯齿波、直流等,任意波形;3.3 信号发生器软件部分信号模拟器上位机的软件设计是PC机通过LABVIEW编程可以接收用户输入的频率、幅度、相位、信号公式及信号类型等参数,对其进行相应的二进制数据转化,传送给信号模拟器的硬件电路。如图3.2是信号发生器实现上述功能软件系统的框图: 图3.2 软件系统的组成原理图LabVIEW的功能非常强大,尤其体现在测量控制领域,而在界面编程上,LabVIEW编程实现的界面在效果上也是丝毫不逊色于VC,VB等同类软件,相比之下
32、,LabVIEW的实现过程却要简单的多3031。如图3.33.7为信号发生器生成标准波形的前面板: 图3.3 生成标准波形正弦波的前面板图3.4 生成标准波形方波的前面板图3.5 生成标准波形锯齿波的前面板图3.6 生成递增直流的前面板图3.7是实现波形选择的控件设置及前面板对应的参数选择:图3.7 信号模拟器波形的选择下面是任意波形的实现,首先通过在图示上面的波形显示中去任意位置任意个点,然后进行采样得到任意波形,然后还可以通过输入公式实现:图3.9 生成任意波形的前面板图3.10 任意波形实现的控件设置图3.9中任意波形的实现通过在上面的波形显示中选择任意个数和任意位置的点,然后进行采样实
33、现波形;图3.11中又通过公式编辑实现任意波形:图3.11 公式波形实现图3.12是公式波形控件的设置,利用本控件的参数设置,可以实现任意输入的公式波形:图3.12 公式波形控件设置4 上位机与下位机的串口通信4.1 串口通信的原理4.1.1 串口介绍串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收
34、字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡
35、量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是012
36、7(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单
37、的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。4.1.2 数据传输1数据传送方式在串行通信中,数据在通信线路上的传送有三种方式: 单工(Simplex)方式:数据只能按一个固定的方向传
38、送。 半双工(Half-duplex)方式:数据可以分时在两个方向传输,但是不能同时双向传输。 全双工(Full-duplex)方式:数据可以同时在两个方向上传输。2波特率和收/发时钟波特率:所谓波特率,系指单位时间内传送的二进制数据的位数,以位/秒为单位,所以有时也叫数据位率。它是衡量串行数据传送速度快慢的重要指标和参量。收/发时钟:在串行通信中,无论是发送还是接收,都必须有时钟信号对传送的数据进行定位和同步控制。通常收/发时钟频率与波特率之间有下列关系:收/发时钟频率n波特率一般n取1,16,32,64等。对于异步通信,常采用n16;对于同步通信,则必须取n1。3误码率和串行通信中的差错控
39、制误码率:所谓误码率,是指数据经过传输后发生错误的位数(码元数)与总传输位数(总码元数)之比,其与通信线路质量、干扰大小及波特率等因素有关,一般要求误码率达到10-6数量级。差错控制:为了减小误码率,一方面要从硬件和软件两个面对通信系统进行可靠性设计,以达到尽量少出错的目的;另一方面就是对传输的信息采用一定的检错、纠错编码技术,以便发现和纠正传输过程中可能出现的差错。常用的编码技术有:奇偶校验、循环冗余码校验、海明码校验、交叉奇偶校验等。4 串行通信的基本方式可分为两种:1) 异步串行方式:通信的数据流中,字符间异步,字符内部各位间同步。2) 同步串行方式:通信的数据流中,字符间以及字符内部各
40、位间都同步。 4.1.3 异步串行通信标准接口通信协议也叫通信规程,系指通信双方在信息传输格式上的一种约定。数据通信中,在收/发器之间传送的是一组二进制的“0”、“1”位串,但它们在不同的位置可能有不同的含义,有的只是用于同步,有的代表了通信双方的地址,有的是一些控制信息,有的则是通信中真正要传输的数据,还有的是为了差错控制而附加上去的冗余位。这些都需要在通信协议中事先约定好,以形成一种收/发双方共同遵守的格式。在逐位传送的串行通信中,接收端必须能识别每个二进制位从什么时刻开始,这就是位定时。通信中一般以若干位表示一个字符,除了位定时外,还需要在接收端能识别每个字符从哪位开始,这是字符定时。异
41、步串行通信时,每个字符作为一帧独立的信息,可以随机出现在数据流中,即每个字符出现在数据流中的相对时间是任意的。然而,一个字符一旦开始出现后,字符中各位则是以预先固定的时钟频率传送。因此,异步通信方式的“异步”主要体现在字符与字符之间,至于同一字符内部的位与位间却是同步的。可见,为了确保异步通信的正确性,必须找到一种方法,使收发双方在随机传送的字符与字符间实现同步。这种方法就是在字符格式中设置起始位和停止位。异步通信的传输格式如图4.1所示。每帧信息(即每个字符)由4部分组成:图4.1 异步通信的数据传输格式1) 1位起始位,规定为低电平“0”。2) 58位数据位,它紧跟在起始位后面,是要传送的
42、有效信息。规定从低位至高位依次传送。3) 0位或1位奇偶校验位。4) 1位、1.5位或2位停止位,规定为高电平。异步通信格式中起始位和停止位起着至关重要的作用。起始位标志每个字符的开始,一帧数据的开始,通知接收器开始装置一个字符,以便和发送器取得同步;停止位标志每个字符的结束。通过起始位和停止位的巧妙结合,实现异步字符传输的同步。由于这种同步只需在一个字符期间保持,下一个字符又将包含新的起始位和停止位,所以发送器和接收器不必使用同一个时钟,只需分别使用两个频率相同的局部时钟,使它们在一个字符时间内收发双方的串行位流能保持同步,即可做到正确可靠地传送。关键是接收器必须准确地发现每个字符开始出现的
43、时刻,为此,协议规定起始位和停止位必须采用相反的极性,前者为低电平“0”,后者为高电平“1”。利用前一个字符的高电平停止位到后一个字符的低电平起始位的负跳变,接收器便知道这是一个字符的开始,可以以此作为新字符内,位检测与采样的时间基准。正是为了保证这种从一个字符到另一个字符的转换必须以负跳变开始,通信协议规定在字符与字符之间出现空闲状态时,空闲位也一律用停止位的“1”填充。停止位长度规定可以取1位、1.5位或2位。一般有效数据为5位(称为五单位字符码)时停止位取1位或1.5位,其他单位的字符码停止位取1位或2位。至于有效数据位后面的奇偶校验位,协议规定可以有,也可以没有。在数据通信中,按照“国
44、际电报电话咨询委员会”(CCITT)的建议,通常将逻辑“0”称为“空号”(Space),而将逻辑“1”称为“传号”(Mark).按这种叫法,在异步通信中,每个字符的传送都必须以“空号”开始,以“传号”结束和填充空闲位。由于异步通信系统中接收器和发送器使用的是各自独立的控制时钟,尽管它们的频率要求选得相同,但实际上总不可能真正严格相同,两者的上下边沿不可避免地会出现一定的时间偏移。为了保证数据的正确传送,不致因收发双方时钟的相对误差而导致接收端的采样错误,除了如上所述,采用相反极性的起始位和停止位/空闲位提供准确的时间基准外,通常还采用一些另外的措施:1) 接收器在每位码元的中心采样,以获得最大
45、的收/发时钟频率偏差容限。这样在712位的整个字符传送期间,收/发双方时钟的偏差最多可允许有正、负半个位周期,只要不超过它,就不会产生采样错误。也就是说,要求收/发时钟的误差容限不超过4.17%(按每个字符最多12个码元算)即可。显然,这个要求是很容易实现的。为了保证在每个码元的中心位置采样,在准确知道起始位前沿的前提下,接收器在起始位前沿到来后,先等半个位周期采样一次,然后每过一个位周期采样一次,直至收到停止位。2) 接收器采用比传送波特率高的时钟来控制采样时间,以提高采样的分辨能力和搞干扰能力。图4.2给出了一个频率为16倍波特率的接收时钟再同步过程。从图中可看出,利用这种经16倍频的接收
46、时钟对串行数据流进行检测和采样,接收器能在一个位周期的1/16时间内决定出字符的开始。如果采样频率和传送波特率相同,没有这种倍频关系,则分辨率会很差。比如在起始位前沿出现前夕刚采样一次,则下次采样要到起始位结束前夕才进行。而假若在这个位周期期间因某种原因恰恰使接收端时钟往后偏移了一点点,就会错过起始位而导致整个后面各位检测和识别的错误。图4.2频率为16倍波特率的接收时钟再同步过程4.2 使用LabVIEW系统VI4.2.1 LabVIEW串口控件介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中如图:图4.3 LabVIEW中的串口通讯VI位置其中LabVIEW的串口通讯控件介绍如下:串口配置VI:将VISA资源名称指定的串口按特定设置初始化。VISA串口字节数:返回指定串口的输入缓冲区的字节数。VISA写入:将写入缓冲区的数据写入VISA资源名称指定的设备或接口。VISA设置I/O缓冲区大小:设置I/O缓冲区大小。如需设置串口缓冲区大小,须先运行VISA配置串口VI。VISA读取:从VISA资源名称所指定的设备或接口中读取指定数量的字节,并将数据返回至读取缓冲区。VISA清空I/O缓冲区:清空由屏蔽指定的I/O缓冲区。VISA关闭:关闭VISA资源名称指定的设备会话句柄或事件对象。4.2.2 LabVIEW串口应用调用VISA