Go Down

Topic: RS485, Modbus, protocollo custom... (Read 3532 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