C453 -- Quad Ramp Generator

M. Glass,11-29-89
R. Neswold, 7-17-97 (rev)
B. Hendricks, 2-12-03 (rev)
B. Hendricks, 8-16-04 (rev)

Some support points:

  1. There is one set of devices per channel / regulator. Just one of these devices (two if you include the reference) will ordinarily appear on parameter pages. The rest are for special application programs.

  2. There is another set of devices, one per 453 card. One of these devices, dedicated primarily to the bulk power supply, appears on parameter pages. The rest of the devices in this set support the common elements of the waveforms (which are the same for all four waveforms on the one card).

    Thus each 453 card sports five sets of devices.

  3. There is one family device per channel / regulator, pointing to ALL devices needed to define an entire ramp. Note that this means that there will be a certain amount of overlap between families, because some devices are common to the entire card (four ramps).

  4. Alarms reflect a similar structure: there is one per channel and one for the bulk supply plus special bits. Each 453 card has a few special alarm bits. They are grouped in with the bulk supply alarm.

  5. There are fifteen waveform tables per channel. The array devices which return the waveform data can be any size. In particular, if you want to support only one set of tables per channel you can set the maximum size parameters in the data base to reflect only one table.

  6. The main parameter page device returns the entire G(i) table in its setting property. The parameter page supports indexing into this table using standard C array index notation, both for single devices and for bumps, so that the operators can knob single slots.

  7. CAMAC stop/continue is supported, even though it will probably never get used.

DEVICES PER WAVEFORM

There are presently eleven devices in the per-waveform set:

  1. Parameter page device (reading, setting, status, control, alarms) (SSDN subtype code 1)
  2. F(t) tables (SSDN subtype code 2)
  3. G(i) tables (SSDN subtype code 3)
  4. H(i) tables (SSDN subtype code 4)
  5. Ramp table map data, MDAT multiplier map, Scale factor map (SSDN subtype code 5)
  6. Scale factors (SSDN subtype code 6)
  7. Version number and current conditions (SSDN subtype code 7)
  8. Mux of DAC (SSDN subtype code 8)
  9. Family
  10. G(i) tables scaled to amps (SSDN subtype code 13)
  11. Reference (SSDN subtype code 14)
  12. Knobbable or ganged setting devices (SSDN subtype code 15)

Parameter page device

This device gets a name like I:H100 (no suffix).

SSDN: (Reading)

0 0
0 42 (hex)
madc channel
0 0

SSDN (Setting, Status, Control, Digital alarm):

0 0
0 70 (hex)
crate slot
0 1x (hex)
x = channel (0-3)

The '1' in the 2nd nibble of the 4th word is the code that the special application page can key off of to identify this device.

Readings MADC channel.
Settings G(i) table as an array device. There are fifteen tables per 453 channel, each 64 words long. Thus the maximum length parameter is either 128 bytes (one table) or 1920 (fifteen tables).

The parameter page picks an individual number out of this array for display.

	PRO SETTNG (2, 1920, 60)	! for 15 tables
	PDB SETTNG ('VOLT', 'UNIT', 0, 6, 2, 0, 0, 0, 12.5, 1.0) ! -128 to +127
Status Regulator Power Supply status. 2 words long. Lower 6 bits: F(4)A(1) word
	     Bit 0: Tracking error alarm
	     Bit 1: Overcurrent
	     Bit 2: Magnet overpower
	     Bit 3: Amplifier overvoltage
	     Bit 4: Enable / disable
	     Bit 5: Calculation error
	    Bit 15: Stop/continue word (which seems to need only 1 bit).
	Upper word: Special configuration word.

The stop/continue and special configuration words are placed here for convenience.

It seems to to me that the PDB scaling includes only ON/OFF and READY/NOT READY.

I have assigned all the error bits to "not ready" PDB scaling. I'm not sure of the sense of these, so the PDB may have to change.

	PRO BASTAT (4, 4, 60)
	PDB BASTAT (3, 1, 0010, 000F, 0, 0, 4)
Control Basic control codes are two words long. In general the upper word is zero. The codes can be placed in the basic control PDB with upper word zero to achieve normal basic control. The codes are as follows:
	Code  Meaning        PDB Slot  Camac Function
	----  -------        --------  --------------
	  1   Ramp Disable   OFF       F24A5
	  2   Ramp Enable    ON        F26A5
	  3   Reg. Reset     RESET     F26A8
	  4   Ramp Enable    POL +     F26A5
	  5   Ramp Disable   POL -     F24A5
	  6   Continue       none      F18A6 (FFFF)
	  7   Stop           none      F18A6 (0000)
	  8   Special configuration word follows.

The Continue and Stop commands are included for completeness.

Code 8 in the lower word of the basic control setting value means that the upper word contains the special configuration word to be written with F(18)A(5).

	PRO BCNTRL (4, 4, 60)
	PDB BCNTRL (1F, 3, 2, 1, 4, 5)
Alarms We are supporting digital alarms only. There is presently no way to have meaningful analog alarms on a ramped device. If it should be desirable to support an analog alarm on event (e.g. reset) then it is possible to use the existing facilities.

