Title: DCOPS Readout
1DCOPS Readout
- James N. Bellinger
- University of Wisconsin at Madison
- 27-February-2007
- DCOPS Readout System
2Overview
- 60 Lasers
- 36 Lines
- 276 DCOPS sensors
- (504 combinations of DCOPS and laser)
- 2 Terminal servers using 16 ports each
- Serial readout from each DCOPS
- We need to read out the entire profile and fit it
3Core activities
- Read and fit the profiles
- Store in database for each readout
- Fit results
- Raw profiles (for offline analysis)
- Error information
- Store in database for the run or as updated
- Configuration which DCOPS were read out
4Communications
- Make errors available to DCS via DimServer
- Use Dim commands to control the lasers
- Accept control from DCS via DIM commands
- HALT exit program when subprocesses end
- ABORT kill subprocesses and exit program (bug)
- RUN switch from paused to running status
- STANDBY switch from running to paused status
- SETDCOPSON Include selected DCOPS to be read
- SETDCOPSOFF Exclude this DCOPS from readout
5Comments
- I assume the default startup state is RUN
- The SETDCOPSON and SETDCOPSOFF commands change
the readout configuration, and that change will
have to be logged. - The current plan is to directly serve only errors
and configuration information to DCS. - DCS monitoring gets fits and profiles from the
database on as-requested basis, not continuously.
6Typical Station
Y
PT 2
Three SLM lines with 10 DCOPS each, and 6 DCOPS
for the Transfer lines (which have 12 DCOPS
along the Z direction
PT 3
PT 1
X
PT 4
PT 6
Radial SLM DCOPS
Axial transfer line DCOPS
PT 5
7Typical Station
Y
PT 2
Terminal Server
PT 3
PT 1
X
All the DCOPS in a designated region are read out
on a single port of the terminal server.
This includes the Transfer Line DCOPS. Only one
process at a time can communicate with a
terminal server port.
PT 4
PT 6
Radial SLM DCOPS
Axial transfer line DCOPS
PT 5
8A different typical Station
Y
PT 2
Terminal Server
PT 3
PT 1
X
Different stations read out on different ports.
We can read out different stations, like ME2
and ME3, in parallel.
PT 4
PT 6
Radial SLM DCOPS
Axial transfer line DCOPS
PT 5
9Transfer Line issues
Y
PT 2
Terminal Server
PT 3
PT 1
X
A Transfer Line uses a DCOPS from each station
along the line, and thus uses a port that an
SLM line also uses. The readout of Transfer
Lines cannot happen at the same time as the
readout of SLM lines.
PT 4
PT 6
Radial SLM DCOPS
Axial transfer line DCOPS
PT 5
10Organization
- 12 Stations
- 8 are EndCap with SLMs
- 4 are central MABS
- Read out the 8 EndCap Stations in parallel
- Have to read out the SLM lines in a station in
turn, since they use the same ports - To avoid reflections, only one laser on at a time
in a station - Then read out the 6 Transfer Lines
11Lowest Level Action
- Execute a set of shell commands and read back the
results in a pipe Example - (sleep .2 echo 52TT sleep .5 echo 52CC sleep
4 echo 52CG sleep 5 echo BRK echo exit)
telnet cmsatsplus.cern.ch 7001
Telnet to terminal server port 1 and accept the
following input commands Wait briefly for server
to catch up Send command to wake up DCOPS address
52 Wait briefly Send command to DCOPS to read
CCDs Wait several seconds Send command to DCOPS
to send the background subtracted profiles Wait
several seconds Send terminal server break Exit
the port connection
The output from this pipe is passed to the
calling routine.
12Second Level Action
- Turn on a laser for an SLM (reply not checked
yet!) - Send group sample and hold command on both
ports - Loop over DCOPS on SLM sending requests for data
- Turn off laser, turn on the other, and repeat
13Third Level Action
- Loop over SLM's at a station
- Fork a second level process to read an SLM.
- Set a timer and kill the fork if it times out.
- Return data in shared memory
14Fourth Level Action
- Loop over endcap stations
- Fork a third level process to read a station.
- Set a timer and kill the fork if it times out.
- As data is returned, interleave fitting with
waiting - When all data is fit, return
15Top Level Action
- Default is to loop forever over the following
- Call the routine to read all SLMs
- Call the routine to read all Transfer Lines
- Tag all data with a timestamp and store fits and
errors and compressed profiles in Oracle - If standby is requested, sleep and check for
change - If halt is requested, exit the program
16Status
- On a 2.4 GHz P4 with local MySQL, a readout cycle
in my testbed takes 15 minutes. I believe this
is realistic. - Writing profile and error blobs to MySQL works,
not tested on Oracle yet - DimService of error bits works
- The DIM abort command leaves stray processes
around - Configuration for minus side not created yet
- Run configuration needs to be read from and
written back to Oracle