光谱测试系统的软件设计_第1页
光谱测试系统的软件设计_第2页
光谱测试系统的软件设计_第3页
光谱测试系统的软件设计_第4页
光谱测试系统的软件设计_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要摘 要当今显示器件在各行各业已经得到了广泛的应用。在显示器件研发和测试过 程中,器件的发光光谱是一个重要参数。本文详细阐述了一个光谱测试系统的软件设计开发过程, 该软件基于 Windows 平台。系统通过控制研华公司 PCI-1710L 数据采集卡,采用中断方式进行采集光 源光谱数据, 并达到实时显示的目的。 软件利用 Visual C+开发, 采用单文档结构。 界面友好,操作简便,现主要应用于科研。关键字:光谱,软件, PCI-1710,中断,采集IABSTRACTABSTRACTNowadays, display devices are widely used everywhere.

2、 In the process of the development and reaserch, the spectrum is important parameter.The design of software of the spectrum measurement system, which is based on the Visual C+ of Windows platform, is described in this paper. The system controls the Advantech's PCI-1710L data acquisition card to

3、sample and display the spectral date real-time by interrupt mode. The software is a single document structure and has a friendly interface. Now, it is mainly used in scientific research.Key Words: spectra, software, PCI-1710, interrupt, acquisitionII目 录IIIIV第 1章 引言第 1章 引言1.1选题背景随着信息科学的飞速发展,数据采集和存储技术

4、已经是数字信号处理中非常 重要的环节,将决定整个系统的性能。它广泛应用于雷达,通信,遥测遥感等领 域。它己经成为人们获得外界信息的重要手段。基于总线的数据采集与存储系统, 由于可靠且易于实现、经济等优点,得到了广泛的应用。显示器件研发过程中,光谱测试工作需要反复进行,使用人工进行测量不但 费时费力,而且得不偿失。利用数据采集系统来实现光谱数据的自动化采集与分 析对于显示器件的开发与研究非常有帮助,是科研中很有价值的一种手段。 实验室目前使用的光谱测试系统是上世纪 90年代中期开发的,系统中所采用 的微机型号为 80386, 操作系统为 MS-DOS , 自制的采集卡接口为 ISA 插槽。 随着

5、 近年来 Microsoft 视窗平台的普及与 PC 主机性能不断地提高,功能不断地强大, 在科研中发挥的作用越来越大,该旧式光谱测试系统已显得较为落后。1.2研究目标和意义针对以上情况,对现有光谱测试系统进行升级已经迫在眉睫。根据当前微机 系统的发展状况,通过购买基于 PCI 接口的研华 PCI-1710L 数据采集卡,在现今 广泛使用的 PC 机型上,开发一套基于 Windows 的光谱测试系统已成为可能。 而且旧式的光谱测试系统基于 DOS 方式生成光谱数据,使用 3.5英寸软盘进 行存储,并且打印功能基于旧式的打印驱动程序,需针对每种打印机设计不同的 驱动程序,十分繁琐;而新系统基于

