NMEAGLLSentence, Geographic Position sentence

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Gestione sentenze NMEA
  6. NMEAGLLSentence, Geographic Position sentence

Questo blocco funzione esegue la decodifica della sentenza NMEA GLL Geographic Position, si collega al blocco funzione NMEASInterface di interfaccia sentenze NMEA il cui indirizzo di allocazione è passato nel parametro NMEASInterface. La sentenza GLL contiene le informazioni di latitudine, longitudine, ecco un esempio di sentenza:

$GPGLL,4916.45,N,12311.12,W,225444,A,*1D

Where:
     GLL          Geographic position, Latitude and Longitude
     4916.46,N    Latitude 49 deg. 16.45 min. North
     12311.12,W   Longitude 123 deg. 11.12 min. West
     225444       Fix taken at 22:54:44 UTC
     A            Data Active or V (void)
     *iD          checksum data

L'FB controlla il checksum della sentenza e ne estrae le informazioni. I dati in uscita sono sincroni con l'attivazione di Done attivato per un loop ad ogni ricezione di sentenza corretta.

Function block
CODESYS: Non disponibile
LogicLab: eLLabNMEALib

SpyOn (BOOL) Se attivo permette di spiare il funzionamento del FB (Vedi articolo).

NMEASInterface (@NMEASInterface) Indirizzo istanza FB NMEASInterface di interfaccia sentenze NMEA.

Done (BOOL) Attivo per un loop di programma su ricezione sentenza corretta. I valori in uscita sono validi sulla sua attivazione.

Fault (BOOL) Attivo per un loop se errore esecuzione.

Talker (STRING[2]) Stringa definizione Talker, ogni dispositivo GPS viene identificato con 2 caratteri. Solitamente i dispositivi GPS sono identificati con le lettere GP.

Latitude (REAL) Latitudine, il valore è espresso in frazione di gradi. Valori positivi indicano latitudine nord, valori negativi latitudine sud.

Longitude (REAL) Longitudine , il valore è espresso in frazione di gradi. Valori positivi indicano longitudine est, valori negativi longitudine ovest.

FixTime (UDINT) Valore in secondi UTC che indica il tempo in cui è stato effettuato il fix dei valori.

SCounter (UDINT) Contatore sentenze corrette ricevute.

Errors (UDINT) Contatore errori esecuzione.

Trigger di spy

Se SpyOn attivo è possibile utilizzare utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.

Errori

In caso di errore si attiva l'uscita Fault, eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.
Viene gestita la ricezione di sentenze NMEA da un dispositivo GPS collegato alla porta seriale di uno SlimLine e viene decodificata la sentenza GLL ricevuta.

LogicLab (Ptp123)
PROGRAM ST_NMEAGLLSentence
VAR
    Serial : SysSerialPort; (* Serial port management *)
    NMEA : NMEASInterface; (* NMEA sentence interface *)
    GLL : NMEAGLLSentence; (* NMEA GLL sentence decoding *)
    FixHour : USINT; (* Fix time (Hour) *)
    FixMinute : USINT; (* Fix time (Minute) *)
    FixSecond : USINT; (* Fix time (Second) *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_NMEAGLLSentence"
// *****************************************************************************
// The program receives and decodes the NMEA GLL sentence.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // First program execution loop initializations.

    IF (SysFirstLoop) THEN
        Serial.COM:=ADR('COM0'); (* COM port definition *)
        Serial.Baudrate:=9600; (* Baudrate *)
        Serial.Parity:='N'; (* Parity *)
        Serial.DataBits:=8; (* Data bits *)
        Serial.StopBits:=1; (* Stop bits *)
        Serial.DTRManagement:=DTR_AUTO_WO_TIMES; (* DTR management *)
        Serial.DTRComplement:=FALSE; (* DTR complement *)
        Serial.EchoFlush:=FALSE; (* Received echo flush *)
        Serial.DTROnTime:=0; (* DTR On time delay (mS) *)
        Serial.DTROffTime:=0; (* DTR Off time delay (mS) *)
        Serial.FlushTm:=0; (* Flush time (mS) *)
        Serial.RxSize:=0; (* Rx buffer size *)
        Serial.TxSize:=0; (* Tx buffer size *)

        NMEA.SpyOn:=FALSE; //Spy On
        GLL.SpyOn:=TRUE; //Spy On
    END_IF;

    // -------------------------------------------------------------------------
    // NMEA SENTENCE MANAGEMENT
    // -------------------------------------------------------------------------
    // Connect to the NMEA device.

    Serial(Open:=TRUE); //Serial port management

    // Sentence reception and GLL sentence decoding.

    NMEA.Enable:=SysFIsOpen(Serial.File); //Enable
    NMEA(File:=Serial.File); //NMEA sentence interface
    GLL(NMEASInterface:=ADR(NMEA)); //NMEA GLL sentence decoding

    // Calculate fix time in HH:MM:SS.

    IF (GLL.Done) THEN
        FixHour:=TO_USINT(GLL.FixTime/3600); //Fix time (Hour)
        FixMinute:=TO_USINT(MOD(GLL.FixTime/60, 60)); //Fix time (Minute)
        FixSecond:=TO_USINT(MOD(GLL.FixTime, 60)); //Fix time (Second)
    END_IF;

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 5 Ottobre 2020