SHT3xAcquire, SHT3x humidity and temperature sensor

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

Questo blocco funzione da eseguire in task Back utilizzabile con modello a cascata, esegue la lettura del valore di umidità e temperatura da un sensore SHT3x della Sensirion come questo. Può essere utilizzato in cascata con altri FB della libreria, collegando il Done di un FB con Enable di quello successivo è possibile creare catene di FB che condividono lo stesso bus I2C.

In I2CMng occorre passare l’indirizzo del FB I2CBusManager di gestione bus I2C, in Address definire l’indirizzo I2C del sensore da acquisire. Eseguita l’acquisizione si attiva l’uscita Done e se valori acquisiti si attiva l’uscita Ok ed in uscita si avranno i dati acquisiti.

Information Circle

Blocco funzione

CODESYS: Non disponibile

LogicLab: eLLabI2CDevsLib

Descrizione

Enable (BOOL) Comando abilitazione gestione.
SpyOn (BOOL) Se attivo permette di spiare il funzionamento della FB (Vedi articolo).
I2CMng (@I2CBusManager) Indirizzo istanza FB I2CBusManager di gestione bus I2C.
Address (USINT) Indirizzo I2C del sensore (Default  16#44).
Done (BOOL) Esecuzione terminata, rimane attivo fino alla disabilitazione di Enable.
Fault (BOOL) Attivo per un loop se errore acquisizione.
Ok (BOOL) Attivo per un loop su acquisizione dati.
Errors (UDINT) Ritorna conteggio numero di errori acquisizione.
Temperature (REAL) Valore di temperatura (°C).
Humidity (REAL) Valore umidità (%).

Immagine FB SHT3xAcquire

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.

Livelli di trigger
TriggerDescrizione
16#00000001Ok: Fine acquisizione.
16#40000000Er: Errore acquisizione.

Esempi

Come utilizzare gli esempi.

ST_SHT3xAcquire: Viene eseguita l’acquisizione del valore di temperatura e di umidità da un sensore SHT30-DIS della Sensirion connesso al bus I2C di estensione del modulo SlimLine.

ST_SHT3xAcquireOnIOs: Viene eseguita l’acquisizione del valore di temperatura e di umidità da un sensore SHT30-DIS della Sensirion connesso al bus I2C simulato tramite I/O logici del modulo CPUSlimLine. Per lo schema di connessione degli I/O fare riferimento alla I2CBusManager.

LogicLab (Ptp176, ST_SHT3xAcquire)
PROGRAM ST_SHT3xAcquire
VAR
    I2CBus : I2CBusManager; (* I2C bus management *)
    Sensor : SHT3xAcquire; (* Sensor acquisition *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SHT3xAcquire"
// *****************************************************************************
// Temperature and humidity acquisistion from a Sensirion SHT30-DIS attached to
// the extension bus.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // First program loop initialization.

    IF (SysFirstLoop) THEN

        // Initialize the I2C management.

        I2CBus.I2CMode:=0; //I2C mode selection

        // Initialize the sensor acquisition.

        Sensor.SpyOn:=TRUE; //Spy on
        Sensor.Address:=16#44; //I2C Address
        Sensor.I2CMng:=ADR(I2CBus); //I2C bus managemen
    END_IF;

    // -------------------------------------------------------------------------
    // SENSOR ACQUISITION
    // -------------------------------------------------------------------------
    // The sensor is acquired.

    Sensor(Enable:=NOT(Sensor.Done)); //Sensor acquisition

// [End of file]
LogicLab (Ptp176, ST_SHT3xAcquireOnIOs)
PROGRAM ST_SHT3xAcquireOnIOs
VAR
    DInp : SysGetPhrDI; (* Digital input acquisistion *)
    DOut : SysSetPhrDO; (* Digital output management *)
    I2CBus : I2CBusManager; (* I2C bus management *)
    Sensor : SHT3xAcquire; (* Sensor acquisition *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SHT3xAcquireOnIOs"
// *****************************************************************************
// Temperature and humidity acquisition from a Sensirion SHT30-DIS.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // First program loop initialization.

    IF (SysFirstLoop) THEN

        // Initialize the logic I/O management.

        DInp.Address:=255; //Module address
        DInp.Mode:=DI_I_8_LL; //Input mode

        DOut.Address:=255; //Module address
        DOut.Mode:=DO_8_LL; //Output mode
        DOut.Mask:=16#00000003; //Output mask

        // Initialize the I2C management.

        I2CBus.SpyOn:=FALSE; //Spy on
        I2CBus.I2CMode:=1; //I2C mode selection
        I2CBus.BFrequency:=100.0; //Bus frequency (Hz)

        // Initialize the sensor acquisition.

        Sensor.SpyOn:=TRUE; //Spy on
        Sensor.Address:=16#44; //I2C Address
        Sensor.I2CMng:=ADR(I2CBus); //I2C bus management
    END_IF;

    // -------------------------------------------------------------------------
    // I2C BUS MANAGEMENT
    // -------------------------------------------------------------------------
    // Manage the I2C bus on CPU module logic I/Os.
    // The Di00 is used as Clock, Di01 is used as Data.

    DInp(); //Dgital inputs acquisition
    I2CBus.IClock:=NOT(DInp.Value.0); //Clock in signal
    I2CBus.IData:=NOT(DInp.Value.1); //Data in signal

    // The Do00 is used as Clock, Do01 is used as Data.

    DOut.Value.0:=NOT(I2CBus.OClock); //Clock out signal
    DOut.Value.1:=NOT(I2CBus.OData); //Data out signal
    DOut(); //Digital output management

    // -------------------------------------------------------------------------
    // SENSOR ACQUISITION
    // -------------------------------------------------------------------------
    // The sensor is acquired.

    Sensor(Enable:=NOT(Sensor.Done)); //Sensor acquisition

// [End of file]
Was this article helpful?