Navi - Scan Reference Manual

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 59

NaviScan

Reference
Manual
NaviScan Reference Manual Page 2

1. INTRODUCTION ....................................................................................................................................... 4
1.1 SENSORS ................................................................................................................................................... 4
1.2 SERIAL AND NETWORK INTERFACING ....................................................................................................... 5
1.3 UTILITY AND OFFLINE PROGRAMS ............................................................................................................ 5
1.3.1 NaviScan Setup ............................................................................................................................... 5
1.3.2 XYZ Convert.................................................................................................................................... 5
1.3.3 XTF Convert ................................................................................................................................... 6
1.3.4 Extract ............................................................................................................................................ 6
1.3.5 Contour Patch Test ......................................................................................................................... 6
2. SENSOR FORMAT .................................................................................................................................... 7
2.1 ECHOSOUNDERS ........................................................................................................................................ 7
2.2 SIDESCAN ................................................................................................................................................. 8
2.3 PIPETRACKER ............................................................................................................................................ 8
2.4 POSITION ................................................................................................................................................... 9
2.5 GYRO ........................................................................................................................................................ 9
2.6 MOTION .................................................................................................................................................. 11
2.7 BATHY .................................................................................................................................................... 12
2.8 DOPPLER LOG .......................................................................................................................................... 13
2.9 GPS TIME ................................................................................................................................................. 14
2.10 LOGGING CONTROL ............................................................................................................................ 14
2.11 THEORETICAL PROFILE ....................................................................................................................... 14
3. DETAILED SONAR DATA FORMAT .................................................................................................. 15
3.1 MBE FORMATS ....................................................................................................................................... 15
3.1.1 Reson SeaBat 9000 ....................................................................................................................... 15
3.1.2 Reson SeaBat 8000 ....................................................................................................................... 15
3.1.3 SIS3000 ......................................................................................................................................... 17
3.1.4 Odom Echoscan ............................................................................................................................ 18
3.1.5 SeaKing (and ST1000) Profiler .................................................................................................... 18
3.1.6 EM3000 Raw range and beam ...................................................................................................... 19
3.1.7 SM2000 ......................................................................................................................................... 21
3.1.8 Hyspec modular scanner MK-II.................................................................................................... 21
3.1.9 STN Atlas Fansweep15 ................................................................................................................. 22
3.1.10 STN Atlas Fansweep20 ............................................................................................................ 22
3.1.11 STN Atlas TPE telegram .......................................................................................................... 22
3.1.12 Seabat 7k Telegrams ................................................................................................................ 23
3.1.13 Elac Hydrostar ......................................................................................................................... 27
3.1.14 Imagenex DeltaT ...................................................................................................................... 27
3.1.15 MS1000 profiler ....................................................................................................................... 29
3.1.16 BlueView .................................................................................................................................. 30
3.1.17 Odom ES .................................................................................................................................. 30
3.1.18 R2Sonic 2000 ........................................................................................................................... 30
3.2 SIDESCAN ................................................................................................................................................ 34
3.2.1 Reson SideScan (8000) ................................................................................................................. 34
3.2.2 Reson Snippets (8000) .................................................................................................................. 34
3.2.3 Stn Atlas ........................................................................................................................................ 36
3.2.4 Hugin XTF .................................................................................................................................... 36
3.2.5 EM3000 Compact ......................................................................................................................... 36
3.2.6 Seabat 7k Sidescan........................................................................................................................ 36
3.2.7 Elac Hydrostar.............................................................................................................................. 36
3.2.8 Benthos Imux 200 ......................................................................................................................... 36
3.2.9 Benthos C3D ................................................................................................................................. 37
3.2.10 EdgeTech.................................................................................................................................. 40
3.2.11 R2Sonic 2000 ........................................................................................................................... 40

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 3

4. NAVISCAN SBD LOGGING FORMAT ................................................................................................ 41


4.1 FILE STRUCTURE ..................................................................................................................................... 42
4.1.1 Packet header ............................................................................................................................... 43
4.1.2 Sub Packet .................................................................................................................................... 44
4.2 FILE ID IN SBD FILES ............................................................................................................................ 44
4.3 HEADER RECORD .................................................................................................................................... 45
4.3.1 UserNames and Dopplerlog offsets addition. ............................................................................... 49
4.4 TIMEBOX INTERFACED SENSORS ............................................................................................................. 50
4.5 GYRO RECORD ........................................................................................................................................ 50
4.5.1 Layout ........................................................................................................................................... 51
4.6 MOTION RECORD .................................................................................................................................... 51
4.6.1 Layout ........................................................................................................................................... 51
4.7 BATHY RECORD ...................................................................................................................................... 51
4.7.1 Layout ........................................................................................................................................... 51
4.8 MULTIPLE POSITION RECORD .................................................................................................................. 52
4.8.1 Layout ........................................................................................................................................... 52
4.9 RAW DATA RECORD ............................................................................................................................... 52
4.9.1 Layout ........................................................................................................................................... 52
4.10 AUXILIARY RECORD .......................................................................................................................... 52
4.10.1 Layout ...................................................................................................................................... 52
4.11 PROJECTION & ELLIPSOID RECORD .................................................................................................... 52
4.11.1 Layout ...................................................................................................................................... 52
4.12 DATUM SHIFT RECORD ....................................................................................................................... 53
4.12.1 Layout ...................................................................................................................................... 53
4.13 UTILITY RECORD................................................................................................................................ 53
4.13.1 Layout ...................................................................................................................................... 54
4.14 LOGCONTROL RECORD ....................................................................................................................... 54
4.14.1 Layout ...................................................................................................................................... 54
4.15 MULTIBEAM ECHOSOUNDER RECORD ................................................................................................ 55
4.16 SIDESCAN RECORD ............................................................................................................................ 55
4.17 PIPETRACKER RECORD ....................................................................................................................... 55
4.18 DOPPLERLOG RECORD ....................................................................................................................... 55
4.19 POSITION RECORD .............................................................................................................................. 55
4.20 FILTERED POSITION RECORD.............................................................................................................. 55
4.21 THEORETICAL PROFILE RECORD ......................................................................................................... 56
4.22 TARGET RECORD ................................................................................................................................ 56
4.23 DISK CONSUMPTION ........................................................................................................................... 56
5. TIME STAMPING ................................................................................................................................... 58
5.1.1 TimeBox absolute time tagging ..................................................................................................... 58

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 4

1. Introduction
The NaviScan data acquisition software is designed specifically for the multi-beam echo
sounder and sidescan sonar technology. A wide range of echosounders, sidescans, pipetrackers
and supporting positioning instruments are supported. EIVA offers the optimal solution for
vessel and ROV surveys.

The basic purpose of NaviScan is to collect data from the Echosounder sensors and generate a
file with exact positions of each scan. To do this navigation information is needed along with
roll/pitch/heave, bathy sensor and gyro. To improve positions, NaviScan includes support for
Doppler Velocity Log. Another feature is included; combine echosounder data and pipe-tracker
to get the best pipeline survey.

The NaviScan package contains programs to convert the raw logged data to motion corrected
data which can be used in processing software packets. During this conversion phase, data is
corrected for pitch, roll, heading, C-0 etc., and all low-quality data is filtered out.

All NaviScan programs can be executed on one PC, as the multitasking environment allows
simultaneous execution of more programs without interfering with the on-line data time-
tagging: this very important process is placed in a dedicated real-time queue. For larger set-
up‟s, the system can be split on more computers

The NaviScan system works on a PC platform which is simple, easy-to-handle and involves
minimum mobilisation time. The system is flexible and user friendly. It offers precise time
tagging and maximum up-time for continuous operation. The system configuration is based on
the client/server philosophy and consists of one or more PC's (connected via a local area
network (LAN)). The system is divided into two parts; one is dedicated to on-line data collection
and logging and the other is used for off-line data conversion, filtering, editing, and
configuration set-up and data transportation.

The collected data is displayed on the screen so the operator can supervise the system; inspect
the quality of incoming data and to make sure that none of the sensors are dropping out.
Data collected for each survey line will be stored in a file named by the operator. When the line
is ended (on a signal from the navigation system or by operator) the file is closed.

1.1 Sensors

The echosounder sensors transfer information to NaviScan each scan. The scan information
includes timing, depths and ranges.

An integrated navigation system is used for the identification of current system position.
NaviScan can use data from any system giving Easting and Northing in a CR/LF terminated
serial string. A special input is included for EIVA's NaviPac online navigation system, which
furthermore allows remote control, DAL/DOL and KP information and on-line coverage
information.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 5

For ROV jobs, a Doppler Velocity log can be used to improve the positioning accuracy; a filter
combining position long-term stability with Doppler short-term accuracy, gives a very accurate
solution.

To compute the exact position of each beam, NaviScan needs heading (gyro) information. The
system accepts any CR/LF terminated string giving the heading in decimal degrees.

Also the heave, roll and pitch data is needed for movement correction of each scan. NaviScan
accepts data in any CR/LF terminated string giving Roll and Pitch in decimal degrees and Heave
in cm.

When mounted on a ROV, the NaviScan system needs a bathy sensor giving the exact depth of
the ROV. NaviScan accepts data in any CR/LF terminated string giving depth in decimal
meters.

NaviScan supports integrated use of Pipe- or cable-tracker data; range to pipe can be combined
with multi-beam data to give the ultimate pipe survey solution.

1.2 Serial and Network Interfacing

The online NaviScan program reads the incoming sensor data from a special intelligent serial
communication board so that data I/O can be performed without interference from logging of the
data, computations and presentation.
Network is also used for interfacing primarily sensors with heavy data loads or time tagged data.
NaviScan supports both UDP and TCP communication

1.3 Utility and Offline Programs

1.3.1 NaviScan Setup


The on-line NaviScan program reads the binary file "NAVISCAN.BIN" to start-up the
communication for all sensors. With the NaviScan Set-up utility the operator can in an easy
way create/modify this file.
Port identification and data format for all sensors, specification of serial communication, vessel
or ROV offsets and Sensor correction values along with exact location of all sensors have to be
defined in order to make the NaviScan system work.

1.3.2 XYZ Convert


The NaviScan XYZ Convert utility is used to convert the raw logged data to motion corrected
data stored in simple XYZ format (ASICII or binary), which can be used in some processing
software packets. During the conversion phase, data is corrected for heading, roll, pitch, C-O etc.
and all low quality data is filtered out.
Furthermore the operator can remove specific beams; this is useful when the echosounder is
operating at the limit of the specified range, which can cause low quality of the outer beams.
At the end of the conversion, the NaviScan Converter creates a quality report, so the operator
can inspect the amount of discarded data. A high number of discarded can indicate improper set-
up of the echosounder or the NaviScan system.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 6

1.3.3 XTF Convert


The XTF converter can take one or more SBD files and convert them to the standard XTF
(defined by Triton) file format

1.3.4 Extract
The NaviScan Extract Utility is used to generate windows EXCEL compatible files on basis of
data extracted from the raw logged data files. Consequently, graphs and tables over selected data
can easily be created. This feature is mainly of interest during the calibration and quality control
phase

1.3.5 Contour Patch Test


The NaviScan Contour utility allows the operator to generate simplified DTM models of the
raw data in a few minutes, which among others can be used for coverage control. Furthermore it
is the EIVA tool for MBE calibration as it includes tools for
Roll calibration
Pitch Calibration
Heading Calibration
Time Calibration
Dual Head Alignment

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 7

2. Sensor Format
NaviScan supports I/O for a number of predefined sensors, and gives the opportunity to
define new sensors as long as it outputs a fixed terminated string and the information is
located with a given offset from the beginning of the received string.

Hereafter are listed the different possible sensor types in the SBD format. The enum id and
the corresponding static char string identities the different sensors, and we try to keep these
updated, after that follow a frame of the same and some extra information, but possibly new
sensor may not be updated in the frames.
The field “SBD id” has been added, so that it‟s possible to convert an id in the SBD file to the
type. See Header Record. The order of these ids will never change; new sensors will always
be added at the end.
The definitions are per January 2011

2.1 Echosounders
NaviScan supports the following MBE systems. The type number will be of interest if you
want to decode the SBD files
static char echosoundertypes[ENUMBER][30] = {
"No echosounder system", // 0
"SeaBat S9001 R-Theta", // 1
"SeaBat S9002 R-Theta", // 2
"SeaBat 81xx", // 3
"SIS-3000", // 4
"Odom Echoscan", // 5
"SeaKing Profiler", // 6
"SeaKing Profiler Dual head", // 7
"ST1000 Profiler", // 8
"ST1000 Profiler Dual head", // 9
"EM3000 (Raw Range&Beam only)", // 10
"SeaBat 81xx(2-Heads)", // 11
"SM2000", // 12
"Hyspec modular scanner MK-II", // 13
"ATLAS FANSWEEP15", // 14
"EM3000 Dual head (Raw R&B)", // 15
"EM3000 Special (Hugin)", // 16
"ATLAS FANSWEEP20", // 17
"Benthos C3DMBE", // 18
"Reserved", // 19
"Reson Seabat7K", // 20
"Reson Seabat7KDual", // 21
"ATLAS HYDROSWEEP", // 22
"Elac Hydrostar", // 23
"Elac HydrostarDual", // 24
"Imagenex DeltaT", // 25
"Imagenex DeltaTDual", // 26
"MS1000 profiler", // 27
"BlueView", // 28
"BlueViewDual", // 29
"Odom ES3", // 30

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 8

"R2Sonic old format", // 31


"R2Sonic 2000 series", // 32
"R2Sonic 2000 series dual", // 33
"Reson S7K newRawdFormat", // 34
"Reson S7K newRawdFormatDual" // 35
};
For details on data format please refer to 3.1.

2.2 SideScan
NaviScan supports the following SideScan systems. The type number will be of interest if
you want to decode the SBD files

static char sidescantypes[SDNUMBER][20] = {


"No sidescan", // 0
"SeaBat 81xx", // 1
"ATLAS FANSWEEP SS", // 2
"Hugin XTF", // 3
"EM3000 Compact", // 4
"Seabat Snippet", // 5
"Benthos Sidescan", // 6
"Benthos C3DSS", // 7
"Seabat7k SS", // 8
"Seabat7k Snippet", // 9
"ATLAS HYDROSWEEP SS", // 10
"Elac Hydrostar SS", // 11
"Seabat7k SS Dual", // 12
"Seabat7k Snip Dual", // 13
"R2Sonic old format", // 14
"EdgeTech sidescan", // 15
"R2Sonic 2000 series", // 16
"R2Sonic 2000 dual", // 17
"Reson snippet7028", // 18
"Reson snip7028dual" // 19
};
For data format please refer to 3.2

2.3 Pipetracker
NaviScan supports the following pipetracker systems

Type String Lay-out Note SBD id


None No data stored. 0

Innovatum " Dd Mmm YyyyHh:Mm:SsRh MS Str 1


OhOdC HdisHerrVdisVerr Sktt Accur"

TSS 340 ":TQaaaa bbb ccc 2


ddd111111222222333333444444 XX"
TSS 350 ":SQsLLLL VVVV 3
AAAAsCCCCsSSSs1111s2222s3333s4444s55
55s6666 qq"
Stabbing "zzz.zzz ddd.ddd" Special format designed 4

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 9

Type String Lay-out Note SBD id


for DOF Subsea.

Tinsley Cable tracker "Tag,Date,Time,Lat,Long,Datum,Range,SigStr 5


ength%crlf"

2.4 Position
NaviScan supports the following position data inputs:

Type String Lay-out Note SBD id


FREE Ex. "EEEEEEEE.EE NNNNNNNN.NN Any fixed terminated serial 0
hh:mm:ss.ss AAAA<CR><LF>" string including easting and
northing as decimal meters
(Max. 100 characters). May
also include timestamp and
age information (in ms).

Axyle "hh:mm:ss EEEEEEEE.EE 1


NNNNNNNN.NN<CR><LF>"

Norcom "08 ROV RV ttttt.tt,ENG EEEEEEEE.EEE,NNG Used by RESON for demo 2


NNNNNNNN.NNN <CR><LF>" purpose.

NaviPac “0 nnnnnn hh:mm:ss.ss eeeeeeee.ee nnnnnnnn.nn See NaviScan / NaviPac 3


a.aaa dddddd.dd ddd.dd kkkk.kkk R FFFFFFFF” specification

UDI Special "hh:mm:ss,DD MM YYYY,EEEEEEEE.EE 4


NNNNNNNN.NN,A.AA<CR><LF>"

Stolt Comex "AAAAAAAA hh:mm:ss EEEEEEEE.EE 5


NNNNNNNN.NN GGG.G DDD.D <CR><LF>"

NMEA GGA “$GPGGA,hhmmss.ssss,ttttt.tttt,N,ggggg.gggg,F, Data stored in WGS84 with 6


...<CR><LF>” user defined projection

ØTC special “ggg.gg,rrr.rr,ppp.pp,eeeeeeeeee.ee,nnnnnnnnnn.n 7


n,….

QPS “hh:mm:ss.sss ll.lll eeeeeeee.ee nnnnnnnn.nn” 8

NaviPac ext. "$<objectname>,hh:mm:ss.ss,a.aaa,EEEEEE.EE, 9


NNNNNNN.NN,ZZZZ.ZZ,kkkk.kkkk..."

Applanix POSMV Special UDP/IP message packet 1, 102 or 103 10

2.5 Gyro
NaviScan supports the following heading data inputs:
Type String Lay-out Note SBD id
FREE Ex. "ggg.g<CR><LF>" Any fixed terminated 0
serial string (max. 90
characters) giving the gyro
as decimal degree.

Robertson 4 Bytes binary Gives gyro as ggg.g in 1

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 10

Type String Lay-out Note SBD id


four binary coded digits.

KVH1000 / NMEA "$HCHDM,ggg.g,M*<CheckSum> <CR><LF>" Small low quality compass 2


0183 for demo purpose.

Rov Solo String "...Hggg.g....<CR><LF>" 3

ACZ "gggg<CR><LF>" gyro value in 1/10 degree 4

MDL Trimcube "....Hgggg...<CR><LF>" 5

NMEA “$??HDT,ggg.g…<CR><LF> 6

NMEA(jic) “$HCHDM,ggg.g...<CR><LF>" 7

DataSonics special "*****ggg.g xxx.x yyy.y ...<cr><lf>" 8

SB Brown “abcd<CR><LF>” a - 100 degrees 9


b - 10 degrees
c - 1 degrees
d - 1/6 degrees

ØTC special "ggg.gg,rrr.rr,ppp.pp,eeeeeeeeee.ee,nnnnnnnnnn.nn, 10


zzz.zz,oo.oo<cr><lf>"

NMEA ($HEHDT) “$HEHDT,ggg.g...<CR><LF>" 11

RovTech “HDG:hhhh.h …. <CR><LF> 12

Seapath (EM3000) Binary data. 13

Stn Atlas Gyro BINARY STNATLAS packet (M-13) 14

Seapath (Ascii) “$PSXN,23,roll,pitch,head,heave*csum” 15

NMEA ($HEHDT) “$HEHDT,ggg.g...<CR><LF>" 16

NaviPac calc. “#NBHDT,ggg.gg,T,a.aaa,S<cr><lf>” ONLY FOR TEST 17

FFI Attitude (Hugin) “$PFFIAAV,<time>,<heading>,<course>,<pitch>.” 18

Benthos IMUX200 ***** ggg.g ppp.p rrr.r...... 19

Balder ROV Gyro : a.aa d.dd hhhh rrrrr -ppppp 20

ApxPosmvGyro Binary packet 102 or 103 21

CDL H123.45P+12.345R+123.456 22
M123W1234.56U12.3<cr><lf>

MDL H1234P+1234R+1234<cr><lf> 23

HM Inbound Server Binary Atlas Format 24

Ixsea SCOMEX $PSXN,id,user,ppp,rrr,ggg,pspeed,rspeed,gspeed*hh 25


<cr><lf>

Seapath EM Binary EM format Uses only 0x90 0x90 26

Edgetech Binary 27

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 11

2.6 Motion
NaviScan supports the following attitude data inputs:

Type String Lay-out Note SBD id


None No data stored. 0

FREE Ex. "rrr.r ppp.p hhhh <CR><LF>" Any fixed terminated 1


string (max. 80 characters)
given roll and pitch as
decimal degree and heave
as cm. Signs: Roll :
Positive starboard down,
Pitch : Positive bow up
and heave positive below
datum.

Seatex MRU-5/6 Coded information giving roll, pitch and heave as Set-up to give 2
binary floats. continuously output
"qltRRRRPPPPHHHH" (minimum 10 times a
second) in the given order
(Roll, Pitch, Heave)

TSS 335B ":aaaaaasnhhhhqnrrrrsnpppp <CR><LF>" Preferable set-up 3

MDL Trimcube “..PpppppRrrrr… <CR><LF>” Search for „P‟ for pitch 4


and „R‟ for roll.

Seatex MRU-5 ":xxaaaasmhhhhqmrrrrsmpppp<cr><lf>" 5


Datasonics

TSS DMS-xx ":aaaaaasnhhhhqnrrrrsnpppp <CR><LF>" Preferable set-up 6

ØTC Special "ggg.gg,rrr.rr,ppp.pp,eeeeeeeeee.ee,nnnnnnnnnn.nn, 7


zzz.zz,oo.oo<cr><lf>"

ROV Solo string "Gggg.gP+pp.ppR+rr.rrDddd.ddAaa.aa<cr><lf>" 8

RovTech “PITCH:pppp.p ROLL:rrrr.r… Search for „PITCH:‟ for 9


pitch and „ROLL:‟ for roll.

Seapath RPH "BINARY EM3000 format" 10

STN Atlas RPH BINARY STNATLAS packet (M-13) 11

Seapath RPH (Ascii) “$PSXN,23,roll,pitch,head,heave*csum” 12

Octans RPH “$PHTRH,<pitch>,M/P,<roll>,B/T,<heave>,U/O<c 13


r><lf>”

Dynabase CRU “Binary..” 14

FFI Attitude (Hugin) “$PFFIAAV,<time>,<heading>,<course>,<pitch>.” 15

Benthos IMUX200 ***** ggg.g ppp.p rrr.r ...... 16

Dynabase CRU 2 Binary.. 17

Balder ROV RPH : a.aa d.dd hhhh rrrrr -ppppp 18

Applanix POSMV Binary data – group 102 or 103 Only UDP/IP 19

N/A 20

CDL H123.45P+12.345R+123.456 21

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 12

Type String Lay-out Note SBD id


M123W1234.56U12.3<cr><lf>

MDL H1234P+1234R+1234<cr><lf> 22

Inbound Server Special Atlas binary 23

Ixsea GC2 $PHTRH,<pitch>,M/P,<roll>,B/T,<heave>,U/O<cr 24


><lf>",

Ixsea SCOMEX $PSXN,id,user,ppp,rrr,ggg,pspeed,rspeed,gspeed*hh 25


<cr><lf>

Edgetech Binary LAN I/F 26

2.7 Bathy
NaviScan supports the following bathy/height data inputs:

Type String Lay-out Note SBD id


None No data stored. 0

FREE Ex. "DDD.DD <CR><LF>" Any Fixed terminated string 1


(max. 70 characters) giving
depth as decimal meters.

Ulvertech "ddddd,aaaa<CR><LF>" Altitude is only included for 2


test purpose

Simrad UK 90 "-Dddd.dd" Test have shown that 3


Simrad UK90 could give
problems caused by delay in
output.

Tritech old “dddddaaaa<LF>” 4

Tritech V 3.16 “ddddddaaaaa<LF>” 5

Tritech (delay 1 sec) “dddddaaaa<LF>” With 1 sec. delay 6

SIS3000 Tow “….. ppp.pp” Gives pressure not depth. 7

Tritech V 3.28 “dddddddddaaaaaaa<LF>” 8

Tritech V 3.28 (delay 1 “dddddddddaaaaaaa<LF>” With 1 sec. delay 9


sec)

ØTC Special "ggg.gg,rrr.rr,ppp.pp,eeeeeeeeee.ee,nnnnnnnnnn.n 10


n,zzz.zz,oo.oo<cr><lf>"

Tritech SCU-3 %D0074041401tttttppppppppppp .... 11


ddddddddddhhmmssss<cr><lf>"

Tritech SCU-3 (delay 1 %D0074041401tttttppppppppppp .... With 1 sec. delay 12


sec) ddddddddddhhmmssss<cr><lf>"

Paroscientific, Inc. "*ccccppp.pppp<cr><lf>" 13


Digiquartz

NaviPac Heave "HC+hhh.hhh, Aaa.aaa, GPSHgg.ggg" 14


Correction

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 13

Type String Lay-out Note SBD id


ROV Solo string "Gggg.gP+pp.ppR+rr.rrDddd.ddAaa.aa<cr><lf>" 15

NMEA GGA Gps "$-- 16


height GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M
,x.x,M,...<lf>"

TSS 340 (Altitude) ":SQsLLLL VVVV Altitude output 17


AAAAsCCCCsSSSs1111s2222s3333s4444s5555s
6666 qq"

Benthos PSA 900 "Ddd.dd Ttt.tt Rrr.rr\r\n" Altitude output 18


(Altitude)

Tritech SCU3 (Altitude) "%D0073061410+000500000020000+005000002 Altitude output 19


13564800019...<lf>"

FFI Depth Hugin $PFFILLD,<time>,<latt>,<N/S>,<long>,<E/W>,< 20


depth>,<C/S>...<lf>

Benthos Imux200 ***** ggg.g ppp.p rrr.r ttt.t ddd.d...... 21

Balder ROV Bath : a.aa d.dd hhhh rrrrr -ppppp 22

HoneywellPPTR20 #01CP=p.ppp<cr> 23

PosmvGGA GpsHgt", binary telegram – height from psotion packet LAN only 24

DigiquartzComp, "*ccccppp.pppp<cr><lf>", Pressure in psi 25

DigiqzBarometer "*ccccppp.pppp<cr><lf>", Surface pressure in atm 26

Edgetech Bathy Binary message from EdgeTech SS 27

2.8 Doppler log


NaviScan supports the following DVL data inputs:

Type String Lay-out Note SBD id


None No data stored. 0

EDO 3050 287.5 kHz DVL Data Blocks Low frequency 1

EDO 3050 596.5 kHz DVL Data Blocks Medium frequency 2

EDO 3050 894.5 kHz DVL Data Blocks High frequency 3

Ulvertech DATS " XXXXYYYYZZZZ xxxxyyyyzzzz CLKK 4


CHKS \r\n"

Teledyne RDI DVL-S1 PD6 (Ascii) 5


Teledyne RDI DVL-S1 PD0 (Binary) 6
Teledyne RDI DVL-S1 PD4 (Binary) 7
Teledyne RDI DVL-S1 PD3 (Binary) 8

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 14

2.9 Gps time


NaviScan supports the following time synch data inputs:

Type String Lay-out Note SBD id


None No data stored. 0

Trimble PPS and Time string: 1


"UTC yy.mm.dd hh:mm:ss ab<cr><lf>"

Ashtech PPS and Time string: 2


"$PASHR,PPS,dddddd<cr><lf>"
NMEA ZDA PPS and Time string: 3
"$--ZDA,hhmmss.hh,dd,mm,yyyy,xx<cr><lf>"

Quincy time PPS and Time string: 4


"<stx><cr><lf>#T aaaa bbbbbbb<cr><lf>.."

2.10 Logging control


NaviScan supports the following data inputs for logging control:

Type String Lay-out Note SBD id


None No data stored. 0

Free User defined ASCII 1


NaviPac old "0 nnnnnn hh:mm:ss.ss eeeeeeee.ee Old driver – recommend 2
nnnnnnnn.nn a.aaa dddddd.dd ddd.dd kkkk.kkk that you uses NaviPac
R FFFFFFFF<cr><lf>", instead
0/1 indicates logging on/of
NaviPac "$S,<filename><cr><lf> $E,<unused Also including geodesy 3
characters><cr><lf>", info
HDP4060 remote line "$S,IIIYYDDMMMhhmmss_nnn<cr><lf> 4
control $E<cr><lf>",

NaviPac (Passive) As NaviPac Not controlling – just used 5


for recording of geodesy

2.11 Theoretical profile


NaviScan supports the following data inputs for online presentation of theoretical profiles.
Type String Lay-out Note SBD id
None No data stored. 0

FREE Binary packets – contact EIVA for details 30 points specifying a 1


profile
HAM dredging Binary packets – contact EIVA for details 30 points specifying a 2
profile

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 15

Type String Lay-out Note SBD id


Tideway Binary packets – contact EIVA for details Depth relative to pipe. 3

3. Detailed sonar data format


This chapter describes more detailed information about the data formats delivered by the
supported MBE and SS sonar‟s.
The chapter is intended for users who want to access the SBD files or sonar data directly.

3.1 MBE Formats

Echosounder (MBE and scanning sonars) data logged as received, and is raw data that must
be interpreted according to the manufactures specification; in this document we have inserted
how Eiva interprets some of the possible echosounder (the first interfaced ones). Eiva can
provide our own header files for all interfaced echosounders.

3.1.1 Reson SeaBat 9000

typedef struct Seabat9000InputPacket


{
BYTE start[4]; // 4 bytes 0xFF 0xFF 0x00 0x00
BYTE type[2]; // 2 bytes 0x01 0x00 (0x02 0x00 for RI_THETA)
BYTE timeday[6]; // 6 bytes internal sonar clock
BYTE velocity[2]; // 2 bytes velocity of sound m/s
BYTE latency[2]; // 2 bytes delay in ms
BYTE sample_rate[2]; // 2 bytes sample rate in ms
BYTE beams[60][2]; // 120 bytes upper 14 bits - round trip travel
// time lower 2 bit - quality mark
short checksum; // 2 bytes
// ======================================
} SEABAT9000_PACKET; // 140 bytes

If the system uses SeaBat 9002, it will be implemented as two separate interfaces giving the
above information.

For details on how to interpret the data please refer to relevant Reson documentation

3.1.2 Reson SeaBat 8000


This includes 8000,8101,8111,8125

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 16

Packet type supported:


0x11
0x12
0x13
0x14
0x17
0x18
typedef struct Seabat8000InputPacket
{
BYTE start[4]; // 4 bytes 0xFF 0xFF 0x00 0x00
BYTE type[2]; // 2 bytes 0x11 0x00 (0x12 0x00 for RI_THETA)
BYTE seconds[4]; // 4 bytes Seconds since 00:00:00, 1.1 1970
BYTE millisec[4]; // 4 bytes Milliseconds, LSB = 1ms
BYTE latency[2]; // 2 bytes delay in ms
BYTE velocity[2]; // 2 bytes velocity of sound m/s
BYTE sample_rate[2]; // 2 bytes sample rate in ms
BYTE pulse_width; // 1 bytes transmit pulse width microsec
BYTE ping_rate[2]; // 2 bytes pings per second
BYTE range_set[2]; // 2 bytes range setting for SeaBat (meters)
BYTE power[2]; // 2 bytes power setting for SeaBat
// bits 0-4 power (0 - 8)
// bit 15 0 = manual, 1= auto
BYTE gain[2]; // 2 bytes gain setting for SeaBat
// bits 0-6 gain (0 - 45)
// bit 14 0 = fixed, 1 = tvg
// bit 15 0 = manial, 1 = auto
BYTE projector[2]; // 2 bytes projector setting ???
BYTE tvg_spread; // 1 bytes spreading coef. for tvg * 4
BYTE tvg_absorp; // 1 bytes absorption coef. for tvg
BYTE beam_width; // 1 bytes cross track receive beam width
// for one beam (degrees * 10)
// normally 1.5
BYTE beam_count[2]; // 2 bytes number of beams in packet
BYTE beams[141][2]; // 282 bytes range for beam where n = beam_count
BYTE quality[71]; // 71 bytes packed quality (two 4 bit values)
// bit 0 - brightness test
// bit 1 - colinearity test
// bit 2 - amplitude bottom detect used
// bit 3 - phase bottom detect used
// bits 0-1 used as quality value for
// SeaBat 9000
BYTE checksum[2]; // 2 bytes
// ======================================
} SEABAT8000_PACKET; // 391 bytes

typedef struct Seabat8111InputPacket


{
BYTE start[4]; // 4 bytes 0xFF 0xFF 0x00 0x00
BYTE type[2]; // 2 bytes 0x17 0x00 (0x18 0x00 for RI_THETA)
BYTE latency[2]; // 2 bytes delay in ms
BYTE seconds[4]; // 4 bytes internal sonar clock
BYTE millisec[4]; // 4 bytes internal sonar clock
BYTE ping_number[4]; // sequential ping number from sonar
// startup/reset
BYTE sonar_id[4]; // least significant four bytes of Ethernet

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 17

// address
BYTE sonar_model[2]; // coded model number of sonar
BYTE frequency[2]; // sonar frequency in KHz
BYTE velocity[2]; // 2 bytes velocity of sound m/s
BYTE sample_rate[2]; // 2 bytes sample rate in ms
BYTE ping_rate[2]; // 2 bytes pings per second
BYTE range_set[2]; // 2 bytes range setting for SeaBat (meters)
BYTE power[2]; // 2 bytes power setting for SeaBat
// bits 0-4 power (0 - 8)
// bit 15 0 = manual, 1= auto
BYTE gain[2]; // 2 bytes gain setting for SeaBat
// bits 0-6 gain (0 - 45)
// bit 14 0 = fixed, 1 = tvg
// bit 15 0 = manial, 1 = auto
BYTE pulse_width[2]; // 2 bytes transmit pulse width microsec
BYTE tvg_spread; // 1 bytes spreading coef. for tvg * 4
BYTE tvg_absorp; // 1 bytes absorption coef. for tvg
BYTE projector; // 1 bytes projector setting ???

BYTE beam_width; // 1 bytes along cross track receive beam width


// for one beam (degrees * 10)
// normally 1.5
BYTE beam_width_num[2]; // cross track receive beam width numerator
BYTE beam_width_denom[2];// cross track receive beam width denominator
// beam width degrees = numerator / denominator
BYTE projector_angle[2];// projector pitch steering angle (degrees *
// 100)
BYTE min_range[2]; // sonar filter settings
BYTE max_range[2];
BYTE min_depth[2];
BYTE max_depth[2];
BYTE filters_active; // range/depth filters active
// bit 0 - range filter (0 = off, 1 = active)
// bit 1 - depth filter (0 = off, 1 = active)
BYTE spare[3]; // spare field for future growth
BYTE temperature[2]; // temperature at sonar head (deg C * 10)
BYTE beam_count[2]; // 2 bytes number of beams in packet
BYTE beams[141][2]; // 282 bytes range for beam where n = beam_count
BYTE quality[71]; // 71 bytes packed quality (two 4 bit values)
// bit 0 - brightness test
// bit 1 - colinearity test
// bit 2 - amplitude bottom detect used
// bit 3 - phase bottom detect used
// bits 0-1 used as quality value for
// SeaBat 9000
BYTE checksum[2]; // 2 bytes
// ======================================
} SEABAT8111_PACKET; // 423 bytes
For details on how to interpret the data please refer to relevant Reson documentation

3.1.3 SIS3000
typedef struct SIS3000InputPacket
{
float ping_number;
float packetSize; // size of entire packet [bytes]
float portErrorIndex; //CPU_A1_OverRun_Error;

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 18

float stbdErrorIndex; //CPU_A2_OverRun_Error;


float queue_index;
float latency; // time since ping in seconds
float bottom_tracked;
float period;

float data[1];
float PORT_Angle[SIS3000_UPLOAD_SIZE]; // degrees
float STBD_Angle[SIS3000_UPLOAD_SIZE]; // degrees
float Slant_Range[SIS3000_UPLOAD_SIZE];
float Time_Index[SIS3000_UPLOAD_SIZE]; // in seconds from start
float Sub_Bottom_Data[SIS3000_UPLOAD_SIZE];
} SIS3000_PACKET;

3.1.4 Odom Echoscan

typedef struct OdomInputPacket


{
BYTE start[4]; // 4 bytes 0xFF 0xFF 0x00 0x00
BYTE type[2]; // 2 bytes 0x00 0x01
BYTE timeday[6]; // 6 bytes internal sonar clock
BYTE velocity[2]; // 2 bytes velocity of sound m/s
BYTE latency[2]; // 2 bytes delay in ms
BYTE sample_rate[2]; // 2 bytes sample rate in ms
BYTE beams[30][2]; // 60 bytes upper 14 bits - round trip
// travel time
// lower 2 bit - quality mark
short checksum; // 2 bytes
// ======================================
} ODOM_PACKET; // 80 bytes

3.1.5 SeaKing (and ST1000) Profiler


Reads data from the Tritech SCU-3 system on a serial port. The SCU-3 system must be
configured to output raw profiler data in binary format continuous using the, V4 Remote
setup program.
typedef struct SeaKingInputPacket
{
char id[2]; // 2 bytes : "%D" data reply
char sizeHex[4]; // 4 bytes : "0664"(hex) = 1636 bytes
char slotNumber[2]; // 2 bytes Master : "02" Slave : "03"
char sourceType[2]; // 2 bytes "37" for profiler system
char replyMode; // 1 byte 0=ASCIIText, 1=Hex,
// 2=Binary, 3=CSV (Comma Separated ASCII)
char rawData; // 1 byte 0=Processed data, 1=Raw data
short horizontalX; // 2 bytes Horizontal X position in mm
short verticalY; // 2 bytes Vertical Y position in m
short longitudinalZ; // 2 bytes Longitudinal Z position in mm
short rotationalR; // 2 bytes Rotational R in 1/10 gradians
short echoRange; // 2 bytes EchoRanging Time correction in
// microsec.
ushort nPoints; // 2 bytes Number of Profile Samples (max. 800)
ushort startAngle; // 2 bytes Scan start angle in 1/16 gradians
char stepSize; // 1 byte Step size and direction during scan
// 008=Ult, 016=Hi, 024=Med, 032=Lo
ushort soundVel; // 2 bytes Velocity of sound in dm/sec

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 19

BYTE hundSec; // 1 byte Time: 1/100 sec.


BYTE seconds; // 1 byte Time: seconds
BYTE minutes; // 1 byte Time: minutes
BYTE hours; // 1 byte Time: hours
unsigned short duration; // 2 bytes Duration of scan in ms
BYTE oprMode; // 1 byte Profile Head operation mode
// Bit 0 = 0 = Orientation Upright
// Bit 0 = 1 = Orientation Reversed
// Bit 1 = 0 Data in units of microsec.
// Bit 2 to 7 Alway 0
ushort point[800]; // 1600 bytes RAW DATA: Acoustic path lenght in
// microsec.
// ======================================
} SEAKING_PACKET;
Data from the ST1000 profiler has the same record structure with the following
modifications:
startAngle and stepSize are in gradians.
duration is in units of 10.6667 ms.
The units of the Acoustic path lenght are determined by oprMode.
microsec. oprMode(Bit1=0)
1.953125 microsec. oprMode(Bit1=1 AND Bit2=0)
20.833 microsec. oprMode(Bit1=1 AND Bit2=1)

3.1.6 EM3000 Raw range and beam


This support systems that have the new firmware that is capable of sending one of these
packet types:
Depth packet (0x44)
Raw range and beam angle (0x46) older
Raw range and beam angle (0x46) older

/**This datagram replaces the previous Raw range and beam angle
f datagram for the new multibeam models (starting with EM
710). All receiver beams are included, check detection info and
real time cleaning for beam status (see note 3 and 4).*/

typedef struct EM3000RawRange4E


{
USHORT soundvel; //Sound speed at transducer in 0.1 m/s 2U 14000 to
// 16000
USHORT txsectors; //Number of transmit sectors = Ntx 2U 1 -- --
USHORT numbeams; //Number of receiver beams in datagram = Nrx 2U
USHORT detections;//Number of valid detections 2U 1 -- --
float samplefrq; //Sampling frequency in Hz 4F -- --
ULONG Dscale; //T(uncorrected) = T(datagram) - D(corr)/D(scale)
char payload; //eiva - EM3000RAWSECTOR4E
}EM3000_RAWRANGE4E;

typedef struct tag_EM3000RawSector4E


{
short txtiltangle; //Tilt angle re TX array in 0.01_ 2S --2900
// to 2900 --
USHORT focusrange; //Focus range in 0.1 m (0 = No focusing

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 20

// applied) 2U 0 to 65534 --
float signallen; //Signal length in s 4F -- --
float txdelay; //Sector transmit delay re first TX pulse, in
//s 4F -- --
float centrefrq; //Centre frequency in Hz 4F -- --
USHORT absorpcoef; //Mean absorption coeff. in 0.01 dB/km 2U --
BYTE waveformid; //Signal waveform identifier 1U 0 to 99 1
BYTE txsector; //Transmit sector number 1U 0 -- --
float signalbw; //Signal bandwidth in Hz 4F -- --
} EM3000RAWSECTOR4E;

//followed by EM3000RAWBEAM4E

typedef struct tag_EM3000RawBeam4E


{
short angle; // Beam pointing anlge re RX array in 0.01_
// 2S --11000 to 11000 --
BYTE txsector; // Transmit sector number 1U 0 -- --
BYTE detectinfo; // Detection info 1U -- 3
USHORT detectwin; // Detection window length in samples 2U
BYTE quality; // Quality factor 1U 0 -- 254 2
char Dcorr; // T(uncorrected) = T(datagram) –
// D(corr)/D(scale)
float traveltime; // Two way travel time in s 4F -- --
short backscat; // Reflectivity (BS) in 0.1 dB resolution 2S
char cleaninfo; // Real time cleaning info 1S -- 4
BYTE spare2; // Spare 1U -- --
} EM3000RAWBEAM4E;

//new image dtgm em710++


typedef struct EM3000Image59
{
float SamplingFrq; // Sampling frequency in Hz 4F
USHORT RangeNI; // Range to normal incidence used to correct
// samples amplitudes, in no. of samples 2U 1
// to 65534 --
short Normal; // Normal incidence BS in 0.1 dB (BSN) 2S --
short ObliqueBS; // Oblique BS in 0.1 dB (BSO) 2S -- --
USHORT TxWidth; // Tx beamwidth along in 0.1_ 2U 1 to 300 --
USHORT TVGLCA; // TVG law crossover angle in 0.1_ 2U 20 to
// 300 --
USHORT NumBeams; // Number of beams in datagram (N) 2U 1 --
char payload; // start of loop for beams EM3000IMAGEBEAM59;
} EM3000_IMAGE59;

typedef struct tag_EM3000ImageBeam59


{
char SortDir; // Sorting direction 1S --1 or 1 1
BYTE Detectinfo; // Detection info 1U -- 2
USHORT Samples; // Number of samples per beam = Ns 2U 1 -- --
USHORT Centre; // Centre sample number 2U 1 -- 3
} EM3000IMAGEBEAM59;

//unsigned short Sample amplitudes in 0.1 dB (Example: -30.2 dB = FED2h =


65234d) 2S

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 21

typedef struct EM3000PacketData


{
EM3000_INFO info;
union
{
EM3000_DEPTH44 dtg44;
EM3000_DEPTH58 dtg58;
EM3000_RAWRANGE46 dtg46;
EM3000_RAWRANGE66 dtg66;
EM3000_RAWRANGE4E dtg4E;
EM3000_IMAGE53 dtg53;
EM3000_IMAGE59 dtg59;
};
} EM3000_DATA;

typedef struct EM3000Datagram


{
EM3000_HEAD head;
EM3000_DATA data;
} EM3000_DATAGRAM;

3.1.7 SM2000
The packet shown below is the one supported. It is not supported to change the number of
beams to anything else but maximum.
TYPEDEF STRUCT SM2000INPUTPACKET
{
BYTE START[4]; // 4 BYTES 0XFF 0XFF 0X00 0X00
BYTE TYPE[1]; // 1 BYTES 0X10
BYTE SUBTYPE; // 1 BYTES 0X01 --> (MPB OR MPH TYPE)
// 0X02 --> (MAB OR MAH TYPE)
BYTE TIMEDAY[4]; // 4 BYTES TIME AND YEAR
BYTE PINGNR[4]; // 4 BYTES PINGNUMBER (LSB FIRST)
BYTE MONTH; // 1 BYTE CURRENT MONTH (1..12)
BYTE PINGTIME[4]; // 4 BYTES PINGTIME (LSB FIRST, 50 US UNITS)
BYTE DAY; // 1 BYTE CURRENT DAY (1..31)
BYTE VELOCITY[2]; // 2 BYTES VELOCITY OF SOUND M/S (LSB FIRST)
BYTE LATENCY[2]; // 2 BYTES DELAY IN MS (LSB FIRST)
BYTE SAMPLE_RATE[2]; // 2 BYTES SAMPLE RATE IN HERTZ
BYTE SCANWIDTH; // 1 BYTE TRANSDUCER SCAN WIDTH (120,180) DEG
BYTE TOTALNUMOFBEAMS; // 1 BYTE TOTAL NUMBER OF BEAMS, NORMALLY 128
BYTE STARTBEAMNR; // 1 BYTE START BEAM NUMBER. (0..127)
BYTE NUMOFBEAMSUSED; // 1 BYTE NUMBER OF BEAMS USED (1..128) NB
BYTE NUMOFRETURNS; // 1 BYTE NUMBER OF RETURNS (1..4) NR
BYTE ATBEAMWIDTH; // 1 BYTE ALONG TRACK BEAM WIDTH I 1/10 DEGREE UNITS
BYTE SYSTEMRANGE[4]; // 4 BYTES SYSTEM RANGE IN CENTIMETERS
BYTE BEAMS[2*128*4]; // 1024 BYTES MAX
// AMOUNT = 2 * NR * NB
} SM2000_PACKET; // 36 BYTES HEADER + UPTO 1024 BYTES DATA

3.1.8 Hyspec modular scanner MK-II


For description of packet, please refer to Hyspec manuals.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 22

3.1.9 STN Atlas Fansweep15


The input from this sensor is very complex. It consists of multiple packet coming in on
multiple UDP ports. Range and bearing is as well divided into different packet types. There
can only be a specific number of ranges and beams in their specific packet, so eg. one set of
ranges may take more packets.
Below is a list of packet id used.

Angle (Bearing) packet:


M-16 ( packet 1)
M-16 ( packet 2)
...

Range packet:
M-10 ( setup packet)
M-11( packet 1)
M-11( packet 2)
...

3.1.10 STN Atlas Fansweep20


Same packets as Fansweep15, but dual head .
Information of which head a certain beam in the M11 packet comes from, can be read from
the UCHAR_200 lstatus[<beamindex>] bit 0. Where value = 0 means Bb and value=1 means
Stb head.

3.1.11 STN Atlas TPE telegram


M-033 TPE Results Telegram (Total Propagated Error) for online fs15 and fs20 is sent once a
second and contains the result for up to 20 beams out of the complete set of beams. The
beams can be identified by their beam number.

struct TPE_Results_BLK {
Block_No block_no;
long block_cnt;
Dtime data_time;
long nofResults;
long beamno[20];
double dX[20];
double dY[20];
double dZ[20];
double dpos[20];
double fDsize[20];
double dTPEMax;
double fDsizeMin;
double pTPEMax;
};

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 23

struct TPE_Results_IP {
Info_Block infob;
TPE_Results_BLK tperesb;
};

The TPE telegram is sent from another IP address in the sidescan processor than M-10 , M-11
etc . which means that the user will have to enter this different IP address, together with the
port for the TPE telegram in the STN Atlas.ini file. See the setup manual.

3.1.12 Seabat 7k Telegrams


The following seabat 7 k packets are at the moment recognized and used by Naviscan:
S7400RECORD TIMEREC;
S7500RECORD CTRLREC;
S7000RECORD SETTINGREC;
S7004RECORD ANGLEREC;
S7006RECORD RANGEREC;
S7027RECORD RAWDETECTREC;
S7007RECORD BACKSCATREC;
S7008RECORD BEAMDATAREC;

NaviScan definitions for the structs, (correstonds direct to reson definitions):

TYPEDEF STRUCT TAG_S7KTIME


{
UNSIGNED SHORT YEAR; // U16
UNSIGNED SHORT DAY; // U16
FLOAT SECONDS; // F32
UNSIGNED CHAR HOURS; // U8 0 - 23
UNSIGNED CHAR MINUTES; // U8 0 - 59
}S7KTIME;

TYPEDEF STRUCT TAG_S7KNETWORKFRAME


{
UNSIGNED SHORT VERSION; // U16
UNSIGNED SHORT OFFSET; // U16
UNSIGNED LONG TOTALPACKETS; // U32
UNSIGNED SHORT TOTALRECORDS; // U16
UNSIGNED SHORT TRANSMISSIONID; // U16
UNSIGNED LONG PACKETSIZE; // U32
UNSIGNED LONG TOTALSIZE; // U32
UNSIGNED LONG SEQUENCENUMBER; // U32
UNSIGNED LONG DESTDEVICEID; // U32
UNSIGNED SHORT DESTENUMERATOR; // U16
UNSIGNED SHORT SRCENUMERATOR; // U16
UNSIGNED LONG SRCDEVICE; // U32

}S7KNETWORKFRAME;

TYPEDEF STRUCT TAG_S7KDATARECORDFRAME


{

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 24

UNSIGNED SHORT PROTOCOLVERSION; // U16


UNSIGNED SHORT OFFSET; // U16
UNSIGNED LONG SYNCPATTERN; // U32
UNSIGNED LONG SIZE; // U32
UNSIGNED LONG OPTDATAOFFSET; // U32
UNSIGNED LONG OPTDATAID; // U32
S7KTIME S7KTIME; // U8*10
UNSIGNED SHORT RECVERSION; // U16
UNSIGNED LONG RECTYPEID; // U32
UNSIGNED LONG DEVICEID; // U32
UNSIGNED SHORT RESERVED1; // U16
UNSIGNED SHORT SYSTEMENUM; // U16
UNSIGNED LONG RECORDCOUNT; // U32
UNSIGNED SHORT FLAGS; // U16
UNSIGNED SHORT RESERVED2; // U16
UNSIGNED LONG RESERVED3; // U32
UNSIGNED LONG TOTALFRAGMENTS; // U32
UNSIGNED LONG FRAGMENTNUMBER; // U32

}S7KDATARECORDFRAME;

TYPEDEF STRUCT TAG_S7400RECORD


{
CHAR LEAPSECOND; // I8
UNSIGNED CHAR PULSEFLAG; // U8
UNSIGNED SHORT PORTID; // U16
UNSIGNED LONG RESERVED1; // U32
UNSIGNED __INT64 RESERVED2; // U64

}S7400RECORD;

TYPEDEF STRUCT TAG_S7500RECORD


{
UNSIGNED LONG COMMAND; // U32
UNSIGNED LONG TICKET; // U32
UNSIGNED CHAR UNIQUEID[16]; // U128
UNSIGNED CHAR PAYLOAD[1]; // START OF DYNAMAIC DATA

}S7500RECORD;

TYPEDEF STRUCT TAG_S7000RECORD


{
UNSIGNED __INT64 SONARID; // U64ULONGLONG
UNSIGNED LONG PINGNUMBER; // U32 SEQUENTIAL NUMBER.
UNSIGNED SHORT MULTIPINGSEQ; // U16 FLAG TO INDICATE MULTI-PING
// SEQUENCE.
FLOAT FREQUENCY; // F32 CENTER TRANSMIT FREQUENCY IN HERTZ.
FLOAT SAMPLERATE; // F32 SAMPLE RATE IN HERTZ
FLOAT RXBANDWIDTH; // F32 IN HERTZ.
FLOAT TXPULSEWIDTH; // F32 SECONDS OF PULSE.
UNSIGNED LONG TXPULSETYPEID; // U32 0 – CW 1 – LINEAR CHIRP
UNSIGNED LONG TXPULSEENVID; // U32 0 – TAPERED RECTANGULAR 1 – TUKEY
FLOAT TXPULSEENVPAR; // F32 SOME ENVELOPES DON’T USE THIS PARAMETER.
UNSIGNED LONG TXPULSERESERV; // U32 ADDITIONAL PULSE INFORMATION.
FLOAT MAXPINGRATE; // F32 MAXIMUM PING RATE IN PINGS PER SECOND.
FLOAT PINGPERIOD; // F32 SECONDS SINCE LAST PING.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 25

FLOAT RANGESEL; // F32 RANGE SELECTION IN METERS.


FLOAT POWERSEL; // F32 POWER SELECTION IN DB RE 1µPA
FLOAT GAINSEL; // F32 GAIN SELECTION IN DB.
UNSIGNED LONG CTRLFLAGS; // U32 BITFIELD:
UNSIGNED LONG PROJMAGICNUM; // U32 PROJECTOR SELECTION.
FLOAT PROJSTEERVER; // F32 IN RADIANS.
FLOAT PROJSTEERHOR; // F32 IN RADIANS.
FLOAT PROJWIDTHVER; // F32 IN RADIANS.
FLOAT PROJWIDTHHOR; // F32 IN RADIANS.
FLOAT PROJFOCALPT; // F32 IN METERS.
UNSIGNED LONG PROJWINDOW; // U32 0 – RECTANGULAR 1 – CHEBYCHEV
FLOAT PROJWINDOWPAR; // F32 N/A
UNSIGNED LONG TXFLAGS; // U32 BITFIELD
UNSIGNED LONG HYDROPMAGICNUM; // U32 HYDROPHONE SELECTION.
UNSIGNED LONG RXBEAMWINDOW; // U32 0 – CHEBYCHEV 1 – KAISER
FLOAT RXBEAMWINDOWPAR; // F32 N/A
UNSIGNED LONG RXFLAGS; // U32 BITFIELD:
FLOAT RXBEAMWIDTH; // F32 ANGLE IN RADIANS
FLOAT BOTDETMINRANGE; // F32 (IF RANGE FILTER ACTIVE).
FLOAT BOTDETMAXRANGE; // F32 (IF RANGE FILTER ACTIVE).
FLOAT BOTDETMINDEPTH; // F32 (IF RANGE FILTER ACTIVE).
FLOAT BOTDETMAXDEPTH; // F32 (IF RANGE FILTER ACTIVE).
FLOAT ABSORPTION; // F32 ABSORPTION IN DB/KM.
FLOAT SOUNDVELOCITY; // F32 SOUND VELOCITY IN M/S
FLOAT SPREADING; // F32 SPREADING LOSS IN DB.
UNSIGNED SHORT RESERVED; // U16 RESERVED FOR FUTURE DESCRIPTION.
}S7000RECORD;

TYPEDEF STRUCT TAG_S7004RECORD


{
UNSIGNED __INT64 SONARID; // U64ULONGLONG
UNSIGNED LONG NUMBEAMS; // U32
UNSIGNED CHAR PAYLOAD[1]; // START OF DYNAMAIC DATA
}S7004RECORD;

TYPEDEF STRUCT TAG_S7006RECORD


{
UNSIGNED __INT64 SONARID; // U64ULONGLONG
UNSIGNED LONG PINGNUMBER; // U32
UNSIGNED SHORT MULTIPINGSEQ; // U16
UNSIGNED LONG NUMBEAMS; // U32
UNSIGNED CHAR LAYERCOMFLAG; // U8
UNSIGNED CHAR SOUNDVELFLAG; // U8
FLOAT SOUNDVEL; // F32
UNSIGNED CHAR PAYLOAD[1]; // START OF DYNAMAIC DATA
}S7006RECORD;

TYPEDEF STRUCT TAG_S7007RECORD


{
UNSIGNED __INT64 SONARID; // U64ULONGLONG
UNSIGNED LONG PINGNUMBER; // U32
UNSIGNED SHORT MULTIPINGSEQ; // U16
FLOAT BEAMPOSITION; // F32
UNSIGNED LONG CONTROLFLAG; // U32
UNSIGNED LONG SAMPLES; // U32
FLOAT PORTYBEAMWIDTH; // F32

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 26

FLOAT PORTZBEAMWIDTH; // F32


FLOAT STBDYBEAMWIDTH; // F32
FLOAT STBDZBEAMWIDTH; // F32
FLOAT PORTYBEAMSTEER; // F32
FLOAT PORTZBEAMSTEER; // F32
FLOAT STBDYBEAMSTEER; // F32
FLOAT STBDZBEAMSTEER; // F32
UNSIGNED SHORT NUMBEAMSPRSIDE; // U16
UNSIGNED SHORT CURRENTBEAM; // U16
UNSIGNED CHAR BYTESPRSAMPLE; // U8
UNSIGNED CHAR DATATYPE; // U8
UNSIGNED CHAR PAYLOAD[1]; // START OF DYNAMAIC DATA
}S7007RECORD;

TYPEDEF STRUCT TAG_S7008RECORD


{
UNSIGNED __INT64 SONARID; // U64ULONGLONG
UNSIGNED LONG PINGNUMBER; // U32
UNSIGNED SHORT MULTIPINGSEQ; // U16
UNSIGNED SHORT NUMBEAMS; // U16
UNSIGNED SHORT RESERVED; // U16
UNSIGNED LONG SAMPLES; // U32
UNSIGNED CHAR SUBSETFLAG; // U8 NOT ALL BEAMS AND SAMPLES IN PING.
UNSIGNED CHAR ROWCOLFLAG; // U8.
UNSIGNED SHORT HEADERFLAG; // U16
UNSIGNED LONG SAMPLETYPES; // U32
UNSIGNED CHAR PAYLOAD[1]; // START OF DYNAMAIC DATA

}S7008RECORD;

TYPEDEF STRUCT TAG_S7008BI


{
UNSIGNED SHORT BEAMNO; //U16
UNSIGNED LONG BEGINSAMPLE; //U32
UNSIGNED LONG ENDSAMPLE; //U32

}S7008BI;

TYPEDEF STRUCT TAG_S7027RECORD


{
UNSIGNED __INT64 SONAR_ID; // U64 SONAR SERIAL NUMBER.
UNSIGNED LONG PINGNUMBER; // U32 SEQUENTIAL NUMBER.
UNSIGNED SHORT MULTIPINGSEQ; // U16 FLAG TO INDICATE MULTI-PING SEQUENCE.
// ALWAYS ZERO IF NOT IN MULTI-PING MODE;
// OTHERWISE THIS REPRESENTS THE SEQUENCE NUMBER
// OF THE PING IN THE MULTI-PING
// SEQUENCE.NUM_POINTS U32;// NUMBER OF
// DETECTION POINTS.
UNSIGNED LONG NUMBEAMS; // U32 NUMBER OF S7027BEAM FOLLOWING
UNSIGNED LONG DATAFIELD_SIZE; // U32 SIZE OF DETECTION INFORMATION BLOCK IN
// BYTES
BYTE DETECT_ALGORITHM; // U8 0 = G1_SIMPLE 1 = G1_BLENDFILT 2 = G2
// 3-255: RESERVED FOR FUTURE USE
UNSIGNED LONG FLAGS; // U32 BIT FIELD: RESERVED FOR FUTURE USE
FLOAT SAMPLING_RATE; // F32 SONAR’S SAMPLING FREQUENCY IN HZ
FLOAT TX_ANGLE; // F32 APPLIED TRANSMITTER STEERING ANGLE, IN
// RADIANS.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 27

UNSIGNED LONG RESERVED[16]; // U32*16 RESERVED FOR FUTURE USE


UNSIGNED CHAR PAYLOAD[1]; // START OF DYNAMIC DATA
}S7027RECORD;

TYPEDEF STRUCT TAG_S7027BEAM


{
UNSIGNED SHORT BEAM_NUMBER; // U16 BEAM NUMBER THE DETECTION IS TAKEN FROM
FLOAT DETECTION_POINT; // F32 NON CORRECTED FRACTIONAL SAMPLE NUMBER
// WITH THE REFERENCE TO THE RECEIVER ACOUST CEN.
FLOAT RX_ANGLE; // F32 BEAM STEERING ANGLE RADIAN WITH REFERENCE
// TO RECEIVER•FS ACOUSTIC CENTER IN THE SONAR
UNSIGNED LONG FLAGS; // U32 BIT FIELDS:
UNSIGNED LONG QUALITY; // U32 BIT FIELDS:
FLOAT UNCERTAINTY; // F32 DETECTION UNCERTAINTY REPRESENTED AS AN
// ERROR NORMALIZED TO THE DETECTION
}S7027BEAM;

TYPEDEF STRUCT TAG_S7KDATARECORD


{
S7KDATARECORDFRAME FRAME;

UNION
{
S7400RECORD TIMEREC;
S7500RECORD CTRLREC;
S7000RECORD SETTINGREC;
S7001RECORD CONFIGREC;
S7004RECORD ANGLEREC;
S7006RECORD RANGEREC;
S7007RECORD BACKSCATREC;
S7008RECORD BEAMDATAREC;
S7027RECORD RAWDETECTREC;
S7028RECORD SNIPPETREC;
}DATA;

}S7KDATARECORD;

TYPEDEF STRUCT TAG_S7KNETWORKPACK


{
S7KNETWORKFRAME NF;
S7KDATARECORD DR;

}S7KNETWORKPACK;

3.1.13 Elac Hydrostar


NaviScan utilises the L3# HydroStar format via the XSE network format.

3.1.14 Imagenex DeltaT

typedef struct tag_IMG83S //single head (S)

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 28

{
char
hinfo[3]; //3 "83P"
BYTE
version; //1 3 = v1.03
WORD
numbytes; //2 total num of bytes
char
reserved1[2];//2
char
date[12]; //12 telegram time "DD-MMM-YYYY"
char
time[9]; //9 telegram time "HH:MM:SS"
char
hsec[4]; //4 telegram time ".hh"
char
lat[14]; //4 _dd.mm.xxxxx_N
char
lon[14]; //4 _dd.mm.xxxxx_E
BYTE
shipspeed; //1 Speed = (Byte 61)/10 in knots
WORD
shipheading; //2 Heading * 10 (in degrees)
WORD
ompitch; //2 (Pitch Angle*10) + 900 (in degrees)
WORD
omroll; //2 (Roll Angle*10) + 900 (in degrees)
WORD
omheading; //2 (Roll Angle*10) + 900 (in degrees)
WORD
numbeams; //2 num beams
WORD
samplesprbeam;//2 samples per beam
WORD
sectorsize; //2 sector size in degrees
WORD
startangle; //2 [Start Angle (in degrees) + 180] * 100 (beam 0)
BYTE
angleincr; //1 Angle spacing per beam = (Byte 78)/100 in deg
WORD
acoufrq; //2 Acoustic Frequency (in kHz)
WORD
acourange; //2 Acoustic Range (in meters)
WORD
soundvel; //2 Sound Velocity (in meters/second) * 10
WORD
rangeres; //2 Range Resolution (in millimeters)
WORD
reserved2; //2 Reserved always 0
WORD
tiltmount; //2 Profile Tilt Angle (in degrees) * 10 + 1800
// (mounting offset)
WORD reptrate; //2 Repetition Rate (in milliseconds)
DWORD pingno; //4 ping number
char reserved3[3];//3 Reserved always 0
float xoffset; //4 Sonar X-Offset (in meters)
float yoffset; //4 Sonar Y-Offset (in meters)
float zoffset; //4 Sonar Z-Offset (in meters)
// from here only valid for .83P file
char msec[5]; //5 Milliseconds system time, null terminated
// string (5 bytes) ".mmm"
BYTE hasintens; //1 Intensity Bytes Included 0 / 1
WORD pinglatency; //2 Ping Latency (in units of 100 microseconds)
WORD datalatency; //2 Data Latency (in units of 100 microseconds),
//Time Since Ping = Data Latency - Ping Latency
char reserved[134];//134 Reserved - always 0
}IMG83S;
//WORD range[n]; hereafter (to be swapped before usage

typedef struct tag_IMG83MD // in big endian non intel format (must be


byte swapped before usage)
{
char hinfo[4]; //4 "83M"
BYTE version; //1
DWORD headersize; //4
DWORD packetsize; //4
BYTE numheads; //1
char date[12]; //12 telegram time "DD-MMM-YYYY" system date
char time[9]; //9 telegram time "HH:MM:SS" system time
char msec[4]; //4 telegram time "mmm"millisec system time
char lat[15]; //15 lattitude _dd.mm.xxxxx_N null term _=space
char lon[15]; //15 longitude _dd.mm.xxxxx_E null term

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 29

BYTE shipspeed; //1 Speed = (Byte 61)/10 in knots


WORD shipheading; //2 Heading * 10 (in degrees)
WORD ompitch; //2 (Pitch Angle*10) + 900 (in degrees)
WORD omroll; //2 (Roll Angle*10) + 900 (in degrees)
WORD omheading; //2 (Roll Angle*10) + 900 (in degrees)
WORD soundvel; //2
char reserved[176]; //176 Reserved
}IMG83MD;

//256 to xxx Sonar Header #X and Profile Ranges for current ping (2 range
bytes / beam) xxx = 256 + (2 * number_of_beams) – 1

typedef struct tag_IMG837D


{
char hinfo[4]; //"837" + null term
char version[8]; //8
WORD totalbytes; //2 for this head
char sonarname[32];
BYTE sonarnumber;
WORD numbeams;
WORD samplesprbeam;
WORD sectorsize;
WORD startangle; //2 (startangle-180) * 100
BYTE anglespacing;//1 /100 in degrees
WORD range;
WORD frequency;
WORD resolution; //2 in millimeters
WORD reserved1;
WORD tiltangle; //2 mounting offset angle*10 + 1800
long xoffset; //4 x offset in cm
long yoffset; //4 x offset in cm
long zoffset; //4 x offset in cm
WORD repetitionrate;
DWORD pingnumber;
char date[12]; //12 iterrogation time, "DD-MMM-YYYY" system date
char time[9]; //9 iterrogation time, "HH:MM:SS" system time
char msec[4]; //4 iterrogation time, "mmm"millisec system time
WORD pinglatency; //2 from interrogation to ping,units of 100 usec
WORD datalatency; //2 from interrogation to out, units of 100 usec,
char reserved[143]; //reserved, rest up to 255
}IMG837D;

3.1.15 MS1000 profiler


ASCII telegram similar to

DEV 3 77995132 31 7 2008 MS1000


OFS 3 56478322 6 4 2006 0.000000 0.000000 0.000000 0.000000 -175.000000 0.000000 1 0
PRO 3 56478432 6 4 2006 1272 4 1 1 0 0 23403 0 0 0
PPR 3 56478432 6 4 2006 1 1 0 0 0.0000 0.0000 0.0000 0
PRO 3 56478532 6 4 2006 1276 4 1 1 0 0 23403 0 0 0
PPR 3 56478532 6 4 2006 1 1 0 0 0.0000 0.0000 0.0000 0
PRO 3 56478642 6 4 2006 1280 4 1 1 0 0 23403 0 54 0
etc

The PRO message should be:

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 30

Raw Profile Data | PRO | Profile data in range and bearing |


| | | with respect to the sonar head. |
| | | Start angle in 0.225 º |
| | | Step size in 0.225 º |
| | | Number of acoustic pings |
| | | Number of profile points per ping |
| | | Start time offset in milliseconds |
| | | Stop time offset in milliseconds |
| | | Sampling rate in Hertz |
| | | Samples to skip |
| | | Profile points in each ping |
| | | sequentially arranged for all |
| | | pings |
| | | Transducer number, used for dual |
| | | transducer heads.

3.1.16 BlueView
Same as Reson 7K

3.1.17 Odom ES
Same as Imagenex DeltaT

3.1.18 R2Sonic 2000


#define BATHYPACNAME "BTH0"
#define SNIPPETPACNAME "SNI0"

// *** BEGIN PACKET: DATA REQUEST FORMAT 0 ***

typedef struct _R2SDATAREQUESTPAC


{
u32 PacketName; // 'DRQ0'
u32 PacketSize; // [bytes] size of this entire packet
u32 DataStreamID; // requester-defined value to be returned
//in data packets
u32 RequestedDataType; // example, 'BTH0' requests bathy data format
u32 DestinationIP; // sonar will send the data to this IP adr
u16 DestinationPort; // sonar will send the data to this port no
u16 reserved; // reserved for future use, must be set to 0
u32 SubnetMask; // destinations outside this subnet will use
// gateway
u32 GatewayIP; // routing gateway
} R2SDATAREQUESTPAC;
// *** END PACKET: DATA REQUEST FORMAT 0 ***

// *** BEGIN PACKET: BATHY FORMAT 0 ***


typedef struct _R2SBATHYHEAD
{
u32 PacketName; // 'BTH0'
u32 PacketSize; // [bytes] size of this entire packet
u32 DataStreamID; // requester-defined value
} R2SBATHYHEAD;

// section H0: header

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 31

typedef struct _R2SBATHYHEADERSECTION


{
u16 H0_SectionName; // 'H0'
u16 H0_SectionSize; // [bytes] size of this entire section
u8 H0_ModelNumber[12]; // example "2024", unused chars are nulls
u8 H0_SerialNumber[12]; // example "100017", unused chars are nulls
u32 H0_TimeSeconds; // [seconds] ping time relative to 0000
// hours 1-Jan-1970, integer part
u32 H0_TimeNanoseconds; // [nanoseconds] ping time relative to 0000
// hours 1-Jan-1970, fraction part
u32 H0_PingNumber; // pings since power-up or reboot
f32 H0_PingPeriod; // [seconds] time between most recent two
// pings
f32 H0_SoundSpeed; // [meters per second]
f32 H0_Frequency; // [hertz] sonar center frequency
f32 H0_TxPower; // [dB re 1 uPa at 1 meter]
f32 H0_TxPulseWidth; // [seconds]
f32 H0_TxBeamwidthVert; // [radians]
f32 H0_TxBeamwidthHoriz; // [radians]
f32 H0_TxSteeringVert; // [radians]
f32 H0_TxSteeringHoriz; // [radians]
u32 H0_TxMiscInfo; // to be determined
f32 H0_RxBandwidth; // [hertz]
f32 H0_RxSampleRate; // [hertz] sample rate of data acquisition
// and signal processing
f32 H0_RxRange; // [seconds two-way]
f32 H0_RxGain; // [dB re 1 uPa]
f32 H0_RxSpreading; // [dB (times log range in meters)]
f32 H0_RxAbsorption; // [dB per kilometer]
f32 H0_RxMountTilt; // [radians]
u32 H0_RxMiscInfo; // to be determined
u16 H0_reserved; // reserved for future use
u16 H0_Points; // number of bathy points
} R2SBATHYHEADERSECTION;

// section R0: 16-bit bathy point ranges


typedef struct _R2SRANGESECTION
{
u16 R0_SectionName; // 'R0'
u16 R0_SectionSize; // [bytes] size of this entire section
f32 R0_ScalingFactor;
u16 R0_Range[1]; // [H0_Points] // [seconds two-way] =
// R0_Range * R0_ScalingFactor
// u16 R0_unused[H0_Points & 1]; // ensure 32-bit section size
} R2SRANGESECTION;

// section A0: bathy point angles, equally-spaced (present only during


// "equi-angle" spacing mode)
typedef struct _R2SEQUIANGLESECTION
{
u16 A0_SectionName; // 'A0'
u16 A0_SectionSize; // [bytes] size of this entire section
f32 A0_AngleFirst; // [radians] angle of first (port side)
// bathy point, relative to array
// centerline, AngleFirst < AngleLast
f32 A0_AngleLast; // [radians] angle of last (starboard side)
// bathy point

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 32

f32 A0_MoreInfo[6]; // several to-be-determined values such as


// attitude info to assist the GUI display
} R2SEQUIANGLESECTION;

// section A2: 16-bit bathy point angles, arbitrarily-spaced (present only


//during "equi-distant" spacing mode)
typedef struct _R2SEQUIDISTANGLESECTION
{
u16 A2_SectionName; // 'A2'
u16 A2_SectionSize; // [bytes] size of this entire section
f32 A2_AngleFirst; // [radians] angle of first (port side)
// bathy point, relative to array
// centerline, AngleFirst < AngleLast
f32 A2_ScalingFactor;
f32 A2_MoreInfo[6]; // several to-be-determined values such as
// attitude info to assist the GUI display
u16 A2_AngleStep[1]; // [H0_Points] // [radians] angle[n] =
// (32-bit sum of A2_AngleStep[0] through
// A2_AngleStep[n]) * A2_ScalingFactor
// u16 A2_unused[H0_Points & 1]; // ensure 32-bit section size
} R2SEQUIDISTANGLESECTION;

// section I1: 16-bit bathy intensity (present only if enabled)


typedef struct _R2SINTENSSECTION
{
u16 I1_SectionName; // 'I1'
u16 I1_SectionSize; // [bytes] size of this entire section
f32 I1_ScalingFactor;
u16 I1_Intensity[1]; // [H0_Points] // [micropascals]
// intensity[n] = I1_Intensity[n]) *
// I1_ScalingFactor
// u16 I1_unused[H0_Points & 1]; // ensure 32-bit section size
} R2SINTENSSECTION;

// section G0: simple straight-line depth gates


typedef struct _R2SGATESTRAIGHTSECTION
{
u16 G0_SectionName; // 'G0'
u16 G0_SectionSize; // [bytes] size of this entire section
f32 G0_DepthGateMin; // [seconds two-way]
f32 G0_DepthGateMax; // [seconds two-way]
f32 G0_DepthGateSlope; // [radians]
} R2SGATESTRAIGHTSECTION;

// section G1: 8-bit gate positions, arbitrary paths (present only during
// "verbose" gate description mode)
typedef struct _R2SGATE2SECTION
{
u16 G1_SectionName; // 'G1'
u16 G1_SectionSize; // [bytes] size of this entire section
f32 G1_ScalingFactor;
struct
{
u8 RangeMin; // [seconds two-way] = RangeMin *
// G1_ScalingFactor
u8 RangeMax; // [seconds two-way] = RangeMax *
// G1_ScalingFactor

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 33

} G1_Gate[1]; // [H0_Points]
// u16 G1_unused[H0_Points & 1]; // ensure 32-bit section size
} R2SGATEVERBSECTION;

// section Q0: 4-bit quality flags


typedef struct _R2SQUALITYSECTION
{
u16 Q0_SectionName; // 'Q0' quality, 4-bit
u16 Q0_SectionSize; // [bytes] size of this entire section
u32 Q0_Quality[1]; // [(H0_Points+7)/8] // 8 groups of 4 flags
bits (phase detect, magnitude detect, colinearity, brightness), packed
left-to-right
} R2SQUALITYSECTION;
// *** END PACKET: BATHY FORMAT 0 ***

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 34

3.2 Sidescan

Sidescan data is logged as received, and is raw data that must be interpreted according to the
manufactures specification; in this document we have inserted how Eiva interprets some of
the possible sidescans (the first interfaced ones). Eiva can provide our own header files for all
interfaced sidescans.
Some of the first interfaced sidescans raw datagram‟s:

3.2.1 Reson SideScan (8000)

typedef struct SeabatSideScanInputPacket


{
BYTE STX; // start character (0x02)
BYTE id; // packet id (0x48)
BYTE packet_size[2]; // size of packet - next field throung
// last Amplitude value
BYTE ping_no[4]; // sequential ping number since sonar
// power-up/reset
BYTE seconds[4]; // seconds since 00:00:00, 1 January 1970
BYTE millisec[4]; // milliseconds, LSB = 1ms
BYTE total_samples[2]; // total number of amplitude samples for ping
BYTE ping_packet[2]; // sequence number - (0 - n)
BYTE velocity[2]; // programmed sound velocity (LSB = 1m/s)
BYTE sample_rate[2]; // A/D sample rate (samples per second)
BYTE ping_rate[2]; // Ping rate (pings per second * 1000)
BYTE range_set[2]; // range setting for SeaBat
BYTE power[2]; // power setting for SeaBat
// bits 0-4 - power (0 - 8)
BYTE gain[2]; // gain setting for SeaBat
// bits 0-6 gain (1-45)
// bit 14 (0=fixed, 1=tvg)
// bit 15 (0=manual, 1=auto)
BYTE pulse_width; // transmit pulse width (microseconds)
BYTE tvg_spread; // spreading coefficient for tvg*4
// valid values = 0-240 (0.0 - 60.0 in 0.25
// steps)
BYTE tvg_absorp; // absorption coefficient for tvg
BYTE spare0; // spare field for future use
BYTE spare1[2]; // more spares
BYTE projector[2]; // projecctor setting
BYTE filling[2];
BYTE sample_count[2]; // number of amplitude samples in packet
BYTE amplitude[700][2]; // amplitude data where n = sample_count
// 12 bit amplitude stored in 12 most
// significant bits
BYTE spare2; // spare to align ETX & checksum
BYTE ETX; // packet end character (0x03)
BYTE checksum[2]; // checksum for data packet
} SEABATSIDESCAN_PACKET;

3.2.2 Reson Snippets (8000)


/* ID values for the SNP0 and SNP1 headers */
#define SNIPPET_ID_SNP0 0x534E5030 /* 'SNP0' */

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 35

#define SNIPPET_ID_SNP1 0x534E5031 /* 'SNP1' */

struct SNP0 /* ping header (there are BEAMS snippets per ping) */
{
unsigned long ID; /* identifier code */
unsigned short HeaderSize; /* header size, bytes */
unsigned short DataSize; /* data size following header, bytes */
unsigned long PingNumber; /* sequential ping number */
unsigned long Seconds; /* time since since 00:00:00, 1.1 1970 */
unsigned long Millisec;
unsigned short Latency; /* time from ping to output (ms) */
unsigned short SonarID[2]; /* least significant four bytes of
Ethernet address */
unsigned short SonarModel; /* coded model number of sonar */
unsigned short Frequency; /* sonar frequency (kHz) */
unsigned short SSpeed; /* programmed sound velocity (m/sec) */
unsigned short SampleRate; /* A/D sample rate (samples/sec) */
unsigned short PingRate; /* pings per second, 0.001 Hz steps */
unsigned short Range; /* range setting (meters) */
unsigned short Power; /* power */
unsigned short Gain; /* gain (b15=auto, b14=TVG, b6..0=gain) */
unsigned short PulseWidth; /* transmit pulse width (microseconds) */
unsigned short Spread; /* TVG spreading, n*log(R), 0.25dB steps
*/
unsigned short Absorp; /* TVG absorption, dB/km, 1dB steps */
unsigned short Proj; /* b7 = steering, b4..0 = projector type
*/
unsigned short ProjWidth; /* transmit beam width along track, 0.1
deg steps */
unsigned short SpacingNum; /* receiver beam spacing, numerator,
degrees */
unsigned short SpacingDen; /* receiver beam spacing, denominator */
short ProjAngle; /* projector steering,
degrees*PKT_STEER_RES */
unsigned short MinRange; /* range filter settings */
unsigned short MaxRange;
unsigned short MinDepth; /* depth filter settings */
unsigned short MaxDepth;
unsigned short Filters; /* enabled filters: b1=depth, b0=range */
struct /* one byte containing eight status flags
*/
{
unsigned Spare : 12;
unsigned SnipMode : 3; /* menu item setting */
unsigned RollStab : 1; /* bit0: roll stabilization enabled */
} bFlags;
short HeadTemp; /* head temperature, 0.1C steps */
unsigned short BeamCnt; /* number of beams */
};

