When a new SBD email is received it is unpacked and
appended to a XXXX.txt file (XXXX is the Spray serial number). Unpacked data are stored in ascii format,
and the first characters of each line determine the line content (lines are
terminated by a CR/LF= Hex 0x0d0a).
This document describes the different line formats. When the line is a fixed-format type,
character locations are given using the convention s[m:n]
= characters m-n of string s (first character in the line is m=1). An example for the ‘!dive’ line is given
here:
!dive 1
999 20Jul2006 18:47:11 <---EXAMPLE LINE.
1234567890123456789012345678901234567890
<---CHARACTER COUNTER LINE.
1 2 3 4 <---CHARACTER COUNTER LINE.
!dive 209
999 25May2006 17:36:32 <---REPEAT OF THE EXAMPLE LINE.
i= 1 2 3 4
<---i = PARAMETER LIST INDEX.
i1 = dive number
= s[7:10].
<---description of each parameter
i2 = OBSOLETE.
i3 = email
reception Day:Mon:Yr, Day=s[23:24], Mon=s[25:27], Yr=s[28:31].
i4 = email
reception time HH:MM:SS HH=s[33:34],
MM=s[36:37], SS=s[39:40].
MOD modify-stamp if the file has been
modified by another program.
MD Mission yy/mm:id, experiment name,
and description.
VN Vehicle s/n, sensor configuration,
eeprom version.
VO Optical sensor type.
VA Argos ID.
CP,
CT, CS Calibration
coefficients for the Press, Temp, and Salinity.
CO Calibration coefficients for the Optical
sensor.
CD Calibration coefficients for the
Doppler sonar.
GPS,
Route, and Waypoint data:
G GPS data.
R Route and steering configuration.
r Individual route entry
configuration.
W Waypoint list header line.
w Individual waypoint entry
information.
EC Engineering communications line.
EF Engineering flight line.
EN Engineering navigation line.
EP Engineering hydraulic pump line.
ET Engineering time-series header line.
e Engineering time-series data.
D Profile data start-line.
p single-scan line (one for each
profile datum).
B1 Doppler parameter configuration
line.
AT Doppler data start-line.
a data line for the Doppler data.
# Comment line.
!dive
New-dive line.
E Obsolete engineering format (kept
for reference).
M Mission ID line (0702 obsolete, is
now found in the MD line).
S Received Shore-commands, echoed
back.
SBD SBD email
information.
X Header line of the Spray parameter
list.
x Individual parameter information
(address and value).
Here is an example of the start of a .txt file:
MOD 1.02 Convert 'E' lines to 'EC-F-N-P', drop 'M ', compact 'p', new 'G'
MD 07/01:01 LINE90 CalCOFI Line 90, deployed Jan2007, from Dana Pt.
#----start calibration coefficients --------------
VN 12
4 2 0612
VO FLUOR
VA 22747
Argos ID
CP12 -10.000
0.040 0.0000 1.0000
CT22 -5.000
0.001 0.0000 1.0000
CS32 -1.000
0.001 0.0000 1.0000
CO44 0.000
0.001 10 3.00
0.0000 1.0000
CD58 2
3 0.0000 1.0000
2.00 0.22
#----end calibration
coefficients --------------
MOD
1.02 Convert 'E' lines to 'EC-F-N-P', drop 'M ', compact 'p', new 'G'
This is used to leave a trail of the post-processing steps done on the .txt file. This is added when an archived file is modified to a newer format for compatibility reasons.
MD
07/01:01 LINE90 CalCOFI Line 90,
deployed Jan2007, from Dana Pt.
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 1 2 3 4 5 6 7 8
MD
07/01:01 LINE90 CalCOFI Line 90,
deployed Jan2007, from Dana Pt.
i1 i2 i3
i1 = yy/mm:nn = Deployment ID:
yy =year
= s[4:5], mm =month = s[7:8], nn =mission id (0..15) = s[10:11].
i2 = E_Name = 8-character experiment name = s[13:20].
i3 = Description = unique description
for this Spray = s[22:n].
The MD line is used to
describe the Spray when the user goes to queue a shore command. This helps ensure that the user is sending
the command to the correct serial number.
‘VN’ line s/n nsensor CTD_Type EEPROM_Ver
VN 12 4 2 0612
12345678901234567890
0 1 2
VN 12 4 2 0612
i=
1 2 3 4
i1 = s/n =
Spray serial number = s[4:7].
i2 = nsensor = # of sensors returned, normally 4 (P,
T, C, O) = s[9:10].
i3 = CTD_Type = 2
for SBE CTD = s[12]
(type=1=PME=obsolete 2004).
i4 = EEPROM_Ver =
YYMM = Year and Month of EEPROM code version,
i.e, 0608, 0610,
0612, 0702. = s[14:17].
‘VO’ line : VO string: string = ‘FLUOR’ for fluorometer,
‘OBS’ for optical backscatter.
VO FLUOR
is used to describe the type of optical sensor mounted on
Spray.
‘VA’ line: VA ptt_id = Argos PTT ID.
VA 22747
Argos ID = Argos PTT ID installed on this Spray.
‘CP12’, ‘CT22’, ‘CS32’ all have the same format; only shown for ‘CP’
CP12 -10.000 0.040 0.0000 1.0000
1234567890123456789012345678901234567890
0 1 2 3 4
CP12 -10.000 0.040 0.0000 1.0000
sxy i1 i2 i3 i4
s = sensor-type char ( P,
T, S, O, D ).
x = sensor-type code (
1=P, 2=T, 3=S, 4=O, 5=D ); sent by Spray.
y = calibration line
format
2 = linear fit, with factory-coefficients and in-lab coeff.
4 = 2-stage linear-fit: factory-to-volts, volts-to-units.
(required for
optical, with optional gain settings).
i1 = offset = s[6:13].
i2 = gain = s[15:21].
y [sci-units] = offset + gain*counts.
i3 = off2 = in-lab offset
correction factor = s[23:31].
i4 = gn2 = in-lab gain correction factor = s[33:40].
y2 = off2 + gn2*y.
Allows further correction of sensor values.
CO44 Optical
Coefficients.
CO44 0.000 0.001 10 3.00 0.0000 1.0000
1234567890123456789012345678901234567890123456789012
0 1 2 3 4 5
CO44 0.000
0.001 10 3.00
0.0000 1.0000
i1 i2 i3 i4 i5 i6
i1 = offset = s[6:13].
i2 = gain = s[15:21].
i3 = hg = hardware-gain of Seapoint (set by technician in lab)=s[23:25].
i4 = ogain = optical gain, to convert volts to sci_units = s[27:34].
i5 = off2 = in-lab offset correction factor = s[36:43].
i6 = gn2 = in-lab gain correction factor = s[45:52].
volts = offset + gain*counts.
y [sci_units] = volts*ogain.
y2 = off2 + gn2*y. Allows further correction of sensor values.
CD58 Doppler Backscatter
(ABS) Coefficients
CD58 2 3 0.0000 1.0000 2.00 0.22
123456789012345678901234567890123456789012345678
0 1 2 3 4
CD58 2 3 0.0000 1.0000 2.00 0.22
i1 i2 i3 i4 i5 i6
i1, i2 = First and last bins used for the backscatter averaging.
i3 = off2 = in-lab offset correction factor = s[19:27].
i4 = gn2 = in-lab gain correction factor = s[29:36].
i5 = bd = blanking distance [m], nominally 2.0 m = s[38:42].
i6 = alpha = sound absorption coeff [db/m], one-way, adjusted for
central-axis range (nominally 0.22) = s[44:48].
G 1 0 21 Sep 2006 19:35 1 +32 52.18 -117 15.03 50
4 22 37 48 2.4
0 0 32.8697 -117.2505
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
0 1 2 3 4 5 6 7 8 9
G 1 0 21 Sep 2006 19:35 1 +32 52.18 -117 15.03 50
4 22 37 48 2.4
0 0 32.8697 -117.2505
i= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 i1 = dive# = s[2:6].i2 = mission status at time of fix = s[8]. 0=start of mission, 1=start of dive, 2=end of dive, 3=in abort mode ( 3,4,5 ) = date: dd= s[10:11], mon = s[13:15], yyyy = s[17:20]. ( 6:7 ) = time (UTC) hh = s[22:23], mm = s[25:26]. 8 = valid flag: 0=bad fix, 1 = good, flag = s[28].IF THE FIX IS BAD, the last good fix is still reported, so USE the VALID Flag!
(i9 i10) Latitude: Latd = s[30:32], Latm = s[34:38].(i11 i12) Longitude: Lond = s[40:43], Lonm = s[45:49].i13 = Tfix = time (s) to acquire a fix = s[51:54].i14 = Nsat = # of satellites in view = s[56:57].i15 = minimum SNR of Nsat = s[59:61].i16 = mean SNR = s[63:65].i17 = max SNR = s[67:69].i18 = HDOP = s[71:74].i19 = GPS Health Status = s[76:77]. WRITTEN IN HEX (value =0..FF) bit 0=incomplete almanac, bit 1 =bad back-up battery, bit 2=poor satellite coverage, bit 3=antenna fault. WHEN in abort mode (i2=3), this is re-assigned as the Exception LSB. (see ‘EF’ j9 description for the LSB : says if burn wire is activated).i20 = Wing Index / Roll Status, operational as of JUL06 = s[79:80]. HEX FORMAT (0..FF): bit assignment is:b0 = = the GPS wing (1=port,0=stbd): Set by Sprays w/antenna switch.
b1 = 1 = roll function timed out (slow motor/bad pot)
b2 = 1 = failure in the last 2 s of operation (slow motor/bad pot).
b3 = 1 = bad potentiometer (pot is out-of-bounds by over 200 counts).
b4 = 1 = starboard wing is not at the correct antenna comms position.
b5 = 1 = port wing " ".
b6 = 1 = zero wing (wings flat) " ".
b7 = 1 = intermittent pot behavior (the pot initially OK, and then bad). Operationally, values = 2 (slow motor) happen frequently, and represent hysteresis problems near zero roll.i21 Latitude, Decimal Degrees (s[82:90] ).
i22 Longitude, Decimal Degrees (s[92:100]).
W
line contains the Waypoint list info
W
1 7
i=
1 2
i1 = dive number = s[3:6].
i2 = number of waypoints in the list =
s[8:9].
w line contains the waypoint
values: list immediately follows the ‘W’ line.
w
1 +34.325 -120.782
12345678901234567890123456789
1 2
w
1 +34.325 -120.782
i= 1
2 3
i1 = Waypoint index ( 0=HOME waypoint) =
s[3:4].
i2 = Latitude (decimal degrees) = s[6:13].
i3 = Longitude(decimal degrees) = s[15:22].
R line contains the basic
route information (update starting at code 0608).
R
1 6 6 2 1
1 0 0 -1 0
0 0 -1 1
1234567890123456789012345678901234567890123456789012345678901234567890
0 1 2 3 4 5 6 7
R
1 6 6 2 1
1 0 0 -1 0
0 0 -1 1
i=
1 2 3 4 5
6 7 8 9 10
11 12 13 14
i1 = dive number = s[2:6].
i2 = Number of points in the route = s[8:9].
i3 = Route entry that we’re now heading for =
s[11:12].
i4 = End-of-Route Action = s[14:15]:
0= go to the HOME waypoint (waypoint #0).
1= Repeat the route from the beginning.
2= Reverse the route (trace the route back
to the beginning).
3= Stay stationed at the last waypoint.
4= ABORT (End mission) when the waypoint
is reached.
i5 = Direction that we’re going through the
route:
1=forward, -1=reverse = s[17:18].
i6 = 1= current-bucking is on, 0=off (this
has no dive time-out) = s[25:26].
i7 = Current-Crossing Angle (degrees, <0
steer to left of current,
>0=to the right, 0=off) = s[28:32].
i8 = Max Dive to use the current-crossing
mode
(is not used if Dive#> Max_dive) =
s[34:37].
i9 = Manual Steering; -1=off, 0..360
Heading(TRUE), -2 = do circles
(constant roll) s[39:43].
i10= Max Dive to use the manual steering mode
= s[45:48].
i11= Steering Point (km) = s[50:54].
i12= Max Dive to use the steering point mode
= s[56:59].
i13= Min Correction Angle (degrees) =
s[61:65].
( current-bucking/ current-crossing/
steering-point modes).
i14= Max Correction Angle (degrees) =
s[67:70].
r line contains the info for
each route entry (available starting code 0608).
r 1 1
3 0
12345678901234567890
r
1 1 3 0
i= 1
2 3 4
i1 = route entry index.
i2 = Detect-Mode parameter:
0= Arrival is based on range only.
1= Arrival is based on either range or
bisector angle
(finish-line approach).
2= Based on bisector angle only.
i3 = Watch-Circle Radius [km]. If the Spray is within this range,
then we’re at the waypoint.
0=auto-compute, based on the last
dive-depth.
i4 = Approach Angle: 1..360 degrees =
approaching the next waypoint at
this angle (degrees, TRUE; 0=auto-compute ).
As of Nov2006, new, two-letter (EC, EF, EN, EP) lines have been added, to break out the engineering information into sub-groups. Once this format is accepted by all programs, the old ‘E ‘ line will be removed.
Exvv <data>, represents the new Engineering Line, where
E First character ‘E’ signifies that engineering information follows.
x Second character is the type of engineering data:
C Communication (SBD) data.
F Flight information.
N Navigation information.
P Pump information.
‘ ‘ (‘space’) Old engineering format line; there is no vv.
vv Characters 3-4 = version number (Version 1 = ‘01’)...allows future expansion.
12345678901234567890123456789
1 2
j1 j2 j3 j4 j5
j6 j7
j1 = Dive number = s[6:9].
j2 = Ntries =#tries sending an SBD message
during the LAST surfacing =s[11:12].
j3 = Nsent
=# of SBD messages sent during the LAST surfacing =s[14:15].
j4 = SBDI_STAT = status of the last attempt to
send a message =s[17:18].
j5 = SBD_SHORE_STAT = status of parsing the
last shore command =s[21:22]=HEX.
j6 = T_SBD = time[s] that the modem actively
tried to send a message =s[24:26].
j7 = Wing used to send the SBD message = s[29].
1234567890123456789012345678901234567890123
1 2 3 4
j1 j2 j3
j4 j5 j6 j7
j8 j9
j1 = Dive number = s[6:9].
j2 = Navg =# of 8s samples avg’d for each datum
in the SBD message =s[11:12].
j3 = Psurf = Surface pressure counts =
s[14:16].
j4 = Zmax = Maximum depth [dBar] recorded in
the bottom turn = s[18:21].
j5 = Pitch = pitch angle [degrees] = s[23:24].
j6 = Altimeter minimum depth to the bottom [m]
= s[26:28].
j7 = ADP altimeter bottom intensity level [dB]
( =0 for Tritech) =s[30:32].
j8 = ROLL_ERR = Integrated roll error[degrees], from the PI loop = s[34:38].
j9 = EXC_STATUS = Exception Status bit settings(HEX
FORMAT), s[40:43].
Let b0 = bit[0] = Lsbit, b15 = bit[15] = Msbit.b0 = Pump Recovery was required. b8 = CF1 Close File error.
b1 = Drop Weight Activated. b9 = High pump amps @ 50 m safety pump. b2 = Pressure>20 m ‘at the surface.’ b10= Press=0 (broken) ‘at the surface.’ b3 = Depth>1500 m detected. b11= No SBD sent in last 48 hrs. b4 = The Altimeter triggered turn-around. b12= Cannot overcome the current. b5 = Backed off the surface. b13= Spurious Reset Detected. b6 = Extra pumps req’d at end of ascent. b14= Altimeter reading is from an ADP. b7 = Took >700 s to leave the surface. b15= Not Used. b12=1 means that although current correction is applied, the current is too strong to maintain course.b14 is used to help interpret the altimeter reading in the ‘E’ line.
EN = Navigation Line
123456789012345678901234567890123456789012345678901234567890
1 2 3 4 5 6
j1 j2 j3
j4 j5 j6
j7 j8 j9 F
j1 = Dive number = s[6:9].
j2 = DRx [m] = dead-reckoning x distance
traveled during the dive =s[11:15].
j3 = Dry [m] = dead-reckoning y distance
traveled during the dive =s[17:21].
j4 = WLAT [decimal degrees] = Waypoint
Latitude = s[23:31].
j5 = WLON [decimal degrees] = Waypoint
Longitude = s[33:41].
j6 = Tleave[s]= Time at start-of-dive to leave
the surface (P>2 m) =s[43:45].
j7 = Tend [s] = Time at end-of-dive since
p<2 m until GPS is on = s[47:49].