Một tập hợp các chương trình làm việc với giao thức nmea. Các tính năng của giao thức NMEA2000 và cách sử dụng nó. Tin nhắn NMEA gửi đi

Tôi cần kiểm tra một ứng dụng sử dụng dữ liệu GNSS qua giao thức NMEA. Đó là do tôi đang thực hiện một dự án cho chương trình dẫn đường máy bay, việc thử nghiệm trên không đương nhiên rất tốn kém, việc lái ô tô có máy thu GNSS trên mặt đất không đặc biệt thuận tiện nên tôi muốn có dữ liệu giao thức NMEA từ thiết bị được cho là đang di chuyển trên một cổng song song ảo khi ngồi ở bàn làm việc của tôi. Lúc đầu, tôi đang tìm kiếm phần mềm khác, tôi nghĩ mình sẽ tìm thấy thứ gì đó phù hợp, nhưng hầu hết đều phải trả phí và các điều khiển mô phỏng dữ liệu không thuận tiện lắm, mặc dù chúng mô phỏng hầu hết tất cả các thông số của tiêu chuẩn NMEA. Nhưng tôi cần thứ gì đó đơn giản mô phỏng tọa độ, tốc độ, về cơ bản không có gì hơn, và tôi cần các điều khiển khá thuận tiện và hợp lý. Vì vậy tôi phải viết một ứng dụng kiểu này bằng C#.

Fly_nmea


NMEA (“Hiệp hội Điện tử Hàng hải Quốc gia”) - tên đầy đủ là “NMEA 0183” - một giao thức văn bản để liên lạc giữa các thiết bị hàng hải (thường là dẫn đường).
Dữ liệu được truyền dưới dạng câu. Mẫu đề xuất như sau:
$AAAAA[,<данные>]*hh , Ở đâu:
$ - ký hiệu bắt đầu câu (mã 24h);
AAAAA - Địa chỉ (tên) gồm năm ký tự của ưu đãi;
[, <данные>] - danh sách các trường dữ liệu được phân tách bằng dấu phẩy (mã 2Сh);
* - dấu tổng kiểm tra (mã 2Ah);
hh - tổng kiểm tra.

Câu ví dụ:
GGA - Dữ liệu vị trí GPS
Thời gian, địa điểm và dữ liệu liên quan đến quan sát.
$GPGGA,hhmmss.sss,llll.ll,a,yyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxx*hh

Tôi cần phải mô phỏng bốn dòng:

  • GLL - Tọa độ vị trí
  • GSV – Vệ tinh nhìn thấy được
  • RMC – Bộ dữ liệu tối thiểu được khuyến nghị cho GPS và GLONASS
  • GSA - Hệ số suy giảm độ chính xác dùng cho vệ tinh dẫn đường
