1、摘要I摘要虚拟仪器是随着计算机技术、现代检测技术发展起来的新型智能仪器。它提出软件取代硬件的思想,利用计算机软件配合数据采集模块来替代传统仪器仪表,代表了测试仪器的最新发展方向。然而随着移动计算和可穿戴技术的发展,传统PC 平台已经不能满足用户对于仪器小型化和便携式的需求。不过近年来 ARM 架构的处理器凭借低功耗、低成本、高性能的优势广泛使用在嵌入式系统和移动智能终端,使得基于 ARM 平台的虚拟仪器系统方案成为构建未来仪器系统的新思路。在 PC 平台上有 NI 公司提供的 VISA 库和 LabVIEW 软件开发套件等软件供用户进行开发,但在 ARM 平台下没有相应的支持。本文针对这一现状
2、,在 Linux系统下利用 Python 脚本语言实现一个基于 ARM 移动计算平台的虚拟仪器系统软件,并结合支持 USBTMC 协议的数据采集卡实现移动平台下的虚拟示波器。主要研究工作包括以下三个方面:1. USBTMC 驱动开发:本文针对不同仪器的不同接口设计了驱动层软件,可支持的接口类型有 USB、Ethernet 以及 Serial,并重点实现了 USBTMC 类接口驱动程序。其中利用 PyUSB 扩展包实现 Python 程序对底层 USB 接口的操作与控制,在此基础之上结合 USBTMC 协议原理实现该类接口设备的驱动程序,包括设备初始化、查找打开以及块数据的读写操作等,为 VIS
3、A 会话资源提供底层支持。2. 基于 Python 的 VISA 库的实现:介于 NI-VISA 库在 ARM 架构下不能工作,本文结合 PyVISA 项目,在 Linux 操作系统下实现纯 Python 的 VISA 库,为虚拟仪器顶层软件实现提供接口函数。具体包括资源管理类方法、资源模板方法和会话资源类方法等软件接口,其中会话资源类中重点实现了 USBInstrSession 类资源,最终实现虚拟仪器软件和数据采集卡之间建立消息通道。3. 虚拟示波器软件的设计与实现:本文利用自行设计的 VISA 库设计并实现虚拟示波器的五类功能模块包括设备管理模块、文件管理模块、功能设置模块、采集显示模块
4、和参数测量模块。同时运用 Python 的 GUI 图形扩展包设计实现了功能齐全、结构清晰的虚拟示波器的界面,包括波形显示区、垂直通道设置区、水平通道设置区、触发通道设置区和参数显示区等。关键词:虚拟仪器,示波器,ARM,VISA,Python,LinuxABSTRACTIIABSTRACTVirtual instrument is a new type of intelligent instrument with the development of computer technology and modern measurement technology. It puts forward
5、the idea that the software replaces the hardware, and uses the computer software to cooperate with the data acquisition module to replace the traditional instrument and meter, which represents the latest development direction of the test instrument. With the rapid development of mobile computing and
6、 wearable technology, this structure has been unable to meet the needs of users for the miniaturized portable instrument. But in recent years the ARM architecture processor widely used in embedded system and mobile intelligent terminal with the advantages of low power consumption, low cost, high per
7、formance. It makes the virtual instrument system based on ARM platform to be a new idea to construct the future instrument system.NI provides NI-VISA library functions which integrated various types of interface drivers, and also a software development kit which allows users to program through graph
8、ical software development. But its hard to implement on ARM platform. Faced the present situation, we use Python scripting language to achieve a virtual instrument software system based on ARM mobile computing platform and Linux system, and achieve a virtual oscilloscope software with the data acqui
9、sition card which is support USBTMC protocol. This paper mainly includes the following four aspects.1. Programming of USBTMC class driver: In this paper, we design the driver layer software for different interfaces of the instrument include USB, Ethernet, Serial, and we focus on the implementation o
10、f the USBTMC class interface driver. We achieve the operation and control of the USB interface for the python program by using the PyUSB. On this basis, combined with the principle of USBTMC protocol implementation of the class interface device driver, including device initialization, find device, o
11、pen device and block data read and write operations, to provide the underlying support for the VISA session resources. 2. Implementation of VISA Library Based on Python: Because the NI-VISA library can not work under the ARM architecture, this paper combined with the PyVISA project, achieve a pure P
12、ython VISA library to provide interface functions for the virtual instrument top-level software under the Linux operating system. Include resource ABSTRACTIIImanager, resource template method and session resources software interface, wherein the session resources we focused on the realization of the
13、 USBInstrSession class resources. Finally implement the communication between the virtual instrument software and the data acquisition card.3. Software design and implementation of virtual oscilloscope: This paper designs and realizes five kinds of function modules of virtual oscilloscope based on t
14、he VISA library which is designed by ourselves, including equipment management module, file management module, function module, acquisition and display module and parameter measurement module. At the same time, using the python GUI Graphical expansion pack we implement the oscilloscope interface, in
15、cluding waveform display area, a vertical channel setting zone, horizontal channel setup area, triggering channel setting parameter area and display area.Keywords: Virtual Instrument, Digital Oscilloscope, ARM, VISA, Python, Linux目录IV目录第一章 绪论 11.1 选题 的背景与意义 11.2 课题的研究现状 21.2.1 虚拟仪器的发展与现状 21.2.2 ARM
16、平台的发展和现状 31.3 本文的研究内容和结构 4第二章 仪器系统搭建和方案设计 62.1 虚拟仪器系统的典型结构 62.2 仪器系统的需求分析 82.2.1 系统硬件需求 82.2.2 系统软件需求 82.3 实验系统的搭建及方案设计 102.2.1 系统硬件结构的搭建 102.2.2 系统软件方案的设计 122.4 本章小结 14第三章 系统驱动协议层软件开发 153.1 驱动协议层的分析和设计 153.1.1 PyVISA 的分析 153.1.2 驱动协议层的设计 153.2 驱动层软件的实现 173.2.1 PyUSB 底层库分析 183.2.2 USBTMC 协议类的实现 203.
17、3 协议层软件的实现 243.3.1 PyVISA 前端实现 243.3.2 PyVISA 后端库实现 283.3 本章小结 35第四章 系统应用层软件开发 364.1 应用层软件的设计 364.1.1 功能模块设计 364.1.2 软件面板设计 37目录V4.2 功能层软件的实现 384.2.1 数据采集卡 SCPI 命令集 384.2.2 功能模块 Python 类封装 414.3 表现层软件的实现 454.3.1 仪器软件界面的实现 454.3.2 仪器软件工作的流程 484.4 本章小结 50第五章 系统测试 515.1 接口通信测试 515.2 仪器功能模块测试 535.2.1 测试
18、环境搭建 535.2.2 仪器功能模块测试 535.3 本章小结 57第六章 结论与展望 586.1 工作总结 586.2 论文展望 58致谢 59参考文献 60第一章 绪论1第一章 绪论1.1 选题的背景与意义虚拟仪器(Virtual Instrument 简称 VI)是随着计算机技术、现代测量技术发展起来的新型智能仪器,是测试测量仪器中的一个重要分支。它提出软件取代硬件的思想,由计算机硬件资源、模块化仪器硬件和用于数据分析、过程通讯及图形用户界面显示的软件组成测控系统,是一种由计算机操纵的模块化仪器系统 1。随着计算机硬件、软件以及总线技术的不断发展进步,计算机技术在测试测量领域的广泛应用
19、,虚拟仪器也在不断走向成熟和产业化,成为极具潜力的新一类测试仪器 2。相比于传统测试仪器,虚拟仪器拥有众多优势,能够根据用户需求灵活经济地更改仪器功能模块,重新定制软件,更好地适应当今科学技术发展对于测量仪器和测试技术提出的不断完善和扩展功能的需求 3。如今,人们不仅对于仪器设备的功能和性能有一定的要求,对其小型化和便携式的需求也十分迫切 4。在这些方面,虚拟仪器系统中的模块化仪器已从传统测试仪器逐渐被体积小、精度高的数据采集卡等功能化模块替代。但是在计算机硬件平台方面,传统 PC 由于具有高效的软件开发工具、丰富的总线接口和成熟的驱动程序,长期以来占据着主导地位。随着移动计算和可穿戴技术的迅
20、猛发展,这样的结构已经不能满足用户对于仪器设备小型化和便携式的需求,尤其在面对较为恶劣的野外测试环境,这种形式的测试系统显得更加笨拙和不稳定 5。另一方面,ARM 架构的处理器凭借低功耗、低成本、高性能的优势,已经广泛应用于各类嵌入式系统和移动智能终端 6。目前,ARM 家族占据 32 位处理器约 90%的比例,应用的领用包括消费电子产品、便携式设备、电脑外设,军事设备等,其中智能手机处理器占有 95%的市场占有率,平板电脑处理器的市场份额有 70%7。其中以 Cortex-A 系列的处理器性能最强,可实现高达 2GHz 的处理频率,从过去单核、双核已经发展为四核、八核,广泛应用于智能手机、平
21、板电脑、电子书和数字电视等产品领域。操作系统方面,ARM 架构处理器可以支持除 Windows 以外目前主流的操作系统包括各类 Linux 发行版、Android、IOS 和各类嵌入式 Linux。此外 ARM 架构的处理器芯片拥有丰富的资源和接口,其中不乏USB、 Serial 和 Ethernet 等通信接口,使得基于消息器件的仪器通信成为可能。因此基于 ARM 平台的虚拟仪器方案成为构建未来仪器的新思路。不过目前虚拟仪器软件都是虚拟仪器软件结构(Virtual Instrument Software Architecture, VISA)模型设计而来 8。主流的仪器厂商都为其产品提供了
22、VISA驱动库,如 NI 公司的 NI-VISA 库,安捷伦公司的 Agilent IO Suite;还提供软件电子科技大学硕士学位论文2开发套件如 LabVIEW 让用户能够通过图形化编程进行应用开发。然而这些驱动和软件都只支持传统 PC 平台下的 Windows 和 Linux 操作系统,在 ARM 平台上并没有提供相应的支持。由于目前国内在这方面的研究还处于空白,因此开发一款 ARM 架构下能正常工作的 VISA 具有十分重要的现实意义。综上所述,本文提出的基于 ARM 平台的虚拟仪器系统不仅继承了传统虚拟仪器功能强大、开发灵活等优势,还具备体积小、携带便捷、功耗低和可穿戴等特点,还可以
23、利用 ARM 平台下的无线网络模块组建网络化仪器,能够适应更加多变的环境和复杂的场景,够有效解决基于 PC 平台虚拟仪器的局限性。此外,本课题对于 ARM 平台下 Linux 系统的 VISA 库的研究,对于未来仪器和 ARM 的结合具有十分重要的意义。可以说基于 ARM 仪器系统的虚拟仪器软件开发是对新型仪器发展的一次探索,对于移动仪器发展和普及有一定的现实意义和社会价值。1.2 课题的研究现状1.2.1 虚拟仪器的发展与现状在当今电子产业迅猛发展的时代,电子测量行业发挥出越来越重要的作用。随着科技不断进步,新型的测量仪器层出不穷,它们采用计算能力超强的微处理器作为控制核心,硬件和软件相结合
24、,优化了传统的测量仪器,实现了控制智能化和交互的人性化,虚拟仪器技术孕育而生。目前虚拟仪器有两类,一类基于PC,它是由 PC、能插入 PC 机箱的插卡或模块和相关测试软件所构成。采用这种结构能构成基于 PC 的示波器、任意波形发生器、波形分析仪、函数发生器、逻辑分析仪、电压表和数据采集产品。另一类基于 VXI 或 CPCI/PXI 专用系统,采用这种结构能构成用于生产测试的高性能专用测试系统、数据采集系统和自动测试设备(ATE )。本文将从标准总线、软件技术和网络化三个方面概述虚拟仪器的发展现状 9。1. 虚拟仪器标准总线的发展虚拟仪器分为四大类,主要是插卡型虚拟仪器、外挂型虚拟仪器、高精度虚
25、拟仪器和网络化虚拟仪器。其中每种仪器的接口有所不同,插卡型主要是ISA、PCMCIA 和 PCI 接口,不过随着计算机发展 ISA 已经退出历史舞台,只有PCI 总线还在广泛使用。外挂型虚拟仪器接口总线由 RS232、USB 以及 IEEE 1394 总线,其中 USB 总线今年来得到广泛使用,无论是 PC 平台还是 ARM 移动平台都能够经常见到。IEEE 1394 更是因其极高的传输速率具有极大的发展潜力。GPIB、VXI 和 PXI 总线主要用于高精度集成系统,其中以 PXI 设备成本低、运第一章 绪论3行速度快、体积小、高速率拥有更大的应用前景 10。2. 软件技术的发展软件技术的发展
26、和有关国际标准的建立,是推动虚拟仪器技术发展的决定性因素之一。首先是可编程仪器标准命令(Standard Commands for Programmable Instruments, SPCI)的提出,规定了在控制器与仪器之间的交换信息的构造和内容,提出了一个具有普遍性的通用仪器模型 11。然后是虚拟仪器软件结构(VISA )的提出,建立了与仪器接口无关的标准 I/O 软件,使得用户不用再单独开发仪器驱动程序,也可以在少量代码修改的情况下方便的实现仪器模块的互换。3. 网络化的发展随着计算机技术、电子技术、 网络通信技术的进步和不断拓展,21 世纪的仪器概念将是一个开放的系统概念 12。计算机
27、和仪器的界限不再明显,通过计算机的网络功能,将不同的仪器作为节点接入网络,实现资源共享功能,共同完成测试任务 13-14。1.2.2 ARM 平台的发展和现状近年来随着智能手机和平板等移动智能设备迅速扩张,产品功能的丰富和完善,使得 ARM 处理器的高速发展,传统嵌入式的概念也随之发生变化,ARM 架构已经成为与 x86 架构、power 架构具有相同竞争力的硬件结构 15。表 1-1 主要 ARM 内核及性能核芯 指令集 运行频率 性能/DMIPS/MHz 特色ARM9 ARMv5 100 MHz300 MHz 1.1 早期产品ARM11 ARMv6 300 MHz800 MHz 1.25
28、低端产品中使用Cortex A5 ARMv7 600 MHz1.5 GHz 1.57 高能效,低成本Cortex A7 ARMv7 800 MHz1.2 GHz 1.9 新品,高能效,低成本Cortex A8 ARMv7 600 MHz1.0 GHz 2.0 单核主流Cortex A9 ARMv7 1 GHz2.0 GHz 2.5 多核优化,支持 14 核Cortex A15 ARMv7 1 GHz2.5 GHz 3.5 新品,支持 132 核从上世纪八十年代到目前为止,ARM 内核家族逐渐壮大,发展为有ARM1、ARM2、ARM6 、 ARM7、ARM9、ARM10 、ARM11 和 Cor
29、tex 以及对应的修改版或增强版,随着内核版本的增强,其初始频率越高、架构越先进、功能也越强。以往的 ARM9 和 ARM11 核芯的性能相对较弱,不能适应当前移动设备电子科技大学硕士学位论文4软件系统的需求。目前主流的有 Cortex-A5、A8、A9 和 A15 核芯以及基于上述架构的 MPCore 多核架构硬件核芯 16。ARM 在国际主要的制造设计合作厂商有德州仪器、高通、英伟达、三星、飞思卡尔、爱立信和迈威等,他们的最新处理器大多为 40nm 或者 28nm,双核或者四核芯产品。主要 ARM 内核和性能如表 1-1 所示。与此同时,随着互联网多媒体应用的发展,不仅要求 ARM 处理器
30、具有高性能的处理核芯,还需要集成优秀的显示核芯。目前 ARM 显示核芯主要有高通的Adreno 系列、Imagination 的 PowerVR 系列,NVIDIA 的 GeForce ULV 系列以及ARM 的 mail 系列。ARM 处理显示核芯对比如表 1-2 所示。表 1-2 ARM 处理显示核芯对比品牌 产品型号 标准支持 三角形输出/(M/s) 像素填充 /(M/s)Adreno OpenGL ES1.1/2.0 41 245QualcommAdreno OpenGL ES1.1/2.0 88 532PowerVR OpenGL ES1.1/2.0 63 1250Imaginati
31、onPowerVR OpenGL ES1.1/2.0 80 1500NVIDIA GeForce ULV OpenGL ES1.1/2.0 90 1200Mali-300 OpenGL ES1.1/2.0 30 275ARMMali-400 MP4 OpenGL ES1.1/2.0 30 1100与国际上 ARM 芯片发展相比,国内的主要芯片厂商还有一定差距,主要是由于设计经验不足,对市场的认知度不够高,相关产品在国际市场上竞争力相对落后。目前 ARM 公司全球合作伙伴总数有 800 多家其中中国芯片公司之有 79 家17。包括威盛、瑞星微、全志、华为海思和联发科等芯片厂商,设计的业务覆盖ARM 在各个领域的应用 18-19。自从 2011 年智能手机全球出货量首次超过 PC,移动互联时代 ARM 架构的计算平台将逐步替代 PC 成为伴随人们日常生活应用的主要电子设备。 ARM 处理器经过快速发展与成熟,成为移动计算平台控制核心的首选。1.3 本文的研究内容和结构本文研究目的是基于 ARM 移动计算平台开发一套虚拟仪器软件系统,并结合支持 USBTMC 协议的数据采集卡实现移动平台下虚拟示波器的功能。仪器软件系统具体包括驱动协议软件和应用软件两部分。其中驱动协议软件是实现一个