Nmea 프로토콜 처리 소스 코드. NMEA 프로토콜에 대한 설명

NMEA 프로토콜을 통해 GNSS 데이터를 사용하는 애플리케이션을 테스트해야 했습니다. 항공기 항법 프로그램에 대한 프로젝트를 진행하고 있었기 때문에 공중에서 테스트하는 것은 당연히 비용이 많이 들고, 지상에서 GNSS 수신기를 장착한 차량을 운전하는 것은 특별히 편리하지 않아서 NMEA 프로토콜 데이터를 갖고 싶었습니다. 내 책상에 앉아있는 동안 가상 병렬 포트에서 장비를 이동하는 것으로 추정됩니다. 처음에는 다른 소프트웨어를 찾고 있었고 적합한 것을 찾을 것이라고 생각했지만 대부분은 유료이며 데이터 에뮬레이션 제어는 NMEA 표준의 거의 모든 매개 변수를 에뮬레이션하지만 그다지 편리하지 않습니다. 하지만 기본적으로 좌표, 속도 등을 에뮬레이트하는 간단한 것이 필요했고 상당히 편리하고 논리적인 컨트롤이 필요했습니다. 그래서 저는 이런 종류의 애플리케이션을 C#으로 작성해야 했습니다.

Fly_nmea


NMEA("National Marine Electronics Association") - 전체 이름은 "NMEA 0183"입니다. - 해양(보통 항법) 장비 간의 통신을 위한 텍스트 프로토콜입니다.
데이터는 문장 형태로 전송됩니다. 제안 형식은 다음과 같습니다.
$AAAAAA[,<данные>]*아아 , 어디:
$ - 문장 시작 기호(코드 24h);
AAAAA - 제안의 5자리 주소(이름)입니다.
[, <данные>] - 쉼표로 구분된 데이터 필드 목록(코드 2Сh)
* - 체크섬 기호(코드 2Ah);
hh - 체크섬.

예문:
GGA – GPS 위치 데이터
관찰과 관련된 시간, 장소 및 데이터.
$GPGGA,hhmmss.sss,llll.ll,a,yyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxx*hh

네 줄을 에뮬레이트해야 했습니다.

  • GLL – 위치 좌표
  • GSV – 가시 위성
  • RMC – GPS 및 GLONASS에 권장되는 최소 데이터 세트
  • GSA - 항법 위성에 사용되는 정확도 저하 계수
에뮬레이션은 다음 순서로 구성됩니다.
  • WGS-84 시스템에서 초기 좌표를 설정했습니다.
  • 그런 다음 Mercator와 같은 평면 투영으로 이동합니다(좌표를 변환하기 위해 C#에서 미리 만들어진 라이브러리를 사용했습니다).
  • 평면 좌표 x, y, h를 알고 롤, 피치, 속도와 같은 그래픽 인터페이스를 통해 가변 매개변수를 사용하여 항공기 동작의 물리학을 구현합니다.
  • 평면 좌표를 WGS-84 시스템의 B, L, H 좌표로 변환
  • 필요한 네 줄로 NMEA 표준 메시지 패키지를 구성합니다.
  • 가상 병렬 포트로 보내십시오.
Fly_nmea + 안드로이드 센서
보다 편리한 테스트를 위해 안드로이드 센서의 데이터 수신(기울기 각도)도 조정했습니다. Android는 다음과 같은 두 줄을 보냅니다.
  • "각도:\t236.04152\t-1.0\t-3.0"
  • "계정:\t-0.46309182\t-0.14982383\t-10.56939"
에뮬레이션 애플리케이션에서는 이를 수락하고 경사각에 따라 매개변수를 변경합니다.
  • 정점
에뮬레이션 애플리케이션에서는 프로그램 인터페이스를 통한 제어에서 Android 센서로 전환할 수 있습니다.
Fly_nmea 연결
COM 포트를 에뮬레이트하려면 가상 직렬 포트 에뮬레이터도 유용합니다. 예를 들어 COM1과 같은 두 개의 가상 COM 포트 연결을 구성해야 합니다.<->COM6 및 Fly_nmea 프로그램은 데이터를 COM6으로 보내고 NMEA 프로토콜을 사용하는 프로그램은 COM1로 데이터를 수신합니다.

결론

일반적으로 나는 그러한 소프트웨어를 검색하는 데 더 많은 시간을 보냈고 완전히 만족할 만한 것을 찾지 못해 빨리 직접 작성했습니다. 제가 작업 중인 프로젝트 외에도 2Gis 및 SAS planet과 같이 NMEA 프로토콜을 이해하는 프로그램에 에뮬레이터를 성공적으로 연결할 수 있었습니다.



FlyNMEA 및 안드로이드 센서(UDP를 통해 센서에서 데이터를 전송하는 프로젝트)

NMEA 0183(에서 " 전국해양전자협회") - 해양(일반적으로 내비게이션) 장비(또는 열차에 사용되는 장비) 간의 통신을 위한 텍스트 프로토콜을 정의하는 표준입니다. 이 표준을 사용하는 GPS 수신기의 확산으로 인해 특히 인기를 얻었습니다.

NMEA 0183의 라인 일반 보기

  • "$" 또는 "!" (16진수 24 또는 16진수 21)
  • 5자리 메시지 ID입니다. 처음 두 글자는 메시지 소스 식별자이고, 다음 세 글자는 특정 버전의 NMEA 0183 프로토콜에 따른 메시지 형식 식별자입니다.
  • 쉼표로 구분된 데이터(문자, 숫자 및 마침표) 목록입니다. 누락된 데이터가 있는 경우 내부에줄에는 쉼표가 계속 표시됩니다(예: ","). 일부 분야 마지막에줄이 완전히 누락되었을 수 있습니다.
  • 기호 "*".
  • 8비트 XOR - 바이트(0-9, A)의 16진수 표현을 위해 "$"와 "*" 사이의 줄에 있는 모든 문자("," 및 "^" 포함)의 합계를 두 개의 대문자 ASCII 문자로 변환합니다. –F) .
  • (16진수 0D, 16진수 0A).

최대 메시지 길이는 82자로 제한됩니다(NMEA 0183 rev 3.0).

표준은 250개 이상의 NMEA 시퀀스 식별자를 설명합니다. 표준은 4800보드의 데이터 교환율을 정의합니다. (38400보드 이상의 속도에는 확장 표준 NMEA-0183-HS가 있습니다.)

이 표준을 사용하면 제조업체에서 장치 작동에 대한 추가 정보를 전달하기 위해 자주 사용하는 고유한 시퀀스 식별자를 추가할 수 있습니다.

