
1.2 虚拟仪器开发环境的搭建
基于NI LabVIEW搭建虚拟仪器开发环境时,通常根据开发项目需求的不同,涉及以下三方面全部或部分工作。
(1)LabVIEW软件自身的安装。
(2)LabVIEW附加工具模块(Add-Ons、Toolkits)的安装,包括:
● 安装NI提供的附加工具模块;
● 安装第三方开源或商用工具模块。
(3)硬件设备驱动(Device Drivers)安装。
在本书编写过程中,LabVIEW 2020和全新一代的LabVIEW NXG以及它们对应的免费社区版(LabVIEW Community Edition)均已发布,一些新的功能还在开发和完善中。LabVIEW NXG主要增强了对更多硬件和Web的支持,允许工程人员在其集成开发环境中一站式完成虚拟仪器项目的配置、测控及测试结果的可视化,如图1-5所示。NI官方建议开发人员使用LabVIEW NXG 5.0.0进行产品测试及物理测量类型的虚拟仪器项目开发。由于LabVIEW NXG 5.0.0仅仅支持LabVIEW 2020及其附加工具的部分功能,且对诸多硬件的支持还不完善,因此对于诸如大型分布式测控系统、智能仪器或工业设备等虚拟仪器项目开发,建议选择LabVIEW 2020更为稳妥。此外,从论坛上用户的反馈来看,不少人对迁移至LabVIEW NXG意见很大,因此未来NI是继续完善LabVIEW NXG还是将其中功能与LabVIEW未来版本整合还是未知数。

图1-5 LabVIEW NXG集成开发环境
LabVIEW 2020和LabVIEW NXG社区版主要针对非商业用途设计。若用户仅将LabVIEW用于个人而非商业用途,就可以免费从NI的官网下载安装并使用。LabVIEW社区版不仅包含LabVIEW专业版的所有功能,还包含针对Raspberry Pi、BeagleBoard和Arduino平台的Linux工具包,并能访问LabVIEW NXG Web模块,以创建基于Web的应用程序。
从LabVIEW 2009版本起,NI开始在Windows平台上发布LabVIEW 32位和64位两个版本。自LabVIEW 2014版本起,NI开始在Linux和macOS X平台上同时发布LabVIEW 32位和64位版本。相较于32位版本,64位版本的运行速度并未进行提升,并且不能支持32位版本所支持的全部附加工具模块。但是基于64位版本开发的程序,可以一次性访问更大的内存空间。应用程序可访问的最大内存空间由操作系统决定,32位LabVIEW在64位Windows平台上运行时,可以访问4GB的地址空间,64位LabVIEW在64位Windows平台上运行时,理论上可支持16TB的内存。大多数情况下,使用32位版本的LabVIEW就可以满足虚拟仪器项目的开发要求。仅在部分特殊情况下,如大数组操作或大图像处理,才会用到64位版本。
LabVIEW 32位和64位版本开发的VI源文件可以相互兼容,但是用某版本编写的源代码若要在另一版本上运行,则需要重新进行编译。若用某版本编写的代码包含的功能在另一版本上不存在,则会编译失败。用64位LabVIEW开发的VI编译成可执行文件后,将不能在32位的操作系统上执行。而用32位LabVIEW开发的VI编译成可执行文件后,要在64位的机器上运行,还可能需要要根据操作系统不同,稍作处理。若操作系统为64位Windows,32位LabVIEW编译的可执行文件可以直接运行。若操作系统为64位macOS X,则需要将操作系统的内核切换到32位才能执行32位LabVIEW编译的可执行文件。需要注意部分版本的macOS X操作系统并不支持内核切换。若操作系统为64位Linux,则需要安装32位的运行库才能运行32位LabVIEW编译的可执行文件。需要注意这些32位库并不能确保所有32位应用程序都能在64位机器上运行。
综上所述,LabVIEW 32位版本目前对硬件和附加工具模块有更好的支持,能满足大多数虚拟仪器项目的开发需求,因此一般基于LabVIEW 32位版本进行虚拟仪器开发平台的搭建,仅在程序需要进行大内存操作时才切换到LabVIEW 64位版本上。此外,目前NI公司每年会分两次发布LabVIEW,春季版本为当年新版本,秋季版本通常为补丁(Service Pack),用于解决春季版本中发现的问题。每年春季发布新版本后,NI公司会在接下来的4年中对其进行支持(表1-1)。由此,在开始一个新的虚拟仪器项目时,建议选用秋季发布的最新32位版本进行工程应用开发。
表1-1 NI公司对各版本LabVIEW的支持情况

