Vai al contenuto
PLC Forum


Acquisizione Dati Float In Modbus Rtu


treemezzo

Messaggi consigliati

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

Link al commento
Condividi su altri siti


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: da rguaresc
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

allora leggo

nella Dword 571D_42A1

in reale 1.461535e+009

nella supervisione, che è Movicon, leggo 80.7kw

Modificato: da treemezzo
Link al commento
Condividi su altri siti

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: da rguaresc
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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: da treemezzo
Link al commento
Condividi su altri siti

  • 3 weeks later...

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

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...