RMC 문자열(특별한 예)

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

필드 값:

  • "GP" - 소스 식별자 주어진 예에서는 GPS, "GL" - GLONASS, "GA" - Galileo, "GN" - GLONASS+GPS 등입니다.
  • "RMC" - "최소 문장 권장 C"
  • "hhmmss.sss" - UTC에 따른 위치 수정 시간: "hh" - 시간, "mm" - 분, "ss.sss" - 초. 소수 초의 길이는 다양합니다. 선행 0은 생략되지 않습니다.
  • "A" - 상태: "A" - 데이터를 신뢰할 수 있음, "V" - 신뢰할 수 없음.
  • "GGMM.MM" - 위도. 2자리 도("GG"), 2자리 전체 분, 마침표 및 가변 길이의 분수 부분. 선행 0은 생략되지 않습니다.
  • "P" - 북쪽은 "N", 남쪽 위도는 "S"입니다.
  • "gggmm.mm" - 경도. 3자리 도("ggg"), 2자리 전체 분, 마침표 및 가변 길이의 분수 부분. 선행 0은 생략되지 않습니다.
  • "J" - "E"는 동쪽, "W"는 서쪽 경도입니다.
  • "v.v"는 지면에 대한 속도의 수평 구성 요소(노트)입니다. 부동 소수점 수. 가변 길이의 정수 및 분수 부분.
  • "b.b" - 트랙 각도(속도 방향)(도)입니다. 부동 소수점 수. 가변 길이의 정수 및 분수 부분. 값 0은 북쪽, 90은 동쪽, 180은 남쪽, 270은 서쪽으로의 이동에 해당합니다.
  • "ddmmyy" - 날짜: 월, 월, 연도의 마지막 2자리 숫자(앞에 0이 필요함).
  • "x.x"는 일부 모델을 사용하여 계산된 자기 편각(도)입니다(종종 누락됨). 부동 소수점 수. 가변 길이의 정수 및 분수 부분.
  • "n" - 자기 편각 방향: 자기 경로를 얻으려면 자기 편각을 "E"에서 빼고 "W"를 실제 경로에 추가해야 합니다.
  • "m" - 모드 표시기: "A" - 자율, "D" - 차동, "E" - 근사치, "N" - 신뢰할 수 없는 데이터(종종 누락됨, 이전 버전의 NMEA에서는 쉼표를 포함한 이 필드가 누락됨)
  • "hh" - 체크섬.
  • - 바이트는 0x0D입니다.
  • - 바이트는 0x0A입니다.

RMC 문자열 예

실시예 1

$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,*17

필드 값:

  • 12시간 55분 4.049초 UTC
  • "A" - 신뢰할 수 있음
  • 위도 55° 42.2389", 북쪽
  • 경도 37° 41.6063", 동쪽
  • 속도 0.06노트

NMEA(National Marine Electronics Association) 2000은 내비게이션, 통신 및 기타 정보 네트워크 장비에 대한 데이터 전송 표준입니다.

대부분의 경우 NMEA2000은 해양 응용 분야에 사용됩니다. 이 프로토콜은 데이터 전송 프로토콜을 기반으로 합니다. 할 수 있다(Controller Area Network), 주로 선박 자동화에 사용됩니다.

NMEA(National Marine Electronics Association)는 다양한 제조업체의 해양 제품 간의 호환성을 보장하기 위해 특별한 프로토콜을 개발했습니다.

NMEA 프로토콜은 처음부터 새로운 필드와 메시지를 포함하기 위해 여러 가지 수정을 거쳤습니다. 대부분의 수신기가 지원하는 현재 버전은 버전 2.3, 새로운 것에 대한 설명이 이미 게시되었지만 버전 3.0.

NMEA 메시지

NMEA 2000은 수신된 데이터뿐만 아니라 측정값도 설명합니다. , , 기압계 및 선박에 사용되는 기타 항법 장치. 대부분의 휴대용 GPS 수신기의 데이터 교환 인터페이스는 NMEA 사양에 따라 구현됩니다. 실시간 데이터 표시를 제공하는 대부분의 탐색 프로그램은 NMEA 프로토콜을 지원하고 "이해"합니다. 이 데이터에는 GPS 수신기의 전체 내비게이션 측정값(위치, 속도, 시간)이 포함되어 있습니다.

전체 NMEA 메시지 사양은 공개적으로 제공되지 않으며 공식적으로 전자적으로 다운로드할 수 없습니다. 개별 섹션, NMEA 프로토콜에 대한 일반적인 설명 및 가장 인기 있는 메시지는 인터넷에서 찾을 수 있습니다. //www.nmea.org/ 웹사이트에서 NMEA 문서를 공식적으로 구입할 수 있습니다.

발신 NMEA 메시지

모든 NMEA 메시지는 쉼표로 구분된 순차적 데이터 세트로 구성됩니다. 각 개별 메시지는 다른 메시지와 독립적이며 완전히 "완전"합니다. NMEA 메시지에는 다음이 포함됩니다.

  • 제목,
  • ASCII 문자로 표시되는 데이터 세트,
  • 전송된 정보의 정확성을 확인하기 위한 "체크섬" 필드입니다.

표제

일반적으로 제목은 5자로 구성됩니다. 처음 두 문자는 메시지 유형을 결정하고 나머지 세 문자는 메시지 이름을 나타냅니다. 예를 들어 메시지의 GPS NMEA 헤더는 "GP"로 시작됩니다. NMEA 사양에 설명되어 있지 않지만 일반 규칙에 따라 GPS 수신기에 구현되는 메시지에는 "P" 접두사가 붙고 그 뒤에 각 회사 고유의 문자 3개가 붙습니다. 예를 들어 NMEA 메시지에는 접두사 "PGRM", Magellan - "PMGN"이 있습니다.

데이터

각 NMEA 메시지는 "$"로 시작하고 "\n"(줄 바꿈)으로 끝나며 80자를 초과할 수 없습니다. 모든 데이터는 한 줄에 포함되며 쉼표로 구분됩니다. 정보는 ASCII 텍스트 형식으로 제공되며 특별한 디코딩이 필요하지 않습니다. 데이터가 할당된 80자에 맞지 않으면 여러 메시지로 "분할"됩니다. 이 형식을 사용하면 개별 데이터 필드의 문자 수와 정확성을 제한할 수 없습니다. 예를 들어, 좌표 값의 소수 부분은 소수점 이하 3자리 또는 4자리로 표시될 수 있지만 이는 필드 번호별로 메시지에서 필요한 데이터를 추출하는 소프트웨어의 작동에 어떤 식으로든 영향을 주어서는 안 됩니다.

