TomCastagna Inserito: 29 gennaio 2011 Segnala Inserito: 29 gennaio 2011 Buona sera a tutti,sto tentando di effettuare una conversione sul mio Siemens 313c per permettere una lettura di una temperatura tramite ingresso 4-20mA (l'intento è quello di accontentare un cliente che vuole sbarazzarsi di un vecchio Ascon XA).Ho un trasduttore con collegato all'ingresso una normalissima PT100 che mi fornisce un'uscita di 4 mA (per 0 gradi) e di 20 mA (per 200 gradi). Il mio quesito è:se collego l'uscita del mio trasduttore all'ingresso analogico per corrente del mio PLC, come posso impostare un programma per una lettura in gradi del segnale 4-20 mA, rispettando sempre la condizione che 4 mA = 0° e 20 mA = 200°? Non credo di cavarmela con una semplice conversione dell'ingresso in decimale... Qualcuno ha idea?Grazie mille per l'ascolto! Buona serata!
amed Inserita: 29 gennaio 2011 Segnala Inserita: 29 gennaio 2011 Il segnale analogico da 0 a 20mA è trasformato in un numero binario scritto nella word associata all'ingresso analogico (nell'esempio allegato il numero va da 0 a 1741).Devi scoprire come si chiama la word, in numero di bit utilizzati e il numero binario corrispondente a 20mA. Siccome il numero scritto nella word tutto spostato a sinistra (pusizioni più significative nella word) dovrai farlo scorrere verso destra di un determinato numero di posizioni e scritto in un altra word. Nell'esempio i 4 bit più a destra non sono utilizzati quindi il contenuto della word è fatto scorrere a destra di 4 posizioni utilizzando l'istruzione "SHR_W". A queesto punto il numero è utilizzabile e non devi fare altro che una divisione tra il numero corrispondente a 20 mA e una costante in modo che il risultato sia 200 (graqdi centigradi). Questa divisione (cambiamento di scala) è meglio farla fare al videoterminale.Ciao
batta Inserita: 29 gennaio 2011 Segnala Inserita: 29 gennaio 2011 Se configurato correttamente, sul canale analogico leggerai 0 con segnale 0 mA e 27648 (6C00 in esadecimale) con segnale 20 mA.Ti basta un semplice calcolo per convertire 27648 in 200 °C.Oppure, puoi utilizzare la funzione FC105 SCALE che trovi nelle librerie Siemens in Standard Library --> TI-S7 Converting Blocks --> Blocks.
cagliostro Inserita: 30 gennaio 2011 Segnala Inserita: 30 gennaio 2011 Salveper FC105 vedi anche il messaggio #4 al link di cui sotto :http://www.plcforum.it/forums/index.php?sh...c=72620&hl=
amed Inserita: 30 gennaio 2011 Segnala Inserita: 30 gennaio 2011 c'erano 2 figure identiche. Ho rimesso il file corretto. Ciao
Nesus Inserita: 10 febbraio 2011 Segnala Inserita: 10 febbraio 2011 Io ho utilizzato l'FC105 per convertire una misura in ingresso all'analogica in gradi e funziona benissimo! CALL "Read Analog Value 464-2" // FC105 IN :=PEW320 HI_LIM :=2.000000e+002 // 200° LO_LIM :=0.000000e+000 //0° BIPOLAR:=FALSE RET_VAL:=MW100 OUT :=MD120è possibile comprimere il valore in uscita " double word - MD120" in una " word MW120 " ed eventualmente indurire la misura togliendo tutto ciò che vi è dopo la virgola?
Nesus Inserita: 14 febbraio 2011 Segnala Inserita: 14 febbraio 2011 Ho cercato RND sul manuale ma parla solo di arrotondamenti al numero intero.. però per far diventare una Md in MW c'è un modo particolare?
puntalino Inserita: 14 febbraio 2011 Segnala Inserita: 14 febbraio 2011 un doppia parola prima la devi convertire in un numero intero poi la trasferisci in una mw
batta Inserita: 14 febbraio 2011 Segnala Inserita: 14 febbraio 2011 L'istruzione RND effettua la conversione da REAL a DINT con arrotondamento (a differenza di TRUNC, che tronca la parte decimale).Il valore da convertire deve, ovviamente, essere compreso nei limiti di una DINT, ovvero tra -2147483648 e 2147483647.Per scrivere una DINT in una INT non c'è bisogno di alcuna istruzione di conversione, basta che il valore sia compreso tra -32768 e +32767.Quindi, se il valore in formato REAL è compreso tra -32768.0 e +32767.0, si può scrivere:L MiaVarRealRNDT MiaVarInt
TomCastagna Inserita: 15 febbraio 2011 Autore Segnala Inserita: 15 febbraio 2011 Salve a tutti,sono tornato a lavorare sulla conversione da segnale in ingresso in 4-20 mA a lettura in gradi. Ho cercato di svolgere tutto facendo quattro conti, calcolando il rapporto tra il valore massimo di lettura in ingresso per 20 mA (27648) e la scala massima in gradi del mio convertitore di Pt100 (cioè 200). La costante rilevata l'ho utilizzata come denominatore per ricavare una lettura in gradi dall'ingresso dove è montata l'uscita del convertitore in mA.In pratica: L 27648 L 200 /D T MD 90 L PEW 128 L MD 90 /D T MD 20 ....il tutto funziona e riesco a leggere i gradi rilevati dalla sonda....PERO'! A mio malgrado non riesco ad ottenere una lettura dei gradi su MD20 che abbia almeno un numero decimale dopo la virgola....Il risultato che ho ottenuto per ora, è una lettura non precisa per lavorarci. Qualcuno allora sa come posso ottenere il numero decimale dopo la virgola su MD20, in modo tale da poter ricavare anche le differenze di decimo di grado sulla temperatura? Grazie mille per l'ascolto! PS: con FC105 "Read analog value 464-2", ho ottenuto in uscita solamente dei valori che sembrano (da quello che leggo nei test in rappresentanza decimale) i valori in Ohm che assume la termoresistenza.... Non è possibile ottenerne uno in mA e/o direttamente in gradi? Di seguito il mio programma: CALL "Read Analog Value 464-2" IN :=PEW128 HI_LIM :=2.000000e+002 LO_LIM :=0.000000e+000 BIPOLAR:=TRUE RET_VAL:=MW0 OUT :=MD40Grazie mille!!
beppeconti Inserita: 23 febbraio 2011 Segnala Inserita: 23 febbraio 2011 Se vuoi vedere la virgola devi convertire le variabili in REALCIAoBeppe
batta Inserita: 24 febbraio 2011 Segnala Inserita: 24 febbraio 2011 Se vuoi ottenere il valore in decimi di grado, devi fare i calcoli per la conversione usando i decimi di grado.Nei tuoi calcoli utilizzi invece i gradi.Inoltre c'è un modo più breve per effettuare il calcolo:L PEW 128 //Carica valore ingresso analogicoITD //Converti in DINTL L#2000 //Carica il valore massimo in decimi di grado in formato DINT*D //MoltiplicaL L#27648 //Carica valore massimo ingresso analogico/D //DividiT MD20 //Scrivi risultato in decimi di grado (con centesimo di grado troncato)Se invece vuoi il risultato in virgola mobile:L PEW 128ITDDTRL 0.007233796 // (200/27648)*RT MD20La FC105 invece non ti funziona perché hai scritto "BIPOLAR = TRUE", ed invece devi impostare FALSE.
TomCastagna Inserita: 24 febbraio 2011 Autore Segnala Inserita: 24 febbraio 2011 Grazie mille a tutti, non ho avuto modo di rimettermi sul progetto, ma stasera provo il tutto e vi faccio sapere!Grazie!
TomCastagna Inserita: 24 febbraio 2011 Autore Segnala Inserita: 24 febbraio 2011 La prova è riuscita! Ho ottenuto una lettura ancora più precisa con la virgola mobile e, quindi, una regolazione PID molto più efficente!Grazie mille a tutti!
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