+A  Click here to enlarge/reduce to/back from full screen 
Paul Scherrer Institut PSI Technical Support and Coordination - Magnet Section

Paul Scherrer Institute
CH-5232 Villigen PSI
Building WMHA / WBGA
Fax +41 (0)56 310 3717

E-Mail: vjeran.vrankovic@psi.ch

Printer Friendly Printout without Logo or Navigation Elements available here... just click and print

Magnet Section

Information on system before lab move, 2019

Hall Probe (HP) Magnet Measuring Machine

The measuring machine is a precise positioning device sliding on compressed air pads over a flat granite block. The position along each linear axis is determined by Inductosyn® encoders with approximately one micron resolution. The machine carrying the measuring arm provides five degrees of freedom; three linear axis along the three Cartesian directions and two rotation axis. Each axis is actuated by a stepping motor.

Limit switches are mounted on each linear axis.

Rotation axis PSI HAS NO limit switches.

Rotation axis PHI has limit switches.

Home switches and software limits have not been implemented.

The measuring arm supports the measuring probe, which is normally a Hall plate detector connected to a constant current source.

Because Hall sensors are temperature sensitive, higher accuracy is obtained in a air-conditioned environment. Temperature in the hutch during measurements and Hall sensor calibration is kept at 24.5±0.1 °C.

The measurements are performed in flying mode, i.e. the machine does not stop to perform a measurement. Using the maximum moving speed of the machine along the longest axis (Z), with a span of 2100 mm, the longest drive takes less than one minute per line and is totally independent of the number of measured points. The measurement axis can be any one of the three linear Cartesian axes while the two rotational axes are used only for positioning. The measured field map will therefore correspond to a line, a plane or a volume in a Cartesian coordinate system.

The control system drives the machine movement and the measurement process and takes the data under real time conditions.

The Hewlett-Packard HP 1000 A-900 under the operating system RTE-A has been in operation since 1994 (description of the old system) and in 2002 was replaced with a CompactPCI PC (Intel Pentium III 700 MHz, 128 MB RAM, 2 GB HDD) running under Linux patched to real time functionality with RTLinux. The new computer controls the measurement equipment through the following three types of CompactPCI controllers:

  • 1 ICP-MULTI, multifunction I/O card
  • 1 CPCI-1710, multifunction counter card
  • 2 OMS CIX, four axes motion controller

The measurements of the probe potentials are taken with HP/Agilent 3458A digital multimeters interfaced to the computer with a HP E2050 LAN/GPIB gateway. During the drive along the measurement axis in the flying mode, the computer triggers the multimeter at quasi-equidistant points and the corresponding Hall probe potentials are temporarily stored in the internal buffer of the multimeter. A maximum of 5000 data values can be stored in the buffer but the time between two measurements cannot be shorter than 2 msec. At the end of the line when the machine stops, the data are transferred to the disk and the multimeter buffer is emptied.

Normally, we measure the same line again in the reverse direction but the machine can also be moved on to the next line. Measuring in both directions takes twice as long but helps cancel out possible positional errors and any voltages induced in the Hall plate connections as they move through a varying magnetic field.

The program that controls the measurements <mmmgui> is implemented as an RTLinux task, assuring the necessary real time constraints on data acquisition. The user interface is a non real time X11-windows application. The controls SW used leverages on EPICS and is maintained by the Group CONTROLS. A new EPICS version was implemented 2019 and the GUI adapted accordingly. Field tests have not (as of April 2019) yet been performed.


In the first tab one sets the values of the measurement coordinate system, the speed and acceleration of the motors actuating each axis. No axis actuation takes place. IMPROVEMENT NEEDED. Tab General/SET POS is dangerous, Usually, the principal measurement direction follows the Z-axis, and the maximum speed is 49 mm/s. For various reasons (profile of the magnetic field induction, temperature effects on the Hall probe, movement vibrations) one can reduce the speed for higher accuracy at the expense of an increase in measurement time.

A choice of opto-linked and program controllable power supplies (PS) is available:
- MSG1: 500 A / 200 V (unipolar)
- MSG2.1: 200 A / 50 V (bipolar)
- MSG2.2: 150 A / 100 V (bipolar)
- MSG2.3: 10 A / 24 V (bipolar)
Each PS can be switched OFF/ON and the current can be set from the GUI (or from a script, see below).

The magnet - PS circuits are protected by cooling water and a temperature interlocks. Test of these prior any measurement is mandatory.

If the measurements are performed with 1D Hall probes (Siemens, Arepoc, Hoeben) the DVM-1 and DVM-2 are used. Communication between the DVM and computer takes place over a GPIB/LAN gateway acsmm22.

On the other hand, if the measurements are performed with the 3D Hall probe (Hallcube), 6 DVMs numbered from 3 to 8 are used to record voltages from 6 individual Hall devices built in the the Hallcube. These DVMs are grouped in a separate rack together with the constant current source Keithley 6221. The GPIB/LAN gateways are acsmm23 and acsmm24.

Either way, 1D or 3D measurement, it is possible to choose the integration time for the Hall voltage - between 0.5 ms and 1 s. The default is 20 ms which is a time for filtering out usually unavoidable noise of 50 Hz. With that integration time, care has to be taken for the fact that with the measurement speed of 49 m/s, the measurement occurs on a path of almost 1 mm. For strongly varying magnetic field in the fringe field region, a reduced measurement speed is usually preferred

For higher accuracy, whenever possible choose measurement range of 0.1 V. The last option for high-accuracy measurements is setting the AZERO on. What that option does is to measure every point twice, once with the shortcut input and stores the difference between two measurements. Any drift in DVM is thus cancelled out.


The second tab serves the single purpose to monitor the position of the machine while in remote mode, when the operator is far away from the screen.


The third tab allows to perform time dependent measurements.


The fourth tab allows to actuate each axis independently.


The fifth tab allows to define the parameters for one particular measurement. In this example, MMM will scan along Z, between -500 and 500 mm in 501 steps. If a 2D or 3D scan needs to be recorded, pull down menus allow the activation of other axis and their parametrisation. Bi-directional is activated in this screen; this means that a measurement is taken in forward and backward mode (along Z) and average values are computed.


Usage of the sixth tab is illustrated in the section Coordinate system

On the seventh tab, an automatised Hall probe calibration is available for the field range from -2 to +2 T.


Coordinate system

Magnetic data needs to be expressed with reference to the assembly under study. There are several approaches that lead to equivalent results. Usually, we first orient one reference surface of the magnet to the XZ plane of the granite table of MMM using a precision spirit level. Thus, the chosen reference plane of the magnet is adjusted to be parallel to the granite table of MMM. Note that the table is almost perfectly levelled; a small tilt of 0.02 mm / metre around the Z (beam) axis is observed. For high accuracy, reproduce this tilt when orienting the magnet assembly. In the perpendicular orientation along the X axis, the table is levelled.

Once the magnet to be studied is oriented with the principal directions of the reference system of MMM, the position of the active region of the magnetic sensor placed at the tip of the arm of MMM must be related to the position of at least one (preferably several) reference marks available on the assembly. For this task, we use a particular magnetic field profile produced by a pair of iron tips and permanent magnets arranged in a custom holder. This device produces a saddle shaped field profile with a rotational symetry. By mapping the field profile the (min/max) saddle point is determined and the coordinates can be assigned.

The device, nicknamed Brueno Survey Tool (BST) is inserted in every available reference bore provided by the assembly under study. By design, the principal rotational symetry axis provided by BST ( Y axis in the figure below) is coaxial with the axis of the reference bore. The Y component of field is minimum along Y in the midpoint between the two tips. On the other hand, the field density has a maximum at the intersection of the XZ plane with the Y axis. The particular saddle point located at the intersection between the principal axis of BST and the Y = 0 plane is used a criteria to relate the position of the sensor to the geometry of BST inserted in the bore. Along Y, the coordinate is offset by a constant value measured in a separate calibration.

To ease the acquisition of the field maps required to determine the location of the saddle point of BST, LUA and Python have been used to write scripts that acquire several field maps without attendance. The results are expressed in the coordinate system of MMM. The User is free to offset these values in order to express results in a reference system coherent with the magnet under study.


BST can be inserted with its principal axis along Y (H flavor of the script) or X (V flavor of the script). The maps need to be acquired in the appropriate orientation accordingly, and the Hall sensor orientation must be (re)adjusted as well.

In order to avoid clutter, data has to be stored in the /meas folder and classified by sub-folders like magnet type / magnet number/ measurement type etc. In order to ease book keeping, Python scripts are used to assemble several LUA scripts. When one such LUA scripts executes, it writes data in the sub-directory from which the Python script was executed.

Example: from a given directory ../meas/MagnetType/MagnetNumber/MeasurementType execute the clua.py script. This script expects one of four answers (as of Octobre 2018) and writes another script to be executed by MMM.