"체크섬" 필드

각각의 마지막에는 NMEA메시지에는 "*" 기호로 데이터와 구분된 "체크섬" 필드가 포함되어 있습니다. 필요한 경우 수신된 각 메시지의 무결성과 유효성을 확인하는 데 사용할 수 있습니다.

수신 NMEA 메시지

NMEA 2000 프로토콜은 나가는 메시지뿐만 아니라 들어오는 메시지도 지원합니다. 예를 들어 경로 경유지를 업데이트하거나 추가할 수 있습니다. 이러한 메시지는 NMEA 형식으로 엄격하게 형식화되어야 하며, 그렇지 않으면 무시됩니다.

메시지 목록

NMEA 프로토콜은 내비게이션 장비에 적극적으로 사용되는 메시지 중 24개가 넘는 다양한 메시지의 대규모 목록을 설명합니다. 큰 인기와 간단한 데이터 표현으로 인해 NMEA 프로토콜은 해양 장비뿐만 아니라 측지, 가정용 및 항공 GPS 수신기에도 적용됩니다.

AAM - 웨이포인트 도착
ALM - 연감 데이터
APA – 자동 조종 장치 데이터 “A”
APB – 자동 조종 데이터 “B”
이사회 – 목적지 방향
DTM – 사용된 데이텀
GGA – 고정 솔루션 정보
GLL – 위도 및 경도 데이터
GSA - 일반 위성 정보
GSV – 자세한 위성 정보
MSK – 기본 수신기로 제어권 이전
MSS – 기본 수신기 상태
RMA – 권장 Loran 데이터 세트
RMB – 권장 GPS 내비게이션 데이터 세트
RMC – 권장되는 최소 GPS 데이터 세트
RTE – 경로 정보
VTG – 동작 및 속도 벡터
WCV – 웨이포인트 근처의 속도 데이터
WPL – 웨이포인트 데이터
XTC – 트랙 이탈 오류
XTE – 측정된 오프트랙 오류
ZTG – 목적지 도착까지 UTC 시간 및 남은 시간
ZDA - 날짜 및 시간

일부 NMEA 메시지에는 동일한 데이터 필드가 포함되거나 다른 더 작은 NMEA 메시지의 데이터가 완전히 포함될 수 있습니다.

1. GGA – 고정 솔루션에 대한 정보입니다.

가장 인기 있고 가장 많이 사용되는 NMEA 메시지는 수평 좌표, 고도 값, 사용된 위성 수 및 솔루션 유형 등 현재 고정 솔루션에 대한 정보를 제공합니다.

$GPGGA,123519,4807.038,N,01131.000,E,1.08,0.9,545.4,M,46.9,M,*47어디:

GGA – NMEA 헤더

123519 – UTC 시간 12:35:19

4807.038, N – 위도, 북위 48도 7.038분

01131.000, E – 경도, 동경 11도 31.000분

1 – 솔루션 유형*, 독립형 솔루션

08 – 사용된 위성 수

0.9 – 기하학적 요소, HDOP

545.4, M – 해발 고도(미터)

46.9, M – WGS 84 타원체 위의 지오이드 높이

[빈 필드] – 마지막 DGPS 보정이 수신된 이후 경과된 시간입니다. DGPS 모드가 활성화되면 채워집니다.

[빈 필드] – 기지국의 식별 번호입니다. DGPS 모드가 활성화되면 채워집니다.

*솔루션 유형:

2. GSA - 위성에 관한 일반 정보

이 NMEA 메시지에는 위치 계산에 사용되는 위성 목록과 위치 계산의 정확성을 결정하는 기하학적 DOP 값이 포함되어 있습니다. DOP 매개변수는 하늘에 있는 위성의 기하학적 배열에 따라 결정됩니다. 위성이 하늘에 더 잘 "분산"될수록 DOP는 낮아지고 위치 정확도는 높아집니다. 최소 PDOP 값(= 1)은 하나의 위성이 사용자 바로 위에 있고 나머지 3개의 위성이 수평으로 고르게 분포되어 있는 상황에 해당합니다. PDOP 값은 HDOP와 VDOP의 제곱합의 제곱근으로 계산됩니다.

$GPGSA,A,3,04,05,09,12,24,2.5,1.3,2.1*39어디:

GSA – NMEA 헤더

A – 2D와 3D 솔루션 중 선택 유형, 자동(A-자동, M-수동)

3 – 솔루션 유형, 3D 솔루션(1 – 솔루션 없음, 2 – 2D 솔루션, 3 – 3D 솔루션)

04.05… – 위성 위치 계산에 사용되는 PRN 코드(12개 필드)

2.5 – 공간 기하학적 인자, PDOP

1.3 – 수평 기하학적 인자, HDOP

2.1 - 수직 기하 인자, VDOP

3. GSV - 위성에 대한 자세한 정보

이 NMEA 메시지에는 GPS 내비게이터가 추적하는 모든 위성에 대한 자세한 정보가 포함되어 있습니다. 80자 제한을 기준으로 하나의 NMEA 메시지는 4개의 위성에 대한 데이터만 전송할 수 있습니다. 따라서 12개의 위성에는 3개의 GSV 메시지가 필요합니다. SNR(Signal to Noise Ration) 필드에는 위성으로부터 수신된 항법 신호 수준의 값이 포함됩니다. 이론적으로 그 값은 0에서 99까지 다양하며 dB 단위로 측정됩니다. 실제로 신호 레벨은 25 ~ 35dB 범위에 있습니다. 여기서 이 매개변수는 절대적인 것이 아니며 다양한 모델 및 제조업체의 수신기 감도를 비교하는 데 적합하지 않다는 점에 주목할 가치가 있습니다. GPS 내비게이터는 수신된 신호의 레벨을 계산하기 위해 다양한 알고리즘을 사용할 수 있으며, 이로 인해 수신기의 감도가 동일해도 결과가 달라집니다. 가시적인 각 GPS 위성에 대해 위성의 신호 강도, 앙각 및 방위각을 포함한 일련의 정보가 전송됩니다. 이러한 "세트"의 수는 가시 위성의 총 수에 따라 결정되며 그 값은 별도의 필드로 전송됩니다.

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

GSV – NMEA 헤더

2 – 패키지의 GSV 메시지 수

1 – 패키지의 메시지 번호(1~3)

08 – 가시 위성 수

01 – 위성 번호

40 – 앙각(도)

083 - 방위각(도)

46 - SNR, 신호 레벨

