Skip to content

Commit

Permalink
Added EA440 protocol to transmit SSPs to the KM EA440 software using …
Browse files Browse the repository at this point in the history
…the KM EM format
  • Loading branch information
eriffon authored and giumas committed Jan 14, 2025
1 parent 85e7809 commit 3488377
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 4 deletions.
Binary file added docs/_static/ea440_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/ea440_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/ea440_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/ea440_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/ea440_5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions docs/app_b_connection_settings.rst
Original file line number Diff line number Diff line change
Expand Up @@ -444,3 +444,69 @@ not currently known thus the user must confirm reception in the acquisition syst
:figclass: align-center

While running PDS2000 in acquisition mode, you can verify reception in the Status displays and the “Raw Data” displays. Check the date, time, latitude, longitude against what you sent from SSP package.

Kongsberg EA440
---------------

The Konsgsberg EA440/EA640 single-beam echo sounder data acquisition system accepts SVP transmissions from the *Sound Speed* package. A method to verify reception of the cast is not currently known thus the user should confirm reception in the acquisition system.

In the *Setup* tab of the EA440 software, open the *Installation* window and under *I/O Setup*, configure the IP address and port number where the casts transmitted from the *Sound Speed* package should be received (:numref:`ea440_1_fig`).

.. _ea440_1_fig:

.. figure:: ./_static/ea440_1.png
:width: 600px
:align: center
:alt: alternate text
:figclass: align-center

Add a new LAN Port to receive casts from SSP package.

Under *Sensor Installation*, add a new sensor with type *Sound Velocity Profile EM*. Select the newly created LAN Port as the port associated with this sensor. Make sure that the S01 datagram is enabled (:numref:`ea440_2_fig`).

.. _ea440_2_fig:

.. figure:: ./_static/ea440_2.png
:width: 600px
:align: center
:alt: alternate text
:figclass: align-center

Add a new sensor in the EM S01 format to decode casts from SSP package.

Open the *Monitor* window to verify successfull reception of a cast from the *Sound Speed* package (:numref:`ea440_3_fig`). Make sure that the *Sound Speed* package is properly configured with an Output client using the EA440 protocol to accomplish this test.

.. _ea440_3_fig:

.. figure:: ./_static/ea440_3.png
:width: 600px
:align: center
:alt: alternate text
:figclass: align-center

Verify successfull reception of a cast from the *Sound Speed* package using the *Monitor* window

In the *Setup* tab of the EA440 software, open the *Environment* window and under *Water Column*, make sure that the sound speed and temperature sources are set to *Profile* (:numref:`ea440_4_fig`).

.. _ea440_4_fig:

.. figure:: ./_static/ea440_4.png
:width: 600px
:align: center
:alt: alternate text
:figclass: align-center

Source selection for sound speed and temperature

Under *Sound Velocity Profile*, select *Profile From Network* as source. Reception of a new cast from the *Sound Speed* package should immediately update in the sound speed plot (:numref:`ea440_5_fig`).

.. _ea440_5_fig:

.. figure:: ./_static/ea440_5.png
:width: 600px
:align: center
:alt: alternate text
:figclass: align-center

Sound speed profile received from the *Sound Speed* package and displayed in the EA440 software

5 changes: 3 additions & 2 deletions hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,9 @@ def new_client(self):
while True:
# noinspection PyCallByClass
protocol, ok = QtWidgets.QInputDialog.getText(self, "New client",
"Input the protocol (SIS, KCTRL, HYPACK, PDS2000, or QINSY)",
QtWidgets.QLineEdit.EchoMode.Normal,
"Input the protocol (" \
"SIS, KCTRL, EA440, HYPACK, PDS2000, or QINSY)",
QtWidgets.QLineEdit.Normal,
"SIS")
if not ok:
return
Expand Down
11 changes: 9 additions & 2 deletions hyo2/ssm2/lib/client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def send_cast(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) -> bool

logger.info("transmitting to %s: [%s:%s:%s]" % (self.name, self.ip, self.port, self.protocol))

if self.protocol == "HYPACK":
if (self.protocol == "HYPACK"):
success = self.send_hyp_format(prj=prj)
else:
success = self.send_kng_format(prj=prj, server_mode=server_mode)
Expand All @@ -51,6 +51,9 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) -
if (self.protocol == "QINSY") or (self.protocol == "PDS2000"):
kng_fmt = Dicts.kng_formats['S12']
logger.info("forcing S12 format")
if (self.protocol == "EA440"):
kng_fmt = Dicts.kng_formats['S01']
logger.info("forcing S01 format")

apply_thin = True
apply_12k = True
Expand All @@ -60,6 +63,9 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) -
tolerances = [0.001, 0.005, 0.01, 0.05, 0.1, 0.5]
elif self.protocol == "PDS2000":
apply_12k = False
elif self.protocol == "EA440":
apply_12k = False
logger.info("bypassing the 12k meter depth extension")

tx_data = None
for tolerance in tolerances:
Expand Down Expand Up @@ -91,9 +97,10 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) -
return self._transmit(tx_data)

def send_hyp_format(self, prj: 'SoundSpeedLibrary') -> bool:
logger.info("using hyp format")
logger.info("using hypack format")
calc = Calc()
tx_data = calc.convert(prj.ssp)

return self._transmit(tx_data)

def _transmit(self, tx_data: Union[bytes, str]) -> bool:
Expand Down
1 change: 1 addition & 0 deletions hyo2/ssm2/lib/profile/dicts.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ def first_match(cls, dct, val):
("PDS2000", 2),
("QINSY", 3),
("KCTRL", 4),
("EA440", 5),

])

Expand Down

0 comments on commit 3488377

Please sign in to comment.