SensitSTHC102, Sensit STHC 102 thermometer acquisition

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Libreria dispositivi Modbus
  6. SensitSTHC102, Sensit STHC 102 thermometer acquisition

Questo FB permette di eseguire la lettura delle variabili da sensore combinato temperatura, umidità e CO2 STHC102 della Sensit tramite connessione seriale RS485 con protocollo Modbus (9600, n, 8, 1). Permette di essere utilizzato in cascata con altri FB della libreria, collegando il Done di una FB con Enable di quella successiva è possibile creare catene di FB che condividono la stessa connessione Modbus.

In MMdb occorre passare l'indirizzo del FB di gestione protocollo Modbus, in Node definire l'indirizzo di nodo assegnato al dispositivo. Se dispositivo connesso si attiva DReady ed in uscita si avranno i dati acquisiti.

Immagine sensore Sensit STH10x

Function block
CODESYS: Non disponibile
LogicLabeLLabMdbDevsLib

Enable (BOOL) Comando abilitazione gestione. Da collegare a Done del FB precedente se utilizzato in cascata.

MMdb (@ModbusMaster) Indirizzo istanza FB ModbusMaster per gestione protocollo Modbus.

Node (USINT) Nodo Modbus assegnato al dispositivo.

Done (BOOL) Esecuzione terminata, rimane attivo fino alla disabilitazione di Enable. Da collegare ad Enable del FB successivo se utilizzato in cascata.

DReady (BOOL) Attivo se dispositivo connesso.

Ok (BOOL) Attivo per un loop al termine della acquisizione dati.

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

Errors (UDINT) Numero errori di esecuzione.

ModuleID (WORD) Identificativo modulo (16#F204).

Firmware (UINT) Versione firmware.

Serial (UDINT) Numero di serie.

Temperature (REAL) Temperatura (°C).

Humidity (REAL) Umidità (%).

CO2 (REAL) CO2 (ppm).

Errori

In caso di errore 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.

ST_SensitSTHC102: Sono gestiti 3 sensori STHC connessi in Modbus i vari FB sono eseguiti in cascata, in questo modo terminata l'esecuzione del primo, viene eseguito il successivo e così di seguito fino all'ultimo che disabilita il primo facendo ripartire la sequenza. Per avere una rappresentazione grafica del funzionamento in cascata rimando all'esempio in FBD del SDM120 (Articolo).

SensitSTHC102Config: Esegue la configurazione del sensore, impostando i parametri di configurazione desiderati ed eseguendo il programma se la configurazione viene eseguita IsConfigured viene settato. Spegnendo e riaccendendo il sensore la nuova configurazione avrà effetto.

LogicLab (Ptp141)
PROGRAM ST_SensitSTHC102
VAR
    i : UDINT; (* Auxiliary variable *)
    Sp : SysSerialPort; (* Serial port management *)
    MMdb : ModbusMaster; (* Modbus master *)
    STHC : ARRAY[ 0..2 ] OF SensitSTHC102; (* STHC102 thermometer *)
END_VAR

// ****************************************************************************
// PROGRAM "ST_SensitSTHC102"
// ****************************************************************************
// This program acquires 3 Sensit STHC102 sensors.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN

        // Serial port settings.

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

        // Modbus master settings.

        MMdb.SpyOn:=TRUE; //Spy On    
        MMdb.Type:=0; //Modbus type    
        MMdb.IFTime:=3430; //Interframe time (uS)    
        MMdb.Timeout:=200; //Timeout time (mS)    
        MMdb.Delay:=100; //Delay time (mS)    

        // STHC parameters settings.

        STHC[0].Node:=1; //Modbus node
        STHC[0].MMdb:=ADR(MMdb); //ModbusMaster pointer

        STHC[1].Node:=2; //Modbus node
        STHC[1].MMdb:=ADR(MMdb); //ModbusMaster pointer

        STHC[2].Node:=3; //Modbus node
        STHC[2].MMdb:=ADR(MMdb); //ModbusMaster pointer
    END_IF;

    // -------------------------------------------------------------------------
    // STHC SENSORS MANAGEMENT
    // -------------------------------------------------------------------------
    // Manage the Modbus communication.

    Sp(Open:=TRUE); //Serial port management
    MMdb.File:=Sp.File; //File pointer    
    MMdb(); //Modbus master

    // Acquires the sensors.

    STHC[0].Enable:=NOT(STHC[2].Done); //FB enable
    STHC[1].Enable:=STHC[0].Done; //FB enable
    STHC[2].Enable:=STHC[1].Done; //FB enable
    FOR i:=0 TO 2 DO STHC[i](); END_FOR;

// [End of file]
LogicLab (Ptp141)

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 20 Novembre 2019