6、Windows 平台,以上的问题都迎刃而解了。 即使微机出现问题,也可方便地将系统迁移到另外的微机中。1.3研究思路本次课题的任务就是光谱测试系统的软件设计,即基于 Windows 平台,以 1电子科技大学学士学位论文Windows Visual C+ 6.0作为开发工具,使用研华公司出品的 PCI-1710L 数据采集 卡,借助其内部提供的部分库函数,设计一套可以实时采集、显示光源光谱数据 的软件。2第 2章 光谱测试系统的光学原理3 第 2章 光谱测试系统的光学原理2.1 表色系和色度图表示光色系统的表示系以两种方式:一种是以加法混色为基础的生物物理方 式; 另一种是颜色的色品 (也称色调

7、 、 明度、 饱和度三特征为基础的纯生物方式。 前者是 CIE (国际照明委员会表色系,后者是用颜色标样的孟赛尔(Munsell 表色系。 本节重点介绍 CIE 表色系。 由色视觉所产生的色光 (色激励 范围为 380780nm 的可见光范围。根据加法混色法则将三基色进行适当比例混合就能得到等能量单色光的一种 色光。因此,任何一种颜色的光都可以有选择的三基色光,按一定比例混合而成。 三基色有许多选择方案, CIE 表色系规定三基色的单色光为红光 R (=700nm , 绿光 G (=541-6nm ,蓝光 B (=435.8nm 。 CIE 表色系可分为 CIE-RGB 表色系 和 CIE-X

8、YZ 表色系。前者使用规定得等量的 R 、 G 、 B 单色光作为三基色的表色 系,而后者则由于 CIE-XYZ 表色系中要配置等能白光存在着负值混色,因而给测 量和计算带来许多不便。 于是通过对 CIE-RGB 表色系的数学变换建立了 CIE-XYZ 表色系,欲配置任何一种似乎都能用三个虚设的基色 X 、 Y 、 Z 的正值混色而到。 该色系在实际使用中非常方便,故又称作 CIE-XYZ 标准表色系。 图 2-1 CIE-XYZ 标准表色系电子科技大学学士学位论文4 所示为在 CIE-XYZ 标准表色系中, 用 x -, y -, z -表示等能光谱的三色分布系数 (又 称光谱三刺激值 的混

9、色曲线。 图中 y -曲线与图 2-1所示的相对视感度曲线分布相 同。光源光度测量是建立在色度学的基础上。我国颜色标准采用国际照明委员会 (CIE推荐的 1931CIE-XYZ 系统,是以一组“ 1931CIE-XYZ 标准色度观察者光谱 三刺激值”数据为基础。该数据是根据加混色定律在实验基础上获得的,加混色 定律指出任何颜色都可以用线性无关的三原色适当地相加混合与之匹配,并具有 线性和可加性。光源的颜色是可见光辐射作用于人眼所形成颜色刺激的结果,假定进入到人 眼的相对光谱辐射功率为 ( , 那么由它引起的 CIE 三刺激值 X,Y ,Z 可以用下列方 程组表示为:(2-1式 (2-1中 (,

10、 (, (z y x 就是 1931CIE-XYZ 色度系统的光谱三刺激值。在实 际计算三刺激值时,常用式 (2-2求和来代替式 (2-1的积分式:(2-2式 (2-2中的 称为波长间隔,通常为 5nm 或 10nm 。式 (2-1和式 (2-2中的 k 称为调整系数,它的选择是把 Y 值调整为 100,即:(2-3780380780380780380( ( ( ( ( ( X k x d Y k d Z k z d =780380100/( ( nm nm k y =780380780380780380( ( ( ( ( ( nmnm nm nm nm nmX kx Y kZ k z =第

11、2章 光谱测试系统的光学原理5式 (2-2计算得到 X 、 Y 、 Z 三刺激值后,再利用式 (2-4就可求得待测光源的色 度坐标。(2-4非发光体(物体表色的光谱三刺激值 X 、 Y 、 Z 可以用式(2-5表示为:(2-5式中, (是照射到物体的光辐射功率, (为该物体的光反射率或透射率。 求出光谱三刺激值 X 、 Y 、 Z 后,再利用式 (2-4就可计算出其色度坐标。各种颜色的色度都能够在 1931CIE-xy 色度图上找到相对的色点位置;反之在 色度图上的任一色点都可以确定出它的色度坐标。不同的光色,由色知觉命名与 不同的色名。图 1-33表示了色度和色名的关系以及标准单色光的坐标点

12、位置。图 中将不同波长的单色光色坐标点连接起来的曲线叫做光谱轨迹曲线,连接轨迹首 尾两点的直线叫做纯紫(非光谱色光轨迹轨迹。两轨迹所围成的舌形曲线内包X x X Y Z Y y X Y Z Z z X Y Z =+=+=+780380780380780380( ( ( ( ( ( ( ( ( X k x d Y k y d Z k z d =电子科技大学学士学位论文6 括了一切物理上可能实现的颜色。舌形曲线上各点对应着各光谱单色光。各点即 可用波长表示,又可用色坐标表示。曲线内各点为非单色的复合光。根据不同坐 标点的颜色不同又可划分成若干小区域,形成色域。图 2-2也适用于明度 Y 值有 着较

13、宽变化范围的发光体的色度量。对于非发光体的色,因为明度 Y 值明显地受 色知觉的变化,所以它的色名和色度坐标的关系随 Y 值而有所不同。 2.2 显示色数显示色数是指能够显示的颜色的总数。它用每个基色的灰度等级数相乘之积 来表示。显示色数除了取决于显示器本身的性能之外,还取决于驱动信号系统的 水平。显示色数是用来表示中间色的规定细度的,而不是直接表示显示颜色的范围 和鲜明度。 色域表示显示颜色的范围和鲜明度, 通常用 CIEl931国际标准色度图表 示,如图 2-2所示。在马蹄形线框中,越接近外侧颜色的饱和度越高,越接近中心 就越靠近白色。所谓白色的表示方式,并没有统一的规定说明它是指何种程度

14、的 颜色再现能力。图 2-2 色度和色名第 3章 编译软件概述第 3章 编译软件概述3.1Windows 下程序设计方法与 MS-DOS 的区别MS-DOS 程序设计方法主要是过程驱动的程序设计方法。在这种设计思想的 指导下,一个程序会有一个明显的开始,明显的执行过程以及明显的结束。在程 序的执行过程中,开发者能直接控制程序执行的顺序。Windows 程序设计方法与 MS-DOS 程序设计的不同就在于 Windows 程序是事 件驱动的。事件驱动程序由事件发生来控制事件驱动的。程序自始至终以一种非 顺序的方式处理事件。在 Windows 的这种运行机制下,过程驱动的程序设计方法 明显不适用。W

15、indows 程序的流程,消息处理的机制如图 3-1所示: 图 3-1 Windows 消息处理的机制事件驱动的程序设计围绕着消息的产生与处理而展开。 Windows 应用程序所 做的最主要的工作,就是对各种消息进行处理。因此,应用程序的执行顺序是无7电子科技大学学士学位论文法完全预知的。每当事件发生时, Windows 做出记录并将消息发送到有关应用程 序中去,等待处理。Windows 为应用程序消息提供称为消息队列(Message Queue的保留区,在 操作系统中每个正在执行的程序都有自己的消息队列,由操作系统以及其他应用 程序或用户向应用程序发送的全部消息都存储在队列中,等待被调用处理

16、。 Windows 应用程序以特定的循环调用 Windows 消息。 消息循环是一个简单的 while(循环,它将一直运行,直到接受终止执行的消息,才使应用程序结束循环。3.2Microsoft Visual C+简介只要提到在 Windows (95/98/2000/XP等 下进行 32位的应用程序开发, 就不 能不提到 Visual C+。 Visual C+ 是 Microsoft Visual Studio开发工具的组件之一。 相比其他的编程工具而言, Visual C+ 在提供可视化的编程方法的同时,也适用 于编写直接对系统进行底层操作的程序,其生成代码的质量,也要优于其他的很 多开

17、发工具。Visual C+ 软件包包含了许多单独的组件,如编辑器、编译器、链接器、 exe 生成用实用程序、调试器以及各种各样为开发 Microsoft Windows 下的 C/C+ 程 序而设计的工具。重要的是,它还包含有一个名为 Developer Studio的集成开发环 境(Integrated Developing Environment, IDE 。Microsoft Developer Studio 用于 Visual J+、 Visual InterDev 、 Visual C+。 Developer Studio 把所有的 Visual C+工具结合,并且集成为一个整体。通

18、过一个 由窗口、对话框、菜单、工具栏、快捷键及宏等组成的和谐系统,开发人员可以 观察和控制整个开发进程。 该环境几乎就是 Visual C+ 中所能 “ 看见 ” 的所有东西。 所有其他事情都在其管理下在幕后运行。它有以下的特性:1 自动化和宏支持可以使用脚本来自动操纵例行的和重复的任务。 可以将 Visual Studio及其组件 当作对象来操纵,还可以使用 Developer Studio对象模型创建集成的附加程序。 2 ClassView组织 C+ 中的类,包括使用 MFC 、 ATL 创建或自定义的新类。8第 3章 编译软件概述可定制的工具条和菜单3 多功能调试器连接到正在运行的程序并

19、对其进行调试,还可以使用宏语言来自动操作调试 器。4 与浏览器集成可以在 Developer Studio中查看 Internet 上的 World Wide Web页。5 多工程支持可以在一个工作空间中包括多个不同类型的工程。工作空间文件使用扩展 名 .dsw 来代替过去的扩展名 .mdp ,工程文件使用扩展名 .dsp 来代替过去的扩展 名 .mak 。6 改进的资源编辑器在 Visual C+ 中,可以使用 WizardBar 来将代码与程序中的可视元素挂钩。 7 改进的文本编辑器可以使用正确的句法颜色设置来显示无扩展名的头文件。可以定制选定页边 距的颜色来更好地区分同一源代码窗口中的控

20、件和文本区域。 Find in Files命令支 持两个单独的窗格。3.3MFC 简介Visual C+ 的核心是 Microsoft 基础类库, 即通常所说的 MFC 。 尽管使用 Visual C+ 进行编程并不一定要使用 MFC ,使用 MFC 也不一定就要使用 Visual C+, 其他公司的很多软件产品如 Borland C+ 的新版本也提供了对 MFC 的支持, 然而 事实上在大多数情况下,提到 Visual C+ 时指的就是 MFC ,而提到 MFC 时指的 也就是 Visual C+。MFC (Microsoft Foundation Class Library 中的各种类结合

21、起来构成了一个应 用程序框架,它的目的就是让程序员在此基础上来建立 Windows 下的应用程序, 这是一种相对 SDK 来说更为简单的方法。 因为总体上, MFC 框架定义了应用程序 的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的 接口把具体应用程序特有的东西填入这个轮廓。 Microsoft Visual C+提供了相应的 9电子科技大学学士学位论文工具来完成这个工作:AppWizard 可以用来生成初步的框架文件 (代码和资源等 ; 资源编辑器用于帮助直观地设计用户接口; ClassWizard 用来协助添加代码到框架 文件;最后,编译,则通过类库实现了应用程序特

22、定的逻辑。构成 MFC 框架的是 MFC 类库。 MFC 类库是 C+类库。这些类或者封装了 Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了 OLE 特性, 或者封装了 ODBC 和 DAO 数据访问的功能,等等,分述如下。1 对 Win32应用程序编程接口的封装用一个 C+ Object来包装一个 Windows Object。 例如:class CWnd是一个 C+ window object,它把 Windows window(HWND和 Windows window 有关的 API 函 数封装在 C+ window object的成员函数内, 后者的成员变量 m_hW

23、nd就是前者的 窗口句柄。2 对应用程序概念的封装使用 SDK 编写 Windows 应用程序时, 总要定义窗口过程, 登记 Windows Class, 创建窗口,等等。 MFC 把许多类似的处理封装起来,替程序员完成这些工作。另 外, MFC 提出了以文档 -视图为中心的编程模式, MFC 类库封装了对它的支持。 文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数 据。3 对 COM/OLE特性的封装OLE 建立在 COM 模型之上,由于支持 OLE 的应用程序必须实现一系列的接 口(Interface ,因而相当繁琐。 MFC 的 OLE 类封装了 OLE API大量

24、的复杂工作, 这些类提供了实现 OLE 的更高级接口。4 对 ODBC 功能的封装以少量的能提供与 ODBC 之间更高级接口的 C+类,封装了 ODBC API的大 量的复杂的工作,提供了一种数据库编程模式。如前所述, MFC 实现了对应用程序概念的封装,把类、类的继承、动态约束、 10第 3章 编译软件概述类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模 板(或者说模式 。针对不同的应用和目的,程序员采用不同的模板。例如, SDI 应用程序的模板, MDI 应用程序的模板,规则 DLL 应用程序的模板,扩展 DLL 应用程序的模板, OLE/ACTIVEX应用程序的模板

25、,等等。这些模板都采用了以文档 -视为中心的思想, 每一个模板都包含一组特定的类。 典型的 MDI 应用程序的构成将在下一节具体讨论。为了支持对应用程序概念的封装, MFC 内部必须作大量的工作。例如,为了 实现消息映射机制, MFC 编程框架必须要保证首先得到消息,然后按既定的方法 进行处理。又如,为了实现对 DLL 编程的支持和多线程编程的支持, MFC 内部使 用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然, 这些内部处理对程序员来说是透明的,但是,懂得和理解 MFC 内部机制有助于写 出功能灵活而强大的程序。总之, MFC 封装了 Win32 API, OLE A

26、PI, ODBC API等底层函数的功能,并 提供更高一层的接口,简化了 Windows 编程。 同时, MFC 支持对底层 API 的直接 调用。MFC 提供了一个 Windows 应用程序开发模式,对程序的控制主要是由 MFC 框架完成的,而且 MFC 也完成了大部分的功能,预定义或实现了许多事件和消息 处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序 员的代码来处理应用程序特定的事件。MFC 是 C+类库,程序员就是通过使用、继承和扩展适当的类来实现特定的 目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣 的由基类处理。实现这种功能的基础是 C

27、+对继承的支持,对虚拟函数的支持, 以及 MFC 实现的消息映射机制。11电子科技大学学士学位论文第 4章 光谱测试系统软件设计4.1硬件结构及连接方案数据采集与控制系统的基本任务是物理信号(电压 /电流的产生或测量。但 是要使计算机系统能够测量物理信号,必须要使用传感器把物理信号转换成电信 号(电压或者电流信号 。有时不能把被测信号直接连接到数据采集卡,而必须使 用信号调理辅助电路,先将信号进行一定的处理。总之,数据采集与控制系统是 在硬件板卡 /远程采集模块的基础上借助软件来控制整个系统的工作包括采 集原始数据、分析数据、给出结果等。光谱测试系统的框图如图 4-1所示,主要由光源、聚光镜、

28、单色仪和电压放大 器组成。单色仪包含入射狭缝、出射狭缝、稳压电源和光电转换器件及其它器件 构成。光源发出的光经聚光镜会聚后照在单色仪的入射狭缝上,入射的光经光栅 色散后,单色光由出射狭缝射出并照在光电转换器件上,它所产生的光电压信号 经高精度电压放大器放大后,所得电压值就可用采集设备获取并处理。聚光镜光源 图 4-1 光谱测试系统框图12第 4章 光谱测试系统软件设计单色仪中的光电倍增管、放大器与电平接口电路共同组成模拟系统部分,采 集卡及其接口设备与微机共同构成数字系统部分。被测单色光射入单色仪后,经光电管转换成电压信号,再经放大器放大至与 A/D转换相匹配的程度后,送入数字处理系统,经过采

29、集卡内置的 A/D转换器转 换成数字量,再把离散后的数字信号送入微型计算机进行处理及分析。电平接口 电路的功能是将单色仪步进电机的输出脉冲 PMOS 电平(-2至 -10V 转换为数据 采集卡 A/D转换中所需的触发电平,此电平为 TTL 电平(05V 。在本次数据采集预处理系统设计与开发过程中,选用了研华(Advantech 公 司生产的 PCI-1710L 多功能数据采集卡作为系统核心部件。 PCI-1710L 是一款基于 PCI 总线的多功能数据采集卡。 其先进的电路设计使得它具有更高的质量和更多的 功能:1 即插即用PCI-1710L 是即插即用设备,完全符合 PCI 总线规范版本 2

30、.1。在采集卡安装 过程中,基地址、中断等有关总线的参数配置都可以通过即插即用功能予以正确 的自动设置,不需要操作任何的跳线或者 DIP 开关。2 单端或差分混合的模拟量输入PCI-1710L 具备一个自动的通道 /增益扫描电路,可在采样时负责控制多路复 用器的转换,而且卡中针对不同的通道内置了多种增益值及配置参数,使得多种 输入方式灵活组合。3 板载先进先出(FIFO 存储器PCI-1710L 提供板载先进先出缓冲存储器, 最多可存储 4K 个 A/D采样值。 当 开启 FIFO 功能时,每当 FIFO 半满或全满时,采集卡都会产生一个中断,并进行 数据的转移和存储,以防止数据丢失,因此有效

31、的提高了数据采集速度和可靠性。 4 16通道数字输入与 16通道数字输出PCI-1710L 提供 16个通道的数字输入与 16个通道的数字输出。 这给用户提供 了很高的设计自由度与灵活性,可以按照需求设计所需的应用方案13电子科技大学学士学位论文5 板载可编程计数器PCI-1710L 搭载了一个可编程计数器,可用于产生 A/D转换所需的触发信号。 计数器芯片集成了以 10MHz 频率工作的 3个 16位计数器,一个用作输入通道的 事件计数器或者用于产生脉冲,另外两个被叠加成为一个 32位计数器用于脉冲触 发。6 短路保护PCI-1710L 在 +12VDC/+5VDC电源引脚搭载了短路保护装置

32、。 当短路发生时, 保护装置就会自动地切断输出电流。在短路结束 2分钟左右以后,电源引脚会重 新输出电流。为了方便使用和拓展采集卡的使用范围, PCI-1710L 提供了 68针脚 SCSI-2线 缆 PCI-10168(长度 1米与 68针脚 SCSI-2接线终端板 ADAM-3968。 PCI-10168内置的连接线全部为双绞线,并且将模拟信号传输线与数字信号传输线互相屏蔽 分离,这给线缆赋予了特殊的信号噪声屏蔽功能,使信号具有最小的交叉串扰, 最大限度地降低了 EMI/EMC问题。 ADAM-3968用于将采集卡的所有的针脚引出 为 DIN 连接方式的接线终端。总之, PCI-1710L

33、 具有以下鲜明的特点:1 支持 PCI Bus Master方式的数据传送2 16通道单端或 8通道差分模拟量输入,或以组合方式输入3 12位 A/D转换器,采样速率可达 100千赫兹4 可编程的每通道输入增益5 可自由组合的单端或差分输入6 板载 4千样本 FIFO 缓冲器7 16通道数字输入8 16通道数字输出9 可编程的计数器 /定时器10 自动通道 /增益扫描14第 4章 光谱测试系统软件设计在进行数据采集时,用户可以设定某些信号的特定条件,例如一个数字信号 的高电平 (logic high 或低电平 (logic low ,或是一个电压信号的特定值,一旦满足 这些特定条件,数据采集卡

34、才真正开始采集并将其传送到系统中,这便是触发的 基本原理。一般地说来,对数据采集板卡的进行编程使用的触发方式主要有以下两种:软件触发方式,外部中断触发方式。1 软件触发方式实际上就是采用系统提供的时钟在毫秒级的精确等级上,通过对寄存器的查 询来实现数据采集,由于其采集速度比较慢,因此多用于低速数据采集场合。 2 外部中断触发方式使用外部中断传输方式,你需要编写中断服务程序,将板卡上的数据传输到 预先定义好的内存变量中,每次 A/D转换结束后都会产生一个硬件中断,然后由 中断服务程序完成数据传输。当转动单色仪的波长手轮时,在出射狭缝处将按顺序射出各种波长的单色光, 同时单色仪内的步进电机随着单色

35、光波长的变化同步地发出脉冲信号,波长随步 进电机转动变化速度为 1Å/45ms。软件的设计要求,获得的数据必须要与单色光波长相匹配。比较两种触发方 式:1软件触发方式纯粹以时间的对应关系来使采集数据与波长匹配:将采集数据的时间间隔与 波长变化速度对应,设定间隔一定的时长采集一次数据。这种方式可能存在一定 的误差,无法精准地使采集的数据与光波长变化相对应,而且由于软件触发采用 内部时钟作为触发源,在采集前必须使单色仪波长手轮先转动,内部时钟开始计 时并开始采集数据时,无法确定此时的波长值(即单色仪波长手轮转动的位置 , 因此无法准确起始采集波长。2外部中断触发方式单色仪内的步进电机随着

36、单色光波长的变化同步地发出脉冲信号,只有当冲 15电子科技大学学士学位论文16 来临时才会采集数据,因此可以通过脉冲实现波长与采集数据之间的关系,也能 很好的确定起始波长值。因此,本设计采样定时使用了单色仪步进电机的输出脉冲作为触发信号,通 过 PCI-1710L 的中断触发功能,以及与它配合的相应的软件程序来实现。该数据采集卡提供了强大的功能,为本次系统设计与开发提供了坚实的支柱。 设计方案中需要使用的主要是采集卡外部中断触发的模拟量输入功能。光谱测试系统模拟电路为数字电路提供了三根信号接线:地线、光电压信号线 与用于触发的脉冲信号线。只有光电压信号线是真正的有效数据获取端,因此采 用单端输

37、入的方式,并且单端输入以一个共同接地点为参考点。 图 4-2 PCI-1710L 数据接口定义被测电 压信号 地线第 4章 光谱测试系统软件设计将地线、光电压信号线与用于触发的脉冲信号线分别连接至采集接口,同时 根据设备使用手册,需要使用外部触发时必须将对外部触发使能端施以 +5V以上 的高电平,即可以完成信号连接。PCI-1710L 数据采集卡的数据接口定义如图 4-2所示:被测信号是单端输入的电压信号,使用模拟输入通道 0(AI0以单端信号输 入方式对其进行采样。最终的信号连接方案为:1 将被测电压信号接至 AI0(第 68脚2 将地线接至 AIGND3 将采集卡的 +5V(第 1脚与 T

38、RI_GATE(第 3脚相连。4 将外部脉冲,即步进触发信号接至 EXT_TRG(第 2脚从信号源设备引出的这些线缆全部通过 ADAM-3968接线终端与采集卡相连, 完成本次设计任务的硬件连接。在驱动程序进行 A/D或 D/A转换时,有三个相关的概念需要分清楚:采集板 上的 FIFO ,计算机内存中的内部缓冲区和用户缓冲区。1 FIFOFIFO 为采集板卡上自带的使用 FIFO 缓冲区可以达到更高的采集频率,如 PCI-1710使用 4K 的 FIFO 缓冲区后最高采样频率可达到 100KHZ 。2 内部缓冲区内部缓冲区是数据采集程序动态分配给驱动程序使用的一块内存区域。内部 缓冲区主要由驱

39、动程序使用, 驱动程序从板卡 FIFO 中或寄存器将数据通过中断方 式传输到内部缓冲区。在例程中该 BUFFER 指针一般用 hBuf 命名。如果是非循环采集,采样完设定好的数据个数后采集停止,驱动停止往内部 缓 冲 区 存 放 数 据 。 如 果 循 环 采 集 , 内 部 缓 冲 区 会 循 环 使 用 , 需 要 在 BUFFERCHANGE 事件用 DRV_FAITransfer及时将数据取走,以免被新到的数据 覆盖。可以放到用户缓冲区中,或者进行存到硬盘的其他数据操作。3 用户缓冲区17电子科技大学学士学位论文用户缓冲区是用户自己用来存放数据的地方,实际应用当中,用户可以根据 需要开

40、辟用户缓冲区的大小。例如开辟一个较大的用户缓冲区,在循环采集中将 每次采集的数据依次存放其中。 采集结束后统一处理。 在例程中该 BUFFER 指针 一般用 hUserBuf 命名。这二者还有一个区别在于, 内部缓冲区中存放的是 Raw Data(原始数据 , 用户 缓 冲 区 中 存 放 的 可 以 是 原 始 数 据 也 可 以 是 Float data (电 压 值 。 通 过 ptFAITransfer.DataType 参数来确定转换时是原始数据还是电压值。关于原始数据 和电压值的区别后面会有介绍。中断触发方式的 A/D转换中三种缓存区的使用方式如图 4-5所示:为了防止在高速数据采

41、集时丢失数据,特别是在像 Windows 这样的多任务操 作系统下 . 通常板卡完成 A/D转换后,将数据写入到数据输出寄存器中,接着使用 中断服务功能将数据传输到 CPU/内存。 图 4-5 三种缓存区的使用方式如果没有 FIFO 功能, 每次硬件完成 A/D转换后, 会改写保存在数据寄存器中 的值,如果上次 A/D的数据在新数据到来之前未被传输到 CPU ,那这个数据就丢 失了。如果使用 FIFO 功能,新数据仅仅被添加到 FIFO 缓冲区的第二个位置上,而 不会覆盖原先的数据。随后的数据会依次排列到缓冲区中。当你想从 FIFO 缓冲区 中搬移数据时仅仅需要从数据寄存器种读取一个数据即可,

42、这样将会将最初的数 据取出, FIFO 中的下以个位置的数据会取代数据寄存器中的值,你可以在任何时 候传输来自 FIFO 缓冲区中的数据, 当你在传输旧的数据时,硬件会将最新的数据18第 4章 光谱测试系统软件设计保存在 FIFO 中,从而防止数据丢失。你也可以在 FIFO 半满或全满时,一次性的 传输数据。由于这样减少了 CPU 的时间,因此非常适合大量的高速数据传输。 合理使用 FIFO 的方式:1 软件查询方式下使用 FIFO可以通过查询状态寄存器的状态未来判断 FIFO 缓冲区的状态, 分别判断空标 志位(Empty flag ,半满标志位(Half full flag以及全满标志位(

43、full flag的状 态。2 中断状态下如何使用 FIFO为何说 FIFO 可以防止数据丢失呢?通常情况下(没有 FIFO ,硬件完成一次 A/D转换后就会向系统产生一次中断请求,此时中断服务程序会去传输数据,现 在问题产生了:如果此时有一个优先级高的系统中断请求,你的中断服务程序会 等待系统中断服务结束才会继续响应。如果等待的时间过长,硬件会进行下一次 A/D转换(如果采用硬件触发方式, A/D转的速度会很快 ,并且在你的中断服务 程序传输旧的数据之前改写数据寄存器中的值。新的 A/D转换会有启动你的中断 服务程序,而传输的数据是最新的采样值。旧的数据已经被新的数据覆盖(丢失 了 。FIF

44、O 功能解决了上述问题。 FIFO 缓冲区会存储连续采样的数据, 如果中断服 务程序还未传输最初的采样值, FIFO 会将下一次采样值放入到 FIFO 中的下一个 位置。中断方式下使用 FIFO 的方法与软件查寻方法类似。驱动程序在操作内部缓冲区时是将内部缓冲区分为上下两半缓冲区来 分别 操作。通过这样来保证高速连续采集时,数据不会丢失。双缓冲区模式,在工程 上称为“乒乓”缓冲区模式。跟常用的单缓冲区模式相比双缓冲区模式的优点是, 它可以使用较小容量的内存,不间断地缓冲几乎无限量的数据(输入与输出端需 协同工作 。这种缓冲区模式的工作原理是:在内存里开辟两块容量相等的缓冲区 (以下将分别它们称

45、为第一缓冲区和第二缓冲区作为连续数据输入的缓冲区。 工作开始时,数据采集卡首先将数据写入第一缓冲区中,在数据采集卡开始把数 据写入第二缓冲区的同时,用户程序可以根据自身需要取出第一缓冲区中的数据 做特定的处理。当第二缓冲区被写满后,数据采集卡回到第一缓冲区的起始处, 19电子科技大学学士学位论文以覆盖旧数据的方式,把新数据写入第一缓冲区中;与此同时用户程序取出第二 缓冲区中的数据。整个数据采集处理过程可以如此不断地循环进行下去。在采集时驱动程序从寄存器中将数据传输到内部缓冲区中,当内部缓冲区半 满时驱动 程序发出 BufferChange 事件。 用户通过执行 DRV_FAICheck函数返回

46、的 HalfReady 来判断是上半部分还是下半部分缓冲满了,然后执行 DRV_FAITransfer来将相应的缓冲中的数据搬走。循环和非循环是指内部缓冲区的使用方式。非循环方式下,内部缓冲区作为 一个整体使用。在非循环方式下执行一次 DRV_FAIIntScanStart/DRV_FAIIntStart函数只能进行有限次 (次数就是通过参数 count 设定的采样个数 的 A/D转换, DRV_FAIIntScanStart函数执行过程中将所有数据都放到内部缓冲区; A/D转换结 束后,在 ADS_EVT_TERMINATED 事件的处理函数中再用 DRV_FAITransfer函 数将数据

47、传送到用户缓冲区中。循 环 方 式 下 , 内 部 缓 冲 区 分 为 两 个 半 区 使 用 。 执 行 一 次 DRV_FAIIntScanStart/DRV_FAIIntStart函数可以进行无限次的 A/D 转换,直到调 用 DRV_FAI_Stop函数。 这种方式下有限的内部缓冲区不可能容纳无限多的采集数 据。因此,将内部缓冲区分成前后对等的两个半区。当前半区填满后产生一个 ADS_EVT_BUFCHANGE事件,采集程序中的事件检查循环捕获这个事件,调用 DRV_FAI_Transfer函 数 把 数 据 传 送 到 用 户 缓 冲 区 ; 与 此 同 时 DRV_FAIIntSc

48、anStart/DRV_FAIIntStart函数将新转换的数据放到内部缓冲区的后 半部分。当后半区填满后再产生一个 ADS_EVT_BUFCHANGE事件,并用 DRV_FAIIntScanStart/DRV_FAIIntStart函数将新转换的数据放到数据传输完毕的 前半缓冲区,如此循环。PCI-1710L 的转换芯片是 12位的, 所以它可以把采集的电压量程分为 4096段, 这种方式称为量化,而 Raw Data就是将被采集量量化后的整数值。驱动程序将量 化值用 3位十六进制数表示,所以 Raw Data的示数范围就是 000-fff ,在内部缓冲 区中的数值就是这种量化的原始数据。

49、用户缓冲区中存放 V oltage(电压值 , 将 Raw Data 转化为电压值由 CRVFAITransfer 函数完成, 当 PTFAITransfer 的 DataType=0 20第 4章 光谱测试系统软件设计时,不进行 Raw Data到电压值的转化,这时候在用户缓冲区中得到的就是量化的 12位十六进制整数值。4.2软件设计本次测试系统的开发任务主要有两个:一是根据具体情况确定信号连接方案, 二是基于 Windows ,使用 Microsoft Visual C+ 进行光谱采集系统软件的开发,这 是核心任务。软件需要实现以下几个功能:1 使用数据采集卡的软件开发工具包及 LIB 文

50、件进行通信, 获取所需光谱数 据;2 光谱数据的采集后实时存储 (最终存储至 TXT 文档 ;3 光谱数据的采集后实时画图显示。硬件装配及调试是基于硬件的软件程序设计的基础, 程序设计的基本步骤与基 本框架如图 4-3所示。 图 4-3程序的设计步骤与基本框架本程序基于单文档的文档 /视图程序架构,运行各种命令与操作主要依靠菜单 21电子科技大学学士学位论文来实现。菜单由以下项目组成:1 文件菜单内含多个命令的弹出式菜单,包括四个用于处理文件的命令:新建、打开、 保存、另存为;三个用于打印的命令:打印、打印预览、页面设置;最近处理过 的文件列表以及退出程序的命令。2 编辑菜单内含多个命令的弹出

51、式菜单,包括撤消命令;以及 Windows 剪贴板相关的剪 切、复制、粘贴三个命令。3 查看菜单弹出式菜单,包括用于显示、取消状态栏的命令。4 采集卡设置菜单非弹出式命令菜单,用于打开采集卡设置对话框以设置采集卡参数。5 采集菜单非弹出式命令菜单,用于启动数据采集卡进行数据采集。6 图形菜单内含多个命令的弹出式菜单,包括用于处理图形的整体缩放、局部放大、图 像颜色三个命令。7 帮助菜单弹出式菜单,包含关于命令,用于打开一个显示程序信息的对话框。人机交互模块的编写实际就是菜单界面编写,因此最为简单。很多功能都是 菜单生成时自动添加的功能,因此只要添加“数据采集”下拉条,并添加“开始 采集”和“停

52、止采集”两个按钮分别进行开启和关闭数据采集卡的功能即可。编写基于研华 PCI-1710L 多功能数据采集卡的软件程序,需要使用研华驱动 程序提供的 DLL(动态连接库 ,Dynamic Linked Library22第 4章 光谱测试系统软件设计1 象编写一般的 Windows 应用程序一样创建您的应用程序代码, 在这些代码 中可以象典型的函数调用一样调用研华驱动程序中提供的动态连接库中(DLL 的函数。2声明在您的程序中用到的函数,即:包含动态连接库(DLL 的头文件, 该函数声明了所有的动态连接库中的函数,如下所示:#include“driver.h”3将动态连接库的(DLL 的导入库(

53、例如, “ ADSAPI32.LIB ” 加到工程模 块中。在 Visual C+环境下, 只要按照流程图就可以完成数据的动态采集及显示, 中 断传输流程图如图 4-4所示:使用的驱动函数说明:1 DRV_DeviceGetList:有多种硬件设备时,获取设备列表。2 DRV_ DeviceOpen:打开指定的数据采集卡。3 DRV_EnableEvent:开启事件响应机制。4 DRV_FAIIntStart:开始中断触发方式的 A/D转换。5 DRV_CheckEvent:检查是否有设定的事件发生。6 DRV_FAICheck :检查 A/D转换的状态。在本例中用于检查究竟是内部缓 冲区的前

54、半部分满了,还是后半部分满了。7 DRV_FAITransfer:将采集的数据从内部缓冲区传输到用户缓冲区。8 DRV_FAITerminate:结束 A/D转换。9 DRV_DeviceClose :关闭指定的数据采集卡。10 Buffer Change Event:该事件表示内部缓冲区已经半满。可以将这部分数 据传输到用户缓冲区中。测试步骤:1点击“开始采集”按钮,测试系统调用 DRV_DeviceGetList函数获取设备 列表并选择设备 PCI-1710L 数据采集卡;23电子科技大学学士学位论文2调用 DRV_DeviceOpen函数启动数据采集卡, 并调用 DRV_EnableEv

55、ent函 数开启事件响应机制;3调用 DRV_FAIIntStart函数获取数据采集所需要的参数设置,并开启中断 响应功能;4进入 DRV_CheckEvent函数检查是否有设定的事件发生,对应是否有外部 触发脉冲引发的 Interrupt 事件出现(用户打开波长手轮转动开关进行光谱测试 , 如果没有外部脉冲出现,则保持等待状态。一旦触发脉冲出现时, 软件就进行 A/D转换并将原始数据存储到内部缓存区, 然后等待下一个当触发脉冲出现时再进行 A/D转换,在这个过程中,当内部缓存 区半满或全满会触发 BufferChange 事件(如 BufferChange 事件发生,则调用 DRV_FAIC

56、heck函 数 首 先 检 查 内 部 缓 存 区 半 满 还 是 全 满 , 之 后 调 用 DRV_FAITransfer函数将原始数据转换为电压数据, 并讲转换后的数据转移至用户 缓存区。然后调用 WriteData(函数选适当的数据显示并保存到“数据采集 .txt ”文 档中。软件还要检查光谱测试是否结束,如没有结束则继续进入 DRV_CheckEvent函数进行事件检查,重复上述步骤;如结束则调用 DRV_FAITerminate函数停止 A/D转换,并释放内部缓存区和用户缓存区的空间,最终调用 DRV_DeviceClose函数关闭设备,采集完成。在光谱测试过程中,用户还可随时中断

57、采集,通过点击“停止采集”按钮, 软件产生 Terminate 事件而终止采集工作。24第 4章 光谱测试系统软件设计 图 4-4 数据采集及显示程序流程图 25电子科技大学学士学位论文借助于研华公司提供设备驱动程序 SDK ,在编写程序的时候可以合理并充分 的使用 SDK 中的系统函数, 依前文所述, 使用外部中断触发采集 (采用循环方式 时使用的通常流程应该是:1使用 DRV_DeviceOpen打开设备;DRV_DeviceOpen(0,(LONG far *&DriverHandle2获得设备的设置参数:ptDevFeatures.buffer = (LPDEVFEATURES&DevFeatures;ptDevFeatures.size = sizeof(DEVFEATURES;3驱动程序内在分配及锁定,并获取内部缓存区:hBuf=(USHORT far *GlobalAlloc(GHND,sizeof(USHORT * gulConvNum ptFAIIntStart.buffer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论