devo mettere le mani su una apparecchiatura che comunica in CANOpen. Purtroppo io ho esperienza solo di MODbus dove la comunicazione avviene mediante rs485. Il protocollo CANOpen lavora sempre sulla rs485 o è una roba a parte?
Il CANopen implementa i livelli a partire da quello di rete. Per cui sotto non è roba sua. Spesso il livello fisico è basato sul CAN (che non è una 485/422) ma potrebbe essere altro.
Sì, il protocollo elettrico è assai simile a quello RS 485, con un'importante differenza: vengono trasmessi solo gli zeri (detti bit dominanti), mente gli uni non vengono trasmessi. In pratica il trasmettitore avrà la linea dati inchiodata a zero e la trasmissione viene effettuata attraverso il pin di enable.
D' accordo, che il canopen è un livello più alto. Allora la domanda potrebbe essere: il livello fisico rs485 è compatibile con il livello fisico CAN (su cui si appoggia canopen)? In entrambi i casi si usa un doppino (per l'rs485 a 2 fili) ma le tensioni sono le stesse?
Non mi sembra che il canopen possa viaggiare su roba fisica diversa dal CAN. O si? Scusate ma sono un po' scarsino su questi argomenti :)
Cosa non è chiaro? Prendi il classico LTC485. Metti il DI a 0V e trasmetti utilizzando il DE/RE. In pratica alterni lo stato di alta impedenza (bit recessivo) con la trasmissione dello stato attivo (bit dominante).
Comunque se cerchi su internet trovi la spiegazione dettagliata.
La motivazione te l'ho spiegata prima. Se ti serve il layer fisico del CAN devi cercare documenti che trattano il CAN non il CANopen.
Esatto. Infatti al paragrafo Data transmission è spiegato il discorso dei bit dominanti/recessivi e relativa codifica fisica.
Scusa ma sono un po' duro (le mie letture sulla rs485 risalgono a 10 anni fa). Ricapitolando: la faccenda del bit dominante e recessivo l'avevo letta qua:
formatting link
e mi pare abbastanza chiara: chi ha il primo bit logico a "0" vince.
In quanto al LTC485 ho riguardato il datasheet; l'uso "normale" prevede che si attivi il driver con il DE e si trasmetta con il DI, mentre per la ricezione si abilita l'RE (che poi si lascia sempre abilitato) e si riceve con RO. Quando il DE è high posso "spedire" un bit mettendo il DI a high in modo che la tensione sia A > B (maggiore di almeno 200mv mi pare).
Se lascio il DI a 0V come dici, e il DE high mi trovo B > A. Ma se metto DE a low che succede? Mi pare di aver capito che DE low e RE high si limitano ad alzare l'impedenza della linea.
Comunque se devo operare come suggerito da te, direi che non posso usare un normale convertitore rs232-rs485.
Si ma sei già alle collisioni. In realtà si stava parlando solo di come trasmettere i bit.
Se lo usi in modalità RS485 puoi più semplicemente collegare assieme il DE e l'RE.
Hai detto niente? :)
Cos'è un "normale convertitore rs232-rs485"? Non è chiaro come ti devi interfacciare a questa macchina, ma basta un driver RS485 (es. l'LTC485 già menzionato) collegato opportunamente. Ma dietro cosa c'è? Un micro?
Si ma per i non competenti (come il sottoscritto) che succede? Al massimo la linea non consumerà corrente (mA) o no?
Si, scusa non mi ero spiegato bene. Io devo programmare un encoder che comunica in canopen. Quindi devo trovare il modo di attaccarmi con il PC. Data l'abbondanza che ho in casa di convertitori rs232-rs485 speravo di attaccarmi al bus CAN tramite questi.
Ah, ok comunque non ho capito come dovrei comunicare "tirando" su e giù l'impedenza della linea.
Ok, pazienza acquisterò qualche aggeggio che faccia la conversione da can bus a qualcosa_per_il_pc. Oppure mi faccio qualcosa in casa; hai qualche link a riguardo?
E' semplice: se tutti i trasmettitori sono ad alta impedenza la differenza di tensione tra le due linee di trasmissione sarà pochi millivolt, se c'è almeno un trasmettitore acceso (ovvero che sta inviando un bit dominante, ovvero uno 0) la differenza sarà di qualche volt.
Ciao, il can =E8 una linea differenziale come l rs485 ma molto pi=F9 veloce e i livelli logici variano tra 0 e circa 3.5V per poter dialogare su questo bus devi usare un transceiver tipo tja1040 e un micro anche un pic va bene. Fai attenzione che il bus abbia le due resistenze da 60ohm di terminazione.
Non ricordo le specifiche in termini di margine di rumore dei due livelli fisici (e quindi la prestazione teorica che il driver deve essere in grado di raggiungere), comunque nessuno usa la CAN sopra a 1 Mbps, mentre la J1939 non supera i 500 kbps. Lo standard RS485 contempla invece velocità fin sopra ai 10 Mbps e molti costruttori hanno esteso ulteriormente questa specifica: ci sono dei driver TI che arrivano a 50 Mbps.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.