Controlling a HP75000 VXI Mainframes with HTML5 and Java technology

This home project shows how an old but still powerful VXI mainframe and its integrated measurement devices can be accessed with todays tools and technology.

I have described the wonderful HP75000 here: http://spurtikus.de/basteln/devs/hp75000/index.html

Overall architecture approach

The HP75000 and technologies around it are a complex scenario. After having created several island-like solutions for different GPIB-controlled devices, I tried a new and integrated approach based on the following ideas:

  • A standard web browser as the only front end to control and access VXI devices. No platform specific code on the front end side. Use of HTML5, JavaScript and WebSockets for client side functionality.
  • The „Delegate“ which accesses the VXI mainframe is implemented as a platform independent Java application. My name for the delegate is „VXI Server“.
  • Communication between browser (front end) and VXI Server with standard Web technologies, namely REST, HTTP and WebSocket protocol. So the VXI Server can be seen as a Webserver offering access to VXI devices via a REST and a WebSocket interface.
  • Implementation of the VXI Server for a USB-based GPIB-Controller. This allows the software to run on any platform which has a USB-Connector. E.g. Notebooks and the Raspberry mini computer.
  • By using Standard Web technologies for the server, access to VXI devices is LAN/WLAN based. So every client capable of running a browser can access all VXI devices. This includes also tablets and even smart phones.
  • The VXI Server can execute JavaScript files

The picture below show the overall system architecture.


Architectural overview

The picture below shows the software architecture overview. On top there is a standard web browser, running e.g. on a tablet. The tablet is connected via WLAN to a bigger LAN structure where also the VXI Server process runs. The VXI Server looks like a standard web server and serves REST and WebSocket requests. It accesses a GPIB controller using USB.


Software architecture

 

Some pictures from the ongoing work

 


HP E1326 Multimeter; Voltage measurement on 2 channels
The two channels are displayed in a graph (graph2d from vis.js) and as seven-segment digits. The channels are coming from two E1345 relay mux cards and can also be selected.

 


HP E1340 Arbitrary Function generator control interface.

This small movie shows how to interact with the Multimeter user interface.

Scripting

Because Java contains the feature to execute scripting languages, I added JavaScript executing to the VXI server. This means that a client can create a JavaScript program and let the server execute it.

As an example, the following two lines make a voltage measurement and return it to the client (the browser).

var result = voltmeter.measureSingle();
se.Print.printMessage("Value: " + result);

The VXI Server binds the devices found in the HP75000 (later: the devices found on the GPIB bus) to variables like „voltmeter“. All methods defined for those Java objects can be executed from JavaScript. In the example, a method „measureSingle()“ is called. This method does a simple measurement, returned as a float value. The script prints out this value just for demonstrational purpose. Values from a script can be returned to the client by simply assigning them to the „result“ variable. This variable is bound to the result value and is used by the VXI Server to return the result value. A result can be anything e.g. a map of value lists or whatever. Using this machanism,  the client (usually the browser) can get the result of even complex measurements and display them.

Executing a script means that everything can be done, even without any client (after the script has arrived at the VXI Server). So this is a very powerful feature and can replace somehow the „IBASIC“ execution in the HP E1300.

Unordered things

Ohms mode

2 wire nur mit scanning mode
CONF:RES 20000 (@100)
MEAS:RES? (@100)
An HI/LO von Eingang 100 den R anschliessen.
Gewählten Range anzeigen mit:
CONF?

Voltage range change

CONF:VOLT:DC 58.1,(@100) oder CONF:VOLT:DC 50,(@100)
CONF:VOLT:DC:RANGE 100 (@100) <== ob man das braucht?
CONF? zeigt nun den Range an
MEAS:VOLT? (@100)
MEAS:VOLT:DC? man kann „:DC“ weglassen weil DC ist der Default
Es geht auch: MEAS:VOLT:DC? 100,MAX,(@100)

HP E1345 Connector

This is a standardized DIN41612 3×32 pin connector where the pins 33..64 are not used (i.e. only outer pin rows are used).

For the 15 channels, three terminals H, L, G (for High, Low, Ground) are present.

Usually, a terminal block plugs into this connector. These terminal blocks are very rare. So their prices are today often higher than those of the cards itself.

HP E1345 Connector

HP E1330 Connector

These are 2 Standard PC/104 connectors with 2×30 pins.


HP E1330 Connector view

HP E1330 Connector, Pins

 

GPIB Controller UI

 

Prologix GPIB-to-USB Controller

kermit: ok
minicom: failed!

kermrc

set line /dev/ttyUSB0
set speed 115200
set carrier-watch off
set handshake none
set flow-control /direct-serial rts/cts
set terminal echo local
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5

++ver
Prologix GPIB-USB Controller version 6.107
++addr 9 99  <– See note regarding addr command

*idn?
HEWLETT-PACKARD,E1326B,0,A.05.00
MEAS:VOLT:DC? (@100,101,102,103,104,105,106)
-2.447281E+000,-1.878159E+000,-1.407097E+000,-1.090889E+000,-8.490524E-001,-6.606951E-001,-5.015745E-001

Note to addr command: for secondary, enter (secondary address + 96). E.g. for address 3, enter 96+3 = 99.

Spurtikus.de GPIB Controller

