Vai al contenuto
PLC Forum


Comunicazione Modbus RTU tra CPU1214 (CM1241) ed un Master I/O NetBuilding


DanieleR

Messaggi consigliati

Buon Giorno a tutti,

mi chiamo Daniele e sono alle prese con una questione sul sistema domotico della NetBuilding che ho installato a casa mia 10 anni fa.

 

Premetto: sono un programmatore di sistemi d'automazione industriali e quindi conosco bene la programmazione di PLC, HMI e reti di dispositivi di molte marche.

 

Il mio obiettivo è separare un modulo master I/O dal mio sistema domotico ed interfacciarlo direttamente ad una cpu 1214 Siemens dotata di scheda modbus CM1241.

 

Ho sentito e risentito l'assistenza Netbuilding che a parte dirmi che la cosa è fattibilissima perchè il master i/o implementa un protocollo modbus RTU standard ed avermi dato un tabellina riassuntiva di indirizzamenti dei registri interni del modulo,  non possono dirmi altro in quanto non danno assistenza su programmazione appunto di cpu di altre marche.

 

Ora io vengo da svariati weekend spesi a fare ogni sorta di prova, modificando e rimodificando parametri di comunicazione e velocità nonostante l'assistenza netbuilding mi abbia garantito che i parametri standard di comunicazione siano il set presente sul piccolo manualetto che mi hanno dato e nulla di fatto... la diagnostica della scheda siemens mi dice di verificare cavo ed impostazione perchè non trova nessuno slave... grrrrrrrrrrr

 

Cavo e funzionamento della scheda CM1241 l'ho verificati collegando un'altra cpu 1214 con equivalente scheda e mettendo in comunicazione i 2 plc in Modbus (ovviamente il secondo con blocco Modbus Slave configurato).

 

Qualcuno avrebbe mica qualche asso nella manica da passarmi? qualche idea, indicazione...

 

Attendendo una gentile risposta vi ringrazio anticipatamente...

 

Daniele Randi

 