The alarm mask, nominal, and reset will follow the lower 6 bits of the basic status, i.e. the Special Power Supply Status word.

The other status information (stop/continue stuff) placed in the basic status for programmer convenience is not alarmed.

	PRO DGALBL (4, 20, 60, 0010, 0010,
	            2, 1, 1, 0, 0, 0, 0,
	            0, 0, 0)
	PRO DGALTX (0, 0, 5, '')

F(t) Tables

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 2x (hex)
x = channel (0-3)

There are 128 words per table, which have 64 pairs of (f(t), t). Thus the data base entry will be either 256 bytes long (for one table) or 3840 bytes long (for all fifteen). The default length is four bytes, a single entry.

	 PRO (4, 3840, 60)	! No PDB necessary?

Proposed suffix: "T", as in I:H100T

G(i) and H(i) tables

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 3x (hex) <- G(i)
4x (hex) <- H(i)
x = channel (0-3)

There are 64 words per table, which have 64 single G(i) or H(i) ordinate values. There is only one set of abscissa values per 453 card, which is why we are linking the two sets of devices (per channel and per card) via the family device in the database.

If we are supporting only one table these devices are 64 words long in the database. If we are supporting all fifteen tables these devices are 960 words long.

For both devices we have:

	PRO (2, 1920, 60)	! No PDB necessary?

Proposed names: I:H100G and I:H100H

Maps device

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 5x (hex)
x = channel (0-3)

112 words, separated into 3 sections.

  1. Ramp table map data (one word for each of 32 interrupt levels) = 32 words
  2. MDAT multiplier map (three words per interrupt level) = 96 words
  3. Scale factor map (also three words per interrupt level) = 96 words
	PRO SETTNG (2, 448, 60)
	No PDB necessary.

Proposed name: I:H100M

Scale factors device

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 6x (hex)
x = channel (0-3)

15 words of scale factors.

Proposed name: I:H100S

Version number and operating conditions device

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 7x (hex)
x = channel (0-3)

Reading: 48 words of general status, as follows:

	Word 1:  F(6)A(1) Version Number
	     2:  F(2)A(2) Current Ramp Tables
	     3:  F(2)A(3) Current Scale Factors
	     4:  F(2)A(4) Current MDAT Selections
	   5,6:  0 (not used)
	     7:  F(0)A(10) F(t) End of Table Flag
	     8:  F(0)A(11) F(t) Segment Number
	     9:  F(0)A(12) G(i) Segment Number
	    10:  F(0)A(13) H(i) Segment Number
	    11:  F(2)A(5) Special Configuration Word
	    12:  0 (not used)
	    13:  F(6)A(0) Card Type
	 14-34:  F(3)A(3) Calculation Archive
	    35:  F(4)A(2) Current Interrupt Level
	    36:  F(1)A(14) Last TCLK Event
	 37-42:  F(4)A(4) Copy Table Info
	 43-48:  F(5)A(4) Add Table Info

We are supporting BOTH setting and reading properties for this device. The setting property cannot be set (imagine being able to adjust the version number), but it can be read via the setting property as a convenience to the application page.

Proposed name: I:H100U

Reference device

SSDN: (Reading)

madc channel # madc #
0 36 (hex)
crate slot
0 0x (hex)
x = channel (0-3)

Fundamentally this device will read an MADC channel. However we need to set the analog mux on the B board before we can start plotting values, so this device gets a special front end device handler (with a special SSDN).

It will be possible to fast time plot this device.

I do not propose to detect user conflicts over the mux settings. When you first type it in on a page the mux gets set, but subsequent users of the same mux can mess up your plot.

	PRO READNG (2, 2, 60)
	PDB READNG ('VOLT', 'UNIT', 0, 6, 2, 0, 0, 0,
	            12.5, 1.0)                         ! -128 to +127

SSDN: (Setting)

0 0
0 36 (hex)
crate slot
0 0x (hex)
x = channel (0-3)

*** NOTE: USE THE 'A' BOARD SLOT

Writing to the setting property of this device will write directly to the DAC with an F(17)A(2) command. Reading-the-setting will return the "reference channel converted values" from the "B" board.

	PRO SETTNG the same
	PDB SETTNG the same

Propsed name: I:H100F

Family device

This device supports only a "family" property, which is a version of a subsystems device record. Seven of the devices for the individual channel, as well as the common devices for the whole card, are represented here. Thus there will be some overlap between the four family devices for a single 453 card.

	PRO FAMILY (I:H100, I:H100T, I:H100G
	            I:H100H, I:H100M, I:H100S I:H100U,
	            I:14RC5, I:14RC5G, I:14RC5H, I:14RC5C,
	            I:14RC5M)

Proposed name: I:H100Z

G(i) Scaled in Amps

This device returns and accepts scaled data. The hardware contains the scaling factor used to convert between raw and cooked values.

SSDN: (Setting, Reading)

0 0
0 36 (hex)
crate slot
kk Dx (hex)
x = channel (0-3)

SSDN: (Basic Status, Basic Control)

