Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Protocollo

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[21] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 18 giu 2014, 23:32

si, comprendo in pieno quello che vuoi dire... quello che mi turba è un eventuale conflitto nella trasmissione...

perché la comunicazione avverrà cosi:
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

2
voti

[22] Re: Protocollo

Messaggioda Foto UtenteWALTERmwp » 18 giu 2014, 23:49

Beh, questo è un accenno a livello di architettura; ancora non dice niente.
Ma già così puoi fare le tue considerazioni.
Io ti proporrei di ragionare prima su uno scambio di messaggi (per fare una cosa sola, o, se preferisci per chieder una cosa sola) tra il Master ed uno Slave (lo Slave 0), eliminando tutti gli altri.
Componi un minimo di messaggio che il Master invia (come e cosa gli chiede) allo Slave e stabilisci la risposta (come e cosa gli risponde) che lo Slave deve inviare al Master: insomma, un passo alla volte.
Poi fai la stessa cosa inserendo anche lo Slave 1: ti dovresti già rendere conto, da solo, dove potresti intervenire per adattare/modificare la "struttura" del messaggio che parte dal Master.
Fai le tue considerazioni, in merito al contenuto dei messaggi, concentrandoti sulla comunicazione tra il Master ed un solo Slave; una volta che ti sei chiarito le idee puoi "estendere" la tua rete a due Slave (non occorre andare oltre per rendersi conto delle implicazioni).
Considera anche l'interfacciamento elettronico (come ho scritto nel Post precedente).
Queste righe sono solo l'indicazione per provare ad impostare qualcosa di concreto, quindi niente di più.
E non è detto che si possa approcciare la questione in altri modi (che comunque ci sono !).

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[23] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 0:10

Benissimo, sono arrivato ad una bozza di codice, ho tenuto gia conto quello che hai detto tu, esistono i "MAX485" o i "MAX232", lo scambio di dati avviene a 8 bit (char) alla volta ognuna di quei membri che ho messo nella lista è composta da una variabile. Scrivo lo pseudo codice che ho ideato (serve solo per l'indirizzamento e l'inizializzazione)

Codice: Seleziona tutto
Pacchetto:
- indirizzo (uint8_t)
- richiesta/comando (uint8_t)
- informazione (uint8_t)
- bit parità (uint8_t)
Fine pacchetto

MASTER:
    {inizio invio identificazione}
   - invia:
           indirizzo (255) => {11111111}
           richiesta (255) => {11111111}
           informazioni (0) => {00000000}
           Bit parità => 1
   {fine invio identificazione}
   {inizio salvataggio} (salva gli indirizzi)
      -Riceve da "slave X"
      -salva in un Array
   {fine salvataggio}
SLAVE:
  {inizio invio identificativo}
    -Riceve il pacchetto
    - indirizzo (dato dai dip-switch)
    - comando (255)
    - informazioni (X) (dato dai dip-switch)
    - parità (X) => dipende dai campi precedenti
{fine invio identificativo}

Foto Utentefairyvilje non ho rispettato le regole di "ADA", così è chiaro piu o meno quello che ho scritto?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[24] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 0:20

WALTERmwp ha scritto:I riferimenti riportati da Foto Utentefairyvilje nel Post [12], per quanto significativi, in tal caso potrebbero portare l'OP ad "allontanarsi" dalle sue necessità, prim'ancora che dal suo obiettivo.
In altre parole: c'è la possibilità che ci si metta a leggere del materiale senza coglierne il significato perché mancano a priori delle conoscenze.

Hai ragione. Non sono un buon didatta e le scelte che faccio in fase di progettazione sono dettate dal fatto di essere interessato principalmente all'aspetto informatico del problema (visto quello che studio non mi sorpende :mrgreen: ). Un approccio che per me va bene, ma che qualcun altro potrebbe trovare oltremodo pesante.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[25] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 0:25

ho pensato di mettere due pin in piu a disposizione per la trasmissione, servono per indicare quando un dispositivo sta trasmettendo e quando la centrale sta inviando, verificando questi due immagino non ci possono essere conflitti nella rete...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[26] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 0:27

Vedo la base del tuo protocollo molto fragile.
Codice: Seleziona tutto
Pacchetto:
- indirizzo (uint8_t)
- richiesta/comando (uint8_t)
- informazione (uint8_t)
- bit parità (uint8_t)
Fine pacchetto

L'indirizzo ci sta, a patto di prevedere un sistema per etichettare in precedenza i dispositivi.
Il bit di parità non ha senso metterlo in 8 bit. A questo punto calcola un checksum
Comando ed informazione li metterei insieme nel corpo del request frame. In situazioni come questa vedo più utile un approccio del tipo:

Codice: Seleziona tutto
header{ indirizzo, caratteristiche del pacchetto, etc}
body {corpo del pacchetto}
check {checksum}


Inoltre dal momento che i serventi potrebbero non essere disponibili alla ricezione piuttosto di perdere pacchetti per strada è bene implementare una doppia sincronizzazione di chi invia e di chi riceve.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[27] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 0:34

fairyvilje ha scritto:Inoltre dal momento che i serventi potrebbero non essere disponibili alla ricezione piuttosto di perdere pacchetti per strada è bene implementare una doppia sincronizzazione di chi invia e di chi riceve.

i pin usati li collego agli interrupt cosi se per caso un dispositivo deve inviare un'informazione alla centrale, la centrale interrompe il codice che sta eseguendo e processa i dati nella uart. cosi facendo i dati non vengono persi, in piu quando la centrale invia, fa l'interrupt nei dispositivi, invia l'indirizzo del destinatario, e ogni dispositivo controlla se è il proprio indirizzo, se non lo è prosegue con il codice principale, invece se lo è si predispone con la uart, legge ed esegue la richiesta.

Una cosa che non mi è chiara: in che senso etichettare i dispositivi?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[28] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 0:40

E io ti rispondo:
  • Cosa succede se la centrale non può interrompere il codice che sta eseguendo?
  • Cosa succede se il dispositivo non è in grado di ricevere l'interrupt/non può interrompere il codice che sta eseguendo?
  • Cosa succede alla centrale se attende risposta da un dispositivo che non darà mai risposta?
  • La rete è statica o può cambiare configurazione senza richiedere una nuova compilazione di un nuovo programma?
  • Posso "staccare" ed "attaccare" dispositivi durante il normale funzionamento?
Non voglio mandarti in crisi o cose simili, solo farti riflettere sulle possibili implicazioni di una soluzione semplicistica.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[29] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 0:49

1) la centrale deve avare sempre gli interrupt attivi
2) il dispositivo avrà sempre gli intrerrupt attivi
3) si imposta un timeout
4) la rete è statica
5) non si possono attaccare/stacare i dispositivi
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[30] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 0:54

Quindi assicuri in ogni contesto che non ci sono operazioni non interrompibili? Tipo non scriverai mai su una eeprom? Non avrai più task in esecuzione e cambi di contesto da effettuare?
Note queste cose si può andare oltre.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti