Citazione:
Orginalmente inviato da astrobeed
Ti (vi) do un consiglio, guardati il protocollo MODBUS, che è molto usato con la RS485, è open e molto valido, non è difficile da implementare e si trovano una marea di librerie open già fatte che lo implementano per PC, PIC e AVR.
|
Azzz se trovo chi ha inventato l'inglese ..............
Mi sono scaricato i due manuali sul layer 7 e sul layer 1 e 2. Fra un'imprecazione e l'altra me li sono letti, sperando di aver capito tutto riporto qui le mie considerazioni:
1) Capisco perchè in ambito industriale è molto usato ...........
2) In riferimento ai miei dubbi, mi sembra che uno dei metodi usati sia quello di avere lo start tramite un 3,5 tempi carattere di pausa o nel caso di trasmissione ASCII si usa un carattere di start e due di stop, il resto è inviato con carratteri ascii raffiguranti solo i caratteri esadecimali (Sergio così è impossibile che il byte di inizio si trovi in mezzo al pacchetto) ...... insomma non mi sembra che stavo tanto lontano poi ..........
3) Geniale l'idea di usare per riferimento sugli slave dei registri, come se si stessero usando i registri interni al micro, o quasi.
4) Secondo me e per come la vedo io macherebbe una possibilità fondamentale, la risposta ad una richiesta dati è generalmente immediata ma manca la possibilità di una risposta differita, del tipo:
a. "chiedo dati"
b. "ho capito te li do più tardi" (risposta standard con len=0=non pronti)
a. (fa altro)
.....
a. "dati pronti" (comando nuovo da implementare)
b. "si" (oppure) "no" (risposta standard con len=0=non pronti)
se si, b. invia anche i dati richiesti ......... Non capisco, è un sistema che si interfaccia su diversi sistemi di trasporto, ma perchè non hanno previsto la risposta differita che è fondamentale se si hanno bus a velocità diverse .....
5) ci sono dei comandi lasciati liberi per l'utente, io aggiungerei quello di cui sopra sopra (da studiare) ...... e forse qualcuno non lo implementerei ........
6) Non concordo con la scelta di avere registri a 1 o a 16 bit ..... io avrei optato per 1 o 8 bit, tanto si possono leggere più registri in contemporanea, ma io (noi) ho altri scopi.........
7) forse la len sul comando da master a slave andrebbe inplementata ..... non so
L'implementazione non mi sembra molto difficile, i comandi effettivi sono pochi, e molto simili .... scrivi registro/gruppo registri .... leggi reg./gruppo reg. scrivi dati in un file leggilo e pochi altri. Ho fatto un giro per librerie e mi sembra che il meno supportato sia proprio il pic .... il giro era veloce vedrò di cercare meglio.
Il sistema è prettamente monomaster, ad esempio usa un solo byte di header, che è l'indirizzo dello slave, il resto sono già dati, insomma monomaster ma molto, anzi moltissimo efficente.
Non so cosa ne pensano gli altri ....... con le modifiche dette si potrebbe quasi adottare ..........
Saluti Nonno