Việc thi đua được tổ chức theo trình tự sau:
  • chúng tôi thiết lập tọa độ ban đầu trong hệ thống WGS-84
  • sau đó chúng ta chuyển sang một phép chiếu phẳng, ví dụ Mercator (để chuyển đổi tọa độ, tôi đã sử dụng thư viện tạo sẵn trong C#)
  • Biết tọa độ mặt phẳng x, y, h, ta thực hiện tính chất vật lý chuyển động của máy bay bằng cách sử dụng các tham số thay đổi thông qua giao diện đồ họa như: độ lăn, độ cao, tốc độ
  • chuyển tọa độ phẳng sang tọa độ B, L, H của hệ WGS-84
  • chúng tôi tạo thành một gói tin nhắn tiêu chuẩn NMEA từ bốn dòng bắt buộc
  • gửi chúng đến cổng song song ảo
Fly_nmea + Cảm biến Android
Để thử nghiệm thuận tiện hơn, tôi cũng điều chỉnh việc tiếp nhận dữ liệu từ cảm biến Android (góc nghiêng). Android gửi hai dòng như:
  • "Góc:\t236.04152\t-1.0\t-3.0"
  • "Tài khoản:\t-0.46309182\t-0.14982383\t-10.56939"
Trong ứng dụng mô phỏng, tôi chấp nhận chúng và dựa trên các góc nghiêng mà thay đổi các tham số:
  • Sân bóng đá
Trong ứng dụng mô phỏng, bạn có thể chuyển từ điều khiển thông qua giao diện chương trình sang Android Sensor.
Kết nối Fly_nmea
Để mô phỏng các cổng COM, Trình mô phỏng cổng nối tiếp ảo cũng rất hữu ích; bạn sẽ cần định cấu hình kết nối của hai cổng COM ảo, ví dụ: COM1<->COM6 và chương trình Fly_nmea sẽ gửi dữ liệu tới COM6 và tới COM1, chương trình sử dụng giao thức NMEA sẽ nhận dữ liệu đó.

Phần kết luận

Nói chung, tôi đã dành nhiều thời gian hơn để tìm kiếm phần mềm như vậy và không tìm thấy thứ gì có thể khiến tôi hoàn toàn hài lòng, tôi đã nhanh chóng tự viết nó. Ngoài dự án mà tôi đang thực hiện, tôi cũng đã kết nối khá thành công trình mô phỏng với các chương trình hiểu giao thức NMEA, chẳng hạn như hành tinh 2Gis và SAS.



FlyNMEA và cảm biến android (dự án truyền dữ liệu từ cảm biến qua UDP)

NMEA 0183(từ " Hiệp hội Điện tử Hàng hải Quốc gia") - một tiêu chuẩn xác định giao thức văn bản để liên lạc giữa các thiết bị hàng hải (thường là dẫn đường) (hoặc thiết bị được sử dụng trên tàu hỏa) với nhau. Nó trở nên đặc biệt phổ biến do sự phổ biến của các máy thu GPS sử dụng tiêu chuẩn này.

Tổng quan về các tuyến trong NMEA 0183

  • "$" hoặc "!" (hex 24 hoặc hex 21)
  • ID tin nhắn gồm 5 chữ cái. Hai chữ cái đầu tiên là mã định danh nguồn tin nhắn, ba chữ cái tiếp theo là mã định danh định dạng tin nhắn, theo giao thức NMEA 0183 của một phiên bản nhất định.
  • một danh sách dữ liệu (chữ cái, số và dấu chấm) được phân tách bằng dấu phẩy. Nếu thiếu bất kỳ dữ liệu nào bên trong dòng, dấu phẩy vẫn được đặt (ví dụ: “,”). Một số lĩnh vực cuối cùng dòng có thể bị thiếu hoàn toàn.
  • biểu tượng "*".
  • XOR tám bit - tổng của tất cả các ký tự (bao gồm "," và "^") trong dòng giữa "$" và "*" được chuyển đổi thành hai ký tự ASCII viết hoa để biểu diễn thập lục phân của byte (0–9, A –F).
  • (hex 0D, hex 0A).

Độ dài tin nhắn tối đa được giới hạn ở 82 ký tự (NMEA 0183 rev 3.0)

Tiêu chuẩn mô tả hơn 250 mã định danh trình tự NMEA. Tiêu chuẩn xác định tốc độ trao đổi dữ liệu ở mức 4800 baud. (Đối với tốc độ 38400 baud trở lên, có tiêu chuẩn mở rộng NMEA-0183-HS).

Tiêu chuẩn này cho phép bạn thêm số nhận dạng trình tự của riêng mình, số nhận dạng này thường được các nhà sản xuất sử dụng để truyền tải thông tin bổ sung về hoạt động của thiết bị.

Chuỗi RMC (ví dụ đặc biệt)

$GPRMC,hhmmss.sss,A,GGMM.MM,P,gggmm.mm,J,v.v, b.b, ddmmyy, x.x, n,m*hh

Giá trị trường:

  • "GP" - mã định danh nguồn; trong ví dụ đã cho, đây là GPS, “GL” - GLONASS, “GA” - Galileo, “GN” - GLONASS+GPS, v.v.
  • "RMC" - "Câu tối thiểu được đề xuất C"
  • “hhmmss.sss” - thời gian cố định vị trí theo UTC: “hh” - giờ, “mm” - phút, “ss.sss” - giây. Độ dài của các giây phân đoạn khác nhau. Các số 0 đứng đầu không được bỏ qua.
  • “A” - trạng thái: “A” - dữ liệu đáng tin cậy, “V” - không đáng tin cậy.
  • "GGMM.MM" - vĩ độ. 2 chữ số độ (“GG”), 2 chữ số toàn phút, dấu chấm và phần phân số của phút có độ dài thay đổi. Các số 0 đứng đầu không được bỏ qua.
  • "P" - "N" cho vĩ độ phía bắc hoặc "S" cho vĩ độ phía nam.
  • "gggmm.mm" - kinh độ. 3 chữ số độ (“ggg”), 2 chữ số toàn phút, dấu chấm và phần phân số của phút có độ dài thay đổi. Các số 0 đứng đầu không được bỏ qua.
  • "J" - "E" cho kinh độ đông hoặc "W" cho kinh độ tây.
  • "v.v" là thành phần nằm ngang của tốc độ so với mặt đất tính bằng hải lý. Số điểm nổi. Phần nguyên và phần phân số có độ dài thay đổi.
  • "b.b" - góc theo dõi (hướng vận tốc) tính bằng độ. Số điểm nổi. Phần nguyên và phần phân số có độ dài thay đổi. Giá trị 0 tương ứng với chuyển động về phía bắc, 90 về phía đông, 180 về phía nam, 270 về phía tây.
  • "ddmmyy" - ngày: ngày trong tháng, tháng, 2 chữ số cuối của năm (bắt buộc phải có số 0 đứng đầu).
  • “x.x” là độ từ thiên tính theo độ (thường bị thiếu), được tính bằng một số mô hình. Số điểm nổi. Phần nguyên và phần phân số có độ dài thay đổi.
  • “n” - hướng từ chối từ: để có được hướng từ biến từ, độ lệch từ phải là “E” - trừ đi, “W” - được thêm vào hướng thực.
  • “m” - chỉ báo chế độ: “A” - tự trị, “D” - vi sai, “E” - xấp xỉ, “N” - dữ liệu không đáng tin cậy (thường bị thiếu, trường này bao gồm dấu phẩy bị thiếu trong các phiên bản cũ hơn của NMEA).
  • "hh" - tổng kiểm tra.
  • - byte là 0x0D.
  • - byte là 0x0A.

Ví dụ về chuỗi RMC

ví dụ 1

$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0,06,25,82,200906,*17

Giá trị trường:

  • 12 giờ 55 phút 4,049 giây UTC
  • "A" - đáng tin cậy
  • vĩ độ 55° 42.2389", bắc
  • kinh độ 37° 41.6063", đông
  • tốc độ 0,06 hải lý

Có lẽ bây giờ bạn đang bận giải quyết vấn đề hack một máy chủ siêu siêu lớn khác, nhưng bạn có biết GPS là gì và cách sử dụng nó không?! Nếu không, thì đây là nơi dành cho bạn! Trong bài viết này, tôi sẽ cho bạn biết về cách hoạt động của bộ thu GPS, cách lấy thông tin từ chúng và cách tự viết một chương trình đơn giản để làm việc với mô-đun GPS.

GPS (Hệ thống định vị toàn cầu) được Hoa Kỳ giới thiệu vào năm 1994. Nó bao gồm 24 vệ tinh và hệ thống thu sóng mặt đất, có thể là thiết bị định vị GPS hoặc mô-đun GPS của bạn (sau đây gọi là thiết bị định hướng). Để xác định chính xác tọa độ, người điều hướng của bạn phải nhìn thấy ít nhất 4 vệ tinh. Trong quá khứ gần đây, độ chính xác của việc xác định tọa độ bên ngoài Hoa Kỳ (hay đúng hơn là đối với người tiêu dùng không phải Hoa Kỳ) đã bị giảm đi một cách giả tạo, nhưng cách đây không lâu, hạn chế này đã được loại bỏ và giờ đây bạn có thể xác định vị trí của mình ngay cả trong rừng taiga với độ chính xác vài mét.

Đây là cách tất cả hoạt động: bộ điều hướng của bạn nhận thông tin từ mỗi vệ tinh nhìn thấy được, giống như đèn hiệu cho nó. Bên trong bộ điều hướng có một bộ vi xử lý với một chương trình được tích hợp sẵn, dựa trên dữ liệu nhận được sẽ tính toán vị trí của bạn.

Hiện nay, có một số lượng lớn thiết bị định vị GPS và mô-đun GPS cho PDA và máy tính xách tay được bán. Bộ điều hướng GPS là bộ thu GPS có màn hình hiển thị thông tin về vị trí của bạn và mô-đun GPS là bộ thu GPS kết nối với máy tính và truyền tất cả thông tin điều hướng đến chương trình hoạt động với nó. Về nguyên tắc, tất cả chúng chỉ khác nhau về yếu tố hình thức và không có sự khác biệt cơ bản trong hoạt động. Nhưng bạn và tôi quan tâm nhiều hơn đến cách nó giao tiếp với máy tính và cách trích xuất thông tin từ nó. Bây giờ tôi sẽ nói với bạn và cho bạn thấy mọi thứ.

Dù mô-đun GPS là loại nào (COM, USB, BlueTooth, v.v.), nó sẽ được kết nối hợp lý với máy tính thông qua cổng COM, tức là. Khi được kết nối, kết nối sẽ được tạo thông qua cổng nối tiếp. Thông tin điều hướng trong hầu hết các trường hợp được truyền qua giao thức NMEA. Đây là giao thức truyền phổ biến nhất cho các mô-đun GPS. Mặc dù có các giao thức khác nhưng chúng tôi sẽ không xem xét chúng.

Chà, bây giờ là lúc tìm ra cách làm cho phần mềm có thể hoạt động với tất cả các thiết bị này. Tôi sẽ nói ngay rằng bây giờ tôi thực sự không muốn giải thích cách chọc các nút trong cùng một
VB, bài viết mang tính chất cung cấp thông tin nhiều hơn. Đối với những người đang ở trong bể, tôi sẽ giải thích quá trình tạo chương trình trong các bài viết sau.
Tôi sẽ chỉ đề cập đến những điểm quan trọng nhất và tôi nghĩ bạn sẽ thành công. Tôi sẽ nói ngay rằng bạn có thể tạo một chương trình bằng bất kỳ ngôn ngữ lập trình nào, miễn là có thể hoạt động với cổng nối tiếp và với chuỗi.
Điều đầu tiên bạn cần bắt đầu là mở cổng COM. Hầu hết tất cả các máy thu đều có cài đặt mặc định: tốc độ 9600 bps, 8/N/1. Ngay khi bạn mở cổng, bạn sẽ ngay lập tức nhận được thông tin điều hướng gần như thế này trong khoảng thời gian một giây:

$GPGGA,143345.264, 0936.23,N,06354.15,E,0.06,0.0,230.6,M,0.0,M,0.0,0345*76
$GPRMC,143345,26, A,0936,23,N,06354,15, E,0,0,0,0,230306,0,0,E,A*45
$GPGSA,A,3,03,04,05,07,11,12,0,0,0,0,0,0*E2
$GPGSV,1,1,06,05,67,120,20*34

Bây giờ chúng ta bắt đầu phân tích:

Dữ liệu được truyền dưới dạng câu. Mẫu đề xuất như sau:

$AAAAA[,<данные>]*hh , Ở đâu

$ - ký hiệu bắt đầu câu (mã 24h);
AAAAA - địa chỉ (tên) gồm năm ký tự của ưu đãi;
[, <данные>] — danh sách các trường dữ liệu được phân tách bằng dấu phẩy (mã 2Сh);
* — dấu tổng kiểm tra (mã 2Ah);
hh - tổng kiểm tra;
, - bộ giới hạn cuối cùng (mã 0Dh và 0Ah).

Các loại trường dữ liệu.

Loại lĩnh vực chỉ định Sự định nghĩa

Định dạng trường đặc biệt

Trạng thái MỘT Trường ký tự đơn. A= có, dữ liệu
tín hiệu cảnh báo đáng tin cậy
KHÔNG. V= không, dữ liệu không đáng tin cậy, có
tín hiệu cảnh báo.
Vĩ độ llll.ll
phân số độ-phút của phút. 2 ký tự

số phân số của phút. Nếu lần đầu tiên
không có dấu hiệu của độ hoặc phút, sau đó
nó được thay thế bằng 0 để




độ phân giải cao.
Kinh độ yyyyy.yy Trường có độ dài cố định/thay đổi:
độ-phút và phân số của phút. 3 ký tự
độ, dấu hiệu 2 phút và biến
số phân số của một phút. Nếu lần đầu tiên
dấu hiệu hoặc dấu hiệu phút đầu tiên bị thiếu,
sau đó chúng được thay thế bằng số 0 để
giữ số lượng ký tự không đổi.
Dấu thập phân và các dấu hiệu tiếp theo
phân số của phút là bổ sung và
có thể không được sử dụng nếu không cần thiết
độ phân giải cao.
Thời gian hmmmss.ss Trường có độ dài cố định/có thể thay đổi: giờ/phút/giây
và một phần của giây. 2 biển báo đồng hồ, 2 biển báo
phút, 2 giây và số biến
dấu hiệu của phân số giây. Là người đầu tiên
dấu hiệu giờ, phút, giây có thể
đặt về 0 để lưu
số lượng ký tự không đổi. Nếu không
thì cần độ chính xác cao
dấu thập phân và phân số của giây có thể
được bỏ qua.
Các trường cụ thể Một số lĩnh vực đặc biệt
dự định được đặt trước
các giá trị không đổi nhất định, thường xuyên hơn
tổng số ký hiệu chữ cái. Dấu hiệu
các trường như vậy là sự hiện diện của một hoặc
một số nhân vật.

Trường giá trị số

Trường thông tin

Ghi chú:

1. Chỉ có thể sử dụng dấu cách trong các trường văn bản có độ dài thay đổi.

2. Dấu âm “-” (mã 2Dh) là ký tự đầu tiên của trường nếu nó chứa giá trị âm. Khi bạn sử dụng dấu âm trong các trường có độ dài cố định, độ dài của chúng sẽ tăng thêm một. Đối với các giá trị dương, dấu được bỏ qua.

GGA - Dữ liệu vị trí GPS

Thời gian, địa điểm và dữ liệu liên quan đến quan sát.

$GPGGA,hhmmss.sss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh

1. hhmmss.sss – thời gian định nghĩa điều hướng;
2. llll.ll,a – vĩ độ, N/S;
3. yyyyy.yy,a – kinh độ, E/W;
4. x – chỉ báo chất lượng quan sát: 0 = không có dữ liệu, 1 = nhận được quan sát, 2 = quan sát ở chế độ vi sai;
5. xx – số lượng vệ tinh được sử dụng;
6. x.x – giá trị hệ số hình học ngang (HDOP);
7. x.x,M – độ cao anten so với mực nước biển (Goid), m;
8. x.x,M – độ cao của Geoid so với elip WGS84, m;
9. x.x – sự lão hóa của các hiệu chỉnh vi sai, nghĩa là thời gian tính bằng giây kể từ khi nhận được hiệu chỉnh vi sai cuối cùng, trường 0 được sử dụng nếu chế độ vi sai bị tắt;
10. xxxx – mã định danh trạm vi sai 0е1023.

Thời gian, ngày tháng, tọa độ và lộ trình được tính toán bằng thiết bị.

$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxxxx,x.x,a,a*hh

Các lĩnh vực của ưu đãi này là:

1. hhmmss.ss – thời gian;
2. A – trạng thái (A/V);
3. llll.ll,a – vĩ độ, N/S;
4. yyyyy.yy,a – kinh độ, E/W;
5. x.x – tốc độ tính bằng hải lý/giờ;
6. x.x – khóa học tính bằng độ;
7. xxxxxx – ngày: dd/mm/yy (ngày/tháng/năm);
8. x.x,a – độ từ thiên tính bằng độ, E/W;
9. a – Chỉ báo chế độ: A = quan sát tự động, D = chế độ vi sai, N = dữ liệu không hợp lệ.

GSA - Hệ số suy giảm độ chính xác dùng cho vệ tinh dẫn đường

$GPGSA,a,x,xx, … ,xx,x.x,x.x,x.x*hh

Các lĩnh vực của ưu đãi này là:
1. a – Chế độ điều khiển số tọa độ xác định: M = bằng tay, chế độ xác định, A = chuyển đổi tự động;
2. x – chế độ vận hành: 1 = không thể quan sát được, 2 = xác định được hai tọa độ, 3 = xác định được ba tọa độ;
3. xx...xx – số vệ tinh dùng để giải bài toán dẫn đường, số trường bằng số kênh thu, số 1е32 dùng cho GPS, 33е64 cho WAAS, 65е96 cho GLONASS;
4. x.x - hệ số suy giảm độ chính xác hình học tổng quát (PDOP);
5. x.x – hệ số suy giảm hình học theo chiều ngang (HDOP);
x.x – hệ số suy giảm hình học theo chiều dọc (VDOP).

GSV – Vệ tinh nhìn thấy được

Số lượng vệ tinh trong vùng tầm nhìn vô tuyến, số lượng vệ tinh, góc nâng, góc phương vị và tỷ lệ tín hiệu trên tạp âm. Một câu có thể chứa thông tin về 1 đến 4 vệ tinh, dữ liệu vệ tinh bổ sung sẽ được truyền trong các câu tiếp theo. Số ưu đãi được chỉ định trong hai trường dữ liệu đầu tiên. Các số sau được dành riêng cho hệ thống vệ tinh: cho GPS 1-32, cho WAAS 33-64, cho GLONASS 65-96.

$GPGSV,x,x,xx,xx,xx,xxx,xx, … ,xx,xx,xxx,xx*hh

Các lĩnh vực của ưu đãi này là:
1. x – tổng số tin nhắn;
2. x – số tin nhắn;
3. xx – tổng số vệ tinh trong vùng nhìn thấy sóng vô tuyến;
4. xx – số vệ tinh;
5. xx – góc ngẩng vệ tinh, độ 00-90;
6. xxx – góc phương vị thực, độ 000-360;
7. xx – tỷ lệ tín hiệu trên tạp âm 00-99 dB, nếu không có vệ tinh đi kèm thì nó sẽ không được truyền đi.

Lưu ý: các trường 4, 5, 7 được lặp lại cho 2, 3 và 4 vệ tinh.

Bây giờ, khi có mô tả về giao thức NMEA và trình điều khiển direct_ruki.sys, bạn có thể bắt đầu phân tích cú pháp từng dòng của gói và tạo một chương trình lớn)))).

NMEA 0183– giao thức truyền thông văn bản được sử dụng trong các mô-đun nhận GPS. Tiêu chuẩn này được tạo ra để liên lạc với các thiết bị định vị hàng hải. Giao thức cung cấp khả năng truyền các lệnh văn bản và tin nhắn bằng ký tự ASCII. Vì vậy, để nhận tin nhắn, chỉ cần sử dụng giao diện nối tiếp UART là đủ, trong khi tất cả các tin nhắn có thể được truyền trực tiếp đến máy tính bằng cổng COM, nhưng không quên cần phải chuyển đổi mức tín hiệu.

Mô-đun GPS truyền các tin nhắn có định dạng khác nhau chứa các bộ dữ liệu khác nhau: vĩ độ và kinh độ, tốc độ, hướng đi, thời gian, số lượng vệ tinh, v.v. Tin nhắn được truyền tuần tự và được chia thành nhiều loại, định dạng của mỗi loại tin nhắn chứa thông tin được xác định nghiêm ngặt trong các trường của nó. Chúng ta hãy xem xét kỹ hơn cấu trúc chung của các thông báo mà mô-đun GPS tạo ra.

$ - mọi tin nhắn đều bắt đầu bằng biểu tượng này

Tiếp theo là mã định danh gồm 5 ký tự văn bản. Hai chữ cái đầu tiên cho biết loại hệ thống định vị, ví dụ: "GP" - GPS hoặc " GL" - Glonass vân vân. 3 ký tự tiếp theo là định danh định dạng tin nhắn, xác định hoàn toàn nội dung của dữ liệu được truyền tiếp theo. Ví dụ "RMC"- đây là dữ liệu tối thiểu được khuyến nghị, chứa thông tin về ngày và giờ, vĩ độ và kinh độ, tốc độ, hướng đi và độ lệch từ tính theo độ (có thể bị thiếu). Hoặc "GSA", dữ liệu vệ tinh sẽ được truyền tới đây. Cấu trúc của các loại thông báo chính sẽ được thảo luận dưới đây.

Sau đó theo sau «,» - dấu phẩy, sau đó phần thân của tin nhắn ngay sau đó là nhiều dữ liệu khác nhau, được phân tách với nhau bằng cùng một dấu phẩy. Nếu số được truyền không phải là số nguyên thì dấu phân cách giữa phần nguyên và phần phân số là dấu chấm «.» .

Phần cuối của nội dung thư được biểu thị bằng ký hiệu «*» . Phần tiếp theo là tổng kiểm tra tất cả các ký tự có giữa “$” và “*”, tức là toàn bộ nội dung của tin nhắn, bao gồm chính dữ liệu và số nhận dạng ở đầu tin nhắn. Tổng kiểm tra được tính dưới dạng XOR (OR độc quyền) của tất cả các mã ASCII thập lục phân của các ký tự tin nhắn.

Và cuối mỗi tin nhắn phải có ký tự xuống dòng

Chúng ta hãy xem mục đích và cấu trúc của các loại tin nhắn khác nhau.

R.M.C.– dữ liệu điều hướng tối thiểu được đề xuất. Tin nhắn chứa lượng thông tin tối thiểu cần thiết. Dữ liệu này bao gồm vĩ độ và kinh độ, ngày giờ và tốc độ. Đối với nhiều nhiệm vụ, không cần nhiều hơn, ví dụ như trong mô-đun Quectel L50 Tôi đã tắt việc truyền tất cả các loại tin nhắn khác vì tôi hoàn toàn không cần thông tin về vệ tinh và mức tín hiệu của chúng. Và việc nhận được những thông tin không cần thiết đòi hỏi phải làm phức tạp thêm chương trình xử lý dữ liệu này. Cấu trúc của tin nhắn như sau:

$GPRMC hhmss.sss,MỘT,ddmm.mmmm,N,ddmm. ừmmm , E,v.v.c. c, ddmmyyyy,xx,n,tôi*hh

Thông báo này chứa các thông tin sau:

  • GPRMC– Hệ thống vệ tinh GPS, nhận dạng tin nhắn RMC
  • hhmss.sss– thời gian (Giờ chuẩn Greenwich), trong đó hh – giờ, mm – phút, ss.sss – giây
  • MỘT– dữ liệu đáng tin cậy hoặc V.– dữ liệu không đáng tin cậy. Biểu tượng MỘT thông báo sẽ được cung cấp rằng có khả năng thu tín hiệu đáng tin cậy từ các vệ tinh cần thiết để tính toán dữ liệu vị trí. Biểu tượng V. sẽ xảy ra khi máy thu không nhìn thấy vệ tinh hoặc khi số lượng vệ tinh tìm thấy không đủ để tự tin tính toán tọa độ. Ví dụ: nếu bạn bật mô-đun GPS ở đâu đó trong ngôi nhà bảng và cách xa cửa sổ, rất có thể bạn sẽ thấy biểu tượng V. trong tin nhắn nhận được.
  • ddmm.mmmm- vĩ độ, độ và phút
  • N hoặc S- bắc hoặc nam. Bán cầu bạn đang ở. Nếu bạn ở Úc, nó sẽ hiển thị S. Ở Yekaterinburg, mô-đun GPS của tôi cung cấp N.
  • ddmm.mmmm- kinh độ, độ và phút
  • E hoặc W- bán cầu tây hoặc đông
  • v.v– tốc độ tính bằng hải lý
  • c. c– hướng trên mặt đất tính bằng độ. Khi di chuyển về hướng bắc sẽ là 0 độ.
  • ddmmyyyy- ngày
  • xx- độ suy giảm từ tính
  • N- hướng suy giảm từ tính. Tôi không thể giải thích bất cứ điều gì về hai thông số cuối cùng này. Ví dụ mô-đun của tôi GPS Quectel L50 Trong quá trình tiếp nhận căn hộ, dữ liệu này hoàn toàn không được hiển thị trên cửa sổ, nó chỉ đơn giản là bị bỏ qua.
  • tôi- Chế độ điều hướng: N– dữ liệu không chính xác, MỘT- tự chủ, D– sự khác biệt

Đây là một ví dụ về tin nhắn RMC:

$GPRMC,105954.000,A,3150.6731,N,11711.9399,E,0.00,96.10,250313,A*53

  • GMT 10h 59 phút 54s
  • MỘT– dữ liệu đáng tin cậy
  • Vĩ độ 31 độ và 50,6371 phút
  • N- Phương bắc
  • Kinh độ 117 độ 11,9399 phút
  • E- phương Đông
  • Tốc độ 0,00 hải lý
  • Tốt 96,1 độ
  • ngày Ngày 25 tháng 3 năm 2013
  • Dữ liệu về độ suy giảm từ tính không có
  • Cách thức - tự trị
  • Tổng kiểm tra các ký tự tin nhắn 0×053

Ở đây cần lưu ý một điểm. Dữ liệu vĩ độ và kinh độ chứa một phần phân số của phút, phần này hoàn toàn không tương ứng với số “giây”, vì nó là phân số thập phân. Các chương trình GPS tôi đã thử hiển thị chính xác tọa độ trên bản đồ. Nhưng nếu bạn nhập những con số này vào thanh tìm kiếm của Google maps, vị trí trên bản đồ sẽ cách vị trí thực tế vài km. Khi nhập tọa độ thu được trong trường hợp này, bạn phải chia phần thập phân của vĩ độ và kinh độ cho 60 để chuyển các số này thành “giây”. Khi tôi kết nối mô-đun Quectel L50 lần đầu tiên và nhập tọa độ kinh độ và vĩ độ thu được vào thanh tìm kiếm của Google maps, tôi nhận được một vị trí trên bản đồ có lỗi nghiêm trọng; bản đồ chỉ ra một địa điểm ở đâu đó trong khu vực Uralmash.

Dưới đây là một số loại tin nhắn khác được sử dụng trong giao thức này:

  • VTG- hướng đi thực sự và tốc độ mặt đất
  • GGA- dữ liệu vị trí cuối cùng
  • G.S.A.- dữ liệu về các vệ tinh đang hoạt động
  • GSV- dữ liệu về các vệ tinh có thể nhìn thấy, vị trí và số lượng của chúng cũng như cường độ tín hiệu
  • GLL- dữ liệu vĩ độ, kinh độ và thời gian
  • ZDA- thông tin ngày giờ

Tôi không đi sâu vào chi tiết mỗi tin nhắn bao gồm những gì; một liên kết tới tài liệu mô tả giao thức được đưa ra ở cuối bài viết. Một loại mô-đun GPS cụ thể có thể không truyền được tất cả dữ liệu được liệt kê. Bạn có thể tắt hoặc bật việc truyền nhiều loại dữ liệu khác nhau, đồng thời đặt khoảng thời gian gửi chúng. Để định cấu hình mô-đun, có các lệnh đặc biệt bắt đầu bằng mã định danh $PSRFxxx, Ở đâu xxx chỉ định loại và định dạng của lệnh, giống như trong các tin nhắn gửi đi.

Ví dụ, lệnh $PSRF100.0.9600.8.1.0*0C thiết lập giao thức truyền thông và cấu hình các tham số cổng nối tiếp.

  • $PSRF100 – Mã định danh lệnh giao thức SIRF gốc
  • 0 – giao thức SIRF nhị phân, 1 – Giao thức NMEA
  • 9600 – tốc độ bit/giây
  • 8 bit dữ liệu
  • 1 dừng lại một chút
  • 0 – kiểm tra chẵn lẻ bị vô hiệu hóa

Đội $PSRF103.00.00.02.01*26 cấu hình các tham số đầu ra cho các loại thông báo mô-đun khác nhau:

  • $PSRF103– Mã định danh lệnh giao thức gốc SIRF
  • thì sau dấu thập phân có hai chữ số xác định loại tin nhắn tùy chỉnh: 00 - GGA
    01 - GLL
    02 - GSA
    03 - GSV
    04 - RMC
    05 - VTG
  • hai chữ số tiếp theo định cấu hình thứ tự phát hành tin nhắn, ví dụ: 00 - định kỳ
    01 - theo yêu cầu
  • Các số sau thiết lập thời gian nhắn tin tính bằng giây: 00 = Tắt (tin nhắn bị tắt)
    1-255 – khoảng thời gian giữa các tin nhắn loại này tính bằng giây
  • sau đó việc truyền tổng kiểm tra được bật/tắt trong thông báo NMEA được truyền bởi mô-đun: 00 – việc truyền tổng kiểm tra bị vô hiệu hóa
    01 – tổng kiểm tra được truyền đi
  • sau ký tự “*”, như trong tin nhắn NMEA gửi đi, ký tự tổng kiểm tra và nguồn cấp dòng sẽ được truyền đi.

Đó là tất cả những gì tôi muốn trình bày ngắn gọn về giao thức NMEA 0183 và các lệnh điều khiển mô-đun trên chipset SIRF. Ví dụ: giải mã chi tiết hơn về tất cả các thông báo và lệnh này được đưa ra trong phần mô tả giao thức mô-đun Quectel L50, có thể tải xuống từ liên kết bên dưới.

Mô tả giao thức NMEA. Triển khai trên máy thu Garmin và GlobalSat

Giới thiệu

Hiệp hội Điện tử Hàng hải Quốc gia (NMEA) đã phát triển một giao thức đặc biệt để duy trì khả năng tương thích giữa các thiết bị định vị hàng hải của các nhà sản xuất khác nhau. Giao thức NMEA này không chỉ mô tả dữ liệu nhận được từ máy thu GPS mà còn mô tả các phép đo từ sóng siêu âm, radar, la bàn điện tử, phong vũ biểu và các thiết bị định vị khác được sử dụng trên tàu biển.

Giao diện trao đổi dữ liệu của hầu hết các máy thu GPS di động được triển khai theo thông số kỹ thuật này. Hầu hết các chương trình điều hướng cung cấp hỗ trợ hiển thị dữ liệu theo thời gian thực và “hiểu” giao thức NMEA. Dữ liệu này chứa các phép đo điều hướng đầy đủ của máy thu GPS - vị trí, tốc độ và thời gian. Tất cả các thông báo NMEA bao gồm một tập hợp dữ liệu tuần tự được phân tách bằng dấu phẩy. Mỗi tin nhắn riêng lẻ độc lập với những tin nhắn khác và hoàn toàn “hoàn chỉnh”. Một thông báo NMEA bao gồm một tiêu đề, một tập hợp dữ liệu được biểu thị bằng các ký tự ASCII và trường tổng kiểm tra để kiểm tra tính hợp lệ của thông tin được truyền đi.

Tiêu đề của tin nhắn NMEA tiêu chuẩn bao gồm 5 ký tự, trong đó hai ký tự đầu tiên xác định loại tin nhắn và ba ký tự còn lại cho biết tên của nó. Ví dụ: tất cả các tin nhắn GPS NMEA đều có tiền tố "GP". Các thông báo không được mô tả trong thông số kỹ thuật của NMEA nhưng được triển khai trong máy thu GPS theo các quy tắc chung, có tiền tố là "P" theo sau là ba ký tự duy nhất cho mỗi công ty. Ví dụ: tin nhắn NMEA "bản địa" của Garmin có tiền tố "PGRM", Magellan - "PMGN"
Mỗi tin nhắn NMEA bắt đầu bằng “$”, kết thúc bằng “n” (“nguồn cấp dữ liệu dòng”) và không được dài hơn 80 ký tự. Tất cả dữ liệu được chứa trên một dòng và được phân tách với nhau bằng dấu phẩy. Thông tin được trình bày dưới dạng văn bản ASCII và không yêu cầu giải mã đặc biệt. Nếu dữ liệu không vừa với 80 ký tự được phân bổ thì nó sẽ được “chia” thành nhiều thông báo NMEA.

Định dạng này cho phép bạn không giới hạn độ chính xác và số lượng ký tự trong các trường dữ liệu riêng lẻ. Ví dụ: phần phân số của giá trị tọa độ có thể được biểu thị bằng 3 hoặc 4 chữ số thập phân, nhưng điều này sẽ không ảnh hưởng đến hoạt động của phần mềm chọn dữ liệu cần thiết từ thông báo theo số trường. Ở cuối mỗi thông báo NMEA có một trường “tổng kiểm tra” được phân tách khỏi dữ liệu bằng ký tự “*”. Nếu cần, nó có thể được sử dụng để xác minh tính toàn vẹn và hợp lệ của từng tin nhắn nhận được.

Giao thức NMEA không chỉ hỗ trợ các tin nhắn gửi đi mà còn hỗ trợ các tin nhắn đến, chẳng hạn như bạn có thể cập nhật hoặc thêm các điểm tham chiếu của tuyến đường. Các tin nhắn này phải được tạo theo đúng định dạng NMEA, nếu không chúng sẽ bị bộ thu GPS bỏ qua. Điều đáng chú ý là không phải tất cả các chương trình điều hướng và kiểu máy thu đều hỗ trợ chế độ này vì chúng sử dụng các giao thức độc quyền của các nhà sản xuất - Garmin, Magellan, v.v. - để tải điểm và tuyến đường.

Kể từ khi thành lập, giao thức NMEA đã trải qua một số sửa đổi liên quan đến việc bổ sung các trường và thông báo mới. Phiên bản hiện tại được hầu hết các máy thu hỗ trợ là phiên bản 2.3, mặc dù phiên bản 3.0 mới đã được xuất bản. Thông số kỹ thuật đầy đủ của các thông báo NMEA không được công khai và không thể tải xuống chính thức ở dạng điện tử. Các phần riêng lẻ, mô tả chung về giao thức NMEA và các thông báo phổ biến nhất có thể được tìm thấy trên Internet. Bạn có thể chính thức mua tài liệu NMEA tại www.nmea.org.

danh sách tin nhắn

Giao thức NMEA mô tả một danh sách lớn các tin nhắn khác nhau, từ đó có thể xác định được hai chục tin nhắn được sử dụng tích cực trong thiết bị định vị. Do tính phổ biến rộng rãi và cách trình bày dữ liệu đơn giản, giao thức NMEA đã được ứng dụng không chỉ trong thiết bị hàng hải mà còn trong các máy thu GPS trắc địa, gia dụng và hàng không.

  • AAM - Đến điểm tham chiếu
  • ALM - Dữ liệu niên giám
  • APA - Dữ liệu lái tự động "A"
  • APB - Dữ liệu lái tự động "B"
  • BOD - Mang đến đích
  • DTM - Dữ liệu đang được sử dụng
  • GGA - Thông tin giải pháp cố định
  • GLL - Dữ liệu vĩ độ và kinh độ
  • GSA - Thông tin vệ tinh chung
  • GSV - Thông tin chi tiết về vệ tinh
  • MSK - Chuyển quyền điều khiển tới bộ thu cơ sở
  • MSS - Trạng thái thu cơ bản
  • RMA - Bộ dữ liệu Loran được đề xuất
  • Nhân dân tệ - Bộ dữ liệu điều hướng GPS được đề xuất
  • RMC - Bộ dữ liệu GPS tối thiểu được đề xuất
  • RTE - Thông tin tuyến đường
  • VTG - Vector chuyển động và vận tốc
  • WCV - Dữ liệu tốc độ gần điểm tham chiếu
  • WPL - Dữ liệu điểm tham chiếu
  • XTC - Lỗi lệch hướng
  • XTE - Lỗi theo dõi được đo
  • ZTG - Thời gian UTC và thời gian còn lại cho đến khi đến đích
  • ZDA - Ngày và giờ.

Một số thông báo NMEA có thể chứa các trường dữ liệu giống nhau hoặc chứa hoàn toàn dữ liệu của các thông báo NMEA nhỏ hơn khác.

Nội dungThông điệp NMEA

GGA - thông tin về một giải pháp cố định.
Thông báo NMEA phổ biến nhất và được sử dụng nhiều nhất cung cấp thông tin về giải pháp cố định hiện tại - tọa độ ngang, giá trị độ cao, số lượng vệ tinh được sử dụng và loại giải pháp.

$GPGGA,123519,4807,038,N,01131,000,E,1,08,0,9,545,4,M,46,9,M,*47
Ở đâu:

  • GGA - Tiêu đề
  • 123519 -giờ UTC 12:35:19
  • 4807.038, N - Vĩ độ, 48 độ 7,038 phút vĩ Bắc
  • 01131.000, E - Kinh độ, 11 độ 31.000 phút kinh Đông
  • Giải pháp 1 loại, giải pháp độc lập
    • 0 - không có giải pháp,
    • 1 - Độc lập,
    • 2 - DGPS,
    • 3 - PPS,
    • 4 - RTK cố định,
    • 5 - RTK không cố định,
    • 6 - sử dụng dữ liệu hệ thống quán tính,
    • 7 - chế độ thủ công,
    • 8 - chế độ mô phỏng
  • 08 - số lượng vệ tinh được sử dụng
  • 0,9 - hệ số hình học, HDOP
  • 545.4, M - độ cao so với mực nước biển tính bằng mét
  • 46,9, M - chiều cao của Geoid phía trên elip WGS 84
  • [trường trống] - thời gian đã trôi qua kể từ khi nhận được bản chỉnh sửa DGPS cuối cùng. Điền vào khi chế độ DGPS được kích hoạt
  • [trường trống] - số nhận dạng của trạm gốc. Được điền khi chế độ DGPS được kích hoạt.

GSA - thông tin chung về vệ tinh.
Thông báo NMEA này chứa danh sách các vệ tinh được sử dụng trong tính toán vị trí và các giá trị của DOP hình học xác định độ chính xác của tính toán vị trí. Thông số DOP được xác định bởi sự sắp xếp hình học của các vệ tinh trên bầu trời. Các vệ tinh được “phân bổ” trên bầu trời càng tốt thì DOP càng thấp và độ chính xác của vị trí càng cao. Giá trị PDOP tối thiểu (= 1) tương ứng với tình huống trong đó một vệ tinh ở ngay phía trên người dùng và 3 vệ tinh còn lại được phân bố đều ở mức độ đường chân trời. Giá trị PDOP được tính bằng căn bậc hai của tổng bình phương của HDOP và VDOP.

$GPGSA,A,3,04,05,09,12,24,2,5,1,3,2,1*39
Ở đâu:

  • GSA - tiêu đề
  • A - loại lựa chọn giữa giải pháp 2D và 3D, Tự động (A-auto, M-manual)
  • 3 - loại giải pháp, giải pháp 3D (1 - không có giải pháp, giải pháp 2 - 2D, giải pháp 3 - 3D)
  • 04.05… - Mã PRN dùng để tính toán vị trí vệ tinh (12 trường)
  • 2.5 - hệ số hình học không gian, PDOP
  • 1.3 - hệ số hình học ngang, HDOP
  • 2.1 - hệ số hình học thẳng đứng, VDOP

GSV - Thông tin chi tiết về vệ tinh
Thông báo NMEA này chứa thông tin chi tiết về tất cả các vệ tinh được thiết bị định vị GPS theo dõi. Dựa trên giới hạn 80 ký tự, một tin nhắn NMEA chỉ có thể truyền dữ liệu cho 4 vệ tinh. Theo đó, 12 vệ tinh cần 3 bản tin GSV.
Trường SNR (Tỷ lệ tín hiệu thành nhiễu) chứa các giá trị về mức tín hiệu điều hướng nhận được từ vệ tinh. Về mặt lý thuyết, giá trị của nó có thể thay đổi từ 0 đến 99 và được đo bằng dB. Trên thực tế, mức tín hiệu nằm trong khoảng 25 ... 35 dB. Điều đáng chú ý ở đây là thông số này không tuyệt đối và không phù hợp để so sánh độ nhạy của máy thu của các kiểu máy và nhà sản xuất khác nhau. Bộ điều hướng GPS có thể sử dụng các thuật toán khác nhau để tính toán mức tín hiệu nhận được, dẫn đến các kết quả khác nhau với cùng độ nhạy của máy thu.
Đối với mỗi vệ tinh GPS có thể nhìn thấy, một tập hợp thông tin sẽ được truyền đi, bao gồm cường độ tín hiệu, góc nâng và góc phương vị của vệ tinh. Số lượng các "bộ" này được xác định bởi tổng số vệ tinh có thể nhìn thấy, giá trị của chúng được truyền trong một trường riêng biệt.

$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75
Ở đâu:

  • GSV - tiêu đề
  • 2 - số lượng tin nhắn GSV trong gói
  • 1 - số tin nhắn trong gói (từ 1 đến 3)
  • 08 - số lượng vệ tinh nhìn thấy được
  • 01 - số vệ tinh
  • 40 - góc nâng, tính bằng độ
  • 083 - góc phương vị theo độ
  • 46 - SNR, cường độ tín hiệu

RMC - bộ tối thiểu được đề xuất Dữ liệu GPS
Thông báo NMEA này chứa toàn bộ tập hợp dữ liệu được gọi là “PVT”. "PVT" là tên viết tắt phổ biến của "vị trí, vận tốc, thời gian".

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394.003.1,W*6A

  • RMC - tiêu đề
  • 123419 - giờ UTC, 12:34:59
  • A - trạng thái (A - hoạt động, V - bỏ qua)
  • 4807.038,N - Vĩ độ, 48 độ 07,038 phút Bắc
  • 01131.000,E - Kinh độ, 11 độ 31.000 phút kinh Đông
  • 022.4 - Tốc độ, tính bằng hải lý
  • 084.4 - Hướng chuyển động, tính bằng độ
  • 230394 - Ngày 23/03/1994
  • 003.1,W - Biến thể từ tính

GLL - dữ liệu vĩ độ và kinh độ

Thông báo NMEA có tọa độ kinh độ và vĩ độ cũng như thời điểm tính toán giải pháp này.

$GPGLL,4916,45,N,12311,12,W,225444,A,*31

  • GLL - tiêu đề
  • 4916,46,B - vĩ độ, 49 độ 16,45 phút vĩ độ Bắc
  • 12311.12,kinh độ W, 123 độ 11,12 phút kinh độ Tây
  • 225444 - Thời gian cố định trong thang thời gian UTC, 22:54:44

TRONG OD - Phương vị tới đích
Thông báo NMEA này cho biết phương hướng tới đích trong chế độ điều hướng.

$GPBOD,045.,T,023.,M,DEST,BẮT ĐẦU*01

  • BOD - tiêu đề
  • 045.,T - hướng đúng tới điểm
  • 023.,M - hướng từ tới một điểm
  • DEST - số nhận dạng điểm cuối
  • BẮT ĐẦU - số nhận dạng điểm bắt đầu

$GPRMB,A,0,66,L,003.004.4917,24,N,12309,57,W,001,3.052,5.000,5,V*20

  • Nhân dân tệ - tiêu đề
  • A - Kiểu dữ liệu, (A - hoạt động, V - bỏ qua)
  • 0,66,L - độ lệch khỏi đường ray. Tham số được xác định bằng hải lý. (L - trái, R - phải)
  • 003 - số nhận dạng điểm bắt đầu
  • 004 - số nhận dạng điểm cuối
  • 4917,24,N - giá trị vĩ độ của điểm cuối, 49 độ 17,24 phút vĩ độ Bắc
  • 12309.57,W - giá trị kinh độ của điểm cuối, 123 độ 09,57 phút kinh độ Tây
  • 001.3 - khoảng cách tới điểm, tính bằng hải lý
  • 052.5 - hướng tới điểm
  • 000,5 - tốc độ, tính bằng hải lý
  • V – thông tin đến (A – đến, V – chưa tới điểm)

RTE - Thông tin tuyến đường

Thông báo NMEA RTE hiển thị danh sách các điểm tham chiếu trên tuyến đang hoạt động. Có hai loại tin nhắn RTE. Trong trường hợp đầu tiên, tất cả các điểm lộ trình đều được hiển thị. Ở phần thứ hai, chỉ có danh sách các điểm còn lại vẫn cần phải ghé thăm khi di chuyển dọc theo tuyến đường. Vì giao thức NMEA có một hạn chế là độ dài tin nhắn không được vượt quá 80 ký tự nên một tin nhắn RTE có thể bao gồm nhiều dòng.

$GPRTE,2,1,c,0,W3IWI,DRIVWY,32CEDR,32-29,32BKLD,32-I95,32-US1,BW-32,BW-198*69

  • RTE - tiêu đề
  • 2 - tổng số tin nhắn để hiển thị danh sách dữ liệu đầy đủ
  • 1 - số tin nhắn từ danh sách chung
  • c - loại tin nhắn RTE (c - danh sách đầy đủ các điểm tuyến, w - danh sách các điểm chưa được ghé thăm)
  • 0 - định danh tuyến đường
  • W3IWI,DRIVWY,.. - danh sách các điểm tham chiếu

Tính năng của Garmin

Máy thu Garmin hỗ trợ hầu hết các tin nhắn NMEA chứa số đo GPS, vị trí và thời gian - GGA, GLL, GSA, GSV, RMC. Cũng như các tin nhắn điều hướng - RMB, BOD

Để hiển thị những thông báo này, bạn cần thay đổi giao diện trong cài đặt bộ thu từ “Garmin” thành “NMEA” và có thể đặt tốc độ mong muốn. Tốc độ tương tự phải được đặt trong chương trình điều hướng trong cài đặt của cổng nối tiếp mà bộ điều hướng được kết nối.

Thật không may, máy thu có cổng USB không hỗ trợ giao thức NMEA, giới hạn cài đặt của nó chỉ ở giao thức Garmin.

Để hiển thị thông tin nhập vào cổng nối tiếp của máy tính, bạn có thể sử dụng chương trình đầu cuối Windows hoặc một trong các chương trình điều hướng hỗ trợ tính năng này.

Dưới đây là danh sách các tin nhắn NMEA của bộ thu Garmin eMap được chứa trong một kỷ nguyên.

$GPRMC,135412,A,5522.8973,N,03710.1401,E,0,0,0,0,190507,9,3,E,A*1F

$GPRMB,A,,A,A*0B

$GPGGA,135412,5522.8973,N,03710.1401,E,1,04,5.4,205.2,M,15,8,M,*4A

$GPGSA,A,3,08,13,23,25,5,7,5,4,1,0*3C

$GPGSV,3,1,11,02,15,267,00,03,11,085,45,04,05,236,00,08,39,233,00*77

$GPGSV,3,2,11,10,32,308,00,13,63,109,43,16,17,037,00,23,31,111,38*77

$GPGSV,3,3,11,24,09,343,00,25,66,077,44,27,69,229,00*46

$GPGLL,5522.8973,N,03710.1401,E,135412,A,A*43

$GPBOD,T,M,*47

$PGRME,19,1,M,15,2,M,25,3,M*15

$ PGRMZ,673, f,3*19

$ PGRMM, WGS 84*06

Ngoài các thông báo NMEA tiêu chuẩn, bộ thu của Garmin còn triển khai bộ thông báo của riêng họ, mỗi thông báo chứa tiền tố "GRM" trong tiêu đề, mã nhận dạng "M" hoặc "Z" xác định loại dữ liệu và một ký tự cho tên.

PGRME - Ước tính lỗi định vị

$PGRME,15,0,M,45,0,M,25,0,M*1C

  • 15.0,M - đánh giá sai số định vị ngang, tính bằng mét
  • 45,0,M - ước tính sai số dọc, tính bằng mét
  • 25.0,M - lỗi định vị hình cầu tương đương

PGRMZ - đo chiều cao

$PGRMZ,93,f,3*21

  • 93,f - giá trị chiều cao, tính bằng pound
  • 3 - điều kiện đo vị trí (2 - chiều cao do người dùng xác định, 3 - chiều cao do GPS tính toán)

PGRMM - mốc thời gian hiện tại

$PGRMM,NAD27 Canada*2F

  • NAD27 Canada - tên của mốc đo ngang hiện tại

Đặc thùthưa ngài

Chip GPS của Sirf được sử dụng trong nhiều thiết bị định vị GPS khác nhau, từ bảng thông thường đến thiết bị định vị GPS di động và ô tô. Nhưng không giống như các công cụ điều hướng, chúng chỉ hỗ trợ các tin nhắn NMEA liên quan đến phép đo GPS, tính toán vị trí và thời gian - GGA, GLL, GSA, GSV, RMC, VTG, ZDA.

"Sirf" cũng hỗ trợ một số thông báo NMEA "đến" nhằm mục đích cấu hình và điều chỉnh các thông số khác nhau. Ngoài ra, Sirf còn triển khai giao thức nhị phân của riêng mình, cho phép bạn thay đổi nhiều cài đặt hơn đáng kể. Theo quy tắc, 5 tin nhắn NMEA "đến" này bắt đầu bằng tiền tố $PSFR. Tất cả các tin nhắn đều chứa một bộ dữ liệu cố định và kết thúc bằng ký tự “n” (nguồn cấp dữ liệu)

Để định cấu hình các tham số “Sirf”, một chương trình đặc biệt “SirfTech” được sử dụng. Các tham số thông báo NMEA được cấu hình trong một mục menu riêng.

$GPGGA,100643.000,5522.9036,N,03710.1282,E,1.07,1.6,209.9,M,14.9,M,0000*52

$GPGSA,A,3,31,01,23,20,11,30,14,2,1,1,6,1,4*35

$GPGSV,3,1,12,20,84,187,41,01,49,067,46,23,46,238,45,31,45,073,50*7B

$GPGSV,3,2,12,11,25,194,34,13,16,240,04,15,319,30,17,14,273,21*7A

$GPGSV,3,3,12,30,10,026,33,14,05,063,22,05,04,009,25,25,03,195,*7F

$GPRMC,100643.000,A,5522.9036,N,03710.1282,E,0.16.119.11.200507,*0D

Như bạn có thể thấy từ ví dụ trên, cài đặt gốc chứa ít thông báo NMEA hơn so với cài đặt của Garmin. Nếu cần, bộ này có thể được mở rộng bằng cách đặt khoảng thời gian trong các thông báo NMEA bị thiếu.

$GPGGA,100833.000,5522.9076,N,03710.1270,E,1,07,1.3,222.4,M,14,9,M,0000*53

$GPGLL,5522.9076,N,03710.1270,E,100833.000,A*34

$GPGSA,A,3,31,01,23,20,11,30,17,2.1,1.3,1.6*31

$GPGSV,3,1,12,20,84,180,43,01,49,067,47,23,47,238,45,31,45,072,49*77

$GPGSV,3,2,12,11,24,193,26,13,16,240,26,04,15,319,24,17,13,273,31*78

$GPGSV,3,3,12,30,10,025,26,14,04,064,22,25,04,195,05,04,008,21*7C

$GPRMC,100833.000,A,5522.9076,N,03710.1270,E,0.18,4.86,200507,*00

$GPVTG,4,86,T,M,0,18,N,0,3,K*60

$GPZDA,100834.000,05/20/2007,*5A

PSFR100, PSFR102 - cấu hình cổng nối tiếp

Tin nhắn NMEA số 100 được sử dụng để đặt cổng A, tin nhắn 102 - cổng B. Tin nhắn 100 có một trường bổ sung cho phép bạn chuyển giao diện sang giao thức Sirf nhị phân.

Theo đó, trong giao thức nhị phân có lệnh chuyển cổng về định dạng NMEA. Trước khi chuyển sang giao thức nhị phân, bạn cần hiểu liệu có chương trình nào cho phép bạn khôi phục giao thức NMEA trong tương lai hay không.

$PSRF100.0.9600.8.1.0*0C

$PSRF102.9600.8.1.0*3C

  • PSRF100-tiêu đề
  • 0 - tham số cho biết giao thức đã được thay đổi ở chế độ nào (0-Sirf, 1-NMEA)
  • 9600 - tốc độ cổng (4800, 9600, 19200, 38400)
  • 8 - bit dữ liệu (7, 8)
  • 1 - bit dừng (0,1)
  • 0 - ghép nối (0 - không có, 1 lẻ, 2 chẵn)

PSFR101, PSFR104 - khởi tạo các tham số máy thu

Các tin nhắn NMEA được đánh số 101 và 104 nhằm mục đích khởi tạo các tham số dành cho việc thu GPS. Việc xác định được các thông số này có thể tăng tốc thời gian thu ảnh của vệ tinh GPS. Thông báo 101 đặt tọa độ hiện tại ở định dạng XYZ, thông báo 104 - ở định dạng BLH (kinh độ, vĩ độ).

$PSRF101,-2686700,-4304200,3851624,95000,497260,921,12,3*22

$PSRF104.37.3875111.-121.97232.0.95000.237759.922.12.3*3A

  • PSRF101-tiêu đề
  • 37.3875111 - vĩ độ tính bằng độ
  • -121.97232 - kinh độ tính bằng độ
  • 0 - chiều cao, tính bằng mét
  • 95000 - dịch chuyển đồng hồ
  • 237759 - Thời gian GPS, tính bằng giây
  • 922 - số tuần GPS
  • 12 - số kênh
  • 3 - kiểu khởi tạo dữ liệu (1 - khởi động nóng, 2 - khởi động ấm, 3 - khởi tạo dữ liệu, 4 ​​- khởi động nguội với việc xóa dữ liệu hoàn toàn, 8 - khởi động nguội với khôi phục cài đặt gốc)

PSFR103 - cấu hình thế hệ Thông điệp NMEA

Thông báo NMEA này cho phép bạn đặt hoặc truy vấn khoảng thời gian tạo của mỗi thông báo NMEA "gửi đi".

$PSRF103.05.00.01.01*20

  • PSRF103-tiêu đề
  • 05 - tiêu đề tin nhắn
    • 00-GGA
    • 01 - GLL
    • 02 - GSA
    • 04-RMS
    • 05 - VTG
  • 00 - chế độ (0 - cài đặt khoảng thời gian, 1 - yêu cầu)
  • 01 - dấu chấm, tính bằng giây (0-255)
  • 01 - sự hiện diện của tổng kiểm tra (0 - có, 1 - không)

Kết quả thí nghiệm

Trong điều kiện khả năng hiển thị vệ tinh bình thường, bộ thu Garmin eMap tạo ra bộ thông báo NMEA sau:

$GPRMC,104644,A,5522.8965,N,03710.1389,E,0,0,0,0,200507,9,3,E,A*16

$GPRMB,A,,A,A*0B

$GPGGA,104644,5522.8965,N,03710.1389,E, 1 ,07 ,1.2,186,6,M,15,8,M,*44

$GPGSA,A,3,01,04,13,16,20,23,31,2.1,1.2,1.7*35

$GPGSV,3,1, 10 ,01,34,070,48,04,28,311,40,11,10,190,00,13,32,249,41*7E

$GPGSV,3,2, 10 ,16,11,111,40,20,68,142,50,23,64,247,49,25,21,196,00*70

$GPGSV,3,3, 10 ,30,05,012,00,31,36,055,52*7D

$GPGLL,5522.8965,N,03710.1389,E,104644,A,A*40

$GPBOD,T,M,*47

$PGRME, 6.0 ,M,7,7,M,9,8,M*29

$PGRMZ,612,f,3*1E

$PGRMM,WGS 84*06

$GPRTE,1,1,c,*37

Từ việc phân tích các tin nhắn, rõ ràng máy thu hiện đang theo dõi 10 vệ tinh (GSV), trong đó 7 (GGA) được sử dụng để tính toán vị trí. Lỗi định vị ngang bằng 6 mét (RME) và chỉ báo loại giải pháp là 1 (GGA)

Nếu bạn tạo điều kiện để không nhận được tín hiệu GPS thì tin nhắn GGA sẽ chứa các trường “trống” và chỉ báo loại quyết định sẽ nhận giá trị 0 (GGA)

$GPGGA 0 ,00,M,M,*66

$GPGSA,A,1,,*1E

Ở chế độ "bình thường", thông báo RMB và BOD chứa các trường trống. Sau khi điểm tham chiếu Đường được chọn làm điểm đến cuối cùng, các trường này sẽ được điền dữ liệu. Như sau phân tích tin nhắn, khoảng cách tới điểm là 1.620 dặm, góc phương vị chuyển động là 6,3 độ (BOD). Đồng thời, góc phương vị của thông báo BOD và RMB khác nhau 0,1 độ.

$GPRMB,A,0,00,R,Đường ,5524.501,N,03710.445,E, 1.620 ,6.4 ,V,A*59

$GPBOD 6.3 ,T,357.0,M,Đường,*74

Khi tuyến đường Nhà đã được chọn để điều hướng, danh sách thông báo RTE sẽ hiển thị danh sách tất cả các điểm tham chiếu trên tuyến đường. Và trong tin nhắn RMB - số nhận dạng của điểm bắt đầu và điểm cuối (tiếp theo) của tuyến đường.

$GPRTE,1,1,c,HOME,SLOBODA,IERUSALIM,INSTITUT*01

$GPRMB,A,9,99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346.340.6,V,A*1F

Phần kết luận

Trong hầu hết các trường hợp, người dùng không cần và không quan tâm đến việc biết dữ liệu nào đang được truyền đi và trong trường nào. Hầu hết các chương trình điều hướng đều “phân tích” dữ liệu tin nhắn NMEA và trình bày chúng dưới dạng thân thiện với người dùng - đồ thị, sơ đồ, bảng, v.v.

Mối quan tâm đặc biệt là các tin nhắn NMEA dành cho người dùng muốn tiến hành nghiên cứu dữ liệu GPS, tính toán ước tính của các phép đo thu được hoặc phân tích hành vi của máy thu điều hướng trong các điều kiện khác nhau. Có một số chương trình có thể được sử dụng để giải quyết những vấn đề này.

N Tuy nhiên, định dạng NMEA không nhằm mục đích phân tích sâu dữ liệu GPS, vì nó không chứa cái gọi là phép đo "thô" - phạm vi giả, pha, Doppler. Mỗi nhà sản xuất thiết bị định vị đều có giao thức “mở” hoặc “đóng” riêng để hiển thị thông tin này

NMEA là một định dạng đơn giản và dễ hiểu, không chỉ cho phép trao đổi dữ liệu giữa máy thu GPS và chương trình định vị mà còn cung cấp cho người dùng một số hiểu biết về nguyên lý hoạt động của thiết bị định vị vệ tinh.