Homepage of Lars E. Pettersson

Accessing GPIB instruments

What is GPIB/HPIB?

In 1965, Hewlett-Packard (now Agilent), a major manufacturer of electronic test instruments, wanted to develop a means by which any of its instruments could communicate and exchange data with any other. The method that their engineers developed was a hardware standard and communications protocol that became known as the HP-IB (Hewlett-Packard Instrumentation Bus).

This bus became quite popular, and in 1975 it was adopted by the IEEE as a standard-the IEEE-488 bus, also widely known as the general purpose instrumentation bus (GPIB). About 10 years later, the standard was revised to resolve a number of ambiguities that were not spelled out in the original standard. This newer version of the standard is known as IEEE-488.2.

(Text above from http://vhimpe.crosswinds.net/electronics/gpibfaq/gpibfaq.html)

More information about GPIB/HPIB can be found at

Software needed

There are a number of ways to use GPIB with Linux. In my case, using a National Instruments AT-GPIB/TNT ISA card, a driver from National Instruments seem to suite my needs best. Their latest driver code can be fetched from ftp://ftp.ni.com/support/gpib/linux/

If you have an older ISA based card the work at http://linux-gpib.sourceforge.net/ or http://www.physik.fu-berlin.de/~toerring/GPIB.tar.gz might be the answer.

We also need some software to access the cards. In my case I stumbled over the work of Jeff Mock at http://www.mock.com/gpib/

Jeff Mock uses Perl in his software, so his latest code may also be fetched from http://www.cpan.org/. From CPAN you also need the MD5, Storable and Tk modules. Jeff Mock uses Tk for the graphical interfaces, but for those that want Qt, there exist a PerlQt module at CPAN and http://perlqt.sourceforge.net/. Sadly I have not been able to install that properly on my RedHat 7.3 based computer. For unknown reasons I always get "Segmentation fault" when trying to run PerlQt applications, I can not even get the examples to run. (This turned out to be caused by the NVIDIA-GLX package and the associated libGL library files, a problem yet to be solved.)

If you are using rpm a nice tool is cpan2rpm that creates rpm and source rpm's out of CPAN modules. The program can be fetched from http://sourceforge.net/projects/cpan2rpm/

My setup

At the moment I have two instruments that can be controlled via GPIB; a relay box, HP-59306A, and a frequency counter, HP-5328A. A computer have been set aside to control these, and other future devices.

Using Jeff Mock's perl based server, I can steer the instruments on the gpib bus from any computer on my network.

Relay box HP-59306A

For this box Jeff Mock has written a Perl module, and also a simple Tk based graphical front end. I intend to write a Qt based front end instead.

Frequency counter HP-5328A

I intend to write a Perl module for this counter, based on the work by Jeff Mock. The goal is to be able to control this counter via the Perl interface using a Qt application, also to be written. Stay tuned for further developments on this issue.

Mumble, mumble, ... My HP-5328A seem to have some sort of trouble with GPIB, I am not able to communicate with it. Hopefully it is repairable.