NMEA-0183 communication protocol
Supported device types and versions
Communication line configuration
Communication station configuration
I/O tag configuration
Errors and problems
Geofencing - localization of the position
Literature
Changes and modifications
Document revision
Supported device types and versions
This protocol supports the communication with GPS receivers that send data according to NMEA-0183 standard. It supports only data receive.
Communication line configuration
- Category of communication line: Serial, SerialOverUDP Device Redundant, or File I/O.
- Parameters of the Serial line are set according to the setting of GPS equipment.
File I/O communication line
The implementation of the NMEA-0183 protocol supports the reading of files that contain NMEA packets/records. As NMEA-0183 records are text strings with CR-LF in the end, one row of the file must contain a single NMEA-0183 record.
The files are searched in the directory according to the setting of the "Input file" parameter on the "File I/O" tab in the configuration of the line. The file must correspond to a mask according to the Filename Mask station protocol parameter. The file is analyzed (read) from top to bottom, after processing it is moved to the archive directory according to the setting of parameter "Archive directory" on the "File I/O" tab in the configuration of the line. In this directory, the subdirectories with the time of creation or data analysis are created (see the "Archive subdirectory time mask" parameter).
Protocol line parameters
Dialog window of Line configuration - tab "Protocol parameters", choose the protocol NMEA-0183.
They influence some optional parameters of the protocol. You may set the following parameters for the line:
Table 1
Full name | Meaning | Unit / Size | Default value |
---|---|---|---|
Archive Subdirectory Time Mask | A mask used to create the archive subdirectories for storing the processed files (important only for File I/O lines). Use the following text string to set mask:: "yy" or "rr" - year (short format), "yyyy" or "rrrr" - year (long format), "mm" - month, "dd" - day. | - | yyyymm |
Geofencing Polygons Definition File | Full path to a file that contains a definition of polygons (a localization of position in polygon - geofencing). Blank text disables the localization feature. See chapter Geofencing - localization of position. | - | - |
Files Checking Period | The time period of reading of the source directory. | mi:ss | 01:00 |
Unknown Files Backup Directory | Backup directory for storing unknown files. | - | - |
After Processing Timeout | Delay after processing of a file. | ss.mss | 00.100 |
Future Data Filter | Time filter of data. If the timestamp of received data deviates from the current time by more than defined hours in the future, they are ignored. Set 0 (zero) to ignore the time filter. | hours | 0 |
History Data Filter | Time filter of data. If the timestamp of received data deviates from the current time by more than defined days in the past, they are ignored. Set 0 (zero) to ignore the time filter. | days | 0 |
Additional Error Logfile | Additional error log file for tracing communication errors | - | - |
Communication station configuration
- Communication protocol "NMEA-0183".
- As for Serial and SerialOverUDP Device Redundant lines (i.e. asynchronous serial communication), the address parameter is not required (blank text). The protocol NMEA-0183 does not support the addressing of devices. Data are sent spontaneously. Only one device may be connected to one serial asynchronous communication line.
- As regards the File I/O line, the address may be any text string. It can be used for searching the file with NMEA data for the given station (see the Filename Mask station protocol parameter).
Station protocol parameters
Dialog window for configuration of station - tab "Protocol parameters".
They influence some optional parameters of the protocol. You can set the following parameters:
Table 2
Full name | Description | Unit / Size | Default value |
---|---|---|---|
Maximum Wait Retry | A retry count of reading response until its completion. Maximum retries of reading of line so that the NMEA packet/record is complete (it is relevant only for Serial and SerialOverUDP Device Redundant lines). | - | 40 |
Wait Timeout | Delay between the readings of the line until NMEA packet/record is complete (it is relevant only for Serial and SerialOverUDP Device Redundant lines). | ms | 50 ms |
Position Data Format | Conversion of data of geographical position from NMEA records GPRMC.3, GPRMI.1, GPGGA.2, GPGLL.1, PGRMF.6 for latitude and GPRMC.5, GPRMI.3, GPGGA.4, GPGLL.2, PGRMF.8 for longitude. You can choose "deg/min" (a native format of NMEA, the same value as it has been read) or "deg" (conversion to degrees). | deg/min deg | deg |
Speed Units | Conversion of data about the speed to a required technical unit (GPRMC.7 and GPVTG.3 in knots, GPVTG.4 and PGRMF.12 in km/hour). | knots km/hour | knots |
Trace Received Data | Show information about the received raw data. | YES/NO | YES |
Trace Received Values | Show details about analyzed values of I/O tags. | YES/NO | YES |
Filename Mask | Mask for searching of files with NMEA information (it is important only for File I/O). Mask must be a text string with support of special items in braces {}: {N...N} - address of station, 'N' character count must be equal to the length of station address, {yyyy} or {yy} - year (short/long format), {mm} - month (1 to 12), {dd} - day (1 to 31), {hh} - hour (0 to 23), {mi} - minute (0 to 59), {ss} - second (0 to 59). Digit placeholder '*' may be used also at any position in a mask. Examples: nmea_data.* nmea_data*.txt nmea_data{NNN}.txt nmea_data{yyyy}{mm}{dd}_{hh}.txt station_{NNNNNN}* | - | |
Synchronize Time Delta | Positive value activates the correction of system time from GPS data. If the difference between the system time and time received from GPS is greater than the value of this parameter (in milliseconds), a task that adjusts system time will be started. Time will be adjusted in small steps to avoid a sudden time-jump which is usually undesirable. The default value of this parameter is 0 and it means that time synchronization is disabled. | ms | 0 |
Long Difference Time | If the absolute value of a computed time difference between GPS time and system time is greater than the value of the parameter Long Difference Time, then the correction of system time will not be started immediately. Instead, the D2000 KOM process detects whether this difference is repeated at least Long Difference Count times consecutively. If it does and if the absolute value of the difference of consecutive time differences is not greater than Long Difference Time then the correction of system time will be started. Parameters are meant as a protection of random occurrence of "out of range" time. Value 0 of parameter Long Difference Time disables this protection. | sec | 0 |
Long Difference Count | - | 0 | |
Align To Minutes | KOM process publishes only the values received on the edge of a new minute (sec = 0). For proper functionality, the polling period must be less than one minute. | YES/NO | NO |
External Command File | Full path to the external command file which is called with the defined period. Empty text string means that the external command file is not used. | - | |
External Command Period | The period for calling external command file. If the value is 0 seconds, the command file is called always before data reading from the particular station. | min:sec | 60 sec |
Call External Command Synchronously | Call external command file synchronously (YES) or asynchronously (NO). | YES/NO | YES |
I/O tag configuration
Allowed types of I/O tags: Ai, Ci, Di, TiA, TiR, TxtI.
The address of the I/O tag is in the format:
SSSSS.I
SSSSS - the identification of NMEA record (e.g. "GPRMC")
I - an index of the order of data in the NMEA record. The index is a positive integer number. 0 = the index of an identifier of NMEA record, 1 = index of the first value.
You can configure a special I/O tag Ci or Ai with address $POLY, which acquires the value of a polygon code, in which the current position was localized. See chapter Geofencing - localization of position.
You can find the examples in table 3.
Table 3
Address | Value type | Description |
---|---|---|
GPGGA.7 | Ci | The number of located satellites. |
GPRMC.3 | Ai | Latitude. |
GPRMC.4 | Ci | Latitude hemisphere, it takes the values 78 (N) or 83 (S). |
GPRMC.4 | TxtI | Latitude hemisphere, it takes the values "N" or "S". |
GPRMC.5 | Ai | Longitude. |
GPRMC.6 | Ci | Longitude hemisphere, it takes the values 69 (E) or 87 (W). |
GPRMC.6 | TxtI | Longitude hemisphere, it takes the values "E" or "W". |
GPRMC.1 | TiR | Time. |
GPRMC.9 | TiA | Date. |
The implementation of the protocol requires reception of NMEA packet/record "GPRMC" (Recommended Minimum Specific GPS/TRANSIT Data). From time data UTC date/time in this packet, a timestamp is created. This timestamp is changed from UTC to the local time and then is used to assign the timestamp (value time) in all values of I/O tags.
Geofencing - localization of the position
If the file with the definition of polygons is read successfully, the localization of position in polygon is activated. The file format is following:
[polygon_name1,polygon_code1] latitude1 <tab> longitude1 latitude2 <tab> longitude2 latitude3 <tab> longitude3 .... latitudeN <tab> longitudeN [polygon_name2,polygon_code2] latitude1 <tab> longitude1 latitude2 <tab> longitude2 latitude3 <tab> longitude3 .... latitudeN <tab> longitudeN
The definition of polygon starts with a name and a unique integer code of polygon in the first row. It is followed by all the known border positions of the polygon. The border positions of the polygon are the numerical data of latitude and longitude separated by a tab. You can define 100 polygons at the most in this file.
A simplified example of the file with the definition of polygons:
[SVK,1]
49.510531 18.597243
49.508383 18.56925
49.500642 18.544688
49.490084 18.53395
[CZ,2]
49.517426 18.85232
49.516242 18.812956
49.504529 18.778742
49.502553 18.710839
49.507645 18.675815
[PL,3]
50.870486 14.82294
50.869251 14.839542
50.876814 14.867844
50.867136 14.896914
In the case of successful localization of the current position, which was gained from the communication, in some of the polygons, the I/O tag with the address $POLY acquires the value of the respective polygon code. The position is searched from the top and from the first definition in the file and ends with the first successful match of the position. If the localization fails, the polygon code 0 is set. Therefore the value (0) is not permitted in the definition of polygon codes.
Errors and problems
The error messages, mentioned below, may occur during the start of communication. It is recommended to activate the monitoring of communication in the configuration of the line for easier identification of problems. You can choose it from these levels:
- Monitor (at least)
- Monitor & Disk (recommended)
- Disk (recommended)
When you set "Monitor & Disk" or "Disk", the file "line_name.LOG" occurs in the Trace subdirectory in the application directory on the computer with the running communication process. This file contains all the debug and error messages.
Error: | Unsupported mask item 'maskitem' ! |
Description: | Unsupported item in the mask file that searches the files for loading. |
Error: | Cannot open file 'FileName' ! |
Description: | The opening of the file for reading failed. |
Error: | Unconvertible value: 'ValueString' for I/O tag 'I/O tag_name'! |
Description: | The value, received from the NMEA packet/record, cannot be converted on the value of I/O tag. |
Error: | Unconvertible value: 'ValueString' for I/O tag 'I/O tag_name', unsupported type value_type! |
Description: | The value type of the I/O tag is not supported. |
Error: | Error in address, I/O tag: 'I/O tag_name', Address: 'PointAddress' ! |
Description: | The address of the I/O tag does not correspond to the required format. |
Error: | Checksum ERR! Received=XX, Expected=YY |
Description: | Invalid checksum in the received packet. |
Error: | Cannot open geofencing polygons definition file 'filename'! |
Description: | The file with polygon definition, the value of line parameter "Polygons definition file", has not been found. |
Error: | Problems detected in geofencing polygons definition file 'filename'! |
Description: | The file with polygon definition, the value of line parameter "Polygons definition file", does not correspond to the required specification and was ignored. |
Error: | Error during geofencing position detection for I/O tag 'I/O tag_name'! |
Description: | Upon detection of position in polygon occurred unexpected error. The polygon code is invalid. |
Literature
- http://www.nmea.org
- Reference books for Garmin http://www.garmin.com
Changes and modifications
- August 21, 2009 - localization of position in the polygon.
- February 19, 2015 - added a new parameter to station parameters.
Document revisions
- Ver. 1.0 - February 8, 2008 - document creating.
- Ver. 1.1 - March 13, 2008 - modification of protocol parameters.
- Ver. 1.2 - August 21, 2009 - updating of the document.
- ver. 1.3 - February 19, 2015 - new parameter added to station parameters.
Related pages:
Add Comment