0 0
0 36 (hex)
crate slot
kk Dx (hex)
x = channel (0-3)

Where kk is the interrupt number.

Knobbable or ganged devices

These are wholly optional. You can create these devices, if you wish, for the purpose of knobbing groups of slots in a table all at the same time. They are NOT included in the family device. The reading property is typically set up the same as the parameter page device.

SSDN: (Reading)

0 0
0 42 (hex)
madc channel
0 0

SSDN: (Setting)

delta slot (0-15)
(high nibble)
total slots (1-15)
(low nibble)
initial slot (0-64)
(0 -> use data offset)
0 70 (hex)
crate slot
kk Fx (hex)
x = channel (0-3)

Where kk is a combination of the table type (top 2 bits) and the table number (0-15) (bottom 6 bits) (0 -> use data offset).
(Table types: 0 -> F(t), 1 -> G(i), 2 -> H(i))
The setting property should always have a length of 2 bytes.

DEVICES PER 453 CARD

There are presently five devices in the per-card set:

  1. Bulk Power Supply parameter page device (SSDN code 8)
  2. G(i) abcissa values (SSDN code 9)
  3. H(i) abcissa values (SSDN code 10)
  4. Clock events (SSDN code 11)
  5. MDAT selections (SSDN code 12)

Bulk Power Supply device

Actually, there will be one of these devices in the data base for every 453 card, whether or not there is a bulk power supply attached. The reason is that there are several status bits, some of which may be alarmable, which the 453 card can generate on its own.

I know of no reading or setting properties for this device.

Proposed name: I:14RCx (for the cards in crate 14)

SSDN: (All Properties)

0 0
0 70 (hex)
crate slot
0 80 (hex)
Basic Status

Two words long.

Low word: The bulk PS status word, obtained from F(1)A(0).

High word: LAM status word, obtained from F(4)A(12). This word contains a number of error bits which are not related to the bulk PS, and is the primary reason we have this device in the database even if there is no bulk PS attached to the card.

	PRO BASTAT (4, 4, 60)
	PDB BASTST (to be determined)
Basic Control

Two words long, but only the lower word is used. The basic control codes, which can be placed in a PDB for parameter page use, are:

	Code  Meaning           PDB Slot  Camac Function
	----  -------           --------  --------------
	  1   PS OFF            OFF       F24A1
	  2   PS ON             ON        F26A1
	  3   PS Reset          RESET     F26A7
	  4   unused		           
	  5   Toggle polarity   POL -     F24A3

	PRO BCNTRL (2, 2, 60)
	PDB BCNTRL (to be determined)
Alarms

The digital alarm follows the basic status property, with the execption of four bits which we ignore.

There is a single bit for each channel which is funneled through the LAM word. These bits are the alarm bypass bits for the individual waveform devices, and thus I will not permit operators to use them here. They will always appear to be masked.

	PRO DGALBL (2, 20, 60, 0000, 0000,
	            4, 1, 1, 0, 0, 0, 0,
	            0, 0, 0)
	PRO DGALTX (0, 0, 5, '')
Setting

Not needed, but quite convenient for calling DBAREQ in application pages. The setting property on this device reads and sets the 'B' board analog mux. Note that the reference signal device controls this mux automatically.

G(i) and H(i) abcissa values

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 90 (hex) <- G(i)
A0 (hex) <- H(i)

There are 32 words in each of these devices, containing MDAT values for the waveform function abcissas.

	PRO SETTNG (2, 64, 60) ! no PDB needed

Proposed names: Following the above, I:14RC5G and I:14RC5H.

Clock events

SSDN: (Setting, Basic Status, Basic Control)

0 0
0 70 (hex)
crate slot
0 B0 (hex)
Setting:

256 words long, containing 8 word blocks (= 8 clock events) for each of 32 interrupt levels.

	PRO SETTNG (2, 256, 60)
Status:

A single word containing the F(4)A(15) clock event enable flag.

		Bit  0:  1=clock event interrupts disabled (OFF)

	PRO BASTAT(2, 2, 60)
	PDB BASTAT(1, 0, 1, 0, 0, 0, 2) ! ON/OFF status
Basic Control:

The basic control for the reference device enables and disables the clock event interrupts.

Basic control codes are only one word long. The front end ignores the upper word, but I recommend that you keep it zero in case we want to support other basic control options.

The codes are as follows:

		Code  Meaning            PDB Slot  Camac Function
		----  -------            --------  --------------
		  1   Disable interrupts   OFF        F24A4
		  2   Enable interrupts    ON         F26A4
		  3   unused               RESET
		  4   unused               POL +     
		  5   unused               POL -

	PRO BCNTRL (4, 4, 60)
	PDB BCNTRL (6, 0, 2, 1, 0, 0)

Proposed name: I:14RC5C

MDAT Selections

SSDN: (Setting)

0 0
0 70 (hex)
crate slot
0 C0 (hex)

One word long. Contains the sources of MDAT (the standard MDAT codes, I think) for the G(i) function (high byte) and H(i) function (low byte).

	PRO SETTNG (2, 2, 60)

Proposed name: I:14RC5M