Vai al contenuto
PLC Forum


Modbus RTU su RS232


Messaggi consigliati

Inserito: (modificato)

Ciao a tutti questo è il mio primo messaggio colgo l'occasione per salutare il forum.

Spero sia il forum giusto ( verde).

Mi sto attrezzando per scrivere un software per PC che sia in grado di leggere alcuni dati da un Modbus RTU slave.

Premetto che sono un neofita sull'argomento.Sto "googlando" da diversi giorni.

Vorrei poter testare il software con un emulatore di modbus slave

avrei scelto questo :

http://www.simplymodbus.ca/RTUslave.htm

Vorrei usare il softw master e slave sullo stesso pc .Ho necessita di far viaggiare il mio modbus master su RS232.

Ho pensato quindi di collegare le due seriali sul PC con uno spezzone di cavo seriale.

Ora mi chiedo e sto cercando anche su internet , come devo collegare il cavo seriale sul DB9 ? Quindi i piedini rx tx rts etc..

Probabile che dica qualche cosa di sbagliato . Ho parecchie nozioni in testa devo cercare di riordinare le idee

blink.gif

Grazie ciao

Modificato: da full

Inserita:

Ti serve un adattore o cavo nulmodem, oppure lo costruisci tu con due connettori femmina.

La soluzione ce l' hai gia' nel link che hai postato.

Vedi alla voce "manual" sulla sinistra sotto "RTU Slave", scorri la pagina e verso la fine trovi "Physical Connection".

La soluzione tra due seriali (stesso PC o 2 PC) e' quella DTE-DTE al centro.

Comunque anche le altre sono la stessa cosa: il pin di trasmissione (TX) va collegato con quello di ricezione (RX) all' altro capo.

La massa e' comune.

Se hai una sola seriale o non vuoi utilizzare le porte "reali" esistono dei software che virtualizzano le COM.

Ce ne sono sia a pagamento che freeware.

Uno che uso spesso e' questo:

http://www.eterlogic.com/Products.VSPE.html

Funziona su Win2000, XP e Vista (solo 32bit).

e' free e puo' essere usato senza restrizioni anche in usi commerciali.

Per le istruzioni vedi l' . o gli screenshoot che ci sono alla pagina citata, comunque e' molto intuitivo.

Per quanto riguarda il software che hai messo in link mi pare di capire che ha bisogno di una licenza.

Se vuoi provare anche questo emulatore slave:

http://www.modbustools.com/download.asp

funziona per 10 minuti e poi va riavviato.

Il demo dura 30 giorni.

Ma per fare prove...

Inserita: (modificato)

Scusa non mi ero accorto del link su "manual" dopo l'ennesimo sito consultato, in quest'ultimo sono stato poco attento.

Ho trovato molto utile il link che mi hai inviato sulle com virtuali.Grazie a quello ho già utilizzato o meglio dire giocato con alcuni sofware per modbus in master ed in slave.

Avrei quasi deciso di utlizzare l'activex di modbustools.com. La mia maggiore preoccupazione è che quel codice sia perfettamente conforme allo standard di comunicazione del caso.Questo per non arrivare sul campo e non uscirene piu.

Potrei anche provare a scrivere il codice da solo ma cosi credo di risparmiare tempo anche per il collaudo.

Grazie ancora,ciao

Modificato: da full
Inserita:

Quanti dispositivi e punti devi monitorare ???

La libreria non e' proprio economica (129USD), anche se ce ne sono di piu' costose.

Se il protocollo modbus che devi implementare e' solo quello binario (RTU) gli altri pezzi (ascii,tcp/ip,ecc.) sono un qualcosa che paghi in piu'.

Certo che se poi' in futuro svilupperai anche altro, allora e' un altro discorso...

Il modbus non e' proprio una bestia cosi' cattiva, prova ne sia che lo usano da una trentina d' anni.

Non ho capito se devi realizzare un software dedicato su misura o solo monitorare/eleborare i dati dei vari dispositivi.

Forse ti conviene valutare la soluzione di uno scada hmi di cui ne esistono svariati e a vari prezzi.

Il costo e' generalmente legato al numero ai punti.

In questo modo ti liberi di tutta la parte relativa alla comunicazione, dato che anche il piu' "scarso" dei sistemi di supervisione fornisce il protocollo modbus nelle impostazioni di comunicazione.

Una piccola nota: nei precedenti post accenni al modbus su seriale RS232.

Questo standard non permette di raggiungere grandi distanze in sicurezza: si va dai pochi metri a qualche decina, un po' di piu' con il current loop, ma tanto dipende dalla velocita'(baudrate), dal cavo, dai livelli della porta,ecc.

Se come immagino i dispositivi di misura sono localizzati in punti distanti dal pc di monitoraggio, conviene pensare ad adattori RS485 o verificare se i dispositivi stessi non abbiano una porta con questo standard.

Con un semplice doppino twistato riesci a coprire distanze molto lunghe (centinaia di metri) e a livello di protocollo modbus non cambia praticamente niente.

Invece, se il software proprio lo vuoi fare tutto da solo (ammetto che e' una bella soddisfazione), in rete trovi molti esempi su come scrivere il protocollo nei vari linguaggi, anche senza utilizzare librerie esterne dedicate.

Non so che dispositivi devi leggere/scrivere, ma il produttore dovrebbe fornirti una documentazione piuttosto dettagliata dei vari indirizzi, altrimenti senza questi riesci a fare poco.

Il modbus ti permette di interrogare il dispositivo.

In base a come e' effettuata la richiesta questo fornira' una risposta strutturata in una certa maniera, che deve essere riportata nella documentazione del costruttore.

Ad esempio puo' capitare che alla richiesta di lettura per "n" indici, come una serie di varie misure, il dispositivo risponda in questo modo (e' il caso degli Endress+Hauser):

1 byte = Address

1 byte = funzione modbus

1 byte = numero di byte che seguono nella risposta

1 byte = misura valida o no

2 byte = valore 1^ misura in floating point 32bit

1 byte = misura valida o no

2 byte = valore 2^ misura in floating point 32bit

1 byte = misura valida o no

2 byte = valore 3^ misura in floating point 32bit

ecc..

2 byte = CRC

Se la lettura fosse stata invece fatta su indici di valori digitali o interi la risposta potrebbe seguire tutta un' altra struttura.

Stara' a te identificare i byte che ti interessano, "girarli" se sono in big endian o no, effettuare le varie conversioni, ecc. .

Uno scada ti risolve in gran parte questi problemi perche' e' in grado, una volta impostate le variabili (porte o tags), di fornirti il valore che ti interessa senza preoccuparti di quello che avviene in sottofondo.

Quello che posso consigliarti, per capire almeno come il dispostivo risponde, e' di utilizzare un software che permetta di testare le chiamate/risposte.

Ce ne sono di ottimi ma costano, io mi trovo particolarmente bene con questo che e' free:

http://www.modbus.pl/MTester.htm

ma se ne trovano anche altri.

Oltre a modbus.pl, mi permetto di segnalarti anche questo link in cui trovi di tutto e di piu' su questo protocollo:

http://www.modbus.org/

in particolare la sezione "technical resources":

http://www.modbus.org/tech.php

P.S. Forse se posti il problema nella sezione blu "reti e comunicazioni" del forum trovi sicuramente qualcuno che ti da delle dritte migliori delle mie. wink.gif

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