thesla Inserito: 7 marzo 2010 Segnala Inserito: 7 marzo 2010 (modificato) buonasera a tutti,qualcuno mi sa indicare quale istruzione/i (in KOP) utilizare per trasformare un valore 4-20mA in percentuale? nel dettaglio i segnali provengono da un sistema di pesatura che non deve indicare il peso esatto del<contenuto ma lapercentuale di materiale contenuta.grazie saluti a tutti Modificato: 7 marzo 2010 da thesla
batta Inserita: 8 marzo 2010 Segnala Inserita: 8 marzo 2010 Con una semplicissima scalatura.Tieni presente che a 4mA corrisponde il valore 0, e a 20 mA corrisponde il valore 27648.Non devi far altro che scalare tali valori in maniera da far corrispondere 0 allo 0%, e 27648 al 100%.Se non vuoi fare il calcolo, puoi utilizzare la funzione SCALE che trovi nelle librerie Siemens.
thesla Inserita: 8 marzo 2010 Autore Segnala Inserita: 8 marzo 2010 grazie batta!domani mi metto al lavoro e ti faccio sapere il risultatociaograzie!
thesla Inserita: 9 marzo 2010 Autore Segnala Inserita: 9 marzo 2010 ho provato ma i risultati sono stati "scarsi"vista la tua disponibilità ti illustro il problema, mi aiuterai sicuramente per la soluzioneho tre seganli ma parliamo di uno tanto vale per tutti gli altriun segnale analogico EW18 arriva dalla schedacon l'operazione move la indirizzo a MW18MW 18 sarà l'IN di SCALEMD20 in HI_LIM come faccio a settarlo a 100MD30 in LO_LIM come faccio a settarlo a 0passando all'uscita: devo comunicare in profibus con un master che ha impostato come id locale A102.0 con lunghezza 4byte che penso di convertire con la funzione MOVE in MD102 per poi assegnarlo all'uscita OUT di SCALE.per quello che riguarda RAT_VAL cosa imposto?ti ricordo solo che ho un 4-20mA e devo rappresentarlo in percentualeciao grazie!
batta Inserita: 9 marzo 2010 Segnala Inserita: 9 marzo 2010 Prima di tutto, normalmente per ingressi ed uscite analogici si utilizzano indirizzi da 256 in su, e si interrogano con PEWxxx.Riguardo all'unità in Profibus dove devi, invece, scrivere un valore, dovresti dire qualcosa di più.Intanto vale la stessa regola sopraccitata: indirizzi da 256 in avanti e scrittura su PAWxxx.Poi non capisco cosa intendi con: "devo comunicare in profibus con un master che ha impostato come id locale A102.0 con lunghezza 4byte".Sembra che il modulo non sia un modulo di uscite analogiche, ma di uscite digitali. Se così fosse, non potrebbe certo funzionare.Dopo bisogna rispettare i formati.Per esempio, se si tratta di uscita analogica, si dovrà scrivere un valore di tipo INT o WORD, e non DWORD.Se sono uscite analogiche e scrivi una DWORD, vai a scrivere valori su due uscite analogiche consecutive, e non su una sola. Valori, inoltre, che non hanno senso, soprattutto se il formato della variabile è REAL.Quindi, le prime operazioni che ti consiglierei di fare sono:1) configurazione dell'indirizzo dell'ingresso analogico da PEW256 in su2) configurazione dell'indirizzo dell'uscita analogica da PAW256 in suPoi, per la scalatura, puoi seguire due strade: fare il calcolo o utilizzare la funzione SCALE.Esempio di calcolo (gli indirizzi usati sono, ovviamente, solo di esempio): L PEW 256 //Leggi ingresso analogico ITD //Converti in DIT L L#100 //Carica 100 in formato DINT *D //Moltiplicazione di DINT L L#27648 //Carica 27648 in formato DINT /D //Divisione tra DINT T MW 100 //Scrivi il risultato in una variabile INT Se poi devi trasferire il valore scalato ad una uscita analogica, ti basta scrivere: L MW 100 T PAW 256 Se invece utilizzi la funzione SCALE, devi tener presente quanto segue: 1) se posizioni il cursore del mouse sulla funzione e premi F1, si apre la pagina con tutte le istruzioni necessarie 2) devi prestare attenzione ai formati. La funzione SCALE vole i parametri nei seguenti formati: IN: (INT). Se hai compilato la tabella dei simboli, di default a PEW viene assegnato il formato WORD. Devi correggere in INT. HI_LIM: (REAL). Qui ti basta scrivere direttamente il valore, basta rispettare il formato. Quindi, scrivi 100.0 (e non solo 100) LO_LIM: (REAL). Come sopra. Scrivi 0.0 BIPOLAR: (BOOL). Bipolare è, per esempio, per segnali ±10V. Nel caso di segnale 4-20mA non è bipolare, quindi scrivi FALSE RET_VAL: (WORD). Qui la funzione restituisce un eventuale codice di errore (0=nessun errore). Puoi mettere quello che vuoi, basta che sia una variabile dichiarata come WORD OUT: (REAL). Qui la funzione restituisce il valore scalato in formato REAL. Nel caso dovessi poi trasferire il risultato scalato ad una uscita analogica, lo dovresti prima convertire in INT. L MD 100 //valore scalato in formato REAL RND //Converte in DINT arrotondando all'intero più vicino T PAW 256 //Invia il valore all'uscita analogicaDa notare che il valore viene prima convertito da REAL a DINT e poi scritto in una INT (o WORD, ma il concetto non cambia).Perché ciò non comporti errori, il valore di partenza non deve superare il limite ammesso da una variabile INT (-32768..+32767).Nel tuo caso si parla di 0-100%, quindi non c'è problema.
thesla Inserita: 15 marzo 2010 Autore Segnala Inserita: 15 marzo 2010 ho seguito i tuoi consigli ma purtroppo non ho potuto apprezzare i risultati in quanto tutte e tre le centraline di pesatura risultano essere guaste, davano in uscita ciraca 40mA e con il test della centralina per variare manualmente il valore, nulla accadeva. l'assistenza dell'azienda mi ha confermato che le centraline non funzionavano.sicuramente andrà tutto bene sostituendo le centraline, ti darò notizie in merito solo a fine mese.grazie per la tua competenza, gentilezza e professionalitàciao
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora