Salve a tutti.
Sono Stefano. Ho un problema, ho letto da molte parti informazioni sul protocollo CANOpen. Poche idee e molto confuse.
A casa ho un inverter della Conergy con una uscita CANOpen. Vorrei estrarre le informazioni sulla produzione energetica. Ho a disposizione Arduino UNO, Due e uno shield preso su seedstudio.com compatibile con Arduino che promette di riuscire a parlare con sistemi CAN. Di cosa ho bisogno ora? Grazie a tutti!
Ti rispondo più che altro per iscrivermi alla discussione perché interessa anche me.
Comunque posso dirti che devi stare attendo anche ai livelli di tensione del bus, oltre che alla struttura dei dati che vi transitano. Non tutti i CAN sono uguali.
Per farti un esempio, spesso per risolvere i problemi dei disturbi di cui è soggetta la RS232 si utlizza la RS485. La 485 definisce soltanto i livello di tensione che devono avere gli 0 e gli 1, poi sopra spesso ci viene fatto transitare gli stessi dati della 232.
In allegato ho messo un file dalla Microchip in cui è descritto le basi di CAN. Non è semplice, né nel hardware né nel software ma è molto sicuro. Quasi insensibile alle interferenze EMI e si può usarlo in un modo di essere assolutamente sicuro che i tuoi messaggi arrivano senza corruzione al ricevente desiderato. CANOpen (che non è in nessun senso "open") è una serie di diversi protocolli imparentati tra loro ad un livello sopra la base di CAN. Il costo del abbonamento al consorzio è di migliaia di euro Al ANNO. Se hai il "vocabolario" per l'implementazione particolare di CANOpen, puoi leggere i messaggi, ma senza quel dizionario sei fottuto.
Ciao,
Lenni
CAN basics.pdf (142 KB)
Vi ringrazio per le dritte! Sulla base delle vostre informazioni, curiosando un po' sulla rete sono riuscito a capire un paio di cose.
1- A quanto pare questi tizi usano lo standard RS485
2- Il CANOpen ha 4 o 5 strumenti che usa per comunicare. SDO, PDO, Heartbeat ecc... Le info che voglio io (kWh prodotti) sono trasmesse usando i PDO
3- Ci sono due tipi di PDO: TPDO che servono per leggere le informazioni dall'inverter, RPDO che servono per scrivere informazioni sull'inverter (ad esempio se fosse un azionamento che comanda un motore potrei impostare una coppia o una velocità usando un RPDO). Io quindi mi dovrò servire del protocollo TPDO.
4- I TPDO sono trasmessi dall'inverter in vari modi: su base tempi, su richiesta, su evento.(forse ci sono anche altri modi ma non li ricordo o comunque li ignoro).
5- Il protocollo CANOpen mappa tutte le informazioni in una tabella gigante, appunto l'object dictionary che diceva Lenni. Se io voglio sapere la ad esempio corrente prodotta dal mio impianto nell'ultima ora, scorro la mia tabella, trovo "Ampere/h", scopro che questo dato è in corrispondenza a un indirizzo esadecimale, un sottoindice e a un "tipo di dato" (int16, int32, ecc...). Vedi ad esempio questa immagine
La megatabella ha quindi mappati tutte le informazioni sul nodo (costruttore, serial number ecc.), i "metodi" per interagire con il dispositivo (TPDO1 nell'immagine è un valido esempio), tutte le informazioni a disposizione dei vari metodi (a partire dall'indirizzo 6000h.
6- Sul sito www.canfestival.com ho trovato una libreria di comunicazione CANOpen gratuita per Arduino, corredata di manuale ed esempi. Li dicono che se io voglio avere in risposta una data informazione devo per forza evocarla attraverso uno dei PDO che mi mette a disposizione il costruttore del device. Quindi dovrò effettuare una richiesta del tipo:
Index-Subindex-TXReq=1
E otterrò in risposta il corrispondente TPDO con dentro le informazioni che ho bisogno.
Per oggi mi fermo qui,ho già messo tanta carne al fuoco. Vorrei un parere e correzioni.
Ricordo che quello che ho scritto qui non è da prendere per vero, è semplicemente quello che ho concluso dopo un paio d'ore di letture. Probabilmente contiene inesattezze.
Normalmente gli inverter hanno a disposizione anche un'interfaccia Modbus, se rientra nel tuo caso l'utilizzo di Modbus può renderti la vita più semplice, perché il materiale (documentazione ed esempi) disponibile è estremamente maggiore.
Saluti,
Dario.
Ciao Dario!
Grazie per il consiglio. Ho dato un'occhiata sotto le gonne dell'inverter, ma l'unica interfaccia è CAN... Mi sa che sono sfortunato
X iscrizione