walterword Inserito: 8 giugno 2006 Segnala Share Inserito: 8 giugno 2006 non voglio chiedervi come scrivermi codice in C per gestire una rete RS485 , magari basata su modbus o altro , ma solo cercare di mettere a fuoco quali sono le mosse e le fasi principali per poter implementare quanto descritto sopra.Facciamo finta che ho creato un master e 3 slaves (appena ricevero il materiale li faro da zero , compreso pcb)Se uso il processore embedded NIOS II ho a disposizione quanti DMA voglio o per lo meno quanti l'FPGA mi permette di sintetizzare .Pero voglio stare basso , per questione di costi , montaggi e performances , e allora opto per un bel PIC16877A o 452 .Per gli slaves opto per un PIC16F876A , per ogni slave .Premetto di utilizzare il compilatore CCS ( ).a questo punto nel mio master instanzio un tipo predefinito di dati e da questo 3 strutture .Una struttura per ogni slave .Nei rispettivi slave una struttura , uguale ovviamente a quella del master .A questo punto come si potrebbe ragionare ?Gli slaves raccolgono dei dati digitali ed analogici che essi siano ingressi o uscite intorno a qualche decina di bytes .il master decide con chi parlare e cosa volere , nel senso se leggere o scrivere .Conoscendo il protocollo modbus potrei realizzare una tabella di comunicazione nel master , quindi un array di strutture .Tramite gli interrupt di byte ricevuto piuttosto che spedito gestire il tutto .Solo che pero non saprei come muovermi Vorrei che il discorso rimanesse ad un livello di astrazione abbastanza alto , senza esempi di codice o considerazioni a basso livello riguardo gli hw dei micro .Sarebbe interessante poter ragiornarci sopra e stilare un flow chart o disegno che interpreti il discorso , anche a parole in base ai passi da compiere.Perche vorrei rimanere astratto ?Perche cosi potrei capire il funzionamento senza addentrarmi nelle specifiche di un compilatore piuttosto che di un micro .Piu avanti vorrei ampliare per poter gestire da fpga una rete del genere , tramite dma , uart ect .Tra l'altro sono gia in possesso dei file vdhl e verilog per descrivere una uart hw , ma vorrei farlo in maniera piu espansa e parametrizzabile .Ma questo piu avanti Cosa ne dite ?Come affrontereste la mia problematica ?grazie per coloro risponderanno seriamente ciao walter Link al commento Condividi su altri siti More sharing options...
BitBerzerkir Inserita: 8 giugno 2006 Segnala Share Inserita: 8 giugno 2006 (modificato) Ciao, io per la mia tesina sto lavorando con una rete in RS485 che assomiglia a quello che vuoi realizzare tu: ho un master con pic 18F4550 ed alcuni slaves con 16F876 o 16F84; gli slave sono sensori o attuatori (tipo PWM o ON-OFF).La rete è di tipo polling quindi il master è l'unico che può iniziare una trasmissione, per evitare collisioni ma anche perchè non ho motivo di fare in altri modi più complessi. Ogni nodo è identificato da un tipo, ovvero il master invia un comando a tutti gli indirizzi possibili in cerca dei nodi connessi nella rete, il nodo che ha l'indirizzo richiesto risponde comunicando di che nodo si tratta (sensore di temperatura, umidità, lampada, motore ecc.). Quindi ogni slave ha un indirizzo univoco ed il master esegue una "scansione" del bus.A questo punto il master sapendo quali nodi sono presenti può gestire le richieste che arrivano via LAN (ho scritto uno stack TCP/IP [molto scarno] + server HTTP [ancora + scarno] interfacciato con il famoso ENC28J60). Il protocollo di comunicazione è piuttosto semplice: indirizzo, flag, lunghezza, dati ed un checksum. I nodi rispondono sempre ad una richiesta con dei dati o con un ACK o segnalando un errore nel checksum; così facendo il master si assicura che i comandi siano sempre eseguiti.devo dire però che a livello astratto non mi sono sprecato molto, semplicemente a seconda del tipo di nodo ho dello subroutines che inviano dei frame appositi, per il momento non ho usato strutture o array, anche se penso che userò un array semplicemente per salvare l'indirizzo e il tipo dei nodi rilevati dalla scansione.ciauz Modificato: 8 giugno 2006 da BitBerzerkir Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora