Vai al contenuto

StrainGaugeAcq, strain gauge acquisition

Vai all indice del manuale di programmazione
Tipo: Blocco Funzione
Libreria LogicLab: eLLabUtyLib
Libreria Codesys: Non disponibile

Questo blocco funzione gestisce l’acquisizione da dispositivi strain gauge, all’interno viene gestito l’FB di acquisizione analogica SysGetAnInp per acquisire l’ingresso analogico di lettura strain gauge. In Address e Channel vanno definiti indirizzo ed il canale del modulo analogico di acquisizione. In Mode occorre definire il modo di acquisizione approppriato allo strain gauge da acquisire.

E’ importante effettuare la taratura della acquisizione (I valori di taratura sono memorizzati nelle variabili OfsCalibration e FSCalibration). Per la taratura dell’offset collegare lo strain gauge e senza nessun peso applicato attivare per un loop DoOfsCalibration. Per la taratura del fondo scala applicare allo strain gauge un peso il più possibile prossimo al valore di fondo scala. Il valore del peso applicato va definito in FSReference, dopo un tempo di stabilizzazione lettura peso attivare per un loop DoFSCalibration.

In Mode occorre scegliere un guadagno il più alto possibile, ma facendo in modo che: (SGaugeRatio x Power x Mode) < Power dove Power è la tensione di alimentazione dello strain gauge. Esempio: strain gauge alimentato a 5V e con SGaugeRatio = 2mV/V. Scegliendo Mode = AD_VIN_VREF_G_128 si avrà (2mV/V * 5V * 128) = 1280mV quindi ben sotto i 5V e quindi ok.

In FilterCf è possibile definire un coefficente di filtro sulla acquisizione del peso, più il valore è grande e più il valore di peso è filtrato. Con 0, non c’è filtro lasciando la possibilità di inserire un proprio filtro personalizzato esterno.

Descrizione

Enable (BOOL) Abilitazione blocco funzione.
DoOfsCalibration (BOOL) Comando calibrazione offset.
DoFSCalibration (BOOL) Comando calibrazione fondo scala.
Address (USINT) Occorre specificare l’indirizzo di modulo da cui eseguire l’acquisizione dello strain gauge (Range da 0 a 15). Il valore 0 indica il primo modulo di estensione, 1 il secondo e così di seguito.
Channel (USINT) Occorre specificare l’indirizzo del canale sul modulo (Range da 0x00 a 0x0F).
Mode (AI_MODE) Occorre specificare il modo di acquisizione analogica (Definizione). Sono utilizzabili solo i modi AD_VIN_VREF_G_x.
FilterCf (REAL) Valore del coefficiente di filtro acquisizione (Nr).
FSReference (REAL) Valore riferimento utilizzato per la taratura del fondo scala dello strain gauge (Nr).
SGaugeFullScale (REAL) Valore di fondo scala del sensore, cioè carico massimo nominale misurabile, dipende dal sensore (kg, N, t, ecc.).
SGaugeRatio (REAL) Sensibilità dello strain gauge espressa in mV/V (millivolt per volt). È il rapporto tra il segnale di uscita a fondo scala e la tensione di alimentazione del ponte estensimetrico (Nr)..
OfsCalibration (@REAL) Indirizzo variabile di appoggio valore di calibrazione offset (Deve essere RETAIN).
FSCalibration (@REAL) Indirizzo variabile di appoggio valore di calibrazione fondo scala (Deve essere RETAIN).
Enabled (BOOL) Blocco funzione abilitato.
Done (BOOL) Dato acquisito, viene attivato al termine della acquisizione strain gauge.
Fault (BOOL) Errore di acquisizione, viene attivato in caso di errore nella sequenza di acquisizione.
Value (REAL) Ritorna il valore di acquisizione espresso nella unità utilizzata per definire FSReference e SGaugeFullScale.

Immagine FB StrainGaugeAcq
Come funziona il FB

Il FB acquisisce la tensione di uscita dello strain gauge e la confronta con la sua tensione di alimentazione tramite una misura ratiometrica. La tensione acquisita utilizzata per il calcolo del peso è definita dalla seguente formula:

VAcq=(VOut/VPower)*Gain

  • VAcq: Voltage acquired, tensione acquisita
  • VOut: Voltage output, tensione in uscita strain gauge
  • VPower: Voltage power, tensione alimentazione strain gauge
  • Gain: Guadagno acquisizione A/D

Dal valore acquisito utilizzando la caratteristica dello strain gauge è possibile ricavare il peso con la formula:

Weight=(VAcq/(Gain*SGaugeRatio))*SGaugeFullScale

  • Weight: Peso acquisito
  • VAcq: Voltage acquired, tensione acquisita
  • Gain: Guadagno acquisizione A/D
  • SGaugeRatio: Sensibilità (mV/V) dello strain gauge
  • SGaugeFullScale: Valore di fondo scala dello strain gauge

Calibrazione acquisizione

Calibrazione offset: Questa calibrazione permette di correggere eventuali errori di offset sullo strain gauge e sul canale di acquisizione. Occorre avere lo strain gauge in condizione di riposo (Nessuna forza applicata), attivando DoOfsCalibration il valore di offset verrà salvato nella variabile indirizzata da OfsCalibration (Deve essere RETAIN) ed utilizzato per la correzione dell’offset in acquisizione.

Calibrazione scala: Questa calibrazione permette di correggere eventuali errori di scala sullo strain gauge e sul canale di acquisizione. Occorre aplicare sullo strain gauge una forza (Peso, pressione, ecc) il più vicino possibile al suo valore di fondo scala, attivando DoFSCalibration il valore rilevato verrà salvato nella variabile indirizzata da FSCalibration (Deve essere RETAIN) ed utilizzato per la correzione della scala in acquisizione.

Collegamento StrainGauge su PCB126

Il cablaggio degli strain gauges è una delle fasi più critiche poiché il sensore varia la sua resistenza di frazioni millesimali di ohm, qualsiasi errore di cablaggio introduce rumore che ne compromette la misura. I cavi di collegamento possono trasformarsi in “sensori parassiti” se non scelti correttamente, quindi usare sempre cavi schermati e a coppie attorcigliate (twisted pair) per proteggere il segnale dai disturbi elettromagnetici (EMI), specialmente se i cavi passano vicino a motori o inverter.

Gli ingressi a cui è collegato lo strain gauge devono essere configurati per acquisizione 0-1V come da schema a lato. L’ingresso Ai03 è utilizzato dal FB per l’acquisizione alimentazione dello strain gauge, anche se configurato per acquisizione 0-1V può acquisire tensioni fino a 5V. L’ingresso di è unico per tutti i canali, quindi se sono acquisiti più strain gauges devono avere tutti la stessa alimentazione.

I canali non utilizzati per l’acquisizione dello strain gauge possono essere configurati ed utilizzati per tuti gli altri tipi di acquisizione.

Connessioni StrainGauge su PCB126

Errori

In caso di errore eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore.

Esempi

Come utilizzare gli esempi.

ST_StrainAcqTest: Viene configurata una acquisizione di test per permettere di fornire una tensione da 0 a 1V all’ingresso Ai00 e rilevare i rispettivi valori di peso.

ST_StrainGaugeAcq: Viene acquisita una cella di carico con fondo scala da 20 Kg e 1.956 mv/V. La cella viene tarata con un peso di riferimento da 400 grammi. Per la calibrazione agire da debug sui segnali DoOfsCalibration e DoFSCalibration attenzione alla definizione delle variabili OfsCalibration e FSCalibration che devono essere definite RETAIN (Nell’esempio per semplicità non lo sono). In Value viene ritornato il peso acquisito, avendo definito SGaugeFullScale in Kg il peso verrà ritornato in Kg.

LogicLab (Ptp114, ST_StrainAcqTest)
PROGRAM ST_StrainAcqTest
VAR
    OfsCalibration : REAL; (* Offset calibration buffer *)
    FSCalibration : REAL; (* Full scale calibration buffer *)
    AOut : SysSetAnOut; (* Analog output management *)
    SGAcq : StrainGaugeAcq; (* Strain gauge acqisition *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_StrainAcqTest"
// *****************************************************************************
// This program tests a strain gauge acquisition system. The strain gauge is
// powered at 5V and the FB parameters are set as follows:
//
// SGaugeFullScale and FSReference are set to 20 Kg.
// SGaugeRatio is set to 1000 mV/V.
// OfsCalibration variable is set to 0.0 to disable offset correction.
// FSCalibration variable is set to 20 kg, matching the value of SGaugeFullScale.
// SGAcq.Mode:=AI_MODE#AD_VIN_VREF_G_1 set acquisition gain to 1.
//
// With Ai00 at 5V, weight corresponds to the strain gauge full scale (20 kg).
// The equivalent weight at different Ai00 voltage values can be calculated
// using the formula: (SGaugeFullScale/PowerVoltage)*Ai00Voltage
//
// Here are some weight acquisition examples with different voltages on Ai00:
//
// With 100 mV, the weight will be 0.4 kg.
// With 500 mV, the weight will be 2.0 kg.
// With 1 V, the weight will be 4.0 kg.
// -----------------------------------------------------------------------------

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

    IF (SysFirstLoop) THEN

        OfsCalibration:=0.0; //Offset calibration buffer
        FSCalibration:=20.0; //Full scale calibration buffer

        // Strain gauge acquisition.

        SGAcq.Enable:=TRUE; //Enable
        SGAcq.Address:=0; //Module address
        SGAcq.Channel:=0; //Acquisition channel
        SGAcq.Mode:=AI_MODE#AD_VIN_VREF_G_1; //Acquisition mode
        SGAcq.FilterCf:=100.0; //Filter coefficent
        SGAcq.FSReference:=20; //Full scale reference
        SGAcq.SGaugeFullScale:=20.0; //Full scale strain gauge
        SGAcq.SGaugeRatio:=1000.0; //Strain gauge ratio mV/V
        SGAcq.OfsCalibration:=ADR(OfsCalibration); //Offset calibration buffer
        SGAcq.FSCalibration:=ADR(FSCalibration); //Full scale calibration buffer

        // Power output.

        AOut.Address:=0; //Module address
        AOut.Channel:=0; //Module channel
        AOut.Mode:=AO_MODE#DA_VOLT_0_10; //Output mode
        AOut.Value:=5.0; //Output value
    END_IF;

    // -------------------------------------------------------------------------
    // STRAIN GAUGE ACQUISITION
    // -------------------------------------------------------------------------
    // Strain gauge acquisition

    AOut(); //Analog output management
    SGAcq(); //Strain gauge acqisition

// [End of file]
LogicLab (Ptp114, ST_StrainGaugeAcq)
PROGRAM ST_StrainGaugeAcq

VAR
	OfsCalibration : REAL;	(* Offset calibration buffer *)
	FSCalibration : REAL;	(* Full scale calibration buffer *)
	SGAcq : StrainGaugeAcq;	(* Strain gauge acqisition *)
	AOut : SysSetAnOut;		(* Analog output management *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_StrainGaugeAcq"
// *****************************************************************************
// This program acquires data from a strain gauge. An analog I/O module is used
// to power the strain gauge.
// -----------------------------------------------------------------------------

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

	IF (SysFirstLoop) THEN

		// Strain gauge acquisition.

		SGAcq.Address:=0; //Module address
		SGAcq.Channel:=0; //Acquisition channel
		SGAcq.Mode:=AI_MODE#AD_VIN_VREF_G_128; //Acquisition mode
		SGAcq.FilterCf:=100.0; //Filter coefficent
		SGAcq.FSReference:=0.4; //Full scale reference
		SGAcq.SGaugeFullScale:=20.0; //Full scale strain gauge
		SGAcq.SGaugeRatio:=1956.0; //Strain gauge ratio
		SGAcq.OfsCalibration:=ADR(OfsCalibration); //Offset calibration buffer
		SGAcq.FSCalibration:=ADR(FSCalibration); //Full scale calibration buffer

		// Power output.

		AOut.Address:=0; //Module address
		AOut.Channel:=0; //Module channel
		AOut.Mode:=AO_MODE#DA_VOLT_0_10; //Output mode
		AOut.Value:=5.0; //Output value
	END_IF;

	// -------------------------------------------------------------------------
	// STRAIN GAUGE ACQUISITION
	// -------------------------------------------------------------------------
	// Strain gauge acquisition

	SGAcq(); //Strain gauge acqisition
	AOut(); //Analog output management

// [End of file]

Was this article helpful?