Effettuare la scalatura di un valore
Home › Forum › Programmazione IEC 61131 (LogicLab) › Effettuare la scalatura di un valore
- Questo topic ha 7 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 7 anni, 1 mese fa da
Sergio Bertana.
-
AutorePost
-
Luglio 23, 2012 alle 9:55 am #35251
Sergio Bertana
Amministratore del forumMolti clienti ci chiedono come effettuare la scalatura di un valore, questo si rende necessario ad esempio nel caso di acquisizione di sensori in corrente 4-20 mA. Al variare del valore di corrente acquisito dal sensore 4-20 mA corrisponde un corrispondente valore di grandezza acquisita.
La funzione ValueScale (Estratto manuale), permette di fornire in ingresso il valore di corrente acquisita definendo come valore minimo 4 mA e come valore massimo 20 mA. Basterà definire i range del valore della grandezza da acquisire, la funzione eseguirà la conversione dal valore di corrente acquisita al valore ingegneristico della grandezza da acquisire.
Nel semplice programma FBD di cui allego screenshot, viene eseguita l’acquisizione di un sensore di temperatura in 4-20 mA, il valore minimo di temperatura è -50 °C ed il massimo 150 °C. Come si vede dallo screenshot a 6 mA il valore di temperatura acquisito corrisponde a -30 °C.
Novembre 19, 2013 alle 2:42 pm #37901Oscar_stb
PartecipanteSe devo acquisire dei valori in tensione che non sono lineari è possibile utilizzare questa funzione ? Mi spiego meglio: valore in tensione 1V valore ingegneristico 1, valore tensione 2V valore ingegneristico 1,5. Nel caso quale blocco funzione utilizzare ?
Novembre 19, 2013 alle 2:51 pm #37902Oscar_stb
PartecipanteCredo di averla trovata: Linearize ?
Novembre 19, 2013 alle 5:14 pm #37903Sergio Bertana
Amministratore del forumSi è proprio la funzione Linearize (Estratto manuale) che ti serve. Come vedi dal manuale devi fornire alla funzione gli indirizzi di due array di variabili REAL.
VInReference, Array con i valori in ingresso da linearizzare (Nel tuo caso 1.0, 2.0, ecc.).
VOutReference, Array con i valori di uscita linearizzati (Nel tuo caso 1.0, 1.5, ecc.).La funzione esegue la ricerca nell’array VinReference del valore immediatamente superiore al valore in ingresso interpolando linearmente tra il valore trovato e quello precedente, calcolando il valore in uscita in base ai due valori presenti nelle stesse posizioni dell’array VOutReference. Naturalmente il valore in uscita sarà molto piuù preciso quanti più punti avrai tabellato nei due arrays.
Ottobre 4, 2017 alle 9:08 am #39983Anonimo
InattivoVolevo chiedere un informazione sulla funzione Linearize, è possibile utilizzare un file csv al posto dei due array in modo tale da tarare il sensore senza dover spegnere l’impianto ?
Ho cercato sul forum una soluzione, ho trovato questa discussione e questa discussione, ma purtroppo non sono riuscito a modificarle al mio scopo.
Ottobre 4, 2017 alle 9:16 am #39984Sergio Bertana
Amministratore del forumLa funzione Linearize esegue il calcolo del valore in uscita in base al valore in ingresso basandosi su due arrays VInReference e VOutReference, alla esecuzione della funzione i due arrays devono essere valorizzati. Quindi per leggere i valori da un file CSV devi leggere il file e trasferire i valori nei due arrays. Credo che basandosi sui due topics che hai citato puoi già avere una idea di come fare.
Ma se la necessità è di modificare dinamicamente i valori negli arrays, basta molto più semplicemente dichiarare gli arrays come RETAIN e con LogicLab da debug modificarne i valori.
Se definisci gli arrays RETAIN ogni volta che carichi il programma il loro valore viene reinizializzato al valore di init. Se desideri che rimangano i valori impostati da debug basterà allocare gli arrays nell’area di memoria tampone (Da DB100.2048 in avanti). In questo topic informazioni sull’uso della memoria ritentiva.
Aprile 4, 2018 alle 8:18 pm #40064Flea
PartecipanteSulla versione Logiclab 2.5 non trovo nella libreria eLLabUtyLib_C040 la funzione di scalatura… dove posso trovarla?
Aprile 5, 2018 alle 5:32 am #40065Sergio Bertana
Amministratore del forumLe ultime versioni delle varie librerie di LogicLab sono disponibili nella zona download della pagina delle librerie sul nostro sito. Scarichi la libreria che ti interessa e poi importi dalla libreria (Topic) l’oggetto che ti serve (Nel tuo caso la funzione ValueScale).Quello che è strano è che nella libreria eLLabUtyLib_C040 la funzione è presente, sei sicuro di avere selezionato le funzioni (Screenshot) quando esegui l’import ?
-
AutorePost
- Devi essere connesso per rispondere a questo topic.