Lab: : Measurement - a portable and extensible framework for controlling lab equipment and conducting measurements

Abstract Lab::Measurement is a framework for test and measurement automatization using Perl 5. While primarily developed with applications in mesoscopic physics in mind, it is widely adaptable. Internally, a layer model is implemented. Communication protocols such as IEEE 488 [1], USB Test & Measurement [2], or, e.g., VXI-11 [3] are addressed by the connection layer. The wide range of supported connection backends enables unique cross-platform portability. At the instrument layer, objects correspond to equipment connected to the measurement PC (e.g., voltage sources, magnet power supplies, multimeters, etc.). The high-level sweep layer automates the creation of measurement loops, with simultaneous plotting and data logging. An extensive unit testing framework is used to verify functionality even without connected equipment. Lab::Measurement is distributed as free and open source software. Program summary Program Title: Lab::Measurement 3.660 Program Files doi: http://dx.doi.org/10.17632/d8rgrdc7tz.1 Program Homepage: https://www.labmeasurement.de Licensing provisions: GNU GPL v2 3 Programming language: Perl 5 Nature of problem: Flexible, lightweight, and operating system independent control of laboratory equipment connected by diverse means such as IEEE 488 [1], USB [2], or VXI-11 [3]. This includes running measurements with nested measurement loops where a data plot is continuously updated, as well as background processes for logging and control. Solution method: Object-oriented layer model based on Moose [4], abstracting the hardware access as well as the command sets of the addressed instruments. A high-level interface allows simple creation of measurement loops, live plotting via GnuPlot [5], and data logging into customizable folder structures. [1] F. M. Hess, D. Penkler, et al., LinuxGPIB. Support package for GPIB (IEEE 488) hardware, containing kernel driver modules and a C user-space library with language bindings. http://linux-gpib.sourceforge.net/ [2] USB Implementers Forum, Inc., Universal Serial Bus Test and Measurement Class Specification (USBTMC), revision 1.0 (2003). http://www.usb.org/developers/docs/devclass_docs/ [3] VXIbus Consortium, VMEbus Extensions for Instrumentation VXIbus TCP/IP Instrument Protocol Specification VXI-11 (1995). http://www.vxibus.org/files/VXI_Specs/VXI-11.zip [4] Moose—Apostmodern object system for Perl 5. http://moose.iinteractive.com [5] E. A. Merritt, et al., Gnuplot. An Interactive Plotting Program. http://www.gnuplot.info/