(NB. ai moderatori : so di aver creato analoga discussione in un altra area ma dopo 10 giorni e quasi 90 visite senza una risposta ho reale necessità di espandere il campo di ricerca... se è un problema chiuderò la prima discussione nell'altra area)

 

Link al commento
Condividi su altri siti


ifachsoftware

Buongiorno , innanzitutto io proverei a vedere se la comunicazione Modbus funziona correttamente utilizzando un simulatore per controllare i vari registri.

Appurato questo si può passare alla comunicazione tra plc e dispositivi.

 

Esempio

Link al commento
Condividi su altri siti

Ciao ifachsoftware,

grazie per il consiglio ma come indicato nel mio post, sono sicuro di hardware e software lato Siemens (provato con altra cpu appunto), e prendo per "sicuro" il poco che mi è stato confermato dall'assistenza NetBuilding... ciò che "tocca" ed ancora non permette ai 2 sistemi di comunicare deve essere qualcosina di così "sottile" e/o di macroscopico e troppo evidente che non riesco a vedere...

 

a nessuno è mai capitata la necessità di fare qualcosa di similare (magari anche su altra piattaforma che non sia siemens) ???

 

Daniele

 

 

 

Link al commento
Condividi su altri siti

Giuseppe Signorella

Come suggerito da ifachsoftware ti suggerisco anche io prima di testare la comunicazione / dispositivo NetBuilding con un software di simulazione modbus. 

Poi se hai il manuale del dispositivo, e vuoi condividerlo, proviamo a comprendere dove stà l'inghippo. 

Nulla toglie che il dispositivo possa essere difettoso. 

Link al commento
Condividi su altri siti

  • Ciao Giuseppe,

nessun problema ad inviarti il manualetto della NetBuilding...

per quanto riguarda il "testare" la comunicazione col modulo con un simulatore mi manca una passaggio:

intendi realizzare una connessione mio pc -> "convertitore seriale // modbus RTU 485" -> modulo master i/o ??

io non ho un converitire seriale modbus....

 

EXY4 - Protocollo MODBUS Rev2.pdf

 

 

 

 

Link al commento
Condividi su altri siti

lato software, non sono un esperto, lato hardware ci ho sbattuto la testa per mesi.

 

Prima cosa che ti direi di verificare, con un oscilloscopio tra i cavi A e B del modbus, vedi il segnale?

 

Hai già invertito A e B? Tieni presente che lo standard modbus, da specifiche che trovi qui http://www.modbus.org/specs.php, ma spero tu abbia già consultato, spiega molto male come deve essere implementato con gli standard di comunicazione. Lo standard RS-485 prevede che il Data + sia il B del modbus e il Data - sia A del modbus.

Link al commento
Condividi su altri siti

Giuseppe Signorella
Quote

 

per quanto riguarda il "testare" la comunicazione col modulo con un simulatore mi manca una passaggio:

intendi realizzare una connessione mio pc -> "convertitore seriale // modbus RTU 485" -> modulo master i/o ??

 

Esattamente, procurati un convertitore USB/RS485 oppure RS232/RS485 anche di pochi euro su ebay.

Un bel software di simulazione modbus, ed effettua qualche test. Capirai subito se c'è qualche problema con il modulo o se il problema è lato PLC.

 

Link al commento
Condividi su altri siti

14 ore fa, Kurtzisa scrisse:

Hai già invertito A e B?

Buon giorno a tutti,

si Kurtzisa, fra le tantissime prove fatte ho anche invertito i segnali ottenendo il medesimo effetto... cioè nulla.

 

Giuseppe mi attrezzo e nel frattempo se vengono altre idee non risparmiatevi!!

 

grazie ancora

 

Link al commento
Condividi su altri siti

ifachsoftware

Una volta che sei certo che tra pc e netbuliding comunichi correttamente e sei certo dei registri con cui scambi i dati , allora passi alla parte PLC.

Prima di farlo pero' attacchi il software PC Modbus e controlli i pacchetti che passano.

 

Su quella scheda se non erro dovresti avere i led di Tx e Rx ; vedi se si accendono ?

 

Se si accendono e non hai risposte , prova ad attaccare un sniffer modbus e controlla se passa qualche pacchetto e corrispondono a quelli che comandavi col PC

 

 

 

 

Link al commento
Condividi su altri siti

Ok ifachsoftware,

ti confermo che sulla scheda cm1241 quando attivo un comando di lettura di registri ho il led TX che lampeggia ma non ottengo risposte...

Stessa prova fatta incrociando 2 cpu1214 con analoghe cm1241 ho invece i led TX ed RX che blincano felicemente così come ottengo correttamente la lettura dei registri indicati da una cpu master a quella slave...

 

 

Link al commento
Condividi su altri siti

elettromirko85

Ciao Daniele domanda che registro punti nella funzione mb master? Che codice errore ti rilascia la funzione? Quanto registri vuoi leggere in un colpo? Il len a quanto è impostato? Quale indirizzo ha la cpu Domotica con la quale vuoi comunicare? Ho letto che conosci bene il modbus ma spesso cavolate assurde mettono ko la comunicazione fai questa prova punta il registro 40001 mode 0 (lettura) len 1 e assegna una su una db con una word, appoggia l’indirizzo dell db sul blocco mb master. Sulla db che usi mi raccomando togli la spunta su db ottimizzata. Appoggia un bit sul error della funzione e quando la condizione di errore è true fai una move della word di status su un’altra word dove vuoi tu. Per cominciare prova a fare un solo tentativo di lettura e valutiamo assieme il codice errore che ti rilascia la funzione. Per forza qualcosa darà fuori. Buona serata

Modificato: da elettromirko85
Link al commento
Condividi su altri siti

Ciao elettromirko85,

ti confermo aver configurato la DB come mi suggerisci tu (db classica e non ottimizzata) e di aver realizzato il software in modo da salvarmi il codice di errore; ho fatto una miriade di tentativi di comunicazione configurando l'FB MB_Master in lettura (mode 0) di 1 registro, di 10, di 100... in scrittura (mode 1) di 1 registro, di 10, di 100 e la risposta è sempre la stessa: codice di errore esadecimale 80C8 che da manuale Siemens indica appunto di verificare cablaggio e configurazione del comando...

Nella foto sottostante puoi vedere il richiamo della function block ed a fianco la DB di appoggio nella quale ho i dati di configurazione del blocco, lo stato della MB_Msster e l'appoggio per salvarmi il codice di errore... ho fatto lo screen shot offline e con i dati salvati durante uno degli ultimi tentativi fatti... ma ti confermo aver provato in lungo ed in largo svariate combinazioni dei parametri...

 

322996773_sw__db.thumb.png.ecf4531a3263cdab4f89611af6e313a6.png

Link al commento
Condividi su altri siti

elettromirko85

Ciao Daniele non metto in dubbio le tue prove dai una occhiata a questa foto hai rispettato il collegamento?

 

Altra roba che cavo hai usato? Che lunghezza ha la linea? Nello slave hai settato o inserito la resistenza di terminazione? (Ma dovrebbe centrare poco).

 

Altra domanda sei sicuro che il plc domotico slave abbia l’indirizzo 3?! Di default sono sempre a 1. Controlla anche i parametri canonici di bit stop parità e velocità di trasmissione. Come prova io metterei 19200 baud o anche più lenta.

 

come detto da altri puoi fare una prova con uno sniffer modbus oppure io ho usato in passato cas modbus scanner imposta la comunicazione con i parametri corretti e prova a fare una richiesta di lettura del primo registro. Vedi se risponde qualcosa. Ovviamente avrai bisogno di un convertitore usb seriale o ancora meglio di un gateway eth rs485. Ancora meglio se con funzione modbus gateway integrata. Fammi sapere perché deve andare per forza

BE7F2B20-8EBC-44FC-B023-76D236352B5F.png

Modificato: da elettromirko85
Link al commento
Condividi su altri siti

ifachsoftware

Prova a guardare il pacchetto che invia e confrontalo  con uno equivalente che ti funziona da pc.

 

Potrebbe essere che punti alla locazione sbagliata .... o magari hai sbagliato la baudrate

 

 

 

Link al commento
Condividi su altri siti

Ciao a tutti,

comincio con elettromirko85

- l'attuale lunghezza del cavo è di circa mezzo metro e no, nessuna resistenza di terminazione sulla linea. Tra l'altro anche il collegamento tra PLC della NetBuilding ed il modulo master i/o è realizzato (funzionante) con normali cavi senza resistenze di terminazione alcuna.

- si del master i/o ha indirizzo modbus 3 (assegnato tramite dip switch) ed è assolutamente uguale a come appare sulla rete della netbuilding... io l'ho solo scollegato e collegato al plc Siemens col quale voglio farlo comunicare... non ho variato nulla di nulla sul master i/o dal punto di vista della configurazione rispetto a come funziona se lo ricollego al plc Netbuilding.

(nota che il PORT è il valore diretto della scheda CM1241 e non il dato d'appoggio della DB21)

mb_comm_load.thumb.png.6b5bc59dbd081f2510b0e2c07b99a011.png

 

 

x ifachsoftware

- fatte innumerevoli combinazioni fra baud rate, indirizzo del registro, numero del registro... nulla sempre codice d'errore esadecimale 80C8.

 

 

Link al commento
Condividi su altri siti

elettromirko85

Ciao Daniele, l’mb Com load normalmente io lo eseguo a first scan e non lo eseguo più tanto è solo per la configurazione del modulo cm... prova ad aumentare il tempo del parametro resp to e vedi se cambia qualcosa... ma aspetta un secondo ma il plc al quale stai tentando la connessione è un master? In quanto la comunicazione multimaster in modbus rtu non credo sia possibile... con l’mb master il 1200 è configurato come master della comunicazione se il tuo plc domotico è anche esso master credo che il problema possa stare lì... guarda con il 1200 mi sono collegato a moltissimi apparecchi e non ho mai riscontrato difficoltà esagerate... da termoregolatori a strumenti di processo... anche con roba molto economica, e reti improvvisate da elettricisti zelanti ma è sempre andato tutto a buon fine...  per capire meglio tu hai il plc domotico che comunica con degli io slave remoti giusto? Tu cosa stai tentando di fare? Vuoi comandare direttamente tu gli io slave con il 1200 o vuoi inserirti con il plc domotico e andare a leggere i registri che sono nel file che alleghi per fare una sorta di supervisione? 

Link al commento
Condividi su altri siti

Ciao elettromirko85,

ti chiarisco subito l'architettura del sistema Netbuilding di casa mia.

 

Il plc domotico è Master di rete e comunica con i moduli che si chiamano Master I/O (io ne ho 3 in casa collegati sulla stessa dorsale e direttamente all'homePlc e vorrei separarne 1 per collegarlo direttamente ad una 1214) attraverso una porta per la quale loro appaiono come slave di comunicazione. Questi Master i/o, attraverso una seconda porta modbus, creano una sottorete per la quale loro sono il master di comunicazione ed alla quale si agganciano tutti gli slave del sistema... ti posto uno schema di collegamenti della netbuilding molto chiaro...

HP-F02 - HomePLC Din e Master I-O.pdf

 

Link al commento
Condividi su altri siti

NOVITA'!!!!

ho appena testato la comunicazione Modbus verso il modulo Master I/O attraverso un convertitore USB-RTU485 che mi è arrivato ieri (acquistato su amazon) e Modbus Poll (programmino semplice ma efficacissimo).

Sono riuscito a trovare i parametri e la velocità giuste per interrogare il modulo... a questo punto devo solo riprovare col PLC Siemens configurando opportunamente la scheda... (farò stasera/domani).

 

I parametri erano effettivamente tutti come mi aspettavo che fossero; 8 bit di dati, nessuna parità, 1 stop bit ... la velocità è 115200 (mi ero dimenticato ma ero stato io a metterla al massimo valore consentito... a dire il vero fra le mie "milioni" di prove sono praticamente sicuro di aver provato anche con quella velocità... boh).

Ho notato che effettivamente se non indico correttamente l'area dei registri da leggere o scrivere Modbus Poll indica un errore di accesso all'area ma comunque comunicazione attiva...

 

Allego immagine dell'adattatore e del modulo master i/o... vi farò sapere al più presto cosa accadrà con l'uso del plc

 

 

IMG-20190607-WA0026.jpg

Link al commento
Condividi su altri siti

Buona sera a tutti,

dunque dunque... ho il plc in comunicazione con il modulo!!! leggo la word contenente i bit di ingresso (collegando gli input a 24vdc leggo la configurazione corrispondente) e scrivo bene (attivo i relè desiderati)... :thumb_yello: ... ma non è stato immediato!!! :thumbdown:

 

Ho configurato la comunicazione alla velocità di 115200 con 8 bit di dato, parità nessuna ed 1 stop bit MA LA COMUNICAZIONE SUBITO NON ANDAVA!!! Preso da ENNESIMO momento di sconforto massimo ho invertito A con B del cavo e bingo!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Stamattina facendo le prove con l'adattatore ho connesso A con A ed ovviamente B con B ottenendo comunicazione... con la CM1241 Siemens non funziona così; solo invertendo i 2 segnali si è instaurata la comunicazione e questo mi porta a dire che contrariamente a quanto riportato sul manuale della scheda il pin 8 corrisponde al segnale B ed il pin 3 al segnale A del protocollo modbus...

 

Nessuno ha mai riscontrato questa cosa?

 

20190607_235012_003_01.jpg.1788df5c996018ff8af4f993ec36e1d7.jpg 

 

 

Link al commento
Condividi su altri siti

elettromirko85

Ciao Daniele,

 intanto bravo hai trovato la soluzione 👍 sinceramente io collegando a manuale mai avuto problemi, ma hai fatto bene a condividere la tua esperienza! O ma

quando hai visto miracolosamente il done della funzione rispondere true e vedere i led della scheda cm belli bilanciati tra tx e rx della scheda quanto hai goduto? (Si può dire?! 😂😂😂). 

Link al commento
Condividi su altri siti

Non capisco perché le connessioni RS 485 non siano standardizzate. Chi usa 1,2 altri 3,8 oppure 8e9.

Come per la Rs232 tutti i costruttori per la versione DB 9 e 25 rispettano EIA e CCITT e quindi protocolli livelli e meccanica del connettore citato nella direttiva per 485 si parla solo di livello differenziale tutto il resto è libero.

Se si pensa al DMX sempre linea standard 485, connettore nativo Xlr 5 poi tramutato in Xlr 3 ma tanti apparecchi hanno in commutare bus cross, questo inverter A con B.

Probabilmente pensano che qualcuno potrebbe cablare un cavo invertito A con B ??

Link al commento
Condividi su altri siti

17 ore fa, elettromirko85 scrisse:

Ciao Daniele,

 intanto bravo hai trovato la soluzione 👍 sinceramente io collegando a manuale mai avuto problemi, ma hai fatto bene a condividere la tua esperienza! O ma

quando hai visto miracolosamente il done della funzione rispondere true e vedere i led della scheda cm belli bilanciati tra tx e rx della scheda quanto hai goduto? (Si può dire?! 😂😂😂). 

 

Grazie elettromirko85 per i consigli e si... lo dico... HO GODUTO!!!

 

max.bocca non so che dire... anch'io resto un po' perplesso di fronte a tanta "licenza poetica"... c'è da dire che il "modbus viene da tanto lontano" e di certo una sua caratteristica è sempre stata quella di rispettare poche semplici regole/schemi/parametri tecnici.

 

se proprio devo dirla tutta potrebbe essere lo stesso modulo netbuilding a non rispettare A e B come ordine corretto... tra l'altro ci ho fatto caso appunto venerdì notte scorsa quando si è messo ad andare il tutto sui morsetii A e B è indicato

 

modulo master netbuilding                       CM1241 Siemens

A - TXD                                                      pin 8 TxD-  |  Signal A ( RxD/TxD- )

B - RXD                                                     pin 3 TxD+  |  Signal B ( RxD/TxD+ )

 

magari quelli della netnuilding intendono con morsetto A il morsetto con livello positivo e col morsetto B livello negavo .... fosse così si spiegherebbe perché ho dovuto incrociare il collegamento e perché a nessun altro collega di forum fosse mai successo di dover "invertire" i collegamenti della CM1241...

 

Daniele  

Link al commento
Condividi su altri siti

Dubbio, il bus l'hai polarizzato e terminato con le resistenze di chiusura? Magari questo comporta problemi, io mi son fatto un tester con due Max 485 in ascolto collegati invertiti, per catturare i dati sul bus senza rispettare A B. Poi guardo il led  e capisco quale decodificare 

Link al commento
Condividi su altri siti

No... non ho collegato nessuna resistenza di chiusura... tra l'altro anche il collegamento "originale" proposto da NetBuilding tra il proprio HomePlc ed i moduli Master I/O richiedono resistenze... 

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