이 NMEA 메시지에는 소위 "PVT" 데이터 전체 세트가 포함되어 있습니다. "PVT"는 "위치, 속도, 시간"의 일반적인 약어입니다.

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A어디:

RMC – NMEA 헤더 123419 – UTC 시간, 12:34:59

A – 상태(A – 활성, V – 무시)

NMEA 0183– GPS 수신 모듈에 사용되는 텍스트 통신 프로토콜입니다. 이 표준은 해양 항법 장비의 통신을 위해 만들어졌습니다. 이 프로토콜은 ASCII 문자를 사용하여 텍스트 명령 및 메시지 전송을 제공합니다. 따라서 메시지를 수신하려면 UART 직렬 인터페이스를 사용하는 것으로 충분하며 모든 메시지는 COM 포트를 사용하여 컴퓨터로 직접 전송할 수 있지만 신호 레벨을 변환해야 할 필요성도 잊지 않습니다.

GPS 모듈은 위도와 경도, 속도, 방향, 시간, 위성 수 등 다양한 데이터 세트가 포함된 다양한 형식의 메시지를 전송합니다. 메시지는 순차적으로 전송되며 여러 유형으로 구분됩니다. 각 메시지 유형의 형식에는 해당 필드에 엄격하게 정의된 정보가 포함됩니다. GPS 모듈이 생성하는 메시지의 일반적인 구조를 자세히 살펴보겠습니다.

$ - 모든 메시지는 이 기호로 시작됩니다.

그 뒤에는 5개의 텍스트 문자로 구성된 식별자가 옵니다. 처음 두 글자는 내비게이션 시스템의 유형을 나타냅니다. "GP" - GPS또는 " GL" - 글로나스등. 다음 3개 문자는 메시지 형식 식별자로, 후속 전송 데이터의 내용을 완전히 결정합니다. 예를 들어 "RMC"- 이는 시간과 날짜, 위도와 경도, 속도, 진로 및 자기 편차(도 단위)에 대한 정보를 포함하는 권장 최소 데이터입니다(누락될 수 있음). 또는 "GSA", 위성 데이터가 여기로 전송됩니다. 주요 메시지 유형의 구조는 아래에서 설명됩니다.

그런 다음 «,» - 쉼표. 메시지 본문 바로 뒤에는 다양한 데이터가 포함되며 동일한 쉼표로 서로 구분됩니다. 전송된 숫자가 정수가 아닌 경우 정수와 소수 부분 사이의 구분 기호는 점입니다. «.» .

메시지 본문의 끝은 기호로 표시됩니다. «*» . 다음은 "$"와 "*" 사이에 포함된 모든 문자, 즉 데이터 자체와 메시지 시작 부분의 식별자를 포함하여 메시지의 전체 본문에 대한 체크섬입니다. 체크섬은 메시지 문자의 모든 16진수 ASCII 코드에 대한 XOR(배타적 OR)로 계산됩니다.

그리고 각 메시지의 맨 끝에는 개행 문자가 있어야 합니다.

다양한 메시지 유형의 목적과 구조를 살펴보겠습니다.

R.M.C.– 권장되는 최소 탐색 데이터. 메시지에는 필요한 최소한의 정보가 포함되어 있습니다. 이 데이터에는 위도와 경도, 날짜와 시간, 속도가 포함됩니다. 많은 작업의 경우 모듈에서와 같이 더 많은 작업이 필요하지 않습니다. 퀘텔 L50위성 및 신호 수준에 대한 정보가 전혀 필요하지 않기 때문에 다른 모든 유형의 메시지 전송을 껐습니다. 그리고 불필요한 정보를 수신하려면 이 데이터를 처리하는 프로그램이 복잡해져야 합니다. 메시지의 구조는 다음과 같습니다.

$GPRMC 으으으으으으.sss,ㅏ,ddmm.mmmm,N,ddmm. 으음 , 이자형,v.v.. , ㅋㅋㅋ,x.x,n,*아아

이 메시지에는 다음 정보가 포함되어 있습니다.

  • GPRMC– GPS 위성 시스템, RMC 메시지 식별자
  • 으으으으으으.sss– 시간(그리니치 표준시), 여기서 hh – 시, mm – 분, ss.sss – 초
  • – 데이터가 신뢰할 수 있거나 V– 데이터가 신뢰할 수 없습니다. 상징 위치 데이터를 계산하는 데 필요한 위성 신호가 안정적으로 수신된다는 메시지가 제공됩니다. 상징 V수신기가 위성을 볼 수 없거나 발견된 위성 수가 좌표를 자신있게 계산하기에 충분하지 않을 때 발생합니다. 예를 들어, 패널 하우스 어딘가에서 창문에서 멀리 떨어진 곳에서 GPS 모듈을 켜면 기호가 나타날 가능성이 높습니다. V받은 메시지에서.
  • ddmm.mmmm– 위도, 도, 분
  • N또는 에스- 북쪽이나 남쪽. 당신이 속한 반구. 호주에 계시다면 표시됩니다. 에스. 예카테린부르크에서는 내 GPS 모듈이 N.
  • ddmm.mmmm– 경도, 도, 분
  • 이자형또는 – 서반구 또는 동반구
  • v.v– 노트 속도
  • . – 지면 위를 도 단위로 향합니다. 정북으로 이동하면 0도가 됩니다.
  • ㅋㅋㅋ- 날짜
  • 더블 엑스– 자기 편각
  • N– 자기 편각의 방향. 이 마지막 두 매개변수에 대해서는 아무것도 설명할 수 없습니다. 예를 들어 내 모듈 GPS Quectel L50아파트 리셉션에서 이 데이터는 창에 전혀 표시되지 않았으며 단순히 건너뛰었습니다.
  • – 탐색 모드: N– 부정확한 데이터, – 자율적, – 차동

다음은 RMC 메시지의 예입니다.

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

  • 그리니치 표준시 10시 59분 54초
  • – 데이터는 신뢰할 수 있다
  • 위도 31도 50.6371분
  • N– 북부
  • 경도 117도 11.9399분
  • 이자형– 동부
  • 속도 0.00노트
  • 96.1도
  • 날짜 2013년 3월 25일
  • 에 관한 정보 자기 편각없음
  • 모드 - 자발적인
  • 메시지 문자의 체크섬 0×053

여기서 한 가지 점에 주목해야 합니다. 위도 및 경도 데이터에는 분 단위의 소수 부분이 포함되어 있으며 이는 소수이므로 "초" 수에 전혀 해당하지 않습니다. 제가 사용해 본 GPS 프로그램은 지도에 좌표를 정확하게 표시해 주었습니다. 하지만 이 숫자를 구글 지도 검색창에 입력하면 지도상의 위치는 실제 위치에서 몇 킬로미터 떨어져 있게 됩니다. 이 경우 획득된 좌표를 입력할 때 위도와 경도의 소수 부분을 60으로 나누어 이 숫자를 "초"로 변환해야 합니다. Quectel L50 모듈을 처음 연결하고 얻은 위도 및 경도 좌표를 Google 지도 검색창에 입력했을 때 지도에 Uralmash 지역 어딘가에 표시된 심각한 오류가 있는 위치가 표시되었습니다.

이 프로토콜에 사용되는 다른 메시지 유형은 다음과 같습니다.

  • 빈티지- 실제 코스 방향 및 지상 속도
  • G.G.A.- 마지막 위치 데이터
  • G.S.A.- 활성 위성에 대한 데이터
  • GSV- 가시 위성, 위치, 개수, 신호 강도에 대한 데이터
  • GLL- 위도, 경도 및 시간 데이터
  • ZDA- 시간 및 날짜 정보

각 메시지가 무엇으로 구성되어 있는지 자세히 설명하지 않았습니다. 기사 끝에 프로토콜을 설명하는 문서 링크가 제공됩니다. 특정 유형의 GPS 모듈은 나열된 데이터 중 일부를 전송하지 못할 수 있습니다. 다양한 유형의 데이터 전송을 활성화 또는 비활성화할 수 있으며 전송 기간도 설정할 수 있습니다. 모듈을 구성하려면 식별자로 시작하는 특수 명령이 있습니다. $PSRFxxx, 어디 트리플 엑스보내는 메시지와 마찬가지로 명령의 유형과 형식을 지정합니다.

예를 들어, 다음 명령은 $PSRF100.0.9600.8.1.0*0C 통신 프로토콜을 설정하고 직렬 포트 매개변수를 구성합니다.

  • $PSRF100 –기본 SIRF 프로토콜 명령 식별자
  • 0 – 바이너리 SIRF 프로토콜, 1 – NMEA 프로토콜
  • 9600 – 비트/초 속도
  • 8 데이터 비트
  • 1 정지 비트
  • 0 – 패리티 검사 비활성화

$PSRF103.00.00.02.01*26 다양한 유형의 모듈 메시지에 대한 출력 매개변수를 구성합니다.

  • $PSRF103– SIRF 기본 프로토콜 명령 식별자
  • 소수점 뒤에는 사용자 정의 메시지 유형을 결정하는 두 자리 숫자가 있습니다: 00 - GGA
    01 - GLL
    02 - GSA
    03 - GSV
    04 - RMC
    05 - 빈티지
  • 다음 두 자리는 메시지가 발행되는 순서를 구성합니다. 예: 00 - 주기적으로
    01 - 요청 시
  • 다음 숫자는 메시지 기간을 초 단위로 설정합니다. 00 = 꺼짐(메시지가 비활성화됨)
    1-255 – 이 유형의 메시지 간 간격(초)
  • 그런 다음 모듈에서 전송한 NMEA 메시지에서 체크섬 전송이 활성화/비활성화됩니다. 00 – 체크섬 전송이 비활성화됩니다.
    01 – 체크섬이 전송됩니다.
  • 나가는 NMEA 메시지에서와 같이 "*" 문자 뒤에는 체크섬 및 줄 바꿈 문자가 전송됩니다.

이것이 제가 NMEA 0183 프로토콜과 SIRF 칩셋의 모듈 제어 명령에 대해 간략하게 설명하고 싶었던 전부입니다. 이러한 모든 메시지와 명령에 대한 보다 자세한 디코딩은 예를 들어 아래 링크에서 다운로드할 수 있는 Quectel L50 모듈 프로토콜에 대한 설명에 나와 있습니다.

NMEA 프로토콜에 대한 설명입니다.

Garmin 및 GlobalSat 수신기에 구현

소개

NMEA(National Marine Electronics Association)는 다양한 제조업체의 해양 항법 장비 간의 호환성을 유지하기 위해 특별한 프로토콜을 개발했습니다. 이 NMEA 프로토콜은 GPS 수신기에서 수신한 데이터뿐만 아니라 해양 선박에 사용되는 소나, 레이더, 전자 나침반, 기압계 및 기타 항법 장치의 측정값도 설명합니다. 대부분의 휴대용 GPS 수신기의 데이터 교환 인터페이스는 NMEA 사양에 따라 구현됩니다. 실시간 데이터 표시를 제공하는 대부분의 탐색 프로그램은 NMEA 프로토콜을 지원하고 "이해"합니다. 이 데이터에는 GPS 수신기의 전체 내비게이션 측정값(위치, 속도, 시간)이 포함되어 있습니다. 모든 NMEA 메시지는 쉼표로 구분된 순차적 데이터 세트로 구성됩니다. 각 개별 메시지는 다른 메시지와 독립적이며 완전히 "완전"합니다. NMEA 메시지에는 헤더, ASCII 문자로 표시되는 데이터 세트, 전송된 정보의 유효성을 확인하기 위한 체크섬 필드가 포함됩니다. 표준 NMEA 메시지의 헤더는 5자로 구성되며, 처음 두 문자는 메시지 유형을 결정하고 나머지 세 문자는 메시지 이름을 나타냅니다. 예를 들어 모든 GPS NMEA 메시지에는 "GP"라는 접두사가 붙습니다. NMEA 사양에 설명되어 있지 않지만 일반 규칙에 따라 GPS 수신기에 구현되는 메시지에는 "P" 접두사가 붙고 그 뒤에 각 회사 고유의 문자 3개가 붙습니다. 예를 들어 Garmin의 "기본" NMEA 메시지에는 접두사 "PGRM", Magellan – "PMGN"이 있습니다. 각 NMEA 메시지는 "$"로 시작하고 "\n"("줄 바꿈")으로 끝나며 80자를 초과할 수 없습니다. . 모든 데이터는 한 줄에 포함되며 서로 쉼표로 구분됩니다. 정보는 ASCII 텍스트 형식으로 제공되며 특별한 디코딩이 필요하지 않습니다. 데이터가 할당된 80자에 맞지 않으면 여러 NMEA 메시지로 "분할"됩니다. 이 형식을 사용하면 개별 데이터 필드의 문자 수와 정확성을 제한할 수 없습니다. 예를 들어, 좌표 값의 소수 부분은 소수점 이하 3자리 또는 4자리로 표시될 수 있지만 이는 필드 번호별로 메시지에서 필요한 데이터를 선택하는 소프트웨어 작동에 어떤 식으로든 영향을 주어서는 안 됩니다. 각 NMEA 메시지 끝에는 "*" 문자로 데이터와 구분된 "체크섬" 필드가 있습니다. 필요한 경우 수신된 각 메시지의 무결성과 유효성을 확인하는 데 사용할 수 있습니다. NMEA 프로토콜은 나가는 메시지뿐만 아니라 들어오는 메시지도 지원합니다. 예를 들어 경로 경유지를 업데이트하거나 추가할 수 있습니다. 이러한 메시지는 NMEA 형식을 엄격하게 준수하여 생성되어야 합니다. 그렇지 않으면 GPS 수신기에서 무시됩니다. 모든 내비게이션 프로그램과 수신기 모델이 이 모드를 지원하는 것은 아니라는 점은 주목할 가치가 있습니다. 왜냐하면 Garmin, Magellan 등 제조업체의 독점 프로토콜을 사용하여 지점과 경로를 로드하기 때문입니다. NMEA 프로토콜은 처음부터 새로운 필드 및 메시지 추가와 관련하여 여러 가지 수정을 거쳤습니다. 대부분의 수신기에서 지원되는 현재 버전은 버전 2.3이지만 새 버전 3.0이 이미 게시되었습니다. NMEA 메시지의 전체 사양은 공개적으로 제공되지 않으며 공식적으로 전자 형식으로 다운로드할 수 없습니다. 개별 섹션, NMEA 프로토콜에 대한 일반적인 설명 및 가장 널리 사용되는 메시지는 인터넷에서 찾을 수 있습니다. http://www.nmea.org/에서 NMEA 문서를 공식적으로 구입할 수 있습니다.

