minihidro Inserito: 9 aprile 2015 Segnala Share Inserito: 9 aprile 2015 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 More sharing options...
Ctec Inserita: 9 aprile 2015 Segnala Share Inserita: 9 aprile 2015 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 More sharing options...
pomat Inserita: 9 aprile 2015 Segnala Share Inserita: 9 aprile 2015 (modificato) 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: 9 aprile 2015 da pomat Link al commento Condividi su altri siti More sharing options...
pcontini Inserita: 9 aprile 2015 Segnala Share Inserita: 9 aprile 2015 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 More sharing options...
minihidro Inserita: 9 aprile 2015 Autore Segnala Share Inserita: 9 aprile 2015 (modificato) 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: 9 aprile 2015 da minihidro Link al commento Condividi su altri siti More sharing options...
pomat Inserita: 10 aprile 2015 Segnala Share Inserita: 10 aprile 2015 Per capirci meglio, quali sono i valori che non tornano? Dacci l'indirizzo esadecimale di una word d'esempio Link al commento Condividi su altri siti More sharing options...
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