Vai al contenuto
PLC Forum


Analogica In Millibar


ziocembra

Messaggi consigliati

Buongiorno a tutti .

Io acquisisco un segnale 1..10 volt che "scalo" in un segnale da 0.001 millibar a 1000 millibar

ora per esigenze di visualizzazione sul touch in unità ingegneristica dovrei vedere a display ad esempio 1000 mbar come 1.0 x 10e3

1 millibar come 1.0 x 10e0 0.001 millibar come 1.0 x 10e-3 e cosi via..

In poche parole visualizzare un numero in esponenziale.

quando usavo panasonic dovevo farmi uno script che comprendesse tutti i casi creando una funzione che inserendo il numero mi restituisse valore ed esponente.

esiste un metodo meno ortodesso ?

grazie e tutti

Link al commento
Condividi su altri siti


Elvezio Franco

Non serve compilare 2 messaggi uguali per la stessa richiesta,servono solo a dividere le risposte.

Modificato: da Elvezio Franco
Link al commento
Condividi su altri siti

Potresti usare i logaritmi in base 10 (ammesso che il 1200 li abbia). Ad esempio Log 1000 = 3 quindi avrai 1 e3 oppure Log 900 = 2,xxx prendi l'intero e avrai 9 e2

Link al commento
Condividi su altri siti

  • 3 weeks later...

in realtàsi perche il sensore mi fornisce una uscita lineare quindi a me che serve una risoluzione di 0.1 basta la conversione a 11 bit.

infatti per me la risoluzione di ogni scala logaritmica è spalmata su 1 volt quindi con una risoluzione di 0.01 volt avrei già quanto mi serve.

usare i logaritmi direttamente non credo funzioni in quanto il valore 1 millibar non credo lo esprima come 1x10e0 ma direttamente come 1 ... o sbaglio.

domandina

io con panasonic uusavo questa soluzione :

if (bCalcola) then
if (rInput >= 850.0) then
rValore := 1.0;
iEsponente := +3;
end_if;
if (rInput < 300.0) then
rValore := 9.0;
iEsponente := -3;
end_if;
if (rInput < 1000.0) and (rInput >= 900.0) then
rValore := (rInput - 899) / 10;
iEsponente := +3;
end_if;
if (rInput < 850.0) and (rInput >= 800.0) then
rValore := (rInput - 799) / 10;
iEsponente := +2;
end_if;
if (rInput < 800.0) and (rInput >= 700.0) then
rValore := (rInput - 699) / 10;
iEsponente := +1;
end_if;
if (rInput < 700.0) and (rInput >= 600.0) then
rValore := (rInput -599) / 10;
iEsponente := +0;
end_if;
if (rInput < 600.0) and (rInput >= 500.0) then
rValore := (rInput - 499) / 10;
iEsponente := -1;
end_if;
if (rInput < 500.0) and (rInput >= 400.0) then
rValore := (rInput - 399.0) / 10;
iEsponente := -2;
end_if;
if (rInput < 400.0) and (rInput >= 300.0) then
rValore := (rInput - 299) / 10;
iEsponente := -3;
end_if;



end_if;

secondo voi scalando opportunamente i valori ( panasonic convertiva da 0 a 1000) uno script del genere funziona anche in s7 1200 o il linguaggio è diverso ?

abbiate pazienza ma di s7 ero proprio a digiuno.... :-)

grazie a tutti

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...