GPIB Controller (Rev.0.8) (c) spurtikus.de 2008-2015
Internal commands:
.a – set prim./second. address of remote device.
.e – dump error queue.
.f – find partners.
.h – print help.
.i – dump info about controller state.
.r – toggle SRQ enablement.
.s secondary – set secondary address of remote device.
.x – toggle Xon/Xoff flow control.
.+ primary secondary – add partner device address to list of known devices.
.- primary secondary – remove partner device address from list of known devices.

Measurement Server

Measurement Client

Weiterführende Informationen

 

Von mir genutzte Linux Anwendungen/Software

Die Zahl der Freeware- oder Open Source Tools für Linux ist riesengroß. Um sich für ein bestimmtes Tool zu entscheiden, muss man oft lange Tests lesen oder viel probieren. Diese Arbeit will ich etwas erleichtern. Dazu liste ich von mir genutzte und gute Tools hier auf. Nicht dass es sehr viele sind. Da ich aber komplett auf Linux umgestiegen bin, müssen die Tools gewisse Qualitätsanforderungen erfüllen.

Geniale Software

In dieser Rubrik führe ich Software, die quasi Wunder wirkt:

  • testdisk: Das Tool mit dem unscheinbaren Namen ist in der Lage, aus einem zerstörten FAT-Volume durch Binärdatenanalyse noch sehr viel von dem als verlorengegangen geglaubten Inhalt zu kopieren. Ich habe damit von einer defekten SD-Karte aus einer Digitalkamera, die mit keinem anderen Programm auch nur irgendein Byte freiwillig abgegeben hat, noch ALLE Bilder extrahieren können. Unglaubliche Leistung. Link zum Hersteller: http://www.cgsecurity.org/wiki/TestDisk.
  • pdftk: PDF Toolkit. Erlaubt Operationen auf PDF Dateien. Es können z.B. mehrere PDFs zu einem neuen Gesamt-PDF zusammengefügt werden. Wunderbare Software.
  • hugin: Tool, mit dem aus mehreren Fotos ein Panorama-Bild erzeugt werden kann. Sehr schönes, intuitives Tool.
  • Firefox: DER Webbrowser.

Office Programme, Webeditoren

  • OpenOffice 2.0 oder neuer: komplettes Office Paket, stabil, flott und viele Funktionen. Vergleichbar zu Word, Excel und Powerpoint. Kann MS Office-Formate lesen und schreiben. Auch HTML-Editing ist möglich.
  • Kompozer: Mächtiger HTML-Editor mit WYSIWYG.
  • Seamonkey ist 2017 eine Art Nachfolger des kompozers.

Software-Entwicklung

  • Eclipse: Komplette Java Entwicklungsumgebung

Graphik

  • Gimp: Bildbearbeitungsprogramm
  • Inkscape: Vektororientiertes Zeichenprogramm

Multimedia

  • mplayer: Player für verschiedene Video-Formate, kann auch vom TV-Tuner das TV-Programm abspielen. Graphisches Frontend smplayer oder gmplayer.
  • mencoder: mächtiger Video Encoder
  • kdenlive: Video Editor zum Schneiden eigener Filme
  • ffmpeg: ähnlich mencoder.
  • audacious und xmms2: zusammen eine xmms-ähnliche Audio-Player-Umgebung. xmms2 ist ein mächtiges Sound-System und audacious eine simple Player-Oberfläche, ähnlich xmms.
  • timidity+: Software Sequencer; wird benötigt, wenn man Midi-Dateien abspielen will und keine Audiokarte mit HW-Sequenzer besitzt
  • avidemux: Videoschnitt Editor
  • audacity und wired: Multi Track Audio Aufnahme mit beiden Tools gut möglich
  • rosegarden: Kompositionsprogramm mit MIDI Ansteuerung. Muss ab Source compiliert werden.
  • GoogleEarth: „Weltatlas“ in 3D
  • mp3tag: Bearbeiten der Tags von MP3-Dateien. Zwar ein Windows-Programm, läuft aber prima mit wine.

Kommunikation

  • Firefox: Schneller, exzellenter Web Browser.
  • Thunderbird: Schnelles, exzellentes Mail-Programm
  • Skype: Audio/Video Kommunikation via Internet
  • vncviewer: Remote Zugriff auf X Window Systeme

Sonstiges

  • VirtualBox („Oracle VM Virtual Box“): Virtuelle PCs unter Linux
  • eagle – Elektrische Schaltpläne bearbeiten und Leiterplattenvorlagen erstellen.

Spiele

    • dopewars: Ein angeblicher „Klassiker“. Rein textbasiert.

Software, die mir nicht gefällt

Manche Sachen haben mich bei diesen Tools schon sehr gestört 🙂

  • acroread: Acrobat Reader für PDF. Die riesige und unverständliche Größe des Installs ist absurd – über 100MB für einen trivialen Fileviewer!. Warum muss das sein? Schöbnere Alternative: evince.
  • amarok: Audio Player. Ich habe lange probiert diesen Player zu nutzen. Ich kann nicht zählen, wie oft ich schon hunderte CD-Cover zum X-ten Mal heruntergeladen habe, weil ich die korrupte Datenbank von amarok löschen musste. Playlist lies sich nicht speichern, lastFM-Support funktionierte lange nicht. Dieses Tool machte mir graue Haare… . Alternative: Audacious.
  • ms windows