1) Ali_g will call LUA code (.../cmd/mmm_lua/probeAng.lua) to be used to rotate the angle PSI of the arm of MMM around the Z axis. It measures the field at 5 angular values and is used to optimise the orientation of the Hall sensor with respect to the B field vector. Caveat: Because LUA code instructs MMM to move to ABSOLUTE VALUES of PSI, -2, -1, 0, 1, and 2, a value of PSI far from zero in the GUI at the start of the procedure results in a large, maybe unwanted, angular motion. Fix: orient PSI in manual mode so as to have the device in approximate correct angular orientation and set PSI = 0 at the GUI. In the MOVE tab, check ABS move. (The sciprt probeAng.lua was observed not to perform this action anymore after MMM's move). Then, run Ali_g.

2) The script generated by the answer Borat scans field in a planar (A x B) area around a point and is used with the PM referencing device having one tip (make figure) only.

3) The script generated by the answer Brueno scans field in a volume (A x B x C) between the two tips of BST. The flavor "H" generates the scan to be used when BST has its principal axis // to the Y axis of MMM. To launch a particular script, for example here Brueno, place manually the tip of the arm approximately in the center of the BST active volume and call the script Brueno from the tab "Scripts" of MMM.


4) UNRELATED TO COORDINATE SYSTEM: The script generated by the answer Aladeen, measures linear field scans at several values of the excitation current. MMM It is used to measure, without attendence, the excitation curve of a magnet between Imin and Imax. Controls one of the available power supplies.

Every script, Ali_g, Borat, etc is written in the sub-directory from which the command clua.py was issued. The scripts can be modified and copied. Beware of potential issues with PATH since the actual measurement procedure of MMM RECKLESSLY OVERWRITES already available data files .


Post processing of the raw data is performed by using the program <xmes> off-line. Several options are available, invoke <xmes -h> to get a list. First of all, the data expressed in volts is converted the magnetic field values using the corresponding polynomial least squares fit coefficients calculated from the Hall probe calibration. The correct calibration data is linked with the name of the probe written in the header of the acquired data. The next step is to extract fitted points onto the desired regular grid. Normally, it is not necessary to save all the measured field data and, by replacing a number of measured points with a single one, the measurement accuracy can be enhanced. The data interpolation method can be chosen among: simple linear interpolation between adjacent points, a cubic spline on all points or a quadratic fit using neighbour points. <xmes> writes .dat files, keeps the header information. For a measurement along a single line, the Z coordinates is associated to the very position of the field value in the list. For several lines measured at different X (or Y) coordinate values, the first number in the list is X (or Y) and the following numbers are field values along the Z coordinate.


Caveat: default resolution is 1/100 Gauss. The .dat file written by <xmes> does not display data above certain value because of a limited number of digits. To solve this, use the option -r and adjust resolution accordingly.

Caveat: xmes_output.dat files are written in ascii and can be imported in modern tools. However, some scripts must be applied to decifer the information. To avoid this, it is convenient to generate data in a list format. <xmes> option -L writes a .lis file instead of a .dat file. An alternative is to use <mapconv> with option 41 and have the program import a xmes_output.dat file. The output will also be a .lis file which differs only slightly from the one obtained by using <xmes> option -L.

Caveat: <mapconv> with option 41 cannot interpret a .dat file of more than ONE 2D grid although they can readily be generated by the MMMGUI program, to allow overnight work for example. Workaround by writing your own script to read .dat file using a modern tool (but not excel !).


<mapconv> is a used to manipulate and convert (.map and .dat) data that has already been treated by <xmes>

1) MAP --> DAT ..... MMM format

2) MAP --> COE ..... sextupole coefficients

3) MAP --> MAP ..... modify

31) MAP +- MAP ..... combine 2 maps

32) MAP --> MAP ..... OPERA format

33) MAP --> MAP ..... Solenoid Bz_meas->Bx+By+Bz

4) DAT --> MAP ..... MAP format

41) DAT --> LIS ..... field listing

5) DAT --> EXT ..... extend midplane fields

51) DAT --> EXT ..... smooth before extending

52) DAT --> EXT ..... Q: smooth before extending

6) DAT --> INT ..... interpolate between planes

7) MAP --> MFO ..... formatted

71) MFO --> MAP ..... back to unformatted

72) MAP --> LIS ..... field listing

8) MAP --> DAT ..... vector potential

9) DAT --> DATS ..... smooth & enlarge

91) DAT --> DAT ..... U_[mV] to B_[kGauss]