NMEASInterface, NMEA sentence interface

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

Questo blocco funzione gestisce l'interfaccia verso un dispositivo che invia sentenze NMEA connesso allo stream di I/O definito in File, questo è un blocco funzione protetto per utilizzarlo occorre richiedere il codice di protezione, vedi protezione funzioni e blocchi funzione. E' comunque possibile utilizzarlo liberamente in modo test per 30 Min.

L'FB riceve le sentenze NMEA dal dispositivo, controlla il CRC della sentenza e se la sentenza ricevuta è corretta viene incrementato il valore di SCounter, l'uscita Done si attiva per un loop, e in Sentence è ritornato l'indirizzo del buffer dove è contenuta la sentenza ricevuta.

In caso di errore esecuzione viene attivata per un loop di programma l'uscita Fault ed incrementato il valore in Errors.

Function block
CODESYS: Non disponibile
LogicLab: eLLabNMEALib

Enable (BOOL) Abilitazione blocco funzione.

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

File (FILEP) Flusso dati stream da cui sono ricevute le sentenze NMEA.

Done (BOOL) Attivo per un loop di programma su ricezione sentenza corretta. Contemporaneamente alla attivazione in Sentence è ritornato l'indirizzo del buffer dove si trova la sentenza ricevuta.

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

Sentence (@STRING) Ritorna l'indirizzo del buffer che contiene la sentenza ricevuta, valido solo se Done=TRUE.

SCounter (UDINT) Contatore sentenze corrette ricevute.

Errors (UDINT) Contatore errori esecuzione.

Trigger di spy

Se SpyOn attivo è possibile utilizzare di 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.

LogicLab (Ptp123)
PROGRAM ST_NMEASInterface
VAR
    Serial : SysSerialPort; (* Serial port management *)
    NMEA : NMEASInterface; (* NMEA sentence interface *)
    GLL : NMEAGLLSentence; (* NMEA GLL sentence decoding *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_NMEASInterface"
// *****************************************************************************
// The program connects to a serial NMEA receiver and receives and decodes the
// NMEA sentences.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // 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:=TRUE; //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.

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

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 5 Ottobre 2020