====== Cablaggio del bus RS485 ======
===== Modbus: protocollo universale =====
Modbus è un protocollo di comunicazione seriale creato da un importante produttore di PLC nel lontano 1979. A differenza di molti altri protocolli di comunicazione è pubblicato apertamente ed è “royalty-free”, ciò ha permesso ad ogni produttore di PLC, Touch Panel ed in genere di schede elettroniche di implementarlo all’interno dei propri dispositivi, rendendolo così lo standard defacto per l’Automazione e la Domotica. \\
Modbus è un protocollo sicuro, infatti integra il controllo CRC su ogni messaggio per verificare l’integrità dei dati; tipicamente viene utilizzato su linee seriali RS- 232 e RS-485 denominato "**Modbus RTU**", mentre la versione TCP-IP è denominata “**Modbus TCP**”.\\
\\
Per chi volesse approfondire gli aspetti tecnici di questo protocollo di comunicazione vi consiglio di leggere questa interessante guida: [[http://www.sti.uniurb.it/romanell/Domotica_e_Edifici_Intelligenti/110113-Lez05b-Modbus-DomoticaEdEdificiIntelligenti-Romanelli.pdf|Il protocollo ModBus]]
===== Lettura dati via RS485 =====
La possibilità di disporre di un’uscita RS485 sul contatore permette di poter installare nel nostro impianto **fino a 32 contatori** per monitorare quanti e quali carichi vogliamo. Basterà infatti collegarli fra loro con un semplice doppino ritorto e collegarli al Raspberry mediante un economico adattatore USB-RS485, per poter monitorare e loggare tutti parametri energetici che desideriamo, mediante i già noti software 123solar e MeterN:
{{ :img_metern:sdm120c_4.jpg?nolink&400 }}
Grazie ad un software sviluppato da Gianfranco Di Prinzio (gianfrdp del forum energeticamebiente.it) che ha messo gentilmente a disposizione su [[https://github.com/gianfrdp/SDM120C|Github]], è possibile leggere tutti i valori da questo contatore.\\
\\
Il software prevede inoltre le necessarie integrazioni per poter utilizzare il contatore mediante i software MeterN e 123solar. Infatti la possibilità di poter leggere più contatori sullo stesso bus, permette di utilizzare 123solar anche con inverter non direttamente compatibili, ma leggendo anche la [[metern_scenario2|produzione fotovoltaica]] (e non solo i consumi) mediante un contatore.
===== Cablaggio rete modbus =====
Come potete vedere il collegamento nelle varie configurazioni è comunque molto semplice. Basterà collegare mediante un **doppino ritorto** le uscite RS485 del contatore (identificate con le lettere A e B) con le rispettive lettere riportate sulla chiavetta usb.
**FATE ATTENZIONE A RISPETTARE LA POLARITA’ E COLLEGARE IL TUTTO CORRETTAMENTE**\\
Collegate i dispositivi sul bus solo a sistema NON alimentato
{{ :img_metern:modbus-schema.jpg?direct&500 |}}
Nel caso si installino più dispositivi sullo stesso bus si dovrà creare una catena come l’immagine seguente, mettendo in parallelo tutti i dispositivi del bus:
{{ :img_metern:rs485_wiring.jpg?nolink&300 }}
A differenza della rete di computer LAN o del cablaggio a 230 V di casa, con molti bus la disposizione ed il collegamento dei dispositivi non sono casuali. __Con il bus RS485, i singoli elementi devono essere collegati in sequenza a un’unica linea continua__, come perle in una collana. In questa tipologia, le ramificazioni non sono consentite
{{ :img_metern:rete_rs485.jpg?nolink&500 }}
Eventuali tronconi di derivazione dal bus devono avere una **lunghezza massima di 2m**
Se per qualche motivo non potete fare a meno di usare un bus con **diramazioni a stella**, è necessario utilizzare degli apparecchi appositi (RS485 HUB) che isolano con un appropriato driver ogni singolo ramo, che verrà poi terminato normalmente. [[http://www.icpdas.com/products/Remote_IO/i-7000/pdf/I-7514U.pdf|Esempio]]
===== Cavo modbus =====
Queste sono le specifiche fornite da ABB (PowerOne) per lo specifico cavo per reti RS485 da utilizzare:
{{ :img_123s:cavo_schermato.png?nolink&700x376 }}
\\
Da notare che nel caso si utilizzino degli adattatori USB-RS485 dotati anche del polo GND (massa) non si deve collegare l'eventuale schermatura del cavo a questo polo, ma entrambi i conduttori di un ulteriore doppino.
\\
E' possibile anche l'utilizzo dei **cavi LAN UTP** per la realizzazione dei collegamenti modbus in sostituzione dello specifico cavo RS485 (più costoso e più difficile da trovare).\\
\\
Personalmente ho utilizzato il cavo di rete per lunghezze fino a circa 30-40m senza particolari problemi.\\
\\
E' comunque importante che il cavo di rete abbia le seguenti caratteristiche:
* sezione conduttori AWG24 (molto spesso sono AWG26 e quindi più sottili)
* impedenza prossima a 120ohm
* sia un cavo schermato
* si utilizzino due fili che costituiscono un doppino ritorto ( __NON UTILIZZATE 2 DOPPINI DIVERSI PER I DUE FILI DEL BUS__ )
* non vi siano possibilmente giunzioni nel cavo
* si utilizzi per l'eventuale polo GND i due fili in parallelo di un ulteriore doppino (come visibile nella prima immagine)
* non utilizzare la schermatura come cavo GND
Per approfondimenti sul cavo da utilizzare: [[http://www.flanesi.it/forum/viewtopic.php?f=17&t=1886|Cavi per seriale RS485 e cavi LAN]]
===== La velocità corretta =====
La capacità parassita della linea di trasmissione aumenta all’aumentare della lunghezza della linea, limitando di conseguenza la massima velocità del bus. Una legge empirica fornisce i seguenti valori:
* 115200bps: fino a 85m
* 57600bps: fino a 170m
* 38400bps: fino a 250m
* 19200bps: fino a 500m
* **9600bps: fino a 1000m**
* 8400bps: fino a 1200m (lunghezza max)
Personalmente per l'impiego indicato sul wiki consiglio di **utilizzare la velocità di 9600 bps** che sono compatibili con i contatori impiegati
===== Le resistenze di terminazione =====
I cavi RS-485 hanno impedenza tipica di 120Ω. Di conseguenza è necessario inserire una resistenza di terminazione all’inizio del bus RS-485 (tipicamente sull'adattatore USB-RS485) ed alla fine (tipicamente in concomitanza dell’ultimo slave).\\
È opportuno scegliere **resistenze da 120Ω con tolleranza 1%**, per evitare sbilanciamenti nel bus di trasmissione. \\
Alcuni dispositivi, ad esempio gli inverter e/o gli adattatori USB-RS485, integrano internamente delle resistenze di terminazione, in alcuni casi attivabili con dip-switch; in questo caso occorre verificare che solamente il primo e l’ultimo dispositivo del bus abbiano la resistenza di terminazione attivata.
* Su bus RS-485 particolarmente corti è possibile non inserire le resistenze di terminazione
\\
Fino a 30-35m personalmente non ho avuto problemi e non ho avuto bisogno delle resistenze di terminazione
{{ :img_metern:bus_rs485.jpg?nolink |}}
\\
Attenzione che **alcuni adattatori USB-RS485 hanno già al loro interno la resistenza di terminazione da 120 ohm**.\\
**Prima di mettere una resistenza sull'adattatore, verificate che non sia già integrata!!**
===== GND? dove lo collego? =====
Molti dispositivi RS-485 dispongono del morsetto GND (ground), allo scopo di fornire un riferimento di tensione comune a tutti i ricetrasmettitori RS-485 del bus. In questo caso, occorre collegare tutti i pin GND dei dispositivi tra di loro, utilizzando un altro filo del cavo RS-485.\\
\\
Il pin GND non è comunque necessario alle schede alimentate in tensione continua, in quanto il riferimento di tensione comune è rappresentato dal polo negativo.
**Non collegare il pin GND alla messa a terra dell'impianto e non si deve collegare alla schermatura del cavo ma utilizzare un altro filo del cavo RS-485**
Per un approfondimento tecnico sulle reti RS485 suggerisco di leggersi i seguenti documenti:
* [[http://www.flanesi.it/blog/download/RS485/Corretto_cablaggio_delle_reti_RS-485.pdf|Corretto cablaggio delle reti RS485]]
* [[http://www.cle.sm/rete485.pdf|Guida alla rete RS485]]
* [[ http://www.ainetautomation.com/Documentazione/guida_rapida_bus_rs485.pdf|Guida rapida: creazione di un bus RS485]]