www.unavlab.com support@unavlab.com |
Zima USBL Communication protocol specification |
Devices of Zima USBL underwater acoustic tracking system support data pairing using the RS-232 physical layer standard for asynchronous interface (UART) with a 3.3V data line voltage. The connection is made using a four-wire cable with Tx (transmitter), Rx (receiver), Vcc (power) and GND (ground) wires. Without the use of additional repeaters and interface converters, the maximum cable length, for which the correct operation of the interface is guaranteed, is no more than 2 meters.
Default port settings1:
Baudrate: 9600 bit/s
Data bits: 8
Stop bits: 1
Parity: No
Hardware flow control: No
WARNING! Devices are powered by 12 Volt DC source, while the data line voltage is 3.3 V.
The NMEA0183 standard describes the format of text (ASCII) messages at the interactive level.
Sentence example: $PZMA0,0*hh<СR><LF>
Parts of a message (sentence) NMEА0183:
The D2H prefix in the message name means that it is transmitted from the device (Device) to the host system (Host). The H2D prefix in the message name means that it is transmitted from the host system to the device.
Device acknowledgement.
Format: $PTNT0,x*hh<CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
0 | Sentence ID | |
1 | errCode | Error code (see 3.2.) |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Reads the value of the field. In response to this command, the device sends a message IC_D2H_FLD_VAL containing the value of the requested field in case of successful assignment and message IC_D2H_ACK with an error code, in case of an error.
Format: $PZMA1,xx,00*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
1 | Sentence ID | |
1 | Field ID | Field identifier |
2 | Reserved | Shall be ‘00’ |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Sets the value of the field. In response to this command, the device sends a message IC_D2H_FLD_VAL containing the value of the requested field in in case of successful assignment and message IC_D2H_ACK with an error code, in case of an error.
Format: $PZMA2,x,x*hh<CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
2 | Sentence ID | |
1 | Field ID | Field identifier |
2 | Field value | Field value (0..99) |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Requested field value.
Format: $PZMA3,xx,xx,00*hh<CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
3 | Sentence ID | |
1 | Requested field ID | Field identifier |
2 | Value | Requested value |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Reads the value of local parameter.
Format: $PZMA4,xx,00*hh<CR><LF
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
4 | Sentence ID | |
1 | LocDataID | Local parameter ID (see 3.3.) |
2 | Reserved | Reserved, shall be ‘00’ |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Sets the value of a local parameter.
Format: $PZMA5,xx,x.x*hh<CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
5 | Sentence ID | |
1 | LocDataID | Local parameter identifier (see 3.3.) |
2 | LocDataValue | New value to be set |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Value of the requested local parameter.
Format: $PZMA6,xx,x.x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
6 | Sentence ID | |
1 | LocDataID | Local parameter identifier (see 3.3.) |
2 | LocDataValue | Actual parameter value |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Service operation invokation.
Format: $PZMA7,xx,xx*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
7 | Sentence ID | |
1 | ActionID | Service operation identifier (see 3.4.) |
2 | ActionParam | Service operation parameter |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Navigation data (responder-beacon).
Format: $PZMAA,x.x,x.x,x.x,x.x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
A | Sentence ID | |
1 | Azimuth | Azimuth to the base station, ° |
2 | Distance | Slant range to the base station, m |
3 | MSR | Main lobe to side-peak ratio, dB |
4 | Dpl | Doppler shift, Hz |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
A request from the base station is received (responder-beacon).
Format: $PZMAB,x,x.x,x.x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
B | Sentence ID | |
1 | CommandID | Request ID (see 3.5.) |
2 | MSR | Main lobe to side-peak ratio, dB |
3 | Dpl | Doppler shift, Hz |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Request to a remote responder-beacon.
Format: $PZMAС,x,x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
C | Sentence ID | |
1 | TargetID | Address of a remote responder-beacon |
2 | RequestID | Request ID (see 3.5.) |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Requested responder-beacon timeout exceeded.
Format: $PZMAD,x, x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
D | Идентификатор сообщения | |
1 | TargetID | Address of the requested remote responder-beacon |
2 | RequestID | Request identifier (see 3.5.) |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Station has received a response of a requested responder-beacon.
Format: $PZMAE, x,x,x,x.x,x.x,x.x,x.x,x.x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
E | Sentence ID | |
1 | TargetID | Address of the requested remote responder-beacon |
2 | RequestID | Request identifier (see 3.5.) |
2 | dFlag | reserved |
4 | Azimuth | Horizontal angle to the responder-beacon, °. |
5 | Distance | Slant range to the responder-beacon, m |
6 | DataValue | Value of the requested parameter |
7 | MSR | Main lobe to side-peak ratio, dB |
8 | Dpl | Doppler shift, Hz |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Station state.
Format: $PZMAF, x.x,x.x,x.x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
F | Sentence ID | |
1 | Temperature | Water temperature, °С |
2 | Depth | Depth of the base station, m |
3 | isAHRSEnabled | reserved |
4 | TRX_State | Transmitter/Receiver state |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Built-in inclinometer data*.
Format: $PZMAG, x.x,x.x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
G | Sentence ID | |
1 | Roll | Roll, °. 0 - vertical, 0 .. +90 - to the right side, 0 .. -90 - to the left side |
2 | Pitch | Pitch, °. 0 - vertical, 0 .. +90 - to bow, 0 .. -90 - to stern |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
* For devices released after 09.2019
Request of a remote responder-beacon with transmission of a reverse azimiuth.
Format: $PZMAH,x,x,x*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
H | Sentence ID | |
1 | TargetAddress | Address of a remote responder-beacon to request |
2 | RequestID | Command (should be always CDS_DPT_GET (see 3.5.) |
3 | ReverseAzimuthToTheBase | Reverse azimuth* from the responder-beacon to the base station |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
* The azimuth value from the responder-beacon to the base station must be pre-calculated. When using the ZHost application, it happens automatically, if there is a connected system for determining the heading and position of the Zima-B antenna.
Device information.
Format: $PZMA!, c--c,x,c--c,x,x,c--c*hh <CR><LF>
№ | Field/Parameter | Description |
---|---|---|
$ | Sentence start ‘$’ | |
P | Proprietary sentence | |
ZMA | Proprietery code ID | |
! | Sentence ID | |
1 | Sys_moniker | System name |
2 | Sys_version | System version |
3 | Device_Type | Device type (see 3.1.) |
4 | Core_moniker | Acoustic subsystem name |
5 | Core_version | Acoustic subsystem version |
6 | Serial number | Device serial number |
* | NMEA checksum separator | |
hh | NMEA checksum | |
<CR><LF> | end of sentence |
Value | Name | Description |
---|---|---|
0 | DEV_BASE | Zima-B base station |
1 | DEV_BCN | Zima-R responder-beacon |
Value | Name | Description |
---|---|---|
0 | NO_ERROR | Request accepted |
1 | INVALID_SYNTAX | Syntax error |
2 | UNSUPPORTED | Request is not supported |
3 | TRANSMITTER_BUSY | Transmitter is busy |
4 | ARGUMENT_OUT_OF_RANGE | One or more arguments is out of range |
5 | INVALID_OPERATION | Requested operation can not be performed at the moment |
6 | UNKNOWN_FIELD_ID | Unknown/unsupported field ID |
7 | VALUE_UNAVAILIBLE | Requested value is not available at the moment |
8 | RECEIVER_BUSY | Receiver is busy |
9 | WAKE_UP | Energy Saving Management. The responder-beacon sends an error message with this parameter immediately after waking up |
10 | STAND_BY | Energy Saving Management. The responder-beacon an error message with this parameter before going to sleep |
Value | Name | Description |
---|---|---|
0 | DEVICE_INFO | Device information |
1 | LOC_DATA_MAX_REMOTE_TIMEOUT | Remote response timeout, msec |
2 | LOC_DATA_MAX_SUBSCRIBERS | Max. number of responder-beacons (addresses) |
3 | LOC_DATA_PTS_PRESSURE | Indications of the built-in pressure sensor, mBar |
4 | LOC_DATA_PTS_TEMPERATURE | Indications of the built-in temperature sensor,˚С |
5 | LOC_DATA_PTS_DEPTH | Depth of the device, m |
6 | LOC_DATA_CORE_TEMPERATURE | CPU core temperature, ˚С |
7 | LOC_DATA_BAT_CHARGE | Battery voltage, V |
8 | LOC_DATA_PRESSURE_RATING | Max. allowed external hydrostatic pressure, Bar |
9 | LOC_DATA_ZERO_PRESSURE | Pressure at the water surface, mBar |
10 | LOC_DATA_WATER_DENSITY | Water density, kg/m3 |
11 | LOC_DATA_SALINITY | Water salinity, PSU |
12 | LOC_DATA_SOUNDSPEED | Speed of sound, m/s |
13 | LOC_DATA_GRAVITY_ACC | Gravity acceleration, m/s2 |
Value | Name | Description |
---|---|---|
0 | LOC_INVOKE_FLASH_WRITE | Save all settings in built-in flash memory |
1 | LOC_INVOKE_DPT_ZERO_ADJUST | Set current pressure readings as a pressure at the water surface |
2 | LOC_INVOKE_SYSTEM_RESET | Warm system reset |
3 | LOC_INVOKE_STAND_BY | Go to sleep mode |
4 | LOC_INVOKE_UART_OFF | Turn off the UART unit |
| Name | Value | Description | | :— | :— | :— | | CDS_PING | 361 | Ping | | CDS_DPT_GET | 362 | Remote responder-beacon depth | | CDS_STY_SET_0 | 363 | Set salinity 0 PSU | | CDS_STY_SET_1 | 364 | … | | CDS_STY_SET_2 | 365 | … | | CDS_STY_SET_3 | 366 | … | | CDS_STY_SET_4 | 367 | … | | CDS_STY_SET_5 | 368 | … | | CDS_STY_SET_6 | 369 | … | | CDS_STY_SET_7 | 370 | … | | CDS_STY_SET_8 | 371 | … | | CDS_STY_SET_9 | 372 | … | | CDS_STY_SET_10 | 373 | … | | CDS_STY_SET_11 | 374 | … | | CDS_STY_SET_12 | 375 | … | | CDS_STY_SET_13 | 376 | … | | CDS_STY_SET_14 | 377 | … | | CDS_STY_SET_15 | 378 | … | | CDS_STY_SET_16 | 379 | … | | CDS_STY_SET_17 | 380 | … | | CDS_STY_SET_18 | 381 | … | | CDS_STY_SET_19 | 382 | … | | CDS_STY_SET_20 | 383 | … | | CDS_STY_SET_21 | 384 | … | | CDS_STY_SET_22 | 385 | … | | CDS_STY_SET_23 | 386 | … | | CDS_STY_SET_24 | 387 | … | | CDS_STY_SET_25 | 388 | … | | CDS_STY_SET_26 | 389 | … | | CDS_STY_SET_27 | 390 | … | | CDS_STY_SET_28 | 391 | … | | CDS_STY_SET_29 | 392 | … | | CDS_STY_SET_30 | 393 | … | | CDS_STY_SET_31 | 394 | … | | CDS_STY_SET_32 | 395 | … | | CDS_STY_SET_33 | 396 | … | | CDS_STY_SET_34 | 397 | … | | CDS_STY_SET_35 | 398 | … | | CDS_STY_SET_36 | 399 | … | | CDS_STY_SET_37 | 400 | … | | CDS_STY_SET_38 | 401 | … | | CDS_STY_SET_39 | 402 | … | | CDS_STY_SET_40 | 403 | Set salinity 40 PSU | | CDS_SLP_SET_5960 | 404 | Set sleep mode: sleep 59 from 60 seconds | | CDS_SLP_SET_58_60 | 405 | Set sleep mode: sleep 58 from 60 seconds | | CDS_SLP_SET_56_60 | 406 | Set sleep mode: sleep 56 from 60 seconds | | CDS_SLP_SET_52_60 | 407 | Set sleep mode: sleep 52 from 60 seconds | | CDS_SLP_SET_50_60 | 408 | Set sleep mode: sleep 50 from 60 seconds | | CDS_SLP_SET_40_60 | 409 | Set sleep mode: sleep 40 from 60 seconds | | CDS_SLP_SET_30_60 | 410 | Set sleep mode: sleep 30 from 60 seconds | | CDS_SLP_SET_20_60 | 411 | Set sleep mode: sleep 20 from 60 seconds | | CDS_SLP_SET_10_60 | 412 | Set sleep mode: sleep 10 from 60 seconds | | CDS_SLP_SET_NEVER | 413 | Set sleep mode - always on | | CDS_BAT_CHG_GET | 414 | Battery voltage | | CDS_PTS_TMP_GET | 415 | Water temperature | | CDS_PTS_PRS_GET | 416 | External pressure | | CDS_CRE_TMP_GET | 417 | CPU core temperature | | CDS_SLP_GET | 418 | Sleep mode | | CDS_STY_GET | 419 | Salinity | | CDS_CMD_RSV_0 | 420 | Reserved | | CDS_CMD_RSV_1 | 421 | Reserved | | CDS_CMD_RSV_2 | 422 | Reserved | | CDS_CMD_RSV_3 | 423 | Reserved | | CDS_CMD_RSV_4 | 424 | Reserved | | CDS_CMD_RSV_5 | 425 | Reserved | | CDS_CMD_ZDPT_ADJ | 426 | Set current pressure readings as pressure at the water surface | | CDS_USR_CMD_0 | 427 | User command 0 | | CDS_USR_CMD_1 | 428 | User command 1 | | CDS_USR_CMD_2 | 429 | User command 2 | | CDS_USR_CMD_3 | 430 | User command 3 | | CDS_USR_CMD_4 | 431 | User command 4 | | CDS_USR_CMD_5 | 432 | User command 5 | | CDS_USR_CMD_6 | 433 | User command 6 | | CDS_USR_CMD_7 | 434 | User command 7 | | CDS_USR_CMD_8 | 435 | User command 8 | | CDS_USR_CMD_9 | 436 | User command 9 | | CDS_USR_CMD_10 | 437 | User command 10 | | CDS_USR_CMD_11 | 438 | User command 11 | | CDS_USR_CMD_12 | 439 | User command 12 | | CDS_USR_CMD_13 | 440 | User command 13 | | CDS_USR_CMD_14 | 441 | User command 14 | | CDS_USR_CMD_15 | 442 | User command 15 | | CDS_USR_CMD_16 | 443 | User command 16 | | CDS_USR_CMD_17 | 444 | User command 17 | | CDS_USR_CMD_18 | 445 | User command 18 | | CDS_USR_CMD_19 | 446 | User command 19 | | CDS_USR_CMD_20 | 447 | User command 20 | | CDS_USR_CMD_21 | 448 | User command 21 | | CDS_USR_CMD_22 | 449 | User command 22 | | CDS_USR_CMD_23 | 450 | User command 23 | | CDS_USR_CMD_24 | 451 | User command 24 | | CDS_USR_CMD_25 | 452 | User command 25 | | CDS_USR_CMD_26 | 453 | User command 26 | | CDS_USR_CMD_27 | 454 | User command 27 | | CDS_USR_CMD_28 | 455 | User command 28 | | CDS_USR_CMD_29 | 456 | User command 29 | | CDS_USR_CMD_30 | 457 | User command 30 | | CDS_USR_CMD_31 | 458 | User command 31 | | CDS_USR_CMD_32 | 459 | User command 32 | | CDS_RESERVED_0 | 460 | Reserved | | CDS_RESERVED_1 | 461 | Reserved | | CDS_RESERVED_2 | 462 | Reserved | | CDS_RESERVED_3 | 463 | Reserved | | CDS_RESERVED_4 | 464 | Reserved | | CDS_RESERVED_5 | 465 | Reserved | | CDS_RESERVED_6 | 466 | Reserved | | CDS_RESERVED_7 | 467 | Reserved | | CDS_SET_ADDR_01 | 468 | Set address 1 | | CDS_SET_ADDR_02 | 469 | Set address 2 | | CDS_SET_ADDR_03 | 470 | Set address 3 | | CDS_SET_ADDR_04 | 471 | Set address 4 | | CDS_SET_ADDR_05 | 472 | Set address 5 | | CDS_SET_ADDR_06 | 473 | Set address 6 | | CDS_SET_ADDR_07 | 474 | Set address 7 | | CDS_SET_ADDR_08 | 475 | Set address 8 | | CDS_SET_ADDR_09 | 476 | Set address 9 | | CDS_SET_ADDR_10 | 477 | Set address 10 | | CDS_SET_ADDR_11 | 478 | Set address 11 | | CDS_SET_ADDR_12 | 479 | Set address 12 | | CDS_SET_ADDR_13 | 480 | Set address 13 | | CDS_SET_ADDR_14 | 481 | Set address 14 | | CDS_SET_ADDR_15 | 482 | Set address 15 | | CDS_SET_ADDR_16 | 483 | Set address 16 | | CDS_SET_ADDR_17 | 484 | Set address 17 | | CDS_SET_ADDR_18 | 485 | Set address 18 | | CDS_SET_ADDR_19 | 486 | Set address 19 | | CDS_SET_ADDR_20 | 487 | Set address 20 | | CDS_SET_ADDR_21 | 488 | Set address 21 | | CDS_SET_ADDR_22 | 489 | Set address 22 | | CDS_SET_ADDR_23 | 490 | Set address 23 | | CDS____0 | 491 | Reserved | | CDS__1 | 492 | Reserved | | CDS__2 | 493 | Reserved | | CDS__3 | 494 | Reserved | | CDS__4 | 495 | Reserved | | CDS__5 | 496 | Reserved | | CDS__6 | 497 | Reserved | | CDS__7 | 498 | Reserved | | CDS____8 | 499 | Reserved | | CDS_ERR_NSUPP | 500 | Error - request is not supported | | CDS_ERR_NAVAIL | 501 | Error - requested data is not available at the moment | | CDS_ERR_RES_0 | 502 | Error - reserved | | CDS_ERR_RES_1 | 503 | Error - reserved | | CDS_ERR_RES_2 | 504 | Error - reserved | | CDS_ERR_RES_3 | 505 | Error - reserved | | CDS_ERR_RES_4 | 506 | Error - reserved | | CDS_ERR_RES_5 | 507 | Error - reserved | | CDS_ERR_RES_6 | 508 | Error - reserved | | CDS_ERR_BAT_LOW | 509 | Low battery voltage |