La specifica SAE J1939 descrive la comunicazione CAN nei veicoli per lo scambio di informazioni con la centralina elettronica, l’obiettivo è definire un protocollo di comunicazione standard indipendentemente dai fornitori di componenti. Oggi il SAE J1939 è presente in tutti i veicoli, anche l’auto che guidiamo ogni giorno ha al suo interno uno o più bus CAN per lo scambio dati tra i vari sensori/attuatori di bordo, un bus CAN per diagnostica è disponibile sulla presa OBD presente su ogni automobile.
I nostri sistemi SlimLine grazie alla alimentazione da 10÷30 Vdc ed al range esteso di temperatura trovano impiego in mezzi mobili, in macchine operatrici ed in imbarcazioni, tutte applicazioni in cui è presente un motore endotermico. Nella necessità di doversi interfacciare con il motore per gestire le automazioni, quale modo migliore ed economico del bus CAN, visto che ormai tutti i modermi motori endotermici prevedono una uscita CAN con protocollo SAE J1939.
L’esigenza
Un nostro Cliente su una grossa imbarcazione da diporto ha realizzato tutte le automazioni di bordo con i nostri sistemi SlimLine, l’interconnessione tra i sistemi in rete Ethernet ha ridotto notevolmente l’impiego di cavi a vantaggio del peso e di conseguenza dei consumi. Per comandare i servizi di bordo, verricelli, salpancore, bow thrusters, ecc. viene utilizzata una pompa idraulica comandata da un motore diesel da 100 CV. La necessità era di conoscere i giri del motore, il carico e di gestirne l’acceleratore per adeguare i giri alle variabili condizioni di carico.
Connessa la porta CAN del modulo CPU all’interfaccia SAE J1939 del motore, grazie a chiamate alle funzioni di gestione del protocollo CAN si è realizzata la lettura di tutti i parametri di funzionamento del motore.
Spionaggio dati bus
Per identificare una determinata grandezza da acquisire si cerca nella lista PGN (Parameter Group Number) la grandezza desiderata. Identificato il numero si inserisce da debug nel parametro SpyTrigger, nella console di spionaggio verrà visualizzato il valore degli 8 bytes del PGN al cui interno si troverà la grandezza desiderata, vedi specifiche SAE.
LogicLab (Ptp170, SAEJ1939Spy)
Programma Gestione motore
Viene impostata l’interfaccia CAN per ricevere tutti i messaggi, i messaggi ricevuti sono memorizzati in un buffer, la funzione SysCANRxMsg ad ogni chiamata, se presente, legge un messaggio dal buffer e lo ritorna cancellandolo. In questo modo iterando sulla funzione è possibile acquisire tutti i messaggi nell’ordine con il quale sono stati ricevuti (FIFO). Ogni messaggio può contenere oltre ai 29 bits di intestazione fino a 8 bytes di dati, i dati assumono diverso significato in funzione del valore del campo PGN. Se viene definito da debug il valore di Speed, viene gestito l’invio del comando TSC1 che imposta la velocità di rotazione del motore (Se il motore lo gestisce).