Informazioni sulla gestione del CAN Bus

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Controllori SlimLine e Netsyst (LogicLab) Informazioni sulla gestione del CAN Bus

Questo argomento contiene 9 risposte, ha 3 partecipanti, ed è stato aggiornato da  Sergio Bertana 4 mesi, 1 settimana fa.

Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
  • Autore
    Articoli
  • #35409

    Ruben
    Partecipante

    Buongiorno, ho bisogno di informazione più dettagliata sul bus CAN dello Slimline. Ho letto il manuale di programazione ma non riesco a capire totalmente.

    SYSCANMESSAGE.MsgID: Cosa significa FF: Bit 31?
    SysCANTSetMode: Filter e Mask sono riferite allo ID del messaggio? Logica tra loro? Sono filtri di Rx e Tx?
    SysCANRxMsg: Nell’esempio, Mask è 16#3FFFFFFF. Per 29 bit non dovrebbe essere 16#1FFFFFFF? ID nell’esempio è 16#00000000. Questo solo permette la Rx di pacchetti con SYSCANMESSAGE.MsgID 16#00000000 non tutti i pacchetti. É vero ?
    Avete voi documentazione piú dettagliata?
    Quale sono i tempi di esecuzione di SysCANTxMsg() e SysCANRxMsg()?
    Il CAN bus controller e quelo del Freescale MX257?

    #37760

    Sergio Bertana
    Amministratore del forum

    Cerco di chiarirti come funziona il CAN Bus sullo SlimLine, cominciamo con il dire che come CAN Controller viene utilizzato il controller CAN 1 presente nel controllore ARM (Allego estratto datasheet). Il bit bit 31 (FF) di SYSCANMESSAGE.MsgID indica se il messaggio ha un identificatore a 11 bit oppure a 29 bit.

    Per utilizzare il CAN occorre inizializzarlo definendo la velocità ed i filtri, tipicamente viene impostato per ricevere tutti i messaggi SysCANSetMode(CAN_500KBIT, 16#00000000, 16#00000000);

    Ricezione messaggi CAN
    I messaggi sono ricevuti in interrupt e memorizzati nel buffer di ricezione (32 messaggi fino a 8 bytes di dato ciascuno). Il programma utente con la funzione SysCANRxMsg(Mask, ID, ADR(Msg)); estrae dal buffer il messaggio desiderato è lo memorizza nella variabile Msg. Occorre eseguire la funzione fino a svuotare completamente il buffer di ricezione gestendo tutti i messaggi ricevuti. Il tempo di esecuzione della funzione è di di pochi uS ma per non perdere messaggi occorre che venga eseguita ciclicamente in un tempo inferiore al tempo di riempimento buffer (32 messaggi).

    Trasmissione messaggi CAN
    I messaggi sono caricati nel buffer di trasmissione (32 messaggi fino a 8 bytes di dato ciascuno) con la funzione SysCANTxMsg(ADR(Msg)); i messaggi vengono poi trasmessi in interruzione dal sistema.

    #48173

    Rubox
    Partecipante

    Ho dei dubbi sull’uso della comunicazione CAN, ho una CPU extended RS485 (quindi non gestisce il CAN, giusto?) e un modulo di espansione PCB126C130 che sulle caratteristiche ha bus di campo CAN/RS485.

    Posso usare il modulo di espansione per leggere dei valori utilizzando CAN?

    Come viene gestito il tutto ? Nelle funzioni di lettura/scrittura CAN non vedo una sorta di indirizzo del modulo su cui fare letture e scritture: è un qualcosa gestito automaticamente dalla CPU ?

    Grazie per l’aiuto che vorrete darmi.

    #48178

    Sergio Bertana
    Amministratore del forum

    Il modulo CPU con porta RS485 non può gestire il CAN, lo spazio sul modulo CPU è ridotto così abbiamo condiviso lo spazio tra RS485 e CAN, occorre scegliere la versione desiderata.

    Sul modulo di espansione PCB126C130 c’è una porta RS232 che può essere utilizzata da programma l’accesso è esattamente uguale a quello delle porte presenti sul modulo CPU si utilizza il FB SysSerialPort, definendo nel campo COM la definizione PCOMx.y dove con x si indica l’indirizzo del modulo e con y il numero di porta presente sul modulo nel tuo caso la numero 0.

    #48191

    Rubox
    Partecipante

    Buongiorno, grazie per la risposta: non avevo mai trovato come poter indirizzare la porta seriale dei moduli. Quindi del modulo di espansione posso usare il connettore P1.

    Per usare il connettore P12 di quel modulo per comunicazioni CAN come posso fare, sempre se è fattibile?

    #48194

    Sergio Bertana
    Amministratore del forum

    Si la porta seriale RS232 può essere utilizzata, ma il modulo che hai (Modello PCB126C130) avendo 1 come primo numero dopo il livello C, si tratta di un modulo con solo RS232, il numero 3 indica 10 canali analogici in ingresso.

    Infatti nel tuo modulo il connettore P12 non è montato.

    #48198

    Rubox
    Partecipante

    Emh… (c’è la faccina che si sotterra da sola?): queste sono le domande che uno fa quando non ha sotto mano l’hardware, ma solo quello che il cliente ti dice che ha letto sulle caratteristiche.

    Ero in dubbio se accedere al sistema che esce con CAN e RS232… e mi son tolto ogni dubbio 🙂

    Prima di fare altre domande da idiota leggerò due volte la documentazione, promesso!

    Grazie e buon lavoro

    #48202

    Sergio Bertana
    Amministratore del forum

    Le domande dei clienti sono sempre utili… da una domanda possono nascere riposte utili per capire meglio come funziona il sistema.

    #48208

    Rubox
    Partecipante

    Allora mi permetto un’altra domanda, premettendo che il CAN non l’ho mai usato. Ho letto qualcosa in rete per capirci qualcosa di più.

    Se io avessi un modulo di espansione con la porta CAN, e collegassi a lui un sistema che comunica su CAN, è corretto che nelle FB non ci sia nessun “indirizzamento” della porta CAN? Dovrebbe essere una sorta di “TCP” che manda il pacchetto dati sulle porte CAN e aspetta la risposta, giusto?

    Però dovrei comunque avere la CPU principale che gestisce il protocollo CAN, altrimenti non riuscirei in ogni caso a leggere nulla?

    #48225

    Sergio Bertana
    Amministratore del forum

    Allo stato attuale l’unico modo per gestire il CAN bus è di avere la versione CAN del modulo CPU, (Consiglio MPS054B200). Se tu guardi il Manuale programmazione IEC61131-3, troverai indicazioni su come utilizzare le funzioni SysCANTxMsg e SysCANRxMsg.

    Un messaggio CAN si compone di un identificativo univoco a 11 o 29 bits ed un frame dati che può arrivare ad un massimo di 8 bytes. Tutti dispositivi in rete sono sia master che slave, ogni messaggio trasmesso è ricevuto da tutti i sistemi in rete che lo filtrano con l’ID desiderato.

Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)

Devi essere loggato per rispondere a questa discussione.