Passa al contenuto principale

SHT3xAcquire, SHT3x humidity and temperature sensor

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.

Descrizione​

Immagine FB SHT3xAcquire

ParametroTipoDescrizione
EnableBOOLComando abilitazione gestione.
SpyOnBOOLSe attivo permette di spiare il funzionamento della FB (Vedi articolo).
I2CMng@I2CBusManagerIndirizzo istanza FB I2CBusManager di gestione bus I2C.
AddressUSINTIndirizzo I2C del sensore (Default  16#44).
DoneBOOLEsecuzione terminata, rimane attivo fino alla disabilitazione di Enable.
FaultBOOLAttivo per un loop se errore acquisizione.
OkBOOLAttivo per un loop su acquisizione dati.
ErrorsUDINTRitorna conteggio numero di errori acquisizione.
TemperatureREALValore di temperatura (°C).
HumidityREALValore umidità (%).

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]