Skip to content
Hannah Cawley edited this page Jun 26, 2023 · 25 revisions

Wiki > The Backend System > Specific Device IOC > Pressure Monitors > TPGx00

TPGx00

A type of device which controls a series of four pressure sensors (A1, A2, A3, A4).

TPGx00 is shorthand for the TPG 300 and 500 Pfeiffer Vacuum Gauges which use the same TPG300 IOC. The two models also share the same TPG300.opi file, which updates its appearance based on TPG model number.

To configure the IOC for the 500, define the MODEL macro: it defaults to TPG300

The TPG300/500 are similar to the TPG26x and TPG36x, but have 4 pressure sensors to read from, and have a slightly more complicated IOC. All TPG manuals can be found in <share>\ISIS_Experiment_Controls\Manuals\Pfeiffer TPG<xxx>.

Communication

TPG300

The TPG300 communicates over a serial interface via RS232 with the use of an IF 300C plugin interface card.

TPG500

The TPG500 communicates over a serial interface via Ethernet, USB and RS485 (virtual com-port), and RS232 with the use of an IF 300C plugin interface card. Pfeiffer has their own 'Ethernet Configuration Tool' software which can be used to configure a virtual com-port (see page 32 of the 'Operating Instructions' manual).

Differences between the 300 and 500

The TPG500 is the slightly newer version of the TPG300; the main differences between these two devices is in their communication protocols. See the manuals for what these properties are used for.

300 500 Affected commands
Switching Functions 1, 2, 3, 4, A, B 1, 2, 3, 4 SPx
Switching Function assignments No Assignment, A1, A2, B1, B1, A1 self-monitoring, A2 self-monitoring, B1 self-monitoring, B1 self-monitoring Off, A1, A2, B1, B2, On SPx
Units mbar, Torr, Pa hPascal, mbar, Torr, Pa, Micron, Volt, Ampere UNI/UNIx

Some less explicit differences are as follows:

  • Communication terminators
    • In the TPG300 manual, there is a mismatch of using <ACK><CR><LF> and <ACK><CR> as intermediate acknowledgement terminators. The TPG500 consistently uses <ACK><CR><LF>. All the commands we use for the TPG300 are listed as using <ACK><CR>, but the protocol file always uses <ACK><CR><LF>, and we have no issues with this historically, so this is most likely a typo.
  • SPS command
    • Although the 300 and 500 have a mismatch of switching functions, SPS returns status values for all switching functions (e.g. 1|2|3|4|A|B) for both models. However, we don't actually care about the return values for switching functions A and B for either model, so these last two values are skipped in the protocol file. Regardless, it's worth noting that for the 500 the values returned for A and B are:
      • 1 if an automatic function is active for sensor A1 (for SF A) or B1 (for SF B) and the sensor is ON
      • 0 otherwise
  • SPx command
    • This command returns a couple of parameters, one of which is the 'switching function assignment'. As noted above, these differ between the 300 and 500, but most importantly, B1 being repeated twice isn't a typo - this is specified in the manual. By contrary, the 500 does have a B2.
    • For the 500, this command returns an extra parameter which is the 'ON-Timer', but we don't care about this so is skipped in the protocol file.

Commands

The TPG300 IOC currently supports the use following commands with the TPGx00 devices:

Command Description
Pxx, where xx is A1|A2|A3|A4 Gets the pressure measurement from the specified channel
ERR Get the error status of the device
SPS Get the statuses of all switching functions 1|2|3|4|A|B
SPx, where x is 1|2|3|4 (+ A|B for 300) Get/set the threshold settings for a specified switching function
UNI Get the unit of measurement
UNIx, where x is 1|2|3 (+ 0|4|5|6 for 500) Set the current unit of measurement

At the moment, there is some level of protection for using invalid commands between devices (e.g. sending a UNI6 to a TPG300):

  • $(P)UNITS:SP (note: not $(P)UNITS) goes into alarm if set outside the states defined for the current model
  • $(P)FUNCTION has protective PV $(P)FUNCTION:VALID which only allows switching function SP/RB PVs to interact with the protocol file IFF $(P)FUNCTION is in a 'valid' state.
    • For example, if you try to query the switching function B on a TPG500, SPB cannot be sent to the TPG. However, as of #7458, no alarm is raised if $(P)FUNCTION is set to B, as is with :UNITS:SP.

Clone this wiki locally