메시지 목록

NMEA 프로토콜은 내비게이션 장비에서 활발하게 사용되는 24개의 메시지를 식별할 수 있는 다양한 메시지의 대규모 목록을 설명합니다. 큰 인기와 간단한 데이터 표현으로 인해 NMEA 프로토콜은 해양 장비뿐만 아니라 측지, 가정용 및 항공 GPS 수신기에도 적용됩니다.

    AAM – 웨이포인트 도착

    ALM - 연감 데이터

    APA – 자동 조종 장치 데이터 “A”

    APB – 자동 조종 데이터 “B”

    이사회 – 목적지 방향

    DTM – 사용된 데이텀

    GGA – 고정 솔루션 정보

    GLL – 위도 및 경도 데이터

    GSA - 일반 위성 정보

    GSV – 자세한 위성 정보

    MSK – 기본 수신기로 제어권 이전

    MSS – 기본 수신기 상태

    RTE – 경로 정보 VTG – 동작 및 속도 벡터

    WCV - 웨이포인트 근처의 속도 데이터

    WPL – 웨이포인트 데이터

    XTC – 트랙 이탈 오류

    XTE – 측정된 오프트랙 오류

    ZTG – 목적지 도착까지 UTC 시간 및 남은 시간

    ZDA – 날짜 및 시간.

일부 NMEA 메시지에는 동일한 데이터 필드가 포함되거나 다른 더 작은 NMEA 메시지의 데이터가 완전히 포함될 수 있습니다.

GGA - 고정 솔루션에 대한 정보입니다.

가장 인기 있고 가장 많이 사용되는 NMEA 메시지는 수평 좌표, 고도 값, 사용된 위성 수 및 솔루션 유형 등 현재 고정 솔루션에 대한 정보를 제공합니다.

$GPGGA,123519,4807.038,N,01131.000,E,1.08,0.9,545.4,M,46.9,M,*47

GGA – NMEA 헤더

123519 –UTC 시간 12:35:19

4807.038, N – 위도, 북위 48도 7.038분

01131.000, E – 경도, 동경 11도 31.000분

1형 솔루션, StandAlone 솔루션

08 – 사용된 위성 수

0.9 – 기하학적 요소, HDOP

545.4, M – 해발 고도(미터)

46.9, M – WGS 84 타원체 위의 지오이드 높이

[빈 필드] – 마지막 DGPS 보정이 수신된 이후 경과된 시간입니다. DGPS 모드가 활성화되면 채워집니다.

[빈 필드] – 기지국의 식별 번호입니다. DGPS 모드가 활성화되면 채워집니다.

GSA – 위성에 관한 일반 정보입니다.

이 NMEA 메시지에는 위치 계산에 사용되는 위성 목록과 위치 계산의 정확성을 결정하는 기하학적 DOP 값이 포함되어 있습니다. DOP 매개변수는 하늘에 있는 위성의 기하학적 배열에 따라 결정됩니다. 위성이 하늘에 더 잘 "분산"될수록 DOP는 낮아지고 위치 정확도는 높아집니다. 최소 PDOP 값(= 1)은 하나의 위성이 사용자 바로 위에 있고 나머지 3개의 위성이 수평으로 고르게 분포되어 있는 상황에 해당합니다. PDOP 값은 HDOP와 VDOP의 제곱합의 제곱근으로 계산됩니다.

$GPGSA,A,3,04,05,09,12,24,2.5,1.3,2.1*39

    GSA – NMEA 헤더

    A – 2D와 3D 솔루션 중 선택 유형, 자동(A-자동, M-수동)

    3 – 솔루션 유형, 3D 솔루션(1 – 솔루션 없음, 2 – 2D 솔루션, 3 – 3D 솔루션)

    04.05… - 위성 위치 계산에 사용되는 PRN 코드(12개 필드)

    2.5 – 공간 기하학적 인자, PDOP

    1.3 – 수평 기하학적 인자, HDOP

    2.1 - 수직 기하 인자, VDOP

GSV - 위성에 대한 자세한 정보

이 NMEA 메시지에는 GPS 내비게이터가 추적하는 모든 위성에 대한 자세한 정보가 포함되어 있습니다. 80자 제한을 기준으로 하나의 NMEA 메시지는 4개의 위성에 대한 데이터만 전송할 수 있습니다. 따라서 12개의 위성에는 3개의 GSV 메시지가 필요합니다. SNR(Signal to Noise Ration) 필드에는 위성으로부터 수신된 항법 신호 수준의 값이 포함됩니다. 이론적으로 그 값은 0에서 99까지 다양하며 dB 단위로 측정됩니다. 실제로 신호 레벨은 25 ~ 35dB 범위에 있습니다. 여기서 이 매개변수는 절대적인 것이 아니며 다양한 모델 및 제조업체의 수신기 감도를 비교하는 데 적합하지 않다는 점에 주목할 가치가 있습니다. GPS 내비게이터는 수신된 신호의 레벨을 계산하기 위해 다양한 알고리즘을 사용할 수 있으며, 이로 인해 수신기의 감도가 동일해도 결과가 달라집니다. 가시적인 각 GPS 위성에 대해 위성의 신호 강도, 앙각 및 방위각을 포함한 일련의 정보가 전송됩니다. 이러한 "세트"의 수는 가시 위성의 총 수에 따라 결정되며 그 값은 별도의 필드로 전송됩니다.

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

    GSV – NMEA 헤더

    2 – 패키지의 GSV 메시지 수

    1 – 패키지의 메시지 번호(1~3)

    08 – 가시 위성 수

    01 – 위성 번호

    40 – 앙각(도)

    083 - 방위각(도)

    46 - SNR, 신호 레벨

