treemezzo Inserito: 21 settembre 2012 Segnala Inserito: 21 settembre 2012 Ciao a tutti Ho un piccolo problema con la conversione di un'area di registro di un inverter di un fotovoltaico... mi spiego meglio, ho un 1200 che comunica con un inverter, voglio leggere il parametro di potenza, l'area dati è di tipo float... Ho creato una db e con un array di word acquisisco contemporaneamente diverse aree tutte di tipo Float divise in word... La potenza quindi è ubicata nelle prime due word dell'array... Se con il mio software di supervisione, che punta al PLC leggo il dato ..es: db5.dbd12 sul monitor leggo il valore corretto della potenza, se invece da TIA cerco di leggere questo valore, ottengo un risultato tipo 1,34537362e+234 .... Nella prima word db5.dbw12 viene scritto E3C2 nella seconda word db5.dbw14 40AA, sul supervisore ho una potenza di 5.7 kw circa... se sposto le word dbw12 e dbw14 rispettivamente in mw100 e mw102 e poi leggo md100 ho un valore simile a quello che ho scritto sopra cioè 1,34537362e+234 Ho provato ad invertire le word ma nulla... il fatto è che se converto da real 5,7 a Dword ottengo 0000_0006 Giustamente!!! viene approssimato.. Sicuramente mi sfugge qualcosa... Potete aiutarmi grazie
rguaresc Inserita: 22 settembre 2012 Segnala Inserita: 22 settembre 2012 (modificato) Ho provato ad invertire le word ma nulla eppure credo proprio che l'errore stia nel non aver scambiato le word prima della lettura in float. Provando gli stessi dati con una cpu 300 ho trovato 5.340302 Modificato: 22 settembre 2012 da rguaresc
JumpMan Inserita: 22 settembre 2012 Segnala Inserita: 22 settembre 2012 Credo che devi scambiare i 4 bytes non le 2 word, l'istruzione TAD (CAD) di step7 fa questo: ABCD >>> DCBA
treemezzo Inserita: 22 settembre 2012 Autore Segnala Inserita: 22 settembre 2012 Grazie provo e faccio sapere....
treemezzo Inserita: 22 settembre 2012 Autore Segnala Inserita: 22 settembre 2012 Ho provato... ma nulla, continuo ad avere lo stesso problema.. Ho fatto un scatto del desk, scusate l'ignoranza, ma come faccio a caricare l'immagine?? o magari invio tramite mail.. provo a scrivere.. L'istruzione per il 1200 è la SWAP word 1 16#B3E2 --- SWAP mw1000 16#E2B3 word 2 16#4205 --- SWAP mw1002 16#0542 md1000 16#E2B3_0542 (Dword) MD1000 --- SWAP -- MD1300 16#4205_B3E2 istruzione CONV (Dint -- Real) (nell'impostazione di conversione posso solo inserire DINT, non viene menzionata DWORD) Risultato: 1.10767e+009 Ho provato anche ad invertire solo le word.. word 1 16#BB3A -- word 2 16#426E -- dopo l'inversione ho una dword 16#426E_BB3A faccio la solita conversione da DINT A REAL e ottengo 1.114552e+009 grazie in anticipo per l'interesse
amed Inserita: 22 settembre 2012 Segnala Inserita: 22 settembre 2012 Ciao. Tu hai scritto: "La potenza quindi è ubicata nelle prime due word dell'array... Se con il mio software di supervisione, che punta al PLC leggo il dato ..es: db5.dbd12 sul monitor leggo il valore corretto della potenza, se invece da TIA cerco di leggere questo valore, ottengo un risultato tipo 1,34537362e+234 ...." L a supervisione legge il valore giusto e questo è l'importante. Con TIA leggi con un formato, mi sembra, di tipo esponenziale che io in TIA v11 no vedo. Un valore scrito in formato esponenziale va letto applicano una formula. Quali sono i valori giusti che tu vedi: quello nella supervisione e quello nel TIA. Usi TIA v10 o TIA v11. Ciao
treemezzo Inserita: 22 settembre 2012 Autore Segnala Inserita: 22 settembre 2012 Uso TIA V11 sp2 con una CPU 1214C fw3.0 grazie
amed Inserita: 22 settembre 2012 Segnala Inserita: 22 settembre 2012 Dimmi anche il valore esatto che leggi sulla supervisione e il corrispondente valore che leggi con TIA: Ciao
amed Inserita: 22 settembre 2012 Segnala Inserita: 22 settembre 2012 Può anche essere che il numero nella doppiaword sia solo proporzionale al valore della potenza e Tia legge questo numero. Nella supervisione è attivata una funzione di "scaling" che moltiplicando per una costante il numero nella doppia word lo fa coincidere con il valore della grandezza Potenza. Riciao
treemezzo Inserita: 22 settembre 2012 Autore Segnala Inserita: 22 settembre 2012 (modificato) allora leggo nella Dword 571D_42A1 in reale 1.461535e+009 nella supervisione, che è Movicon, leggo 80.7kw Modificato: 22 settembre 2012 da treemezzo
rguaresc Inserita: 22 settembre 2012 Segnala Inserita: 22 settembre 2012 (modificato) Nella memoria i numeri sono sempre in binario. Siamo noi che preferiamo vedere quello stesso valore in esadecimale o in virgola mobile piuttosto che in binario e questa è una funzione di visualizzazione che non cambia il numero binario. Non si devono fare conversione basta scambiare le due word Modificato: 22 settembre 2012 da rguaresc
amed Inserita: 23 settembre 2012 Segnala Inserita: 23 settembre 2012 Il numero che hai nella doppia word è elevato. La combinazione di bit 571D_42A1 scritti in esadecimale nella doppia word a me corrispondono al numero real 1.729095e+014 che corrisponde 1.729095 x 1014 che significa spostare la virgola di 14 posizioni. Se tu in HMI leggi 80.7 significa che è stata realizzata in HMI un funzione di scaling (cambio scala) Per verificare quanto ti ho detto realizza nel TIA una tabella di "controllo". Ciao
treemezzo Inserita: 24 settembre 2012 Autore Segnala Inserita: 24 settembre 2012 (modificato) E' chiaro... proverò a farlo nel pomeriggio, purtroppo non sono più in campo, lo farò da remoto... ma sono sicuro che sia corretto, nella supervisione per far leggere il valore corretto devo puntare alla seconda word, e lei in automatico legge il valore corretto.... Grazie ancora Modificato: 24 settembre 2012 da treemezzo
treemezzo Inserita: 15 ottobre 2012 Autore Segnala Inserita: 15 ottobre 2012 E' passato un po'... comunque bastava invertire le word, e fare tasto destro sul valore visualizzato / comanda / formato di visualizzazione / selezionare virgola mobile... in questo modo una dword la si visualizza in virgola mobile e non in formato esponenziale... E' tutto, spero possa servire a qualcuno.. 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