Vai al contenuto

Informazioni su problematiche Modbus RS485 ed RS232

Home Forum Controllori SlimLine e Netsyst (LogicLab) Informazioni su problematiche Modbus RS485 ed RS232

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Autore
    Post
  • #35792
    Anonimo
    Ospite

    Ho realizzato una comunicazione Modbus RS485 tra una CPU Base LogicLab (Master) e 2 CPU Compact LogicLab (Slave). Il sistema funziona bene, anche se ho fatto una prova che mi ha dato un risultato per me negativo. Durante il funzionamento ho abilitato alcune uscite del primo Slave e contemporaneamente ho staccato i morsetti della COM che lo legavano al Master. Purtroppo le uscite rimangano attive. Questo potrebbe rappresentare una situazione di pericolo, quindi vi chiedo se c’è un modo per poter mettere in sicurezza il modulo, nel caso venga a mancare la comunicazione con il Master.

    Volendo poi far dialogare 2 CPU Compact attraverso una comunicazione Modbus RS232, utilizzando le COM 0 a bordo con attacco RJ45, è sufficiente utilizzare uno dei vostri cavetti CBL057 o bisogna realizzarne uno di tipo incrociato tra TX e RX ?

    Infine ho provato a fare una comunicazione Modbus RS232 tra una CPU Base LogicLab COM1 (Master) ed un dispositivo esterno utilizzato come Slave, ma la comunicazione non avviene. C’è un metodo per poter testare se i due dispositivi stanno comunicando o meno? Aggiungo che mettendo la CPU LogicLab in modalità Debug, la FB SetSMode mi restituisce Done, mentre la FB ModbusMaster mi da Fault.

    #38919
    Sergio Bertana
    Amministratore del forum

    Immagino che sui moduli Slaves tu abbia utilizzato la gestione Modbus slave embedded gestita in automatico dal sistema operativo, il Modbus controlla i comandi arrivo da COM o ethernet e li gestisce di conseguenza ma non può prendere decisioni autonome. Quindi se il comando modbus dal sistema master scrive un registro che poi nel tuo programma viene copiato sulle uscite il valore rimarrà costante fino a quando non verrà ricevuto un comando Modbus di variazione. E’ evidente che se stacchi il cavo il comando non potrà arrivare e quindi le uscite riamrranno nello stato impostato. Per risolvere il problema hai diverse soluzioni.

    Utilizzando la gestione embedded, puoi ad esempio dal master inviare ciclicamente un comando modbus di scrittura di un valore in un registro. Nel tuo programma slave controlli che vi sia questo valore e poi lo azzeri, se il registro non verrà valorizzato nel tempo di rinfresco è evidente che c’è un problema di comunicazione e quindi prendi le decisioni opportune (Esempio disattivi le uscite).

    Utilizzando FB ModbusSlave, utilizzando il FB nel tuo programma controlli l’uscita Done (Si attiva ad ogni ricezione di un pacchetto Modbus) se non si attiva per un tempo di timeout c’è un problema di comunicazione.

    Per connettere due moduli in RS232 non puoi utilizzare un nostro CBL057 ma devi utilizzare un cavo incrociato. Se vuoi puoi utilizzare due adattatori CBL054 e CBL055 tra di loro interconnessi. Altrimenti devi autocostruirti un cavo a 3 fili incrociando Tx ed Rx (Gli altri segnali non sono necessari).

    #38920
    Sergio Bertana
    Amministratore del forum

    Vengo all’ultima domanda, Molti potrebbero essere i motivi percui la comunicazione non avviene, visto che mi dici che il FB ModbusMaster và in Fault si tratta sicuramente di un problema legato al protocollo. Ecco une serie di verifiche da fare…

    Sei sicuro della corretta impostazione della seriale, l’indirizzo di nodo del nodo slave è corretto, il codice funzione che utilizzi è supportato dal sistema slave, l’indirizzo della variabile ed il numero di variabili definite nel comando sono supportate dal sistema slave…

    Ricorda che il protocollo Modbus ha offset 1 sull’indirizzo e molti dispositivi non lo gestiscono, quindi magari devi sommare 1 all’indirizzo dato al FB ModbusMaster.

    Puoi attivare il bit SpyOn e vedere nella console di spionaggio (Topic) i pacchetti Modbus per capire la causa del tuo problema.

    #38930
    Anonimo
    Ospite

    Ho realizzato la rete Modbus RS485, che funziona bene, il Master (CPU base ARM7) utilizza la COM2 per comunicare con 2 CPU Compact, collegate attraverso la COM RS485.

    Il problema è sorto, quando è nata l’esigenza di dover effettuare una connessione RS232 tra Master e Slave, ripredendo il programma utilizzato per la comunicazione in RS485, ho sostituito nella FB Sysfopen COM2 con COM1 ma caricando il programma nella CPU, il blocco ModbusMaster mi restituisce sempre Fault.

    E’ possibile capire la causa di tale inconveniente ?

    #38931
    Sergio Bertana
    Amministratore del forum

    Visto che dici che in RS485 tutto funziona, per passare in RS232 basta come hai fatto correttamente tu definire sulla Sysfopen la COM0 al posto della COM2, tutti gli altri parametri sono invariati.

    Non è che hai commesso l’errore classico di utilizzare un cavetto CBL057 per interconnettere i due dispositivi ? per la connessione devi incrociare i segnali Rx e Tx tra i due sistemi. Quindi ho utilizzi una accoppiata CBL054-CBL055, oppure ti autocostruisci un cavetto con i segnali incrociati.

    Anche in questo caso l’attivare lo SpyOn può essere utile per capire cosa succede.

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Devi essere connesso per rispondere a questo topic.