Skip to content

Remote programming interface

hartytp edited this page Oct 8, 2019 · 41 revisions

Booster provides a SCPI-like remote programming interface over Ethernet using a TCP server on port 5000.

  • All commands must be terminated with a new line (\n) character
  • SCPI responses are terminated with \r\n characters
  • Booster responds to all commands
    • Commands containing a ? query Booster for information
    • Commands without a ? are responded to with OK
    • In case of errors, the response is an error string
    • Setter commands are blocking, and only return a response after the action has completed
  • Capital letters denote a part of the command that must be specified, lower case letters are optional. Commands are case insensitive. For example INTERLOCK:POWER 0,-5, int:pow 0,-5 and INT:POW 0,-5 are all equivalent

Errors

Errors are as self-explanatory as possible, below are listed custom error messages that were added on top of the standard SCPI errors.

  • [scpi] **ERROR: -97, "Wrong channel selected (0-7)"
    • Integer value for channel number is out of bounds
  • [scpi] **ERROR: -99, "Channel not detected"
    • Selected channel is empty (no module in chassis)
    • I2C bus error condition (red led on front panel)
  • [scpi] **ERROR: -98, "Interlock value invalid (0-38 dBm)"
    • Interlock value is out of valid range 0 - 38 dBm allowed
  • [scpi] **ERROR: -108, "Parameter not allowed"
    • Excessive amount of command parameters were provided

Command List

*IDN?
CHANnel:ENABle
CHANnel:DISABle
CHANnel:ENABle?
CHANnel:DETect?
CHANnel:DIAGnostics?
MEASure:CURRent?
MEASure:TEMPerature?
MEASure:OUTput?
MEASure:INput?
MEASure:REVerse?
MEASure:FAN?
INTerlock:POWer
INTerlock:POWer?
INTerlock:CLEar
INTerlock:STATus?
INTerlock:FORward?
INTerlock:REVerse?
INTerlock:ERRor?

Commands

*IDN?

Returns device identification string, which consist of:
RFPA <fw version> <fw git hash>, built <fw build date>, id <device id>, hw rev <hardware revision>

fw version:
Main firmware version e.g. 1.4

fw git hash:
Hash of the most recent commit in the firmware repository at the time of building.

fw build date:
Time of the build e.g. Sep 5 2019 14:57:58

device id:
Device identification number (4 bytes from CPU UUID)

hardware revision:
HW revision number read from the PCB REV pins e.g. 1.4


CHANnel:ENABle

Procedure used to enable selected channel or all channels present in the device.

Usage:

chan:enab 3 - enables selected channel
chan:enab all - enables all channels


CHANnel:DISABle

Procedure used to disable selected channel or all channels present in the device.

Usage:

chan:disab 3 - disables selected channel
chan:disab all - disables all channels


CHANnel:ENABle?

Procedure used to return enable status of selected channel. If single channel is selected, the return value will be 0 / 1. When all channels are selected, the results will be or-ed together in form of bitmasked value.

Usage:

chan:enab? 3 - return state of selected channel
chan:enab? all - return state of all channels


CHANnel:DETect?

Diagnostic command, returning whether channels are detected in device chassis. If a single channel is selected, returns 1 if the channel was detected, otherwise returns 0. When returning status for all channels, results are or-ed together in form of bitmasked value.

Usage:

chan:det? 3 - return detected state of selected channel
chan:det? all - return detected state of all channels


CHANnel:DIAGnostics?

Returns diagnostic information and measurements about selected channel. Returned array contains:

Index Value
0 channel detected
1 channel enabled
2 output interlock
3 unused
4 ADC voltage ch 1 (FWD power)
5 ADC voltage ch 2 (RFL power)
6 29V current reading
7 6V current reading
8 5VMP readout
9 channel temperature
10 Forward power readout (in dBm)
11 Reflected power readout (in dBm)
12 Input power readout (in dBm)
13 Fan speed (in %)
14 Error status
15 - 20 6 byte channel HWID
21 I2C bus error count

NB the fan speed is global to for the chassis, all other readings are for the selected channel only.

Usage:

chan:diag? 3 - return diagnostic info for channel 3


MEASure:CURRent?

Returns the measured bias current for a given channel in Amps.

Usage:

meas:curr? 3 - return current for channel 3
meas:curr? all - return an array with enabled channels currents


MEASure:TEMPerature?

Returns the temperature measurement for a given channel.

Usage:

meas:temp? 3 - return temperature for channel 3
meas:temp? all - return an array with detected channels temperature


MEASure:OUTput?

Returns the measured output (forward) power for a given channel in dBm.

Usage:

meas:out? 3 - return output power for channel 3
meas:out? all - return an array with enabled channels output power


MEASure:INput?

Returns the measured input power for a given channel in dBm

Usage:

meas:in? 3 - return input power for channel 3
meas:in? all - return an array with enabled channels input power


MEASure:REVerse?

Returns the measured reverse power for a given channel in dBm

Usage:

meas:rev? 3 - return reverse power for channel 3
meas:rev? all - return an array with enabled channels reverse power


MEASure:FAN?

Returns the fan speed in scale (0 - 100%)

Usage:

meas:fan? - return fan speed


INTerlock:POWer

Procedure to set output forward power interlock threshold in dBm. The threshold value must lie between 0dBm and 38dBm otherwise an error is returned and the threshold is not adjusted. All updates to the interlock threshold are saved to non-volatile memory and retained across reboots of the device.

Usage:

int:pow 3,33.0 - sets forward power interlock to 33 dBm

Errors:

If value exceed range (0 - 38 dBm), error is returned
[scpi] **ERROR: -200, "Execution error"


INTerlock:POWer?

Procedure to return output (forward) power interlock setpoint value in dBm.

Usage:

int:pow? 3 - return interlock setpoint value for channel 3

Errors:

If selected channel is not detected / empty, interface will return an error:
[scpi] **ERROR: -200, "Execution error"


INTerlock:CLEar

Resets the interlock for either a given channel or all channels. Any channels that are enabled resume normal operation once the interlock has been cleared.

Usage:

int:cle 3 - reset channel 3 interlock
int:cle all - reset interlocks for all enabled channels

Error:

If selected channel is not detected / empty, interface will return an error:
[scpi] **ERROR: -200, "Execution error"


INTerlock:STATus?

Returns the interlock status (either input, output, reverse interlock or error status with logical OR) for either a single channel or for all channels (or-ed together). Response is 1 if any interlock has tripped, otherwise 0.

Usage:

int:stat? 3 - return interlock status for channel 3
int:stat? all - return interlock status for all enabled channels


INTerlock:FORward?

Returns the output interlock status for either a single channel or for all channels (or-ed together). Response is 1 if output interlock has tripped, otherwise 0.

Usage:

int:for? 3 - return output interlock status for channel 3
int:for? all - return output interlock status for all enabled channels


INTerlock:REVerse?

Returns the reverse power interlock status for either a single channel or for all channels (or-ed together). Response is 1 if output interlock has tripped, otherwise 0.

Usage:

int:rev? 3 - return output interlock status for channel 3
int:rev? all - return output interlock status for all enabled channels


INTerlock:ERRor?

In case of more serious error situation than interlock (like out-of-bounds temperature readings etc.) channel will be disabled, the red light will pop in the front LED panel.

This command returns the error status for either a single channel or for all channels (or-ed together). Response is 1 if any error had occurred otherwise 0.

Usage:

int:err? 3 - return error status for channel 3
int:err? all - return error status for all enabled channels