Skip to content

Commit 413cb8a

Browse files
Oxford-Instruments-Mercury-IPS.md: Added useful information about the SCPI implementation
1 parent e25b500 commit 413cb8a

File tree

1 file changed

+144
-0
lines changed

1 file changed

+144
-0
lines changed

doc/specific_iocs/cryogenics/Oxford-Instruments-Mercury-IPS.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,147 @@ It has not been possible to test all alarm scenarios with the IPS unit and as su
2626

2727
The support module exports an aSub record subroutine to facilitate handling of the responses to READ:SYS:ALRM, which is not feasible with a StreamDevice protocol handler.
2828

29+
### CONTROL and CONTROL:SP
30+
These records have been removed from the SCPI variant database
31+
as the SCPI command set does not manage the panel lock in the same was as legacy and
32+
Magnet Group advised to remove this feature, as they always want to be able to control
33+
the IPS via the front panel.
34+
35+
### SYSTEM:HWFAULT status is derived from the status bits via a calc record.
36+
This collates the various possible hardware faults into a single record,
37+
which in the legacy protocol is a single value (Xm bit 4).
38+
39+
### SWEEPMODE:PARAMS and SWEEPMODE:SWEEP
40+
These records have been removed as they are meaningless and underivable in SCPI protocol.
41+
42+
### _SWEEPMODE:SWEEP
43+
In the legacy version, this used to be the readback from n of Mmn part of Examine command return.
44+
0 output constant, 1, 2, 3 output changing
45+
The SCPI protocol doesn't directly offer this, so it has to be derived via the ACTIVITY record (DEV:GRPZ:PSU:ACTN)
46+
Direction from Alex Jones: "A response of HOLD or CLMP would be equivalent to n=0 in the response of the X command
47+
in the old protocol. Responses of RTOS or RTOZ would be equivalent to n=1.
48+
There is no equivalent for the m=0,1 fast/slow ramps, but we do not use this feature anyway."
49+
50+
### System Alarms
51+
System alarms are derived by interrogating the IPS with the "READ:SYS:ALRM?" SCPI command.
52+
This returns a comma-separated string of active alarms, or an empty string if no alarms are present.
53+
The string is parsed by an aSub record, which sets the relevant bits in a binary register.
54+
The bits are mapped to individual status records, which are then used to set the relevant alarms.
55+
The precise protocol was determined empirically by sending the command and observing the response
56+
directly from the instrument.
57+
Discrete records are generated for each board type and each alarm by the
58+
scpi_system_alarms_discrete.template and substitutions files.
59+
60+
The base response is: READ:SYS:ALRM: which may (or may not) be followed by a board identifier,
61+
a tab character (9) an alarm string and a semicolon.
62+
63+
In ABNF:<br />
64+
```
65+
response = "READ:SYS:ALRM:" *(error)
66+
error = board_id TAB error_message SEMICOLON
67+
68+
board_id = 1*(ALPHA / DIGIT / ".") ; e.g. MB1.T1
69+
error_message = 1*(ALPHA / DIGIT / ".") ; e.g. "Open circuit"
70+
TAB = %x09 ; tab character
71+
SEMICOLON = %x3B ; semicolon ";"
72+
```
73+
74+
The board identifiers are provided as macros:
75+
76+
| Macro | Default |
77+
|-------|----------|
78+
| BOARDID_MAG | MB1.T1 |
79+
| BOARDID_10TMAG | DB8.T1 |
80+
| BOARDID_PRESS | DB5.P1 |
81+
| BOARDID_LEVEL | DB1.L1 |
82+
83+
## Development Notes:
84+
Alex Jones has looked at some of the differences between the SCPI and legacy command set and has summarised some useful information, as quoted below:
85+
For the quench and overheat status, these (and many other issues) are dealt with by “Alarms” for the SCPI protocol. See the Magnet board section on p. 162 in Issue 20. These are read by “READ:DEV::PSU:STAT” in some undefined hex format for just the magnet-related alarms, and READ:SYS:ALRM for a list of everything.
86+
87+
Some further information re UID naming:
88+
The UIDs can be either the nickname for the card (which we can set to anything we want) or related to the slot number and signal type.
89+
From the spreadsheet, the positional UID for the magnet temperature sensor will be MB1.T1, the UID for the level meter will be DB1.L1 and the UID for the magnet supply will be GRPZ for all 4 of the systems.
90+
The 10T system will have an additional temperature sensor DB8.T1 and a pressure sensor DB5.P1.
91+
92+
It appears that:
93+
devices connected to the motherboard are prefixed: MB1\
94+
devices connected to a daughterboard are prefixed: DB<slot #>
95+
96+
97+
Conversation between Chris Lawson and Robert Grzyb at Oxford Instruments (18 Feb 2025)
98+
SCPI Equivalents:
99+
Yes we are looking for the equivalent between Mercury iPS and iPS-120 control syntax. It may be some things are missing/changed, but wondered if there was a table of all of this somewhere internally.
100+
I do not think we have a document which succinctly summarises differences between Mercury iPS and the IPS-120 in the context of their remote command sets.
101+
102+
Q: What are the new commands to use on the Mercury iPS which are equivalent to the commands from the old iPS-120 below?\
103+
F17 (Trip Current)\
104+
F19 (Trip Field)\
105+
Xmn\
106+
m = 1 quenched\
107+
m = 2 overheated
108+
109+
Answer from Robert Grzyb at Oxford Instruments:\
110+
<em>F17/F19\
111+
I assume that you mean legacy commands R17 (Trip Current) and R19 (Trip Field).
112+
This functionality is preserved when Mercury iPS remote interface is set to use legacy command set.
113+
But when using "SCPI-style" command set, this exact information cannot be retrieved directly from the iPS.
114+
Under certain (limited) circumstances R17/R19 are equivalent to DEV:<UID>:PSU:SIG:PCUR and DEV:<UID>:PSU:SIG:PFLD (note that UID must be a group, not an individual PSU).
115+
116+
Xmn
117+
There is no equivalent for X (examine status) command in the "SCPI-style" command set.
118+
As far as the first portion ("mn") of the reply to X command is concerned, certain "m" values correspond loosely to the bits of the status word in Mercury iPS group device (READ:DEV:<UID>:PSU:STAT).
119+
The "n" part is not applicable to the Mercury iPS at all.
120+
</em>
121+
122+
Q: For Xmn, I note that these may be dealt with by alarms which can be read with READ:DEV:<UID>:PSU:STAT in some hex format which is not defined in the manual (p. 162 in Issue 20). Could this be clarified?\
123+
124+
Asnwer from Robert Grzyb at Oxford Instruments:\
125+
<em>
126+
READ:DEV:<UID>:PSU:STAT\
127+
It is important to note that the STATus word should be examined at the group device level, not the individual PSU level.\
128+
It is also very important to mask out (ignore) all other bits in this 32-bit word (i.e. ones not defined in the list given below):\
129+
</em>
130+
131+
| Status | Bit value |
132+
| ------ | --------- |
133+
| Switch Heater Mismatch | 00000001 |
134+
| Over Temperature [Sense Resistor] | 00000004 |
135+
| Over Temperature [Rundown Resistors] | 00000002 |
136+
| Over Temperature [PCB] | 00000008 |
137+
| Calibration Failure | 00000010 |
138+
| MSP430 Firmware Error | 00000020 |
139+
| Rundown Resistors Failed | 00000040 |
140+
| MSP430 RS-485 Failure | 00000080 |
141+
| Quench detected | 00000100 |
142+
| Catch detected | 00000200 |
143+
| Over Temperature [Sense Amplifier] | 00001000 |
144+
| Over Temperature [Amplifier 1] | 00002000 |
145+
| Over Temperature [Amplifier 2] | 00004000 |
146+
| PWM Cutoff | 00008000 |
147+
| Voltage ADC error | 00010000 |
148+
| Current ADC error | 00020000 |
149+
150+
Q: Also, is it possible to read if the Mercury iPS has tripped due to a low helium level signal from the level card (something like the X command on the old iLM200 which has a low level flag at bit 5 of S)?
151+
152+
Answer:\
153+
<em>
154+
Low helium level
155+
156+
There is no direct indication of the fact that iPS has run the magnet down as a result of helium level dropping below a set threshold.\
157+
It is possible to read both the helium level (DEV:<UID>:LVL:SIG:HEL) and the configured threshold for low helium alarm (DEV:<UID>:LVL:HEL:LOW).
158+
</em>
159+
160+
## Compromises with SCPI command set and EPICS
161+
STS:SYSTEM:LIMIT\
162+
Is an mbbi and has has 5 possible values:\
163+
- 0: "Normal"
164+
- 1: "On +ve V Limit"
165+
- 2: "On -ve V Limit"
166+
- 4: "Current too -ve"
167+
- 8: "Current too +ve"
168+
169+
The limit flags came from the legacy command: Xmn
170+
with the index denoted by the 'n' value.
171+
SCPI does not provide this information.
172+

0 commit comments

Comments
 (0)