struct SNP1 /* fragment header (one or more fragments per snippet) */


{
unsigned long ID; /* identifier code */
unsigned short HeaderSize; /* header size, bytes */
unsigned short DataSize; /* data size following header, bytes */
unsigned long PingNumber; /* sequential ping number */
unsigned short Beam; /* beam number, 0..N-1 */

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 36

unsigned short SnipSamples; /* snippet size, samples */


unsigned short GainStart; /* gain at start of snippet, 0.01 dB
steps, 0=ignore */
unsigned short GainEnd; /* gain at end of snippet, 0.01 dB steps,
0=ignore */
unsigned short FragOffset; /* fragment offset, samples from ping */
unsigned short FragSamples; /* fragment size, samples */
};

3.2.3 Stn Atlas


Uses Atlas FanSweep data format: M-12 packet is used..

3.2.4 Hugin XTF


This driver supports online QC reading of SideScan from Kongsberg Hugin SS. It uses a
refinement of the XTF format.

3.2.5 EM3000 Compact


Uses standard EM3000 binary data format (.ALL):
0x44, 0x46, 0x53 and 0x52 packets are used.

3.2.6 Seabat 7k Sidescan


See seabat7k under echosounder for all the 7k telegrams including sidescan.

3.2.7 Elac Hydrostar


NaviScan utilises the L3# HydroStar format via the XSE network format

3.2.8 Benthos Imux 200

typedef struct
{
DWORD RunningCounter; // (W,M) Increments with each ping put into
// circular buffer
WORD Year; // (W,M) Time of day for the ping. Note that
// this exactly
WORD Month; // (W,M) mimics the SYSTEMTIME structure.
WORD DayOfWeek; // (W,O) Not used in Isis.
WORD Day; // (W,M)
WORD Hour; // (W,M)
WORD Minute; // (W,M)
WORD Second; // (W,M)
WORD Milliseconds; // (W,O) Thousands of seconds for time of day
DWORD MillisecondTimer; // (W,O) GetTickCount() value at time of ping
WORD HideFlag; // (W,O) Set to 1 if this ping should not be
// displayed (hide this ping)
WORD SonarStatusWord; // (W,O)
SERIALDATA SerialData; // (W,O) Telemetry data (pitch, roll, etc)
// that changes with each ping
char Reserved[64]; // reserved for future expansion
int NumChannels; // (W,M) Num channels in this ping, max 32

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 37

char ChannelTypes[32];
// (W,M) For each channel: 0=SUBBOTTOM,
// 1=PORT, 2=STBD
char BytesPerSample[32];// (W,M) 1 or 2 bytes per sample
int SamplesPerChannel[32];// (W,M) Number of samples in each channel
// (usually all the same)
float DelayPeriod[32]; // (W,O) Amount of time elapsed from trigger
// to first sample (usually 0.0)
float TimePeriod[32]; // (W,M) amount of time represented in each
// channel in milliseconds
float PingRate[32]; // (W,M) Amount of time from trigger to
// trigger in milliseconds. Usually equal to
// TimePeriod.
float AlongTrackSize[32];// (W,O) Used primarily for focused
// multibeam sonars. The amount of along-
// track distance (in meters) to be assigned
// to this ping. If 0.0, Isis will compute
// this value based on range scale and fish
// speed.
IMUXEXTRAPAC xtrpac;
// The image data follows here, each channel one after the other.
} IMUXMODPINGINFO;

typedef struct
{
unsigned int MsgCounter;
float SoundVelocity; //1002 latest received data
float SensorSpeed; //1004 latest received data
float SensorDepth; //1006 latest received data
float SensorAltitude; //1008 latest received data
int SonarRange; //1110 latest received data
int SonarOnOff; //1104 latest received data
int SubBottomPowerControl; //1106 latest received data
BYTE ChannelGainControl[32]; //1108 latest received data
char TelemetryPacket[256]; //1036 latest received data
char SystemTypePacket[32]; //1038 latest received data

}IMUXEXTRAPAC;

Channels follow the IMUXMODPINGINFOSTRUCTURE

3.2.9 Benthos C3D


#define PINGINFOBYTES 1728
#define PINGRESERVEDBYTES1 64
#define PINGRESERVEDBYTES2 148

#pragma pack( 1 )
typedef struct
{
long RunningCounter;
short Year;
short Month;
short DayofWeek;
short Day;
short Hour;
short Minute;

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 38

short Second;
short Milliseconds;
double MillisecondTimer;
double Latency;

short HideFlag;
short SonarStatusWord;
unsigned char Reserved[PINGRESERVEDBYTES1];
int NumChannels;
unsigned char ChannelTypes[32];
unsigned char BytesPerSample[32];
int SamplesPerChannel[32];
double DelayPeriod[32];
double TimePeriod[32];
double PingRate[32];
double PulseLength[32];
double SamplePeriod[32];
unsigned char Reserved2[PINGRESERVEDBYTES2];
} C3DPINGINFO;

For each ping, each channel is saved in a contiguous block after the ping header. The type of
data, number of samples etc., for each channel is saved in the ping header for the same ping.
For C3D data the ping header parameters are used as follows (note that SamplesPerChannel
can vary between pings and between channels). NI indicates not implemented:
ChannelTypes:
50 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 0 Port
51 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 0 Stbd
52 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 1 Port
53 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 1 Stbd
54 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 2 Port
55 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 2 Stbd
56 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 3 Port
57 -> RANGEDATA[SamplesPerChannel[CHANNEL]] = Sample Index data, Segment 3 Stbd
60 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 0 Port
61 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 0 Stbd
62 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 1 Port
63 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 1 Stbd
64 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 2 Port
65 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 2 Stbd
66 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 3 Port
67 -> ANGLEDATA[SamplesPerChannel[CHANNEL]] = Angle data, Segment 3 Stbd
70 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 0 Port
71 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 0 Stbd
72 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 1 Port
73 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 1 Stbd
74 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 2 Port
75 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 2 Stbd
76 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 3 Port
77 -> AMPDATA[SamplesPerChannel[CHANNEL]] = Amplitude data, Segment 3 Stbd
90 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 0 Port NI
91 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 0 Stbd NI
92 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 1 Port NI
93 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 1 Stbd NI
94 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 2 Port NI
95 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 2 Stbd NI
96 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 3 Port NI
97 -> QCDATA[SamplesPerChannel[CHANNEL]] = QC data, Segment 3 Stbd NI
100 -> SSDATA[SamplesPerChannel[CHANNEL]] = Sidescan data, Port
101 -> SSDATA[SamplesPerChannel[CHANNEL]] = Sidescan data, Stbd

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 39

30 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 0


31 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 1
32 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 2
33 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 3
34 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 4
35 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 5
36 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 6
37 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 7
38 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 8
39 -> SERIALDATA[SamplesPerChannel[CHANNEL]] = Serial data from comport 9
253 ->STATUSDATA[SamplesPerChannel[CHANNEL]] = free format ascii status data

255 -> SARAINFO[1024] = SARA sonar parameters data structure (1024 bytes,
proprietary)
254 -> CAATIINFO[1024] = CAATI processing parameters data structure (1024 bytes,
proprietary)

where the datatypes RANGEDATA, ANGLEDATA, AMPDATA, QCDATA, SERIALDATA, STATUSDATA,


SARAINFO and CAATIINFO are declared as:

/*
Channel Data Types
*/
char SARAINFO[1024];
char CAATIINFO[1024];
unsigned short RANGEDATA[];
signed short ANGLEDATA[];
unsigned short AMPDATA[];
unsigned short SSDATA[];
char QCDATA[]; /* NI */
char SERIALDATA[];
char STATUSDATA[];

Example:
NumChannels = 10;
ChannelTypes = {255,254,50,60,70,51,61,71,100,101,253};
BytesPerSample = {1024,1024,2,2,2,2,2,2,2,2,1};
SamplesPerChannel = {1,1,e,e,e,f,f,f,g,g,k};
// where e is the number of 3D sidescan samples
// for port, f is number of stbd 3D sidescan output samples,
// g is the number of port and stbd 2D sidescan samples
// and k is the number of ascii status bytes
DelayPeriod = {h,h,h,h,h,h,h,h,h,h,h};
// where h is the delay in ms after transmit to the first
// sample
PingRate = {i,i,i,i,i,i,i,i,i,i}; // i=time between transmits in ms
TimePeriod = {j,j,j,j,j,j,j,j,j,j,j}; // j=total time rep by each channel (ms)

Data follows the ping header and is organized as 2 blocks of proprietary information (channel
types 255 and 254) followed by 6 blocks of 3D sidescan data (with a variable number of short
integer values in each block), followed by 2 blocks of 2D sidescan data, followed by one
block of ASCII status information.
3D sidescan blocks corresponding to the same AOA segment have the same number of
samples. Currently only one segment (segment 0) is used and contains all 3D sidescan data.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 40

3.2.10 EdgeTech

3.2.11 R2Sonic 2000


/ *** BEGIN PACKET: SNIPPET FORMAT 0 ***
typedef struct _R2SSNIPPETHEAD
{
u32 PacketName; // 'SNI0'
u32 PacketSize; // [bytes] size of this entire packet
u32 DataStreamID; // requester-defined value
} R2SSNIPPETHEAD;

// section H0: header


typedef struct _R2SSNIPPETHEADERSECTION
{
u16 H0_SectionName; // 'H0'
u16 H0_SectionSize; // [bytes] size of this entire section
u8 H0_ModelNumber[12]; // example "2024", unused chars are nulls
u8 H0_SerialNumber[12]; // example "100017", unused chars are nulls
u32 H0_TimeSeconds; // [seconds] ping time relative to 0000 hours 1-
// Jan-1970, integer part
u32 H0_TimeNanoseconds; // [nanoseconds] ping time relative to 0000
// hours 1-Jan-1970, fraction part
u32 H0_PingNumber; // pings since power-up or reboot
f32 H0_PingPeriod; // [seconds] time between most recent two pings
f32 H0_SoundSpeed; // [meters per second]
f32 H0_Frequency; // [hertz] sonar center frequency
f32 H0_TxPower; // [dB re 1 uPa at 1 meter]
f32 H0_TxPulseWidth; // [seconds]
f32 H0_TxBeamwidthVert; // [radians]
f32 H0_TxBeamwidthHoriz; // [radians]
f32 H0_TxSteeringVert; // [radians]
f32 H0_TxSteeringHoriz; // [radians]
u32 H0_TxMiscInfo; // to be determined
f32 H0_RxBandwidth; // [hertz]
f32 H0_RxSampleRate; // [hertz] sample rate of data acquisition and
// signal processing
f32 H0_RxRange; // [seconds two-way]
f32 H0_RxGain; // [DH0_RxGain = 1; 2dB gain change]
f32 H0_RxSpreading; // [dB (times log range in meters)]
f32 H0_RxAbsorption; // [dB per kilometer]
f32 H0_RxMountTilt; // [radians]
u32 H0_RxMiscInfo; // to be determined
u16 H0_reserved; // reserved for future use
u16 H0_Snippets; // number of snippets
f32 H0_MoreInfo[6]; // several to-be-determined values such as
// attitude info to assist the GUI display
} R2SSNIPPETHEADERSECTION;

typedef struct _R2SSNIPPETS1SECTION


{
// section S1: 16-bit snippet data (for network efficiency packet may
// contain several of these sections)
// (supports snippets up to 32K samples by fragmenting at the IP level
// rather than by the application like 81xx)
u16 S1_SectionName; // 'S1'
u16 S1_SectionSize; // [bytes] size of this entire section

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 41

u32 S1_PingNumber; // pings since power-up or reboot


u16 S1_SnippetNumber; // snippet number, 0 to H0_Snippets-1
u16 S1_Samples; // number of samples in this snippet, sample rate is
// H0_RxSampleRate
u32 S1_FirstSample; // first sample of this snippet relative to zero
// range, sample rate is H0_RxSampleRate
f32 S1_Angle; // [radians] angle of this snippet, relative to array
// centerline
f32 S1_ScalingFactorFirst; // scaling factor at start of snippet,
// 0=ignore, use linear interpolation to
//get other values
f32 S1_ScalingFactorLast; // scaling factor at end of snippet,
// 0=ignore
u32 S1_reserved; // reserved for future use
u16 S1_Magnitude[1]; // [S1_Samples] //[Magnitude] = S1_Magnitude[n]
// * (linear interpolate between
// S1_ScalingFactorFirst and
// S1_ScalingFactorLast)
// u16 S1_unused[S1_Samples & 1]; // ensure 32-bit section size
} R2SSNIPPETS1SECTION;
// *** END PACKET: SNIPPET FORMAT 0 ***

// *** BEGIN PACKET: COMMAND FORMAT 0 ***


typedef struct _R2SCOMMANDPAC
{
u32 PacketName; // 'CMD0'
// Command (for network efficiency, the packet can contain multiple
// commands, but ensure the IP datagram reaches the sonar unfragmented).
u32 CommandName; // example 'RNG0' to set range
u32 CommandValue; // a 4-byte value such as u32, f32,
// four chars, or whatever is required by the
// particular command
} R2SCOMMANDPAC;
// *** END PACKET: COMMAND FORMAT 0 ***

4. NaviScan SBD logging format

This section describes the format of the raw data files and an example of the disk space required
for logging.

1. Header Record
2. Multibeam echosounder Record
3. Doppler Velocity Record
4. Pipetracker Record
5. Position Record
6. Filtered position Record
7. Sound velocity profile Record
8. Theoretical profile Record
9. Sidescan image Record
10. Target Record

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 42

11. End of file Record


From version 7.0
12. Motion record
13. Gyro record
14. Bathy record
From version 7.1
15. Projection&Ellipsoid record
16. Datumshift record
17. Logcontrol record
From version 7.2
18. Multiple pos record
19. Raw data record
20. Sidescan head 2 record
From version 8.0
21. Additional timeoffset and usernames information for Multiple sensors
From version 8.2
22. Auxiliary sensor + pragma pack 1 and complete refactoring of setup structure

Note: the following structures are compiled with 8 bytes alignment.

4.1 File structure


SBD files all have the following structure (file with 3 records):
Size Structure type
Xx bytes LOG_HEADER
20 bytes HEAD_LOGPACKET8_0
n * 40 bytes SUBPACKET6_0
n bytes Raw data
20 bytes HEAD_LOGPACKET8_0
n * 40 bytes SUBPACKET6_0
n bytes Raw data
20 bytes HEAD_LOGPACKET8_0
n * 40 bytes SUBPACKET6_0
n bytes Raw data

The HEAD_LOGPACKET8_0 and SUBPACKET6_0is described in the following two


chapters.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 43

4.1.1 Packet header


Each data packet contains this structure.
New header structure with abs time included: (from ver 7.7)

typedef struct PacketHead8_0


{
char spec[2]; // 2 bytes "? " Id for data record
unsigned short nSubPackets; // 2 bytes Number of subpackets before data - may be zero
long rel_time; // 4 bytes Timestamp in ms (relative stamp) timeGetTime src
TIMEVAL abs_time; // Timestamp of packet in absolute time - when is data valid
unsigned long size; // 4 bytes Length of record data that follows
} HEAD_LOGPACKET8_0; // 20 bytes
spec : The spec variable tells what kind of data packet is following.
“0 “ : Position
“1 “ : Multibeam echosounder head 1
“2 “ : Multibeam echosounder head 2
“3 “ : Pipetracker
“4 “ : Doppler log
“5 “ : Filtered position
“6 “ : Sound velocity profile
“7 “ : Theoretical profile
“8 “ : Sidescan image (head 1 in dual setup)
“F “ : Sidescan head 2 image
“9 “ : Target
“M “ : Motion
“G “ : Gyro
“B “ : Bathy
“A “ : Multiple pos
“X “ : Auxiliary
“Y “ : HuginMon sub bottom
“RD“ : Raw data
“PE“ : Projection & Ellipsoid
“DS“ : Datumshift
“LC“ : Logging control
“S “ : Start of file (LOG_HEADER)
“E “ : End of file
size : The size is the size of the raw data after the sub packets.
time : The time of the raw data. The time is relative to the LOG_HEADER StartTime.
nSubPackets : The number sub packets that follows the head packet.

From ver 7.7 the Huge packet disappears again as the new header has 4byte size
Old version huge packets:
For the “C” Huge Sidescan one must pay special attencion to the change of nSubPacket and
size fields. If the C specifier is used in the file (for the time being only for Benthos C3D
sidescan), the filereader must first look at the specifier and the decide the packet size, for
each packet in the file. For C spec the following header is valid:

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 44

Old version packethead for std and huge packets:


typedef struct PacketHead8_0B
{
char spec[2]; // 2 bytes: "? " Id for data record
unsigned short nSubPackets; // 2 bytes:length of record data
DWORD time; // 4 bytes: Timestamp in ms
long size; // 4 bytes Number of subpackets before data
// ======================================
} HEAD_LOGPACKET8_0B; // 12 bytes

typedef struct PacketHead6_0


{
char spec[2]; // 2 bytes: "? " Id for data record
unsigned short size; // 2 bytes:length of record data
DWORD time; // 4 bytes: Timestamp in ms
unsigned long nSubPackets; // 4 bytes Number of subpackets before data
// ======================================
} HEAD_LOGPACKET6_0; // 12 bytes

4.1.2 Sub Packet


This structure contains all the data needed for correction of multibeam, pipetracker, etc. data.
typedef struct SubPacket
{
long time; // 4 bytes Time of values in packet
float Depth; // 4 bytes Depth in meters
float Tide; // 4 bytes Tide in meters
float HeightGPS; // 4 bytes GPS height in meters
float Gyro; // 4 bytes Heading in degrees
float GyroC_O; // 4 bytes Dynamic Gyro C-O value in degrees
float Roll; // 4 bytes Roll in degrees
float Pitch; // 4 bytes Pitch in degrees
float Heave; // 4 bytes Heave in meters
float Aux1; // 4 bytes multi purpose
// ======================================
} SUBPACKET; // 40 bytes

4.2 FILE ID in SBD files


Important:
SBD files logged from ver 7.7 (ns patches released after January 16, 2007) has initially a 12
byte FILE ID identifier as the very first place in a SBD file, this id is not included in a
Naviscan.BIN setup file
This is used to inform the user that a 20 byte HEAD_LOGPACKET8_0 is used instead of a
12 byte HEAD_LOGPACKET6_0.
typedef struct SbdFile_Id //very first 12 bytes of newer sbd files
{
char id[4]; //"_SBD"
BYTE ver[4]; //8 0 8 0 = binary HEAD_LOGPACKET8_0main ,HEAD_LOGPACKET8_0sub,
NBLOGVERSIONMAIN, NBLOGVERSIONSUB
char future[4]; //all NULLs
}SBDFILE_ID;

After those 12 bytes follow the standard definition of the file

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 45

4.3 Header Record


#define NBLOGVERSIONMAIN 8 // Main version number
#define NBLOGVERSIONSUB 2 // Sub version number

typedef struct NavibatLogHeader8_2


{
SYSTEMTIME StartTime; // Local time
NBSETUP8_2 nbc; // Naviscan Configuration
char Version[16]; // "NaviBat V8.2"
int Timezone;
BOOL DST;
} LOG_HEADER8_2;

typedef struct NavibatLogHeader8_0


{
SYSTEMTIME StartTime; // Local time
NBSETUP8_0 nbc; // Navibat Configuration
char Version[25]; // "NaviBat V8.0"
} LOG_HEADER8_0; /* ??? BYTES */

Previous version 7.7:


typedef struct NavibatLogHeader7_2
{
SYSTEMTIME StartTime; // Local time
NBSETUP7_2 nbc; // Navibat Configuration
char Version[25]; // "NaviBat V7.2"
} LOG_HEADER7_2; /* ??? BYTES */

At start of line ( beginning of a new file), a header record is written.


<StartTime> <NB set-up> <Version>

Start time : Gives the start date and time for current line. Given in C notation
SYSTEMTIME
NB setup : Specifies the current system set-up. Copy of NaviScan.bin
Version : Gives the current NaviScan version number in ASCII

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 46

The implementation of the newest header record (LOG_HEADER) is shown below:


#define MAX_MULTIPLE_SENSORS 10 // Maximum 10 additional sensors
#define MULTIPLE_MOTION 10
#define MULTIPLE_GYRO 11
#define MULTIPLE_BATHY 12
#define MULTIPLE_BATHY_GPSHEIGHT 13
#define DOPPLERLOG 14
#define MULTIPLE_AUXILIARY 15
#define MULTISEN_MAXNAMES 4
#define MULTISEN_NAMELEN 16
#define SENSORNAMELEN 16
#define NAMELEN8_2 32

#pragma pack(push,1)

typedef struct Positionsetup8_2


{
PORTSETUP Port; // Port settings
short Kind, // Identification of positioning system
EastOffset, // Offset to easting "EEEEEEEE.EE" in packet
NorthOffset, // Offset to northing "NNNNNNNN.NN" in packet
TimeOffset, // Offset to timestamp "hh:mm:ss" in packet
AgeInPacket, // Offset to age of data in packet (in ms) -1 if not used
FixedAge, // Age of data (in ms), -1 if not used
UseGPSTime, // Used absolute GPS time
future;
double PSX,PSY,PSZ; // Distance from POS to CRP in m
long future2;
long timeoffsetms;
char sensorname[NAMELEN8_2];
} POSITIONSETUP8_2;

typedef struct Gyrosetup8_2


{
PORTSETUP Port; // Port settings
short Kind; // Identification of gyro system (or free)
short GyroOffset; // Offset to gyro info "ggg.g" in Packet
BOOL UseGyroCorrection; // (bool) use dynamic gyro correction
double C_O; // C_O value for this sensor
long future;
long timeoffsetms;
char sensorname[NAMELEN8_2];
} GYROSETUP8_2;

typedef struct Motionsetup8_2


{
PORTSETUP Port; // Port settings
short Kind; // Identification of motion system (or free)
short UseHeave, // Enable(1)/Disable(0) use of heave
RollOffset, // Offset to Roll info "rrr.r" in packet
PitchOffset, // Offset to pitch info "ppp.p" in packet
HeaveOffset, // Offset to heave info "hhhh" in packet (in cm)
future;
long timeoffsetms;
double RSX,RSY,RSZ; // Distance from POS to RPH reference point in m
double Roll_C_O, // C_O value for this sensor
Pitch_C_O,
Heave_C_O;
char sensorname[NAMELEN8_2];
} MOTIONSETUP8_2;

typedef struct Bathysetup8_2


{
PORTSETUP Port; // Port settings
short Kind; // Identification of motion system (or free)
short UseBathy; // Use bathy depth ?
short BathyOffset; // Offset to bathy "ddd.dd" in Packet (in m)
short bathyAge; // fixed age on bathy data in ms.
double BSX,BSY,BSZ; // Distance from POS to bathy ref point in m

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 47

double C_O; // C_O value for this sensor


float densityWater; // kg/dm3
float gravity; // m/s2
float presureSurface; // atm.
long timeoffsetms;
char sensorname[NAMELEN8_2];
} BATHYSETUP8_2;

typedef struct Auxiliarysetup8_2


{
PORTSETUP Port; // Port settings
short Kind; // Identification of system
short future;
long timeoffsetms;
float customA,customB;
double ASX,ASY,ASZ; // Distance from POS to ocean reference point in m
char sensorname[NAMELEN8_2];
}AUXILIARYSETUP8_2;

typedef struct Rawdatasetup8_2


{
PORTSETUP Port; // Port settings
short Kind; // Identification of Rawdata type (or free)
short future;
long timeoffsetms;
double RDSX,RDSY,RDSZ; // Distance from POS to Rawdata ref point in m
char sensorname[NAMELEN8_2];
} RAWDATASETUP8_2;

typedef struct MultipleSensors8_2


{
short Pnumber; // Number of additional position sensors
short Gnumber; // Number of additional gyro sensors
short Mnumber; // Number of additional motion sensors
short Bnumber; // Number of additional bathy sensors
short Anumber; // Number of additional auxiliary sensors
short Rnumber; // Number of additional rawdata inputs
short future;
short future2;

POSITIONSETUP8_2 PositionSetup[MAX_MULTIPLE_SENSORS];
// Array of additional position sensors setup structure
GYROSETUP8_2 GyroSetup[MAX_MULTIPLE_SENSORS];
// Array of additional gyro sensors setup structure
MOTIONSETUP8_2 MotionSetup[MAX_MULTIPLE_SENSORS];
// Array of additional motion sensors setup structure
BATHYSETUP8_2 BathySetup[MAX_MULTIPLE_SENSORS];
// Array of additional bathy sensors setup structure
AUXILIARYSETUP8_2 AuxiliarySetup[MAX_MULTIPLE_SENSORS];
// Array of additional aux interpreted sensors setup structure
RAWDATASETUP8_2 RawdataSetup[MAX_MULTIPLE_SENSORS];
// Array of rawdata sensors setup structure

} MULTIPLESENSORS8_2;

typedef struct NaviBatSetUpStructure8_2


{
unsigned short size; // Size of entire packet in bytes
short versionMain; // Main version number ( 8 )
short versionSub; // Sub version number ( 2 )
char Date[20]; // Date for last update of NAVIBAT.BIN
char Time[10]; // Time for last update of NAVIBAT.BIN
char Note[100]; // Free notes
// 17*8 = 136 bytes

// =====================================================================
// Setup of Sensors
// =====================================================================

// --- Echosounder Head 1 ---

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 48

short SKind; // Identification of echosounder system


BYTE SHasSepRx; // indicator for use of separate rx antenna
//(primary is then the tx antenna)
BYTE Sfuture2;
int beamsPrScan;

PORTSETUP SPort; // Port settings


double PSX,PSY,PSZ; // Dist. from POS to mbe ref. point in m
double SBRolled, // Roll mount Angle for 1st head in deg
SBPitched, // Pitch mount Angle for 1st head in deg
SBHeading; // Heading mount angle for 1st head in deg
double PSXrx,PSYrx,PSZrx;// Dist. from POS to eventual separate mbe rx antenna ref. point
in m
double SBRolledrx, // Roll mount Angle for 1st rx head in deg
SBPitchedrx, // Pitch mount Angle for 1st rx head in deg
SBHeadingrx; // Heading mount angle for 1st rx head in deg
char Sfuture[16]; // reserved for future use

// --- Echosounder Head 2 ---


PORTSETUP S2Port; // Port settings
double PS2X,PS2Y,PS2Z; // Offsets from POS to 2nd mbe head in m
double SB2Rolled, // Roll mount Angle for 2nd head deg
SB2Pitched, // Pitch mount Angle for 2nd head deg
SB2Heading; // Heading mount angle for 2nd head deg
double PS2Xrx,PS2Yrx,PS2Zrx;// Dist. from POS to eventual separate mbe2
//rx antenna ref. point in m
double SB2Rolledrx, // Roll mount Angle for 2nd rx head deg
SB2Pitchedrx, // Pitch mount Angle for 2nd rx head deg
SB2Headingrx; // Heading mount angle for 2nd rx head deg
char SB2future[16]; // reserved for future use

// --- Sidescan ---


short SDKind; // Identification of sidescan system
short SDfuture1;
float SDfuture2;

PORTSETUP SDPort; // Port settings


double PSDX,PSDY,PSDZ; // Offsets from POS to SideScan head in m
double SDRolled, // Roll mount Angle for head deg
SDPitched, // Pitch mount Angle for head deg
SDHeading; // Heading mount angle for head deg

PORTSETUP SD2Port; // Port2 settings


double PSD2X,PSD2Y,PSD2Z;// Offsets from POS to SideScan head2 in m
double SD2Rolled, // Roll mount Angle for head deg
SD2Pitched, // Pitch mount Angle for head deg
SD2Heading; // Heading mount angles for head deg
char SDfuture[16]; // reserved for future use

// --- Pipetracker ---


PORTSETUP PTPort; // Port settings
short PTKind; // Identification of bathy system (or free)
short PipeDiameter; // Pipe diameter in cm
float PTfuture2;
double PTSX,PTSY,PTSZ; // 1 Distance from POS to Pipetracker in m
char PTfuture[16]; // reserved for future use

// --- Doppler Log ---


PORTSETUP DLPort; // Port settings
short DLKind; // Identification of Doppler system
short DLfuture2;
float DLfuture3;
double DXOffset,
DYOffset,
DZOffset;
double DRollOffset,
DPitchOffset,
DYawOffset;
char DLfuture[16]; // reserved for future use

// --- Logging control (start/stop, filename) ---

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 49

PORTSETUP LPort; // Port settings


short LKind; // Identification of control input
short LNameOffset; // Offset to file name in string
float Lfuture2;
char LStartId[16]; // id for start logging
char LStopId[16]; // id for stop logging
char Lfuture[16]; // reserved for future use

// --- Theoretical Profile ---


PORTSETUP TPPort; // Port settings
short TPKind; // Identification of the input
short TPfuture2;
float TPfuture3;
char TPfuture[16]; // reserved for future use;

// --- GPS Clock ---


PORTSETUP GPSPort; // Port settings
short GPSKind; // Identification of the input
short leapSeconds; // C-O on GPS time
short ppsEvent; // type of event for pps
//(outdated: time from string to PPS)
BYTE bUsePPS; // if false delayMs is used
BYTE GPSfuture2;
char GPSfuture[16]; // reserved for future use

// --- Sound velocity profile ---


PORTSETUP SVPort; // Port settings
short SVKind; // Identification of the input
short SVfuture2;
float SVfuture3;
char SVfuture[16]; // reserved for future use;

// --- Online Filter ---


PORTSETUP OFPort; // Port settings
short OFKind; // Online filter Off 0 HAS 1
short TimeLim; // Max time without accep. data
float MaxAcc, // Max allowed acceleration m/s*s
MaxOff, // Max allowed position jump x,y
Gain; // Filter Gain 0-1
char OFfuture[16]; // reserved for future use

// --- C-O ---


double GyroCorrection, // Primary sensor Gyro correction in degree
RollCorrection, // Primary sensor Roll correction in degree
PitchCorrection,// Primary sensor Pitch correction in degree
HeaveCorrection,// Primary sensor Heave correction in m
BathyCorrection;// Primary sensor Bathy correction in m
double BSZ; // for mbe Draft calc when no bathy is present

MULTIPLESENSORS8_2 multiplesensors;

} NBSETUP8_2;

Note the byte alignment is default 8 byte in Eiva, and overruled locally to (eg.1) for securing
backwards size compatibility when the char -future[16] has been replaced with something
else, (eg. char Bfuture[16];).

4.3.1 UserNames and Dopplerlog offsets addition.


Note that NBSETUP7_2 now contains arrays for XXXUserNames at the end. These arrays
reserves place for the names of the first 4 multiple sensor of the for types pos, gyro, motion
and bathy. For more than 4 sensors of each type no name can be saved, for those the default
system name are used implicit in NaviScan. It is limited to 4 places of each type, to be able to

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 50

contain the names into the former char AddFuture[256] array, and this way implement user
names without changing the size and outlay of the NBSETUP7_2 structure, for maintaining
backwards comp ability. Therefore it has not been necessary to change the name of the
structure, while incorporating this latest change.
At the same time we have changed the Doppler log setup to include Doppler mounting offset
angles and position. These offset can only be hold in the setupfile, but will for now not be
used for any calculation and any view in NaviScan. Again we have reused half of the char
Bfuture[16] and the char DLfuture[16], for this, thereby maintained the same size and outlay
of the NBSETUP7_2 structure, with respect to backwards compatibility.
// --- Doppler Log ---
#pragma pack(push,1)
float DRollOffset;
float DPitchOffset;
#pragma pack(pop)

short DLKind; // Identification of Doppler system


PORTSETUP DLPort; // Port settings

// char DLfuture[16]; // reserved for future use


#pragma pack(push,1)
float DYawOffset;
float DXOffset;
float DYOffset;
float DZOffset;
#pragma pack(pop)

4.4 TimeBox interfaced sensors


Contrary to all other interface types, TimeBox sensors are preceded with 24 bytes NAVITAGHDR
before the original data content from the comport:
// NaviTag.h
// header file for the data structure in NaviTag
//always INTEL byte order
#pragma pack(push,1)

typedef struct tag_NAVITAGHDR


{
char Ident[4]; // Packet starter: always "EIVA"
INT32 Length; // Length of packet - remaining of entire packet
INT32 VersAndDomain;
// First 16 bit version number (1)
// Last 16 bit domain id - unique time box number
INT32 InsId; // Id of instrument - version 1 COM port number
TIMEVAL time_stamp; // Timestamp of reception of telegram (first bit)
} NAVITAGHDR;

typedef struct tag_NAVITAGDATA


{
NAVITAGHDR hdr;
char data[1]; // In fact [length-16];
} NAVITAGDATA;

// The raw telegram - not really a part of


//structure - but follows right after the header

#pragma pack(pop)

4.5 Gyro Record


This record consists of a head packet, followed by the gyro record. The first (primary) sensor

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 51

of this type is stored in this record and in the sub packages to ensure backwards
compatibility.

4.5.1 Layout
typedef struct GyroLogPacket
{
short Seq; // Sequence number of sensor (1 - x)
float Gyro; // Interpreted value
float Corr; //speed or RTK corr without meridian corr
float MeridianCorr; //meridian corr
float Spare; //for future use
short Raw_length; // Length of raw package (Normally not used)
char pRaw[1]; // Pointer to raw package (Normally not used)
}GYRO_PACKET;

4.6 Motion Record


This record consists of a head packet, followed by the motion record. The first (primary)
sensor of this type is stored in this record and in the sub packages to ensure backwards
compatibility.

4.6.1 Layout
typedef struct MotionLogPacket
{
short Seq; // Sequence number of sensor (1 - x)
float Roll,
Pitch,
Heave; // Interpreted values
short Raw_length; // Length of raw package (Normally not used)
char pRaw[1]; // Pointer to raw package (Normally not used)
}MOTION_PACKET;

4.7 Bathy Record


This record consists of a head packet, followed by the bathy record. The first (primary)
sensor of this type is stored in this record and in the sub packages to ensure backwards
compatibility.

4.7.1 Layout
typedef struct BathyLogPacket
{
short Seq; // Sequence number of sensor (1 - x)
float bathy; // Interpreted depth (m)
float altitude; // Interpreted altitude
float presure; // Interpreted pressure (dBar)
short Raw_length; // Length of raw package (Normally not used)
char pRaw[1]; // Pointer to raw package (Normally not used)
}BATHY_PACKET;

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 52

4.8 Multiple position Record


This record consists of a head packet, followed by the multiple position record. The first
(primary) sensor of this type is stored in this record and in the old position record to ensure
backwards compatibility.

4.8.1 Layout
typedef struct PositionLogPacket // Only used with packettype "P "
{
short Seq; // Sequence number of sensor (1 - x)
double dEasting; // Interpreted Easting pos
double dNorthing; // Interpreted Northing pos
short Raw_length; // Length of raw package
char pRaw[1]; // Pointer to raw position string
}POS_PACKET;

4.9 Raw data Record


This record consists of a head packet, followed by the raw data record. This data contains
only the raw data as a binary block. This data has not been interpreted in any way

4.9.1 Layout
typedef struct RawdataLogPacket // Only used with packettype "R "
{
short Seq; // Sequence number of sensor (1 - x)
short Raw_length; // Length of raw package
char pRaw[1]; // Pointer to raw data string
}RAWDATA_PACKET;

4.10 Auxiliary Record


This record consists of a head packet, followed by the auxiliary data record. This data
contains only the raw data as a binary block. This data has not been interpreted in any way

4.10.1 Layout
typedef struct AuxiliaryLogpacket{
float Vals[8]; // interpreted custom data values, unused vals filled with FLT_MAX
short Seq; // Sequence number of sensor (1 - x)
short Raw_length; // Length of raw package (Normally not used)
char pRaw[1]; // Pointer to raw package (Normally not used)
} AUXILIARY_PACKET;

4.11 Projection & Ellipsoid Record


This record consists of a head packet, followed by the Projection & Ellipsoid record.
This packet is only saved, when running NaviScan with “Loggingcontrol” and using NaviPac
3.3x or higher.

4.11.1 Layout

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 53

typedef struct ProjEllipLogPacket


{
// Version control
short Version_Major; // 1
short Version_Minor; // 1

// Primary parameters
char sEllipsoidName[128];
double SemiMajorAxis; // [meters]
double InverseFlattening;
unsigned char ProjectionType;
double OrgScale; // Pointscale factor at the ellipsoid origin
double FirstParallel; // First parallel in Lamberts conical [degrees]
double SecondParallel; // Second parallel in Lamberts conical [degrees]
double OrgLambda; // Origin lambda (lon) on the reference ellipsoid [degrees]
double OrgPhi; // Origin phi (lat) on the projection ellipsoid [degrees]
double OrgEasting; // Origin easting on the projection plane [meters]
double OrgNorthing; // Origin northing on the projection plane [meters]

// Secondary parameters
unsigned char UTMzone; // Derived from "OrgLambda" [1..60]

// Raw string
short Raw_length; // Length of raw package
char pRaw[1]; // Pointer to raw string

}PROJELLIP_PACKET;

4.12 Datum shift Record


This record consists of a head packet, followed by the Datumshift record.
This packet is only saved, when running NaviScan with “Logging control” and using
NaviPac 3.3x or higher.

4.12.1 Layout
typedef struct DatumShiftLogPacket
{
float Tx; // Transformation parameter X - meters
Float Ty; // Transformation parameter Y - meters
float Tz; // Transformation parameter Z - meters
short method; // How to perform the shift
double Rx; // Rotation parameter X - [degrees]
double Ry; // Rotation parameter Y - [degrees]
double Rz; // Rotation parameter Z - [degrees]
double PPM; // scaling factor transformation - 1/1000000

// Raw string
short Raw_length; // Length of raw package (Normally not used)
char pRaw[1]; // Pointer to raw string

}DATUMSHIFT_PACKET;

4.13 Utility Record


This record consists of a head packet, followed by the Datumshift record.
This packet is only saved, when running NaviScan with “Logging control” and using
NaviPac 3.3x or higher.

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 54

4.13.1 Layout

typedef struct UtilityPacket


{
short Version_major; // XX.
short Version_minor; // .XX

short Type; // Type of data...(Not used yet)


char Yaw_str[16]; // "YAW=[sign]XXX.XXXXXX" max resolution
char spare[100]; // spare for future expanding..

}UTILITY_PACKET;

4.14 Logcontrol Record


This record consists of a head packet, followed by the logcontrol record.
This packet is only saved, when running NaviScan with “Logging control” of type "NaviPac
(Passive)" and using NaviPac 3.3x or higher.
This record is mainly for use of other external importers, which need further information.

4.14.1 Layout

typedef struct LogcontrolPacket


{
// Raw string
short Raw_length; // Length of raw package (Normally not used)
char pRaw[1]; // Pointer to raw string

}LOGCONTROL_PACKET;

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 55

4.15 Multibeam echosounder Record


A multibeam echsounder record consists of a head packet, one or more subpackets and the
raw multibeam data, as described in chapter 4.1. If head.spec[0] is „2‟ it means that the raw
data is from the second head in a dual head setup. The multibeam type can be determined
from the LOG_HEADER.

The raw data must be interpreted according to description from the echo sounder
manufacturer, and Eiva can provide a set of header files, describing how Eiva interprets the
raw data.

4.16 SideScan Record


The raw data contains the sidescan image packet from the sidescan system.
The raw data must be interpreted according to description from the echo sounder
manufacturer, and Eiva can provide a set of header files, describing how Eiva interprets the
raw data.

4.17 Pipetracker Record


typedef struct PipeTrackerLogPacket
{
// =============== Record data ==============
float EditX, EditZ; // 8 bytes: Edit value of pipe position,
// overrules packet
short Flags; // 2 bytes: TRUE if pipe is covered, FALSE
// otherwise
float x, z; // 8 bytes: Raw value of pipe position
long quality; // 4 bytes: Quality of raw values
BYTE EditQ; // 1 bytes: saved Q byte from Raw packet when Edited sensor
BYTE NotUsed; // 1 bytes:
short FutureUse[7]; // 14 bytes:
char Data[1]; // n bytes: Raw packet from pipetracker
// ==========================================
} PIPETRACKER_LOGPACKET; // n + 38 BYTES

4.18 DopplerLog Record


This packet contains the raw Doppler log data along with Gyro, Roll and Pitch values.

4.19 Position Record


In a position record the raw data contains the string received from the navigation system.

4.20 Filtered Position Record


In a filtered position record the raw data contains a string with the following format.
01234567890123456789012345678901234567890123456789
ttttttttttt eeeeeeee.ee nnnnnnnn.nn s.ss d.dd<cr><lf>
t - string from navigation system containing the time (NaviPac : hh:mm:ss.ss)
e - easting
n - northing
s - standard deviation
d - distance from raw position

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 56

4.21 Theoretical profile Record


In theoretical profile record the raw data contains a structure like the one below.
typedef struct TheoreticProfilePacket
{
char id; // the packet id should be 0xFF
short type; // 0 - z values = absolute depths
// 1 - z values = dist above pipe
short numberOfPoints; // max. MAX_THEORETIC_POINTS
long x[MAX_THEORETIC_POINTS]; // in cm
long z[MAX_THEORETIC_POINTS]; // in cm
} THEORETICPROFILE_PACKET;

4.22 Target Record


A target record contains no subpackets the raw data contains the following structure.
typedef struct TargetLogPacket6_0
{
unsigned long nPingNumber;
long nOffsetX; // cm from center (not slant range corrected)
float fDepth; // needed to slant range correct

long nWidth;
long nHeight;
char strFilename[1];
} TARGET_LOGPACKET6_0;
Targets create during logging is placed in the file at the time they were created. Targets
created during playback are added at the end of the file. This means that if you want to know
about the targets while reading the file, you will need to parse the file for targets first.

4.23 Disk Consumption


At the start of line, the raw data file is created and a LOG_HEADER with size of 558 bytes is
written to the file.

Each incoming echosounder scan is logged to the raw data file as:

SEABAT9000_LOGPACKET: 268 bytes up to 7 times per second


SEABAT8000_LOGPACKET: Up to 517 bytes up to 30 times per second
SIS3000_LOGPACKET: 21488 bytes up to 4 times per second.
ODOM_LOGPACKET: 208 bytes up to 14 times per second.

Each incoming position is logged to the raw datafile as a NAVIPAC_LOGPACKET which


occupies 132 bytes. When using NaviPac as navigation system one position is output per
second.

Each incoming Doppler packet is logged to the raw data file as: 1 HEAD_LOGPACKET, 1
SUBPACKET + the raw doppler string which occupies about 150 bytes. The EDO 3050 is
sending one packet a second.

Each incoming pipetracker record is logged to raw data file as a


PIPETRACKER_LOGPACKET, which occupies 170 bytes. It will typically be once a
second.

If on-line filtering is enabled, data is stored in FILTPOS_LOGPACKET, which occupies 102

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 57

bytes. Typically once a second.

Running a line for 1 hour; the raw data file will have the following size:

1: SeaBat 9001 with Doppler-log and pipetracker (9002 will be about twice as big)

SIZE = LOG_HEADER + 1 hour SEABAT9000_LOGPACKET's + 1 hour NAVIPAC_LOGPACKET's + 1 hour DL_LOGPACKET's


+ 1 hour PIPETRACKER_LOGPACKET
= 558 + 60*60*7*268 + 60*60*132 + 60*60*144 + 60*60*170
= 7841358 bytes
= 7.66 Mb

2: SeaBat 8000 with 141 beams, at highest baud-rate

SIZE = LOG_HEADER + 1 hour SEABAT8000_LOGPACKET's + 1 hour NAVIPAC_LOGPACKET's


= 558 + 60*60*30*517 + 60*60*132
= 56311758 bytes
= 54.99 Mb

3: SIS3000 with highest update rate, i.e. lowest range

SIZE = LOG_HEADER + 1 hour SIS3000_LOGPACKET's + 1 hour NAVIPAC_LOGPACKET's


= 558 + 60*60*4*21488 + 60*60*132
= 309902958 bytes
= 295.5 Mb
4: Echoscan at highest baud-rate

SIZE = LOG_HEADER + 1 hour ODOM_LOGPACKET's + 1 hour NAVIPAC_LOGPACKET's


= 558 + 60*60*14*208 + 60*60*132
= 10958958 bytes
= 10.70 Mb
NOTE: THE ABOVE CALCUALTIONS ARE PERFORMED ON OLDER HEADER
VERSIONS SO THE RESULTS ARE NOT THJAT EXACT

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 58

5. Time stamping
The design of NaviScan has been performed with special consideration to time tagging, since
it is of highest importance that each scan is corrected with motion and heading values from
exactly the same time the scan was collected.

The most trust worthy result is achieved when values from different sensors are collected at the
same time. Since the single units supply data with different intervals this is not possible in
practice. Consequently, as a minimum the system must calculate an average value, at the
corresponding time of the controlling unit, e.g. SeaBat.

To obtain maximum accuracy, we have implemented I/O as a multi-thread process running on


the real-time queue. Each sensor is supported by a dedicated thread, which allows exact time-
tagging of data, even when data is arriving asynchronously.

Data is time tagged relative to the internal pc clock with an accuracy of a few milliseconds.
Sub packets are produced with time interpolated value, and logged but also used for online
correction for the displayed scans.
Finding interpolated values:
Let echosounder supply data corresponding to the times T0 T1 T2 T3 etc. and the gyro
corresponding to the times t0 t1 t2 t3 etc. What gyro value must be used for SeaBat value
to the time Ti. If a j with Ti=tj exists, the gyro value corresponding to the time tj is used. If
this is not the case the system must find a k so that tk<Ti<t(k+1) and a gyro value is
calculated as follows:
Gyro(ti) = Gyro(tk) * (ti-tk+1)/(tk-tk+1) + Gyro(tk+1) * (ti-tk)/(tk+1-tk)
To make sure that the interpolated values are trustworthy it is required that all packages
from the various units are tagged on the PC immediately upon receipt of the 1st. byte.

5.1.1 TimeBox absolute time tagging


If the most accurate time tagging is required then NaviScan should be combined with the
EIVA TimeBox (See http://download.eiva.dk/online-
training/Various%20Manuals/TimeBox%20description%201.pdf)
With this in use the sensor data can be time tagged with a accuracy better than 0.1 ms

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA
NaviScan Reference Manual Page 59

DataProc Timetag on
arrival of last Correct time to:
Input Serial
character. Time for arrival of
(Ascii)
(timeGetTime first character.
format *)

Send data and


time to Navibat
Achieve sync and Online
Input Serial Read 1 block
get size of 1 data-
(Binary) from serial input
block

Convert time in packet


Is time present in
Input UDP to timeGetTime
packet?
format..

Timetag on
arrival of data.
(timeGetTime
format *) timeGetTime format :
Time in milliseconds
since windows started.

Online

Input from dataProc Correct for latency/


Start log
(data, time) age if present

Set start time and


syncronize with
reference time.
(timeGetTime format)

Save data :
(time = reference time - Input time)

File: C:\SRC\NAVISCAN\NAVIBAT\NSSETUP\HLP\DOC\NS-REF.DOCX Document: Detailed Release: 11 January 2011


Date: 13-01-11 Author: AFA/OKR Approved by: LDA/AFA

You might also like