注:表中未列出的LabVIEW版本,计划支持时间已结束,如需延长支持,需联系NI公司。
工程开发过程中若需要打开旧版本LabVIEW创建的VI,可参阅图1-6,选择合适的版本或转换工具来完成。其中LabVIEW 3.x以及之前版本创建的VI,需要借助LabVIEW VI Conversion Kit免费工具才能转换为较高版本支持的VI(图1-6注解C)。LabVIEW 8.5以及后续版本要打开LabVIEW 6.0之前版本创建的VI,需要先将其转换为LabVIEW 6~8.2.x,然后再由LabVIEW 8.5.x或者后续版本打开(图1-6注解I)。这意味着若要在LabVIEW 8.5以及后续版本中打开LabVIEW 3.x之前版本的VI,就需要先借助LabVIEW VI Conversion Kit将其转换为LabVIEW 6~8.2.x版本,再由LabVIEW 8.5.x或者后续版本打开(图1-6注解C+I)。
反过来,LabVIEW 8.0及以上版本可以将VI直接另存为LabVIEW 8.0或高于8.0但低于自己的版本。但是若要将VI从高版本转换为低于7.1.x的版本,则需要借助中间版本来实现转化过程。例如,若要将LabVIEW 8.2.x版本的VI另存为LabVIEW 7.1.x版本,则需要先将VI另存为LabVIEW 8.0.x版本,再由LabVIEW 8.0.x另存为7.1.x版本(图1-6注解M)。
新旧LabVIEW VI版本转换过程中应注意以下几点。首先,使用新版本LabVIEW创建的VI,若其中包括了在该新版本中首次引入的功能,则在向较低版本转换时,该功能将不可用。其次,如果VI中包括第三方工具或Toolkit中的VI,则转换过程中该第三方VI的版本转换应单独考虑,一般需参考该第三方工具版本的演化来单独处理。最后,在将VI转换为旧版本时,在“.lib”中的VI不会参与转换过程,而是保留对其中VI的引用。这样旧版本VI在调用“.lib”中VI时,照样可以正常工作。

图1-6 LabVIEW各版本VI的读写
LabVIEW及其附加工具模块的安装包均可从NI官网的下载通道获得。这些安装包可以分开逐个下载安装,也可以下载“NI开发者套件”(NI Developer Suite)或“NI软件平台合集”(NI Software Platform Bundle)进行一次性安装。NI开发者套件和NI软件平台合集中包含了所有NI提供的虚拟仪器开发工具及附加工具模块,包括LabVIEW、TestStand、LabWindows CVI以及信号处理、数字滤波、图像处理和机器视觉、声音振动分析、数据库、通信,测控等模块,在安装时可以按需选用。图1-7显示了基于NI开发者套件搭建虚拟仪器开发平台时,选择安装LabVIEW版本和附加工具模块的情况。

图1-7 基于NI开发者套件选择安装LabVIEW和附加工具模块
选择确定需要安装的软件版本模块后,只需指定安装路径(图1-8)并接受软件许可协议(图1-9),即可继续完成所选软件的安装。

图1-8 指定安装路径

图1-9 接受软件许可协议
在购买LabVIEW及相关附加工具模块软件之前,用户可以对其进行试用评估。试用版软件在试用期功能与正式版软件无异。试用期结束后,软件将被停止使用,直到用户购买软件授权并激活软件为止。值得一提的是,目前很多开发人员使用网络上的破解包对软件进行破解,虽然破解后的软件功能可以完全正常使用,但这毫无疑问是侵犯知识产权的行为,并且通过这种方式使用软件,不会得到NI公司的售后服务支持,建议广大读者购买正版软件进行开发。
除了NI公司官方提供的附加工具和模块外,也有一些第三方的工具模块值得安装使用。这些工具通常都依据开源BSD协议通过VI Package Manager(VIPM)进行分发。VI Package Manager是JKI(http://jki.net/)开发的一个附加工具模块打包安装工具,可以在https://vipm.jki.net/下载安装。安装运行VI Package Manager后,就可以浏览并选择所需的第三方附加工具模块(图1-10),通过右键菜单中的选项来下载安装。

图1-10 通过VIPM安装第三方附加工具模块
较受欢迎的第三方工具模块有JKI的开发框架和工具包、Delacor的队列消息处理框架、GPower的工具包,以及LAVA、MGI和OpenG.org提供的开源开发库等。这些第三方工具模块,通常都根据工程开发过程中的实际需求,对LabVIEW的VI进行封装或优化,有较强的易用性和可靠性。
硬件设备驱动程序均打包在“NI设备驱动包”(Device Drivers)中定期发布。这些驱动程序可以从NI公司官网免费下载。虽然新版本的设备驱动一般可兼容旧版本的开发平台,但多数情况下都会选择安装和开发平台相同版本的设备驱动程序。在搭建虚拟仪器开发平台时,一般在最后才安装设备驱动程序。若在安装LabVIEW和附加工具模块之前已经安装了设备驱动,就需要在安装这些软件后对设备驱动重新再进行安装或修复,确保设备驱动与所安装的LabVIEW和工具模块版本兼容。图1-11显示了通过NI设备驱动包选择安装设备驱动的情况。

图1-11 安装设备驱动程序
本书所附各种实例代码,基于图1-12所列版本的NI产品创建并调试通过。建议读者在学习过程中,安装相同或与之兼容的版本进行学习试验。

图1-12 本书代码所用版本