Driver to decode profiler beam data points, from an Ulvertech SC1 Profiler Data Telegram or an Ulvertech SD Profiler Data Telegram. Defaulty, the driver automatically determines the type of data output.
Currently, the driver only works in passive mode, i.e. it will not decode the timetags from the data strings. Therefore, determining a time latency might be important. This latency can be considered to be the time between the actual scan being ready and when de first data is available on the COM port. The driver itself corrects for data transfer (using port settings) and the scan duration (using number of steps and step time).
Development of an active driver is on hold, since during tests it was obvious that sending (TT) commands while the Ulvertech is scanning (a scan can take considerable time), can hang up the Ulvertech system.
Note. In passive mode, the Ulvertech system must be set up for Continuous Output Profiler Data.
Note. QPS strongly recommends using the SC1 Profiler Data format since this format contains a flag for scan direction, which is required to get accurate timetags for pitch-roll-heave corrections. Data output is always port to starboard (except for even heads in mirror mode), but every other scan will be scanned from starboard to port. The SD Profiler Data Output (2) format including roll compensation angles also contains the scan direction flag, but this format has not been tested real-time. The SD Profiler Data Output (2) format with just the O.S.P. data does not contain a scan direction flag. See decoding notes for more information.
The O.S.P. data (depth, temperature, water density, speed of sound) can also be decoded from a Bathy Plus (O.S.P.) telegram. See "Ulvertech Bathy (Depth & Altitude)" driver under the underwater sensor drivers
|Driver||Ulvertech Profiler||Interface Type||Serial||Driver Class Type||Terminated <LF>|
|UTC Driver||Yes and No||Input / Output||Input||Executable||DrvUlvertechProfiler.exe|
SD telegrams contain separator bytes that can be identical to the terminator byte(s). The termination byte is assumed to be a <LF> (line feed) byte, but this can be altered in the registry settings. The QINSy driver needs to be able to distinguish the various parts of the SD telegram. For this purpose, it is looking for '[' and ',' (comma) characters in the data string. It is therefore important that the separator byte is not ',' (comma). The header fields in a SC1 output telegram are separated by using the occurences of zeros in the data string.
The default mode is that the driver automatically determines the type of data output. However, SC1 Profiler Data and SD Profiler Data Output (1) telegrams do not contain information on the scan step mode, so the driver will skip decoding the first input string since this is needed to determine the number of beams.
Ulvertech data is always port to starboard regardless of scan direction, with port 0 degrees and starboard 180 degrees, except for even numbered heads in mirror mode. Since QINSy expects the nadir beam to be 0 degrees and beam angles positive to starboard, the beam angle values in the profiler data are corrected by subtracting 90 degrees. The QINSy driver, however, will always store the data points in the direction from port to starboard, so that fixed beam number can be used in the echosounder settings to exclude beams.
Note. As there are two transducers in each profiler head (at 90 degrees to each other), there is one timetag for two data points from each head. If the selected scan sector is more than 90 degrees, the transducer heads will be doing the full 0 degrees to 180 degrees sweep. However, if the scan sector is less than 90 degrees, only one transducer is used depending on which one is appropriate. Start of scan time (t0) is when the head starts to do its scan, so it would apply to to 0 degrees or 180 degrees if in opposite direction. If less than 90 degrees then the start of scan timetag must apply to the angle at start of scan depending on direction again.
Note. The center beam (i.e. beam 101 if 201 data points are scanned) is always considered to be observed by the port transducer in a head. It will have the minimum (0.0) or maximum (scan duration) time delay with respect to start of scan time (t0), depending on whether the scan direction is port to starboard of vice versa.
SC1 Profiler Data Telegrams will always contain all data points giving zeros for points not scanned. In this case the driver corrects the timetag of the first data point only if the scan sector is less than 90 degrees.
SD Profiler Data Telegrams only contain the data pionts for the scan sector selected by the operator to save sending null data. If the scan sector is more than 90 degrees, the head is actually scanning 180 degrees, so the driver calculates where the head actually started scanning and corrects the timetag of the first data point.
In passive mode, the start of scan timetags from the profiler data telegrams are not used to timetag the data points (beams). Instead the first byte of the telegram is timetagged (corrected for the time needed to transfer the data bytes) and the duration of the scan is calculated to determine the timetag of the first data point (t0). In both passive and active mode, a correction is made for added or skipped points if the start of scan timetag does not correspond to the timetag of the first datapoint in the profiler telegram, as explained above.
See also the "Ulvertech Bathy" and "Ulvertech Profiler" drivers under the underwater sensor drivers.
Select driver "Ulvertech Profiler (Head 1)" to decode the data from the head with slot number 1 in case of the SD format, and the data from the starboard head in case of the SC1 format. Select driver "Ulvertech Profiler (Head 2)" to decode the data from the head with slot number 2 in case of the SD format, and the data from the port head in case of the SC1 format. The same driver (and COM port) can be used to decode the OSP readings from the SD Output (2) telegram or the sound velocity value from a SC1 data telegram.
See also the description of the "Ulvertech Profiler" under the underwater sensor drivers.
When interfacing a dual head system the input cable from the Ulvertech system has to be split into two separate COM ports, if data from both heads is to be decoded.
If the active version of the Ulvertech driver becomes available, it is important that only one of the COM ports has a two-way cable connection, otherwise the QINSy commands will not reach the Ulvertech.
Drivers IO Notes
Command line option "PAS" will start the driver in passive mode, "ACT" will start driver in active mode. The latter option is not supported yet, since QPS has encountered some problems when testing this option.
Command line option "REV" (presently enabled) will reverse the scan direction as decoded from the profiler telegrams. Ulvertech Engineering has confirmed that the scan direction flag in the SC1 profiler data string is wrong and that it outputs a '0' when going from port to starboard and a '1' in case of starboard to port.
Command line option "SC1" will only decode telegrams in SC1 format, whereas "SD1" and "SD2" will only decode telegrams in SD format. By default, the driver automatically determines the Ulvertech format.
Command line option "S1" or just "1" will decode the first head in a Profiler Data telegram, i.e. the data from the head with slot number 1 in case of the SD format, and the data from the starboard head in case of the SC1 format. Option "P2" or just "2" will decode the second head in a Profiler Data telegram, i.e. the data from the head with slot number 2 in case of the SD format, and the data from the port head in case of the SC1 format.
These two options are predefined in Drivers.io. The driver also supports slot numbers 3 to 6 which can be used in case of the SD format. To use another head, find all entries for DrvUlvertechProfiler in Drivers.io, and replace "DrvUlvertechProfiler.exe 1" by "DrvUlvertechProfiler.exe N", where "N" is the slot to decode.
Command line option "200" will tell the driver to expect data in scan mode of 200 (201 data points), and "180" will prepare the driver for scan mode of 180 (181 data points). By default, the driver will use the step mode from the input string (SD Output (2) format) or automatically determine the number of data points.
Drivers IO Notes (Advanced)
Command line option "PREV" will tell the driver to use the timetag of the first byte in a new Ulvertech telegram for the update time (start time of scan) of the following telegram. Correspondingly, the timetag for the current telegram (start time of scan) is obtained from the update time of the previous telegram. System latency is still applied, but no scan duration correction is applied to the start time of scan. This option assumes that the Ulvertech profiler system starts a new scan immediately after an output telegram has been sent. Remember, the Ulvertech system must be set up for Continuous Output Profiler Data. To use this option, find all entries for DrvUlvertechProfiler in Drivers.io, and add "PREV" to the command lines.
Option "ROLL" will decode the roll angle values from the SD Output (2) telegrams, and add them to the beam angles. By default, this option is not enabled, since it has not been tested. The correction angle values are only valid if the Bathy Plus (O.S.P.) Head is the Enhanced type with Motion Sensors, otherwise they are meaningless. To use this option, add "ROLL" to all DrvUlvertechProfiler entries in Drivers.io.