Vai al contenuto
PLC Forum


Modbus E Variabili


minihidro

Messaggi consigliati

Ho collegato una cpu CJ1M tramite una SCU41 ad un analizzatore di rete della socomec: il diris A41. E' lo stesso analizzatore della Schneider Electric. cambia solo nome.

Il collegamento e' stato fatto via modbus .

Il collegamento funziona , ma il grosso problema e' che malgrado lo strumento legga i valori sia positivi che negativi di corrente , cos-phi , potenza , energia , ecc ecc me li ritrovo senza segno sul bus del Modbus.

Qualcuno ha avuto esperienze del genere ?

Come avete risolto ?

Link al commento
Condividi su altri siti


Forse perchè i valori letti li hai assegnati a delle variabili impostate come intero senza segno (UINT) anzichè con segno (INT).

Quindi il PLC assume che nella word ci siano valori da 0 a 65535, anzichè da -32768 a +32767.

Basta che analizzi il bit 15 (detto anche MSB), che se è a 1 indica che il numero è negativo.

Link al commento
Condividi su altri siti

Ctec ha ragione, inoltre attenzione che il Modbus non impone restrizioni su come vengono richiesti e interpretati (tipo di dato intero, con/senza segno, floating/fixed point, ...) i valori anche "multi-registro" e che io sappia neppure sull'endianness, cioè non è richiesto che l'unità slave dia errore se il valore è gestito male lato applicazione (e l'unico controllo che potrebbe essere fatto comunque è che il range di registri richiesto sia congruo).

Lo strumento potrebbe ad esempio fornire valori a 32 bit (molto probabile in questi casi in cui serve una certa precisione nel valore misurato) come coppia di registri (che sono sempre a 16 bit) con un determinato ordine dei byte, e spetta solo a te programmare correttamente la richiesta e l'interpretazione del valore.

In vari casi poi con gli strumenti di misura, ho visto che molti valori vanno scalati (secondo le specifiche necessariamente fornite dal costruttore). Paradossalmente potresti avere numeri senza segno che possono corrispondere a valori negativi. Faccio un esempio banale: il valore restituito va da 0 a 65535 (cioè va preso come UINT) ma 0 corrisponde al valore reale -30 e 65535 corrisponde a +50, e tutti i valori intermedi vanno scalati (lato applicazione) di conseguenza come numeri decimali. Di solito queste conversioni "semplici" sono operazioni facilitate nei prodotti per l'automazione (in particolare nei software SCADA).

Modificato: da pomat
Link al commento
Condividi su altri siti

Concordo con chi mi ha preceduto.

Aggiungo che ho utilizzato un analizzatore di energia (electrex) che utilizza registri 32 bit di tipo float.

Quindi verifica bene il tipo di registro

Link al commento
Condividi su altri siti

Grazie per le risposte ,

Ho preso le FB dal sito omron per quanto riguarda la comunicazione Modbus ( http://www.myomron.com/index.php?action=kb&article=1278 ) ma non credo gestiscano il segno...

A sentimento per me neppure lo strumento li gestisce , o meglio gestisce alcuni registri totalmente negativi o totalmente positivi.

Quei registri invece che dovrebbero avere il segno , sul manuale non c'e' scritto nulla , il che mi fa pensare che siano variabili di tipo UINT.

Per completezza allego il manuale.

http://ebookbrowsee.net/cdr-27038-rs485-jbus-modbus-pdf-d90451593

Non e' necessaria una scalatura , visto che gia' lo strumento lo fa con i TA , c'e' solo sistemare il punto decimale , il che non e' un grosso problema , anche perche' il manuale indica il fattore di conversione.

Modificato: da minihidro
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...