FreeCal - 用于计量测试和测量的 GPIB 仪器自动化






4.65/5 (18投票s)
FreeCal 是一个免费的 100% .NET 工具套件和仪器驱动程序,用于在测试和测量环境中控制多个仪器。
*** 更新 - 2017 年 9 月 4 日 ***
快速通知大家,我已经将源代码更新到 .NET 4.6.2 并修复了所有出现的错误。您可以在 GitHub 上找到最新的源代码:https://github.com/scottpage/FreeCal。
我正在解决一个导致文件散布到桌面各处的问题,因此在构建/运行程序时请谨慎使用。我会在几个小时内解决这个问题,所以您可能需要等到看到主分支上的时间戳改变。我于 2017 年 9 月 4 日美国中部夏令时 19:30(协调世界时 00:30)发布了最新的更新。
我将根据情况修改这篇说明。
干杯!
引言
FreeCal 是一个免费的 100% .NET 工具、程序和仪器驱动程序套件,用于在测试和测量环境中控制仪器。但是,它可以用于任何类型的仪器控制需求。我已开始开发用于 TCP/IP、USB 和串行设备的库。
除非在 GAC 中安装了 `NationalInstruments.NI4882.dll` 文件,否则演示应用程序将无法运行。您可以重新构建源代码并将所有引用从 GAC 更改为特定的文件位置。该应用程序还要求您的系统中安装了 National Instruments GPIB 接口控制器(USB、PCI 或 ISA 卡)。
您可以从这里下载国家仪器驱动程序,但如果您正在下载此应用程序的源代码,那么您可能已经拥有所需的一切。
注意:向所有 VS.NET 用户致歉。在过去的 6 个月里,我只有 SharpDevelop IDE 而没有 VS.NET。我现在有了 VS.NET,并且已经转换了整个应用程序。现在可以使用上面提供的链接从此页面下载新的 VS.NET 源代码。
范围
我开发此应用程序的目标是为 LabView、LabWindows、SureCal、MetCal 和 MeasurementStudio for Visual Studio .NET 等应用程序提供一个 100% 免费的替代方案。
特点
- 用于信号发生器、频谱分析仪、网络分析仪、功率计、函数发生器、通用和射频/微波计数器、衰减器/开关驱动器、EEPROM 功率传感器、数字万用表以及任何其他可远程控制的仪器的基本仪器库。所有类别都有已编码兼容性的特定仪器(由于所有仪器都有自己的特定通信语言)。
- 图表已通过 ZedGraph 集成到代码中:用于 .NET 的灵活图表库(感谢 JChampion 提供 ZedGraph,避免了开发集成图表库的许多不眠之夜)。
- 功率传感器、信号发生器、频谱分析仪和网络分析仪校准套件的程序已经开发(到目前为止,由于时间原因,大部分只完成了部分),但正如您在下面的示例中看到的,它们并不难创建。
- 包含多个转换函数,以帮助数据开发和呈现:频率从一个范围到另一个范围的转换(即 MHz 到 GHz),振幅和时间转换也作为几乎所有公式和仪器通信的基础。
- 我最近开始构建一个可视化编辑器,它允许“拖放”式测试创建。它包含在源代码中,可以在演示中通过“工具”菜单找到。
- 使用 MySQL.NET 连接器与 MySQL 集成。我创建了许多数据类,简化了将结果数据保存到 MySQL 数据库的任务。
- 已为多个仪器类别(如网络分析仪)创建了各种表单。在射频/微波领域,最困难的任务之一是从 Agilent 8500 系列 NWA 下载和操作数据,因此我花了大量时间编写 NWA 数据传输类。
- 由于每台仪器都有自己的公差和功能,因此驱动程序已编写为包含所有这些(任何缺失的信息都很容易添加,因为它都是基于结构的)。
- 仪器驱动程序和程序以“一个程序,任何仪器”的理念编写。您可以编写一个程序来校准同一类别的任何仪器。这是因为每个仪器驱动程序都包含每个测试的规范。
要求
FreeCal 运行需要以下软件/硬件:
- National Instruments NI-488.2 (Win32) 2.3 版驱动程序.
- 以下 NI 板卡之一:AT-GPIB/TNT(PnP)、GPIB-ENET/100、GPIB-USB-B、PCI-GPIB、PCI-GPIB+、PCI-GPIB/LP、PCI-8212、PCI Express(TM) GPIB 接口、PCMCIA-GPIB、PCMCIA-GPIB+、PMC-GPIB、PXI-GPIB 或 PXI-8212、PXI-8232。
- 根据您正在创建的仪器或可能开发的测试/程序,可能需要一些 GPIB 仪器通信知识。NI 驱动程序下载包含您正确理解其使用所需的所有 GPIB 文档。
快速入门
如果您只想开始控制仪器,则只需执行以下操作:
- 首先,将 `NationalInstruments.NI4882.dll` 文件(位于 `FreeCal\Program\Resources` 文件夹中)安装到 GAC 中(所有引用都指向此文件的 GAC,除非您希望指定所有库都在特定位置查找该文件)。当您下载 National Instruments Win32 GPIB 驱动程序 v2.3 时,此文件也会被安装。
- 在 GAC 中添加对 `NationalInstrument.NI4882` 库的引用,或者如果您决定直接使用该文件,则指定其位置。还要引用 `FreeCal.Instruments.dll`,并根据您希望控制的仪器系列,引用其相应的库。例如,如果您想控制信号发生器,则添加对 `FreeCal.Instruments.Microwave.SignalGenerators.dll` 文件的引用。某些仪器库会引用 `FreeCal.Data.dll`,如果需要,编译器将声明必须建立引用。
- 在代码文件顶部的命名空间声明部分中包含以下代码行(取决于要控制的仪器系列)。
Imports FreeCal.Instruments.Microwave.SignalGenerators
- 创建家族(或您正在控制的特定仪器)的变量。
Dim SigGen As SignalGenerator = New AgilentE4433B(0, 19, False)
第一个参数是板卡(0 - 3),第二个是仪器的主要地址,第三个参数通常总是 `false`(用于拉取当前仪器状态而不是预设为默认值(未 100% 实现))。有一个可选的第四个参数(布尔值)用于模拟模式,它默认为
False
,但如果将其提供为True
,则仪器将在模拟状态下运行,不向总线发送命令,所有发送到仪器的数据在从仪器读取时都将返回。
现在您已经创建了仪器变量,每个仪器类别都有自己的“Sections
”属性,该属性将显示仪器可以提供的所有功能。以下示例将向您展示如何创建和控制仪器:
'Don't forget to Import (using in C#) the proper namespace for the category
'of instrument you wish to control.
Imports FreeCal.Instruments.Microwave.SignalGenerators
Imports FreeCal.Instruments.Microwave.PowerMeters
Public Sub ControlInstrument
'Create the instrument
Dim SigGen As New AgilentE4433B(0, 19, False)
'Or Dim SigGen As SignalGenerator = New AgilentE4433B(0, 19, False)
Dim PwrMtr As New AgilentE4417A(0, 13, False)
'Control the instrument
Dim TestLevel As Single = -10
SigGen.Sections.RF.Frequency.Suffix = FrequencyEnum.GHz
SigGen.Sections.RF.Frequency.CW = 3.5
SigGen.Sections.RF.Amplitude.Suffix = AmplitudeEnum.dBm
SigGen.Sections.RF.Amplitude.Level = TestLevel
SigGen.Sections.RF.OutputState = OnOffStateEnum.[On]
Dim Result As Single = PwrMtr.Sections.Measurements.Measure("A")
MessageBox.Show("The " & PwrMtr.Model & " read " & Result & ".")
End Sub
摘要
这就是您入门所需的一切,但还包含更多仪器、工具和有用的表单,以帮助设计测试和程序。
截至目前,唯一的文档以 Word 文档的形式包含在 `FreeCal_src.zip` 文件的根目录下。我正在努力为将来的版本记录整个项目。
尽情享用!