이 NMEA 메시지에는 소위 "PVT" 데이터 전체 세트가 포함되어 있습니다. "PVT"는 "위치, 속도, 시간"의 일반적인 약어입니다.

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

    RMC – NMEA 헤더

    123419 – UTC 시간, 12:34:59

    A – 상태(A – 활성, V – 무시)

    4807.038,N – 위도, 북위 48도 07.038분

    01131.000, E – 경도, 동경 11도 31.000분

    022.4 – 속도(노트)

    003.1,W – 자기 변형

GLL - 위도 및 경도 데이터

위도 및 경도 좌표와 이 솔루션이 계산된 시간이 포함된 NMEA 메시지입니다.

$GPGLL,4916.45,N,12311.12,W,225444,A,*31

    GLL – NMEA 헤더

    4916.46,N – 위도, 북위 49도 16분 45초

    12311.12,W-경도, 서경 123도 11.12분

    225444 – UTC 시간 단위의 고정 시간, 22:54:44

BOD - 목적지까지의 방위각

이 NMEA 메시지는 내비게이션 모드에서 목적지까지의 방위를 나타냅니다.

$GPBOD,045.,T,023.,M,DEST,START*01

    이사회 – NMEA 헤더

    045.,T – 해당 지점까지의 실제 방향

    023.,M – 한 지점에 대한 자기 방향

    DEST – 엔드포인트 식별 번호

    START – 시작점의 식별 번호

$GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20

    RMB – NMEA 헤더

    A – 데이터 유형, (A – 활성, V – 무시)

    0.66,L – 트랙으로부터의 이탈. 매개변수는 해리 단위로 정의됩니다. (L – 왼쪽, R – 오른쪽)

    003 - 출발점 식별 번호

    004 - 엔드포인트 식별 번호

    4917.24,N – 끝점의 위도 값, 북위 49도 17.24분

    12309.57,W – 끝점의 경도 값, 서경 123도 09.57분

    001.3 – 지점까지의 거리(해리)

    000.5 - 속도(노트)

    V – 도착 정보(A – 도착, V – 아직 도달하지 않은 지점)

RTE – 경로 정보

NMEA RTE 메시지는 활성 경로의 경유지 목록을 표시합니다. RTE 메시지에는 두 가지 유형이 있습니다. 첫 번째 경우에는 모든 경로 지점이 표시됩니다. 두 번째에는 경로를 따라 이동하면서 아직 방문해야 할 남은 지점의 목록만 있습니다. NMEA 프로토콜에는 메시지 길이가 80자를 초과할 수 없다는 제한이 있다는 점을 고려하면 RTE 메시지는 여러 줄로 구성될 수 있습니다.

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

    RTE – NMEA 헤더

    2 – 전체 데이터 목록을 표시하기 위한 총 메시지 수

    1 – 일반 목록의 메시지 번호

    с – RTE 메시지 유형(с – 경로 지점의 전체 목록, w – 아직 방문하지 않은 지점 목록)

    0 – 경로 식별자

    W3IWI,DRIVWY,.. - 웨이포인트 목록

가민 기능

Garmin 수신기는 GPS 측정값, 위치 및 시간(GGA, GLL, GSA, GSV, RMC)이 포함된 대부분의 NMEA 메시지를 지원합니다. 내비게이션 메시지뿐만 아니라 - RMB, BOD

이러한 메시지를 표시하려면 수신기 설정의 인터페이스를 "Garmin"에서 "NMEA"로 변경하고 원하는 속도를 설정해야 합니다. 내비게이터가 연결된 직렬 포트 설정의 내비게이션 프로그램에서도 동일한 속도를 설정해야 합니다.

불행하게도 USB 포트가 있는 수신기는 NMEA 프로토콜을 지원하지 않으므로 설정이 Garmin 프로토콜로만 제한됩니다.

컴퓨터의 직렬 포트에 입력되는 정보를 표시하려면 Windows 터미널 프로그램이나 이 기능을 지원하는 탐색 프로그램 중 하나를 사용할 수 있습니다.

다음은 한 에포크 내에 포함된 Garmin eMap 수신기 NMEA 메시지 목록입니다.

$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

표준 NMEA 메시지 외에도 Garmin 수신기는 자체 메시지 세트를 구현합니다. 각 메시지에는 헤더에 "GRM" 접두사, 데이터 유형을 식별하는 "M" 또는 "Z" 식별자, 이름에 대한 문자 하나가 포함되어 있습니다.

PGRME – 위치 오류 추정

$PGRME,15.0,M,45.0,M,25.0,M*1C

    15.0,M – 수평 위치 오류 평가(미터)

    45.0,M – 수직 오차 추정치(미터)

    25.0,M – 등가 구형 위치 오류

PGRMZ – 높이 측정

$PGRMZ,93,f,3*21

    93,f – 키 값(파운드)

    3 - 위치 측정 조건(2 - 사용자 정의 높이,

    3 – GPS로 계산된 고도)

PGRMM – 현재 데이텀

$PGRMM,NAD27 캐나다*2F

    NAD27 Canada – 현재 수평 데이텀의 이름

Sirf 기능

Sirf의 GPS 칩은 기존 보드부터 휴대용 및 차량용 GPS 내비게이터에 이르기까지 다양한 GPS 내비게이션 장비에 사용됩니다. 그러나 내비게이터와 달리 GGA, GLL, GSA, GSV, RMC, VTG, ZDA 등 GPS 측정, 위치 및 시간 계산과 관련된 NMEA 메시지만 지원합니다.

"Sirf"는 또한 다양한 매개변수의 구성 및 조정을 위한 여러 "수신" NMEA 메시지를 지원합니다. 또한 Sirf는 훨씬 더 많은 설정을 변경할 수 있는 자체 바이너리 프로토콜을 구현합니다. 규칙에 따라 이러한 5개의 "수신" NMEA 메시지는 접두사 $PSFR로 시작됩니다. 모든 메시지에는 고정된 데이터 세트가 포함되어 있으며 "\n" 문자(줄 바꿈)로 끝납니다.

"Sirf" 매개변수를 구성하려면 특수 프로그램 "SirfTech"가 사용됩니다. NMEA 메시지 매개변수는 별도의 메뉴 항목에서 구성됩니다.

$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

위의 예에서 볼 수 있듯이 공장 설정에는 Garmin 설정에 비해 더 적은 수의 NMEA 메시지가 포함되어 있습니다. 필요한 경우 누락된 NMEA 메시지의 기간을 설정하여 이 세트를 확장할 수 있습니다.

$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 – 직렬 포트 구성

NMEA 메시지 번호 100은 포트 A, 메시지 102 - 포트 B를 설정하는 데 사용됩니다. 메시지 100에는 인터페이스를 바이너리 Sirf 프로토콜로 전환할 수 있는 추가 필드가 있습니다.

따라서 바이너리 프로토콜에는 포트를 다시 NMEA 형식으로 전환하는 명령이 있습니다. 바이너리 프로토콜로 전환하기 전에 나중에 NMEA 프로토콜을 복원할 수 있는 프로그램이 있는지 이해해야 합니다.

$PSRF100.0.9600.8.1.0*0C

$PSRF102.9600.8.1.0*3C

    PSRF100 – NMEA 헤더

    0 – 프로토콜이 변경된 모드를 나타내는 매개변수(0-Sirf, 1-NMEA)

    9600 – 포트 속도(4800, 9600, 19200, 38400)

    8 – 데이터 비트(7, 8)

    1 - 정지 비트(0,1)

    0 – 페어링(0 – 없음, 1-홀수, 2-짝수)

PSFR101, PSFR104 – 수신기 매개변수 초기화

번호가 101과 104인 NMEA 메시지는 GPS 수신을 위한 매개변수를 초기화하기 위한 것입니다. 이러한 매개변수를 결정하면 GPS 위성 획득 시간을 단축할 수 있습니다. 메시지 101은 현재 좌표를 XYZ 형식으로 설정하고, 메시지 104는 BLH(경도, 위도) 형식으로 설정합니다.

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

$PSRF104.37.3875111.-121.97232.0.95000.237759.922.12.3*3A

    PSRF101 - NMEA 헤더

    37.3875111 – 위도(도)

    121.97232 – 경도(도)

    0 – 높이(미터)

    95000 – 시계 이동

    237759 – GPS 시간(초)

    922 – GPS 주 번호

    12 – 채널 수

    3 – 데이터 초기화 유형(1 – 핫 스타트, 2 – 웜 스타트, 3 – 데이터 초기화, 4 – 전체 데이터 삭제를 통한 콜드 스타트, 8 – 공장 설정 복원을 통한 콜드 스타트)

PSFR103 – NMEA 메시지 생성 구성

이 NMEA 메시지를 사용하면 각 "발신" NMEA 메시지의 생성 기간을 설정하거나 쿼리할 수 있습니다.

$PSRF103.05.00.01.01*20

    PSRF103 - NMEA 헤더

    05 – 메시지 제목

    01 – 기간(초)(0-255)

    01 – 체크섬 존재(0 - 예, 1 - 아니오)

실험 결과

정상적인 위성 가시성 조건에서 Garmin eMap 수신기는 다음과 같은 NMEA 메시지 세트를 생성합니다.

$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

메시지 분석을 통해 수신기가 현재 10개(GSV) 위성을 추적하고 있으며 그 중 7개(GGA)가 위치 계산에 사용된다는 것이 분명합니다. 수평 위치 오류는 6미터(RME)이고 솔루션 유형 표시기는 1(GGA)입니다.

GPS 신호가 수신되지 않는 조건을 생성하면 GGA 메시지에 "빈" 필드가 포함되고 결정 유형 표시기가 0(GGA) 값을 갖게 됩니다.

$GPGGA,0.00,M,M,*66

$GPGSA,A,1,,*1E

"일반" 모드에서는 RMB 및 BOD 메시지에 빈 필드가 포함됩니다. 도로 웨이포인트가 최종 목적지로 선택되면 이 필드가 데이터로 채워집니다. 메시지 분석 결과, 지점까지의 거리는 1,620마일, 이동 방위각은 6.3도(BOD)로 나타났다. 동시에 BOD 메시지와 RMB 메시지의 방위각은 0.1도 다릅니다.

$GPRMB,A,0.00,R,도로,5524.501,N,03710.445,E,1.620,6.4,V,A*59

$GPBOD,6.3,T,357.0,M,도로,*74

탐색을 위해 홈 경로를 선택하면 RTE 메시지 목록에 경로의 모든 경유지 목록이 표시됩니다. 그리고 RMB 메시지에서 - 경로의 시작 및 최종(다음) 지점의 식별 번호입니다.

$GPRTE,1,1,c,홈,SLOBODA,예루살림,연구소*01

$GPRMB,A,9.99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346,340.6,V,A*1F

결론

대부분의 경우 사용자는 어떤 데이터가 어떤 필드에 전송되고 있는지 알 필요도 없고 관심도 없습니다. 대부분의 탐색 프로그램은 NMEA 메시지 데이터를 "구문 분석"하여 사용자에게 친숙한 형식(그래프, 차트, 표 등)으로 표시합니다.

특히 흥미로운 점은 GPS 데이터에 대한 연구를 수행하고, 획득한 측정값의 추정치를 계산하거나, 다양한 조건에서 내비게이션 수신기의 동작을 분석하려는 사용자를 위한 NMEA 메시지입니다. 이러한 문제를 해결하는 데 사용할 수 있는 프로그램이 많이 있습니다.

그러나 NMEA 형식은 소위 "원시" 측정(의사 범위, 위상, 도플러)이 포함되어 있지 않기 때문에 GPS 데이터의 심층 분석용으로 사용되지 않습니다. 내비게이션 장비의 각 제조업체에는 이 정보를 표시하는 자체 "개방" 또는 "폐쇄" 프로토콜이 있습니다.

NMEA는 GPS 수신기와 내비게이션 프로그램 간의 데이터 교환을 허용할 뿐만 아니라 사용자에게 위성 내비게이션 장비의 작동 원리에 대한 아이디어를 제공하는 간단하고 이해하기 쉬운 형식입니다.

주목!

웹 사이트의 기사 " GPS 포털"



 

다음 내용을 읽어보는 것이 도움이 될 수 있습니다.