There are three types of devices: vacuum average, array of vacuum readings, and individual readings. The vacuum average device also returns a number of other potentially interesting parameters.
|0||OID = 71 (hex)|
|02 (hex)||FF (hex)|
|05 (hex)||FF (hex)|
Where nn is the CAMAC slot and cc is the CAMAC crate.
The first four bytes of the reading property return the vacuum average in IEEE floating point format. This number will appear when the device is called up on a parameter page, and it can be data logged, etc. The rest of the reading property contains miscellaneous diagnostic information which can be obtained from the card, in the event that an application page wants to display it.
Note that the selective datapool services demand that the reading buffer be padded out to a multiple of four bytes (the default length in the data base). You can read arbitrary slices out of this buffer, but you must always read an exact multiple of four bytes.
The reading data looks like this:
# Bytes Camac Func. Meaning 4 F(2)A(0-1)* Vacuum Average 2 F(0)A(6) # of pumps returning bad readings 2 F(0)A(12) # of pumps included in the average 4 F(2)A(2-3)* Age (15 hz ticks) 2 F(0)A(7) # of vac. interface timeouts 2 F(0)A(13) # of vac. interface resets 2 F(0)A(14) # of parity errors 2 F(0)A(8) # of floating point errors 2 F(6)A(1) Firmware version number 2 none Spare word, returned as zero.
(*) For the Vacuum average the front end reads F(2)A(0) first, followed by F(2)A(1). This sequence is guaranteed to produce a whole consistent 4 byte floating point number. The front end word swaps the number so that the console doesn't see "68000 format" IEEE numbers. In other words, the console can use FPIEEE to convert. For the age, the front end reads F(2)A(2) first, followed by F(2)A(3). The result is word swapped by the front end, so that the console sees the least significant part of the age in the low address word.
We combine several sources of status (and other bits related to status) into a single basic status word as follows:
BS Bit Camac Func. Meaning 0 F(0)A(1) 1 = Heart beat OK 1 " 1 = Vacuum data collection in progress 2 " 1 = Vacuum interface timeout error 3 F(0)A(2) 1 = Average is out of tolerance 4 " 1 = 15 (or more) pumps w/ bad readings 5 F(0)A(3) 1 = Out of tolerance alarm is masked off 6 " 1 = 15 (or more) bad rdgs alarm masked off
Here we control the individual pump unequipped and out of service bits. The whole array (for 64 channels) constitutes the setting property, which can then be saved on the D1 save/restore page. If a 145 card is changed out, it should be possible to restore this information into the new card.
This information is included with the M:A1VAC (general parameters) device, instead of the M:IPA1 (array of pumps) device, so that we will need to restore only the M:A1VAC device.
The setting data buffer is 64 bytes long. It is read with F(17)A(0)/F(1)A(0), and written with F(19)A(1)/F(19)A(0). The format of each byte is as follows:
Bit 0: 1 = pump equipped (settable) Bit 1: 1 = pump in service (settable) Bit 5: 1 = bad reading from pump (bad BCD digit) Bit 6: 1 = parity error Bit 7: 1 = timeout error
The two LAM bits (vac avg and to many bad pumps) are controlled TOGETHER as the single analog alarm bypass bit. When alarms are bypassed, both bits are masked. When alarms are enabled, both bits are unmasked. If either bit shows bad, then the analog alarm is issued. The two bits can be examined individually in the basic status word.
The front end forces the module LAM enabled, which is how we should run at all times.
Otherwise the analog alarm property is straight forward:
Good/Bad bit: LAM bits from F(0)A(2) or-ed together Bypass bit: LAM bits from F(0)A(3) & F(16)A(1) or-ed together Low limit: Zero (constant) High limit: F(2)A(4-5) & F(16)A(5) Tries needed: F(0)A(10) & F(16)A(10) Tries now: F(0)A(11) Current reading
(for alarm report):
Both the alarm limit and current reading are word swapped by the front end so that they appear in the console in FPIEEE format, not "68000 IEEE" format.
The reset functions are supported. The following basic control word values perform the following functions:
1 F(24)A(1) Reset vacuum interface 2 F(24)A(2) Reset floating point coprocessor 3 F(9)A(0) Reset the module and the works
Names: M:IPA1 (Array of all ion pumps in A1), M:IPA101 -
M:IPA163 (63 individual channels)
Properties supported: Reading, Basic Status
The difference between these devices is in the lengths. The array device is long enough for the oscillator output (channel 0) plus all 63 possible pumps. Each individual device is long enough for only one pump.
The default length of the array device is four bytes, so that on a parameter page you will see the value of the oscillator output.
|0||OID = 72 (hex)|
|0||OID = 72 (hex)|
Where nn is the CAMAC slot, cc is the CAMAC crate, and aa is the pump number.
Array of 64 readings, each 4 bytes long (for the array device), or a single 4 byte reading. Data is read with F(16)A(0)/F(0)A(0).
Note that the front end word swaps this data, so that it is possible to use the console routine FPIEEE to convert it to DEC floating point format.
One word containing F(1)A(0) status in the low order byte. This is described under the setting property of the general parameter device. For the array device you will get the status byte for the channel 0 oscillator output, otherwise you get the status for the individual pump.