Go Down

Topic: RS485, Modbus, protocollo custom... (Read 3715 times) previous topic - next topic

segfault

Salve a tutti,
sto cercando un modo per poter connettere un certo numero di Arduino anche a parecchi metri di distanza, come canale fisico mi sembra che la scelta di RS485 sia quasi obbligata da questo punto di vista ma ho problemi più che altro a decidere il protocollo da usare su RS485: ho visto che spesso viene usato Modbus ma ahimé non sembra fare al caso mio perché ho bisogno di un protocollo che supporti connessioni punto a punto. Cosa mi consigliate?
Volendo scrivere un protocollo personalizzato quali accorgimenti dovrei tenere presenti? Ad esempio ho visto che Modbus separa i frame inserendo una certa pausa (3.5 caratteri), come mai hanno deciso di separare i frame in questo modo invece di mettere un "separatore" di fine frame o semplicemente di scrivere all'inizio del frame la lunghezza del frame?
Inoltre come mi consigliate di comportarmi per gestire le collisioni sul bus?

Grazie mille in anticipo.

BrainBooster

Anche se non è proprio il mio campo... ti rispondo con una domanda: pechè non usi semplicemente il protocollo I2C? (già corredato di librerie standard).

segfault

Quote
Anche se non è proprio il mio campo... ti rispondo con una domanda: pechè non usi semplicemente il protocollo I2C? (già corredato di librerie standard).


Perché ho bisogno di dislocare i vari device anche a parecchi metri di distanza, I2C è limitato da questo punto di vista.

uwefed

ciao segfault

cercando ho trovato questo:
http://www.oceancontrols.com.au/controllers/kta223_Relayduino.htm
http://real2electronics.blogspot.com/2009/09/arduino-and-rs485-english-version.html
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245014666/all

Ciao Uwe

frog

@segfault
hai scartato l'i2c solo per la distanza? in questo caso dai un occhio qui http://www.nxp.com/documents/data_sheet/PCA9600.pdf

segfault

In linea di massima non vedo ragioni particolari per preferire I2C, al momento stiamo sviluppando un protocollo punto a punto per RS485, per quanto riguarda le collisioni pensiamo di poterle rilevare in due modi:
1) semplice sistema con pacchetto ACK di conferma
2) abilitando contemporaneamente i pin DE (Driver Enable, abilita la scrittura sul bus) e RE (Read Enable, abilita la lettura) in modo da poter leggere immediatamente il frame appena scritto: una differenza tra i 2 frame confrontati indicherebbe una collisione.

BrainBooster

se ti pagano per sviluppare un protocollo custom allora si, altrimenti una ragione per preferirlo ci ssarebbe... è gia fatto!  ;D
e già prevede i problemi che tu menzioni.
P.S.
Quando dici collegare a distanza, di che distanze parliamo?

Pasquale

Ciao ti posso consigliare i moduli radio, li interfacci direttamente alla seriale di arduino, setti la velicità che ti pare...i moduli sono trasparenti
non ci fanno nulla sul segnale, possono riconoscere anche i comandi standard HAYES. Viaggiano da 300 a 19.200 baud, sono utilizzabili senza licenza. Viaggiano a 868 Mha con potenze da 10 mW a 500 mW.
vai a vedere su  www.satel.com Hanno un solo difetto essendo prodotti professionali....costano.
Un saluto

uwefed

@ Electronic Service

A quel punto é meglio usare dei XBee. costano con scheda adattatore intorno ai 35?.
Un bus RS485 cista molto di meno.

Ciao Uwe

Andrea Ivetich

abbiamo la linea linea bilanciata... usiamo CAN bus!! o un versione semplificata.. UMM..

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy