p12mProg Logfile format

Last Updated: 28jan15

Links
File format
Record format
Accessing the file data

File format  (top)

    The p12mProg is the AO control program for the 12 meter telescope. It records the telescope status once a second to a logfile.
Some properties of the file are:

File location:
/share/phidat/p12m/
daily file creation
new file started each day at 0Hrs AST
file Naming
logdata_yyyymmdd.dat
file size
24Mbytes/day
file format
binary little endian.. see record format below

Record format  (top)

    The file contains records (86400  if a full day is recorded). each record is:

field
type/
units
byte
Offset
description
cpuTmAtWaitTick
double
sec1970
0
when we waited for the next 1 sec tick for this record.
This is normally 50 millisecs before the tick
cpuTmAtTick
double
sec1970
8
Time when we woke up for the tick.. (with fractions of a sec)
durRdDev
double
secs
24
the time from the tick, till when we complete the status read from the device. This includes computing the new position, sending it to the ramp logic, and then reading the device status block. It is typically 40 ms (25ms is to actually do the read).
durWrLast
double
secs
32
secs to write the previous log record to disc.
stBlk
P12M_STAT_BLK struct (read from controller via group read at tick)
stBlk.mjd
double
day
40
utc mjd time stamp for the data read back.The units are days, the resolution is ms. We run the system clock in utc, not ut1 (dut1 set to 0). All of the values in stBlk are at this timestamp.
stBlk.st
P12M_STAT_WORDS (4 32bit statwords from controller (as 4 bitfields)
stBlk.st.azM
32bit
48
azimuth master 32bit status word
stBlk.st.azS
32bit
52
azimuth slave 32 bit status word
stBlk.st.el
32bit
56
elevation 32 bit status word
stBlk.st.cen
32bit
60
central processor status word
stBlk.aPos_D
dbl
deg
64
azimuth position read from encoder at mjd timestamp
stBlk.azErr_D dbl
deg
72
azimuth error read from controller. It is the tracking error when locked to trajectory, or the error to follow the request path to lock (if not locked)
stBlk.azFdBackVel_DS
dbl
deg/sec
80
azimuth velocity read back from controller deg/sec
stBlk.azMotCur_A
dbl
amps
88
azimuth master motor current
stBlk.azSlMotCur_A
dbl
amps
96
azimuth slave motor current
stBlk.elPos_D
dbl
deg
104
elevation position read back from controller.
stBlk.elErr_D
dbl
deg
112
elevation tracking error (see azimuth description above)
stBlk.elFdBackVel_DS
dbl
deg/sec
120
elevation velocity read back from controller
stBlk.elMotCur_A
dbl
amps
128
elevation motor current
tickTmIsec
long
sec1970
136
time at this tick (integral). This is the time base used for where we are.
statWd
32bit
144
p12mProg statword. 32 bit  field. Contains status on what the program is doing.
numIoThrds
int
cnt
148
number of i/o threads currently talking to p12mProg. These are the programs sending commands or querying status.
frListFrBufs
int
cnt
152
number of free message buffers (1024) in total. the different threads communicate with messages (i/o threads to Xf thread, xfThread to loggingThread)
nDevConnectOk
int
cnt
156
number of times the xfThread has successfully connected to controller. A reconnect occurs of the controller does not reply to a request.
nDevConnectFail
int
cnt
160
number of time reconnects to controller failed (timed out).
trkArFreePnts
int
cnt
164
number of free locations in track array (1000 max). This is no longer used (since grp reads don't use the track array).
pl
P12M_LOG_DATA_PL .. requested data: When using the track array, these were the requests computed 2 seconds in the future. When we switched to group read, these are the requests computed at the tick and then immediately sent.
pl.azReqD
dbl
deg
168
requested azimuth position we send to controller
pl.elReqD dbl
deg
176
requested elevation position we send to controller
pl.corAzD
dbl
deg
184
azimuth correction (little circle). This is the model plus any greatCircle offsets (from dbg gc azOff elOff)
This value is added to the computed (radec->azel) position. pl.azReqD=azCmp + azCorD
pl.corElD dbl
deg
192
elevation correction. This includes the model  (with refraction included).
pl.modelCorAzD
dbl
deg
200
computed model correction for azimuth (little circle)
pl.modelCorElD
dbl
deg
208
computed model correctio for elevation (includes refraction)
pl.modelLocAzD
dbl
deg
216
the azimuth position used to compute the model.
pl.modelLocElD
dbl
deg
224
the elevation position used to compute the model (before refraction).
pl.raJReqD
dbl
deg
232
requested ra J2000 position (back computed from azcmp so it includes any rates or offsets). This is where we should have been pointed
pl.decJReqD
dbl
deg
240
requested dec J2000 position (back computed from elCmp)
pl.c1OffCumD
dbl
deg
248
if you apply an offset and or rate (in the same coordinate system) then this will be the cumulative offset. Normally used when doing crosses in az,el. If the offset,rates are great circle then this is great circle. If the rates and offsets are in different coordinate systems then this is probably junk...This would be az
pl.c2offCumD
dbl
deg
256
cumulative offset for second coordinate (see above).
pl.dut1sec
dbl
sec
264
dut1 used for this time stamp (ut1-utc)
pl.tickTmIsec
long
sec1970
272
the time stamp for this request packet. For Group reads it should match .tickTmIec above (it was added when we were computing things 2 secs ahead with trackarray).
azErrD
float
deg
280
computed azimuth error: Requested - Actual  interpolated to the readback timestamp
elErrD
float
deg
284
computed elevation error: Requested - actual (readback)
gcErrD
float
deg
288
great circle pointing error (requested - actual):sqrt((azerr*cos(el))^2 + elErr^2))
fill
int
292

 


Accessing the logfile:   (top)

    There are idl routines to access the contents of the logfile:



<- page up
 home_~phil