Testing and Grabbing SeaTalk1 Datagrams

This forum is for discussing hardware (electronics) and software design aspects of multiplexers in general.
Luis Sa
Site Admin
Posts: 846
Joined: Thu May 04, 2017 4:12 am

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by Luis Sa » Tue Dec 03, 2019 10:46 pm

Hello,

About datagrams ST=23 and ST=27 (water temperature)

Here is the Thomas Knauf description of these datagrams:

Code: Select all

 23  Z1  XX  YY  Water temperature (ST50): XX deg Celsius, YY deg Fahrenheit
                 Flag Z&4: Sensor defective or not connected (Z=4)
                 Corresponding NMEA sentence: MTW
 27  01  XX  XX  Water temperature: (XXXX-100)/10 deg Celsius
                 Corresponding NMEA sentence: MTW
In the present implementation "31" bin file, I use a timer to ignore ST=23 if ST=27 (more precise value) has been received during the past 5 seconds. So 32St responds this way:

Code: Select all

ST=23 01 0E 39
$IIMTW,14,C*08
ST=27 01 00 F8
$IIMTW,6338.8,C*15
but if ST=23 is preceded by ST=27, then ST=23 will not output the sequence:

Code: Select all

ST=27 01 00 F8
$IIMTW,6338.8,C*15
ST=23 01 0E 39
Auxiliar value stored!
Now the Raymarine box:

Code: Select all

ST=23 01 0E 39
$IIMTW,14.0,C*16
ST=27 01 00 F8
$IIMTW,-10.0,C*3F
I noted the following observations: (i) the box repeats the sentence every 10 seconds or so (did not measured) instead of every 1 second or so for the other values. This is admissible. We do not repeat values. We sent the sentence once after the reception of the datagram. The box ignores the Z&4 flag in ST=23. If datagram ST=23 follows datagram ST=27, it will be ignored as we do in the multiplexer! :) . Now let me check the extreme value 6338.8 Celsius. We take the bytes 00 F8 and convert them, in reverse order to decimal F800=63488. We subtract 100 to get 63388 and divide by 10 to get 6333.8 Celsius. This is an impossible value! Let us try with a more conventional value, for example ST=27 01 AB 01. 1AB=427...subtracting and dividing ... gives 32.7 Celsius. Both the box and the 32ST convert to $IIMTW,32.7,C*15 which is correct.

Conclusion: no change on these datagrams

Regards, Luis

Luis Sa
Site Admin
Posts: 846
Joined: Thu May 04, 2017 4:12 am

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by Luis Sa » Wed Dec 04, 2019 1:56 am

Hello,

Notes on GPS (Datagrams 50 51 52 53 56 & 58)
  • [ST=50 transmits latitude with 2 decimal cases for minutes
    ST=51 transmits longitude with 2 decimal case for minutes
    ST=52 transmits speed over ground (SOG)
    ST=53 transmits coarse over ground (COG)
    ST=54 transmits GMT time
    ST=56 transmit date
    ST=58 transmits latitude & longitude with 3 decimal cases for minutes
The multiplexer converts these values to RMC sentence. It sends this sentence only when it receives ST=53 if at least it has a value of latitude or longitude. Therefore if neither one of ST=50, ST=51 or ST=58 have been received before, no Nmea 0183 sentence is sent when ST=53 arrives. If datagram ST=58 has arrived it will be used and ST=50 and ST=51 will be unused even if they are more recent that ST=58. I will check this and compare it with the Raymarine bridge. The RMC Nmea 0183 sentence is as follows:

Code: Select all

RMC - Recommended Minimum Navigation Information
This is one of the sentences commonly emitted by GPS units.
                                                          12
        1         2 3       4 5        6  7   8   9    10 11|  13
        |         | |       | |        |  |   |   |    |  | |   |
 $--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a,m,*hh<CR><LF>
Field Number:
1.  UTC Time of postion
2.  Status, A = Valid, V = Warning
3.  Latitude
4.  N or S
5.  Longitude
6.  E or W
7.  Speed over ground, knots
8.  Track made good, degrees true
9.  Date, ddmmyy
10. Magnetic Variation, degrees
11. E or W
12. FAA mode indicator (NMEA 2.3 and later)
14. Checksum
A status of V means the GPS has a valid fix that is below an internal quality threshold, e.g. because the dilution of precision is too high or an elevation mask test failed. Example:  
GNRMC,001031.00,A,4404.13993,N,12118.86023,W,0.146,,100117,,,A*7B
Regards, Luis

Luis Sa
Site Admin
Posts: 846
Joined: Thu May 04, 2017 4:12 am

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by Luis Sa » Wed Dec 04, 2019 2:16 am

Hello,

About datagrams ST=50 ST=51 ST=52 ST=53 ST=56 & ST=58 (GPS) - part 1

After power up (no stored values in memory) we send ST=50 followed by ST=53 in the 32ST we get:

Code: Select all

ST=50 02 04 81 72
Auxiliar value stored!
ST=53 B0 19
$GPRMC,,,4293.13,S,,,,321,,,,*08
Repeat it for the Raymarine box:

Code: Select all

$IIVTG,321.0,T,,M,,N,,K*77
Again after power up we send ST=58 to the box:

Code: Select all

ST=58 15 04 0E 74 0C AB B4
$IIGLL,0403.700,S,01243.956,W,,A,A*51
Again to the box after power up the sequence

Code: Select all

ST=58 15 04 0E 74 0C AB B4
ST=52 01 00 B5
ST=53 B0 19
$IIGLL,0403.700,S,01243.956,W,,A,A*51
$IIVTG,321.0,T,,M,4633.6,N,85.3,K*7D
Without resetting power we sent one ST=54 D1 06 0E and the box echoes the sentences but it adds time:

Code: Select all

ST=54 D1 06 0E      sent just once
$IIBWC,140146,,,,,,T,,M,,N,*07
$IIBWC,140148,,,,,,T,,M,,N,*09
$IIBWC,140150,,,,,,T,,M,,N,*00
$IIBWC,140152,,,,,,T,,M,,N,*02
$IIBWC,140154,,,,,,T,,M,,N,*04
... and so on ...
Now we send

Code: Select all

ST=56 B1 12 12
$IIZDA,,18,11,2018,,*5D    ...  very sparse
This is too long. I will stop now and follow the analysis in part 2. I just leave here the meaning of sentences GLL VTG BWC and ZDA.

Code: Select all

GLL - Geographic Position - Latitude/Longitude
        1       2 3        4 5         6 7   8
        |       | |        | |         | |   |
 $--GLL,llll.ll,a,yyyyy.yy,a,hhmmss.ss,a,m,*hh<CR><LF>
Field Number:
1. Latitude
2. N or S (North or South)
3. Longitude
4. E or W (East or West)
5. UTC of this position
6. Status A - Data Valid, V - Data Invalid
7. FAA mode indicator (NMEA 2.3 and later)
8. Checksum
Example: $GNGLL,4404.14012,N,12118.85993,W,001037.00,A,A*67

Code: Select all

VTG - Track made good and Ground speed
         1  2  3  4  5  6  7  8 9   10
         |  |  |  |  |  |  |  | |   |
 $--VTG,x.x,T,x.x,M,x.x,N,x.x,K,m,*hh<CR><LF>
Field Number:
1.  Course over ground, degrees True
2.  T = True
3. Course over ground, degrees Magnetic
4.  M = Magnetic
5.  Speed over ground, knots
6.  N = Knots
7.  Speed over ground, km/hr
8.  K = Kilometers Per Hour
9.  FAA mode indicator (NMEA 2.3 and later)
10. Checksum

Code: Select all

BWC - Bearing & Distance to Waypoint - Great Circle
                                                         12
        1         2       3 4        5 6   7 8   9 10  11|    13 14
        |         |       | |        | |   | |   | |   | |    |   |
 $--BWC,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x.x,T,x.x,M,x.x,N,c--c,m,*hh<CR><LF>
Field Number:
1.  UTC Time or observation
2.  Waypoint Latitude
3.  N = North, S = South
4.  Waypoint Longitude
5.  E = East, W = West
6.  Bearing, degrees True
7.  T = True
8.  Bearing, degrees Magnetic
9.  M = Magnetic
10. Distance, Nautical Miles
11. N = Nautical Miles
12. Waypoint ID
13. FAA mode indicator (NMEA 2.3 and later, optional)
14. Checksum
Example 1: $GPBWC,081837,,,,,,T,,M,,N,*13
Example 2: GPBWC,220516,5130.02,N,00046.34,W,213.8,T,218.0,M,0004.6,N,EGLM*11

Code: Select all

ZDA - Time & Date - UTC, day, month, year and local time zone
        1         2  3  4    5  6  7
        |         |  |  |    |  |  |
 $--ZDA,hhmmss.ss,xx,xx,xxxx,xx,xx*hh<CR><LF>
Field Number:
1. UTC time (hours, minutes, seconds, may have fractional subsecond)
2. Day, 01 to 31
3. Month, 01 to 12
4. Year (4 digits)
5. Local zone description, 00 to +- 13 hours
6. Local zone minutes description, 00 to 59, apply same sign as local hours
7. Checksum
Example: $GPZDA,160012.71,11,03,2004,-1,00*7D
Regards Luis

Luis Sa
Site Admin
Posts: 846
Joined: Thu May 04, 2017 4:12 am

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by Luis Sa » Wed Dec 04, 2019 3:05 am

Hello,

About datagrams ST=50 ST=51 ST=52 ST=53 ST=56 & ST=58 (GPS) - part 2

I stopped part 1 when I was trying to find which datagram forces the Raymarine box to output a RMC sentence. In the specifications of some available SeaTalk1 to Nmea 0183 converters, I read that they store values obtained from the datagrams and sent the RMC when a given sentence comes. As I explained above, I am doing almost the same and I output the RMC sentence when ST=53 arrives (and if there are lat/lon values available in memory). I will try now the succession of all the datagrams related to GPS. The following "send file" containing the following was sent just once:

Code: Select all

ST=50 02 04 81 72
ST=51 02 0C 11 2B
ST=52 01 00 B5
ST=53 B0 19
ST=54 D1 06 0E
ST=56 B1 12 12
ST=58 15 04 0E 74 0C AB B4
and no RMC was generated by the Raymarine box. Here is what it sent out

Code: Select all

03:03:26  $IIBWC,140147,,,,,,T,,M,,N,*06
03:03:26  $IIGLL,0403.700,S,01243.956,W,140147,A,A*56
03:03:27  $IIVTG,321.0,T,,M,4633.6,N,85.3,K*7D
03:03:28  $IIBWC,140149,,,,,,T,,M,,N,*08
03:03:28  $IIGLL,0403.700,S,01243.956,W,140149,A,A*58
03:03:30  $IIBWC,140151,,,,,,T,,M,,N,*01
03:03:30  $IIGLL,0403.700,S,01243.956,W,140151,A,A*51
03:03:32  $IIZDA,140153,18,11,2018,,*5F
03:03:32  $IIVTG,321.0,T,,M,4633.6,N,85.3,K*7D
03:03:32  $IIBWC,140153,,,,,,T,,M,,N,*03
03:03:32  $IIGLL,0403.700,S,01243.956,W,140153,A,A*53
03:03:34  $IIBWC,140155,,,,,,T,,M,,N,*05
03:03:34  $IIGLL,0403.700,S,01243.956,W,140155,A,A*55
03:03:36  $IIBWC,140157,,,,,,T,,M,,N,*07
03:03:36  $IIGLL,0403.700,S,01243.956,W,140157,A,A*57
03:03:37  $IIVTG,321.0,T,,M,4633.6,N,85.3,K*7D
03:03:38  $IIBWC,140159,,,,,,T,,M,,N,*09
03:03:38  $IIGLL,0403.700,S,01243.956,W,140159,A,A*59
03:03:40  $IIBWC,140201,,,,,,T,,M,,N,*07
03:03:40  $IIGLL,0403.700,S,01243.956,W,140201,A,A*57
03:03:42  $IIZDA,140203,18,11,2018,,*59
03:03:42  $IIVTG,321.0,T,,M,4633.6,N,85.3,K*7D
03:03:42  $IIBWC,140203,,,,,,T,,M,,N,*05
03:03:42  $IIGLL,0403.700,S,01243.956,W,140203,A,A*55
03:03:44  $IIBWC,140205,,,,,,T,,M,,N,*03
03:03:44  $IIGLL,0403.700,S,01243.956,W,140205,A,A*53
... I aborted here as it was sending this continously
In a separated experiment I noticed that the box does not responds to ST=50 or ST=51 unless it has the "other value" in memory. So if we send ST=50 and ST=51 there is no response to ST=50 but, when ST=51 arrives, it generates a GLL using the latitude learned and stored after ST=50. It is like that:

Code: Select all

ST=50 02 04 81 72
ST=51 02 0C 11 2B
$IIGLL,0447.370,N,01228.330,W,,A,A*48
Before I conclude let me paste here what I obtain with the 32ST. I had already analysed ST=50 followed by ST=53. It genererates an incomplete RMC because the 32ST only knows the value of latitude (coming with ST=50) and Coarse Over Ground (coming with ST=53). So, placing ST=53 in the end of the "Send file" we got this

Code: Select all

ST=50 02 04 81 72
Auxiliar value stored!
ST=51 02 0C 11 2B
Auxiliar value stored!
ST=52 01 00 B5
Auxiliar value stored!
ST=54 D1 06 0E
Auxiliar value stored!
ST=56 B1 12 12
Auxiliar value stored!
ST=58 15 04 0E 74 0C AB B4
Auxiliar value stored!
ST=53 B0 19
$GPRMC,140145,A,403.700,S,1243.956,W,25.6,321,181118,0,W*51
Conclusion: I must revise the RMC as I note the number of commas "," varies (!!!). I may generate sentences like the Raymarine box in addition to store values to build the RMC sentence when: ST=53 arrives? or ST=58? or both? I will resolve these questions when I will revise this. This post will help me a lot and I just need to work on the software, putting the hardware apart.

Regards, Luis

Luis Sa
Site Admin
Posts: 846
Joined: Thu May 04, 2017 4:12 am

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by Luis Sa » Wed Dec 04, 2019 7:02 pm

Hello,

About datagrams ST=84 ST=89 ST=99 and ST=9C

I will resume what the multiplexer does with these. ST=99 brings the Magnetic Variation which is stored to be used in the the Compass Heading sentence (HDM) extracted from ST=84 ST=9C or ST=89 and on the RMC sentence. ST=84 and ST=9C respond in the same way. It could also generate HVM as in the Raymarine box. ST=84 ST=89 and ST=9C extract Compass Heading and generate the HDM sentence. The value of Compass Heading (if available) is used in the generation of the sentence VHW (Speed Over Water) in response to ST=20 or ST=26.
About ST=84 on Raymarine box:

Code: Select all

ST=84 36 D8 5A 00 00 00 00 00
$IIHDG,318.0,,,,*43
$IIHDM,318.0,M*28
About ST=84 on the 32ST:

Code: Select all

ST=84 36 D8 5A 00 00 00 00 00
$HCHDM,318,M*3D
About ST=89 on Raymarine box:

Code: Select all

ST=89 32 18 00 00
no response
About ST=89 on the 32ST:

Code: Select all

ST=89 32 18 00 00
$HCHDM,318,M*3D
About ST=99 on Raymarine box:

Code: Select all

ST=99 00 02
02:51:23  $IIHVM,2,W*36
02:51:23  $IIBWC,,,,,,,T,,M,,N,*01
02:51:25  $IIBWC,,,,,,,T,,M,,N,*01
02:51:27  $IIBWC,,,,,,,T,,M,,N,*01
02:51:29  $IIBWC,,,,,,,T,,M,,N,*01
02:51:31  $IIBWC,,,,,,,T,,M,,N,*01
02:51:33  $IIHVM,2,W*36
... as you see response is very sparse ...
About ST=99 on the 32ST:

Code: Select all

ST=99 00 02
Auxiliar value stored!
Note that the response to ST=84 and ST=89 by the 32ST also includes the Magnetic Variation if a previous ST=99 was received and stored. See this on the 32ST:

Code: Select all

ST=99 00 02
Auxiliar value stored!
ST=89 32 18 00 00
$HCHDG,318,,,2,W*33
Conclusion: it looks fine but I will do a recheck when I revise the code.

Regards, Luis

Luis Sa
Site Admin
Posts: 846
Joined: Thu May 04, 2017 4:12 am

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by Luis Sa » Thu Dec 05, 2019 4:21 am

Hello,

That was my last post about a review of the SeaTalk1 to Nmea0183 conversions. My next job is to revise carefully one by one all the datagrams conversions and adding features that the Raymarine box showed to me!

Any comments, questions or corrections can be posted posted here after this post! They will very welcome and appreciated!

Regards, Luis

ga2019
Posts: 3
Joined: Sat May 25, 2019 2:29 pm

Re: Testing and Grabbing SeaTalk1 Datagrams

Post by ga2019 » Wed Oct 28, 2020 3:35 pm

Hello,
Does anyone knows below seatalk data?
$STALK,60,0c,01,88,14,00,00,00,00,00,00,00,00,01,00

Post Reply