1
0

Compare commits

..

63 Commits

Author SHA1 Message Date
eeeck 98ba80dd42 Add paragraph 2026-09-11 17:36:02 +02:00
eeeck c0c66b7acc Add tester image and pinout table 2026-09-11 17:35:52 +02:00
eeeck fb299d77e3 Fix wording 2026-09-11 17:35:31 +02:00
eeeck ecbe6b0006 Add chapter introduction 2026-09-11 17:34:51 +02:00
eeeck d182923b84 Data type fix 2026-09-11 17:33:58 +02:00
eeeck 6ded71a2d4 Expand technical details 2026-09-11 15:07:12 +02:00
eeeck 4f2e73c0b8 Add all chapters 2026-09-11 15:07:00 +02:00
eeeck d92805e1b9 Add abstract 2026-09-11 15:06:48 +02:00
eeeck a23003e3a0 Use SI units package 2026-09-11 15:06:36 +02:00
eeeck 991e241ecf Fix spacing 2026-09-11 15:06:26 +02:00
eeeck 0ed276e084 Declare new acronyms 2026-09-11 15:06:15 +02:00
eeeck 5b9fe6f16c Add multiple citations 2026-09-11 15:05:51 +02:00
eeeck f10e9f2bc7 Section overhaul 2026-09-11 15:05:40 +02:00
eeeck 05e5be142b Fix company type 2026-09-11 15:04:51 +02:00
eeeck 9102ffee3b Format fix 2026-09-11 15:04:45 +02:00
eeeck eac0d2442b Wording fixes 2026-09-11 15:04:32 +02:00
eeeck 8542c02825 Delete 05_conclusions.tex 2026-09-11 15:04:02 +02:00
eeeck ebff79ffbb Add paragraph for state of the art 2026-07-22 17:22:51 +02:00
eeeck 7be1a49171 Remove from index 2026-07-22 17:22:34 +02:00
eeeck d5135f6c15 Remove red bar 2026-07-22 14:15:01 +02:00
eeeck 95168a2c86 Add some acronyms 2026-07-22 14:14:45 +02:00
eeeck 312b32cdbc Use a float barrier to avoid having text between image and table 2026-07-22 14:07:06 +02:00
eeeck b0e5976c19 Change to italian term 2026-07-22 14:06:29 +02:00
eeeck 2e24ecbec6 Update bibliography content 2026-07-22 14:06:09 +02:00
eeeck 4c1202b5e6 Remove from index 2026-07-22 14:05:38 +02:00
eeeck 8bd8880e0e Change thesis main colors 2026-07-22 14:05:10 +02:00
eeeck 189092c1fb Change font size and interline 2026-07-22 14:04:27 +02:00
eeeck ca17fad5e8 Add introduction 2026-07-22 14:04:11 +02:00
eeeck 53cfc081c5 Fix section title for consistency 2026-07-21 11:32:07 +02:00
eeeck 55cc57c22f Use UniMore friendly wording 2026-07-19 14:14:08 +02:00
eeeck 6b29988b7c Increase text area 2026-07-19 13:50:54 +02:00
eeeck 0231f5d886 Use lower linespread 2026-07-19 13:50:24 +02:00
eeeck 60c46daf89 Better phrasing 2026-07-18 15:10:34 +02:00
eeeck 9585f82fa4 Add table for machine specification from Komatsu Europe 2026-07-18 13:46:54 +02:00
eeeck 8fba744847 Change wording 2026-07-18 13:46:31 +02:00
eeeck f6c456363b Change section name 2026-07-18 13:46:19 +02:00
eeeck eec1893467 Change title to italiano 🇮🇹 2026-07-18 13:46:03 +02:00
eeeck ea69bc863d Ignore all .lof* 2026-07-18 13:45:27 +02:00
eeeck e5a60a93b5 Add tables definition 2026-07-18 13:43:45 +02:00
eeeck 25c9352a05 Change list colors 2026-07-18 13:43:30 +02:00
eeeck b268b69a81 Fix comment 2026-07-18 13:43:22 +02:00
eeeck c6ee37802e Move after color definition and change label color 2026-07-18 13:43:14 +02:00
eeeck 2052f4d87e Add default chapter for Conclusions 2026-07-18 00:04:55 +02:00
eeeck 5a212cef60 Add introduction with PC210 NLC-8 images 2026-07-18 00:04:22 +02:00
eeeck 883400d2a8 Add uncounted chapter for Abstract 2026-07-18 00:03:58 +02:00
eeeck 0b057a3829 Fix indexing for roman-numbered pages 2026-07-18 00:03:31 +02:00
eeeck 41a76da11b Put caption on the center 2026-07-17 23:57:42 +02:00
eeeck 321d810565 Change color 2026-07-17 23:57:31 +02:00
eeeck 3785d5ca82 Add acronyms 2026-07-17 23:19:07 +02:00
eeeck 6c29794d17 Add comment 2026-07-17 23:18:55 +02:00
eeeck 44e022afa8 Add abstract chapter 2026-07-17 21:45:33 +02:00
eeeck 71cf680da5 Remove whitespace 2026-07-17 21:13:03 +02:00
eeeck 17c78725d0 Fix cover indent 2026-07-17 21:12:56 +02:00
eeeck 3a1c1777b1 Add comment on font block 2026-07-17 21:12:30 +02:00
eeeck 3f5a108871 Minor sytax fix 2026-07-17 21:12:12 +02:00
eeeck 68f5b35d3c Move after doc declarations 2026-07-17 21:11:58 +02:00
eeeck 41bebf0290 Add W. Voss's book on CAN bus 2026-07-17 21:11:42 +02:00
eeeck 459495b26d Use more sober color and underline 2026-07-17 19:40:31 +02:00
eeeck 4c63de95b1 Add enumitem settings 2026-07-17 19:39:52 +02:00
eeeck 73e2ab6a1b Add code box settings 2026-07-17 19:37:54 +02:00
eeeck 0e711f872b Give penalty for orphan rows on new page 2026-07-17 19:32:14 +02:00
eeeck 9d5e32c545 Add settings for captions 2026-07-17 19:31:49 +02:00
eeeck b164114241 Change to Tex Gyre fonts 2026-07-17 19:13:06 +02:00
8 changed files with 551 additions and 49 deletions
+1
View File
@@ -1,6 +1,7 @@
## Core latex/pdflatex auxiliary files: ## Core latex/pdflatex auxiliary files:
*.aux *.aux
*.lof *.lof
*.lof*
*.log *.log
*.lot *.lot
*.fls *.fls
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 MiB

+120
View File
@@ -38,3 +38,123 @@
year={2026}, year={2026},
organization={IEEE} organization={IEEE}
} }
@book{voss2008comprehensible,
title={A Comprehensible Guide to Controller Area Network},
author={Voss, Wilfried},
isbn={9780976511601},
year={2008},
publisher={Copperhill Technologies Corporation}
}
@booklet{komatsu_pc210_8_2017_brochure,
title = {{PC210/LC/NLC-8 Hydraulic Excavator: Specification Sheet}},
author = {{Komatsu Europe International NV}},
year = {2017},
organization= {{Komatsu Europe International NV}},
address = {Vilvoorde, Belgium},
note = {Publication No. UESS11010, 1/2017. Printed in Europe.}
}
@booklet{komatsu_komtrax_specification,
title = {{KOMTRAX}: Komatsu Wireless Monitoring System},
author = {{Komatsu Europe International N.V.}},
institution = {Komatsu Europe International N.V.},
year = {2020},
type = {Specification Sheet},
number = {EENSB10701},
address = {Vilvoorde, Belgium}
}
@article{pc210-230-240-manual,
title = {{PC210/LC/NLC-8: Manuale d'uso e manutenzione}},
author = {{Komatsu Europe International NV}},
year = {2010},
organization= {{Komatsu Europe International NV}},
address = {Vilvoorde, Belgium},
number = {UHAM004903},
}
@manual{telematics_industrial_vehicle,
title = {Utilization analysis methodology for fleet telematics of heavy earthwork equipment},
journal = {Automation in Construction},
volume = {92},
pages = {59-67},
year = {2018},
issn = {0926-5805},
doi = {https://doi.org/10.1016/j.autcon.2018.02.035},
author = {Seung Soo Lee and Sang-il Park and Jongwon Seo}
}
@manual{css_electronics_j1939,
title = {J1939 data starter pack},
author = {{CSS Electronics}},
year = {2022},
month = {04},
}
@manual{css_electronics_can_bus,
title = {CAN bus - the ultimate guide},
author = {{CSS Electronics}},
year = {2022},
month = {04},
}
@misc{diagnet-komatsu,
author = {{Diagnostic Network Forum}},
title = {Komatsu Dump Truck and Excavator CAN},
howpublished = {\url{https://diag.net/msg/mhqhzhqrnssvz4budshigpbqnn}},
note = {Technical discussion on Komatsu CAN bus format},
year = {2021}
}
@article{canmatch-reverse-engineering,
author={Buscemi, Alessio and Turcanu, Ion and Castignani, German and Crunelle, Romain and Engel, Thomas},
journal={IEEE Transactions on Vehicular Technology},
title={CANMatch: A Fully Automated Tool for CAN Bus Reverse Engineering Based on Frame Matching},
year={2021},
volume={70},
number={12},
pages={12358-12373},
keywords={Reverse engineering;Payloads;Standards;Protocols;Tokenization;CAN bus;automated reverse engineering;in-car networking;tokenization},
doi={10.1109/TVT.2021.3124550}}
@misc{tractorhacking,
title = {TractorHacking},
author = {{TractorHacking Project}},
year = {2024},
howpublished = {\url{https://tractorhacking.github.io/documentation/}},
note = {Reverse engineering John Deere tractor CAN networks with the PolyCAN diagnostic tool}
}
@book{brown2013discovering,
title = {Discovering the STM32 Microcontroller},
author = {Brown, Geoffrey},
year = {2013},
publisher = {Indiana University},
note = {Revision: 1396a85(2013-01-07). License: Creative Commons CC BY-NC-SA 3.0}
}
@manual{bosch1991canspec2,
author = {{Robert Bosch GmbH}},
title = {CAN Specification Version 2.0},
year = {1991},
month = {9},
note = {Document imported into Framemaker by Chuck Powers, Motorola MCTG Multiplex Applications, April 5, 1995},
organization = {Robert Bosch GmbH},
address = {Postfach 50, D-7000 Stuttgart 1, Germany},
url = {https://www.bosch-semiconductors.com/ip-modules/can-protocol/},
urldate = {2026-08-09},
abstract = {This document defines the Controller Area Network (CAN) protocol, including both the standard (11-bit identifier) and extended (29-bit identifier) frame formats, as well as error handling, fault confinement, and bit timing requirements.},
keywords = {CAN, Controller Area Network, serial communication, automotive, real-time control, protocol specification},
}
% datasheet (esiste questo?) per i vari datasheet: stm32f405.... , tja1050 ed eventuali altre cose su pcb
% da vedere anche per la presa deutsch
% also microcontrol j1939 protocol stack (download folder)
+1
View File
@@ -0,0 +1 @@
\chapter*{Sommario}
+187
View File
@@ -0,0 +1,187 @@
\chapter{Introduzione}
\label{ch:introduzione}
Negli ultimi anni, il settore delle macchine movimento terra è evoluto verso architetture elettroniche sempre più complesse.
Similmente ai veicoli stradali, i moderni mezzi d'opera integrano numerose \ac{ecu} e una vasta rete di sensori e attuatori, interconnessi
tramite il protocollo \ac{can} suddivisi in uno o più bus.
L'elevata mole di dati generati ha permesso lo sviluppo di sistemi telematici, diagnostici e di fleet management per monitorare lo stato di salute
del mezzo, ottimizzare i consumi e pianificare la manutenzione \cite{telematics_industrial_vehicle}.\\
\\
Tuttavia, l'accesso a questi sistemi viene limitato dai sistemi proprietari dei costruttori: sebbene i dati \ac{can} grezzi siano leggibili tramite strumenti
di diagnostica, spesso questi non seguono standard come \ac{sae} J1939 e vengono offuscati da \ac{id} proprietari, decodificati dentro ecosistemi chiusi.
Ad esempio, il sistema \textit{KOMTRAX}\texttrademark di Komatsu consente, tra varie possibilità, il tracciamento remoto, geofencing e l'analisi
di efficienza del mezzo \cite{komatsu_komtrax_specification}, che pur essendo efficace per monitoraggio e controllo, è una piattaforma che non espone
i frame \ac{can} né permette l'integrazione con software di terze parti. Operano in maniera simile altri sistemi proprietari, tra i quali \textit{VisionLink}\texttrademark (Caterpillar),
\textit{JDLink}\texttrademark (John Deere), \textit{LiDAT}\texttrademark (Liebherr), \textit{SiteWatch}\texttrademark (CASE e New Holland).\\
Per le aziende con flotte multimarca, questa mancanza di accessibilità limita lo sviluppo di soluzioni diagnostiche unificate e l'analisi approfondita delle
condizioni specifiche dei mezzi.\\
\\
Il presente lavoro di tesi nasce da questa esigenza operativa, in collaborazione con l'azienda edile CAT (S.a.s.). L'impresa ha espresso l'interesse a disporre di
strumenti diagnostici brand-agnostic per il monitoraggio della propria flotta di mezzi d'opera multimarca impiegati in scavi e movimento terra, in particolare
per scopi di manutenzione predittiva e monitoraggio delle condizioni del veicolo. \\
In questo contesto, ha messo a disposizione per le attività di sperimentazione un escavatore Komatsu PC210 NLC-8, consentendo l'acquisizione di dati
in condizioni operative reali e la validazione delle metodologie di reverse engineering.
\subsection{Stato dell'arte}
\label{sec:stato-dell-arte}
Al momento della scrittura del presente lavoro di tesi, la letteratura tecnica pubblica non riporta casi documentati di decodifica dei frame CAN
proprietari di mezzi di lavoro Komatsu. \\
Esistono tuttavia alcuni progetti correlati nel settore delle macchine off-highway e nel reverse engineering di messaggi \ac{can} più in generale: \\
\\
Un articolo IEEE introduce CANMatch, un tool automatizzato per effettuare reverse engineering di \ac{can} frame tramite frame matching, che ha permesso
di ottenere un metodo semplice per interpretare i dati proprietari loggati su più di 400 veicoli stradali \cite{canmatch-reverse-engineering}.
Questo metodo potrebbe applicarsi analogamente al caso di sistemi proprietari compatibili con SAE J1939. \\
\\
PolyCAN, parte del progetto TractorHacking, è un tool diagnostico che punta ad effettuare un reverse engineering del \ac{can} bus di trattori John
Deere e permettere l'iniezione di messaggi dall'esterno, in modo da ottenere controllo completo sul mezzo \cite{tractorhacking}. \\
\\
Seppur manchi letteratura pubblica specifica per escavatori Komatsu, evidenze empiriche riportate da comunità tecniche specializzate riportano che per
alcuni dei mezzi di questo marchio (specificamente un dumper HD785 ed un escavatore PC1250) i \ac{can} \ac{id} loggati non sono puramente J1939, ma un
protocollo ibrido contenente ID a 29 bit (Extended \ac{can}) ed a 11 bit (Standard \ac{can}) \cite{diagnet-komatsu}.
\subsection{Obiettivi}
\label{sec:obiettivi}
L'obiettivo di questo elaborato è lo sviluppo di un sistema per l'acquisizione, la decodifica e l'analisi dei dati di un escavatore idraulico
provenienti dal suo \ac{can} bus.
Nello specifico, il lavoro si articola in:
\begin{itemize}
\item \textbf{Identificazione:} Individuazione delle caratteristiche del sistema diagnostico del veicolo contenente accesso al \ac{can} bus;
\item \textbf{Acquisizione dati:} Sviluppo di un'interfaccia hardware per il logging dei messaggi \ac{can} in tempo reale;
\item \textbf{Reverse engineering:} Lettura e decodifica delle comunicazioni proprietarie Komatsu;
\item \textbf{Analisi dati:} Traduzione dei dati decodificati in parametri fisici.
\end{itemize}
\section{Contesto operativo}
Si introducono i protocolli di comunicazione utilizzati in questo elaborato di tesi.
\label{subsec:architettura}
Si effettua una breve descrizione del veicolo e dei sistemi hardware e software utilizzati per ottenere, decodificare ed interpretare i dati \ac{can}.
\subsection{Komatsu PC210 NLC-8}
\label{subsec:komatsu_pc210}
Il veicolo oggetto di studio è l'escavatore Komatsu PC210 NLC-8: si tratta di un escavatore idraulico cingolato
di media portata, parte della serie \textit{Dash 8} in commercio dal 2006 al 2016. La designazione NLC (\textit{Narrow Long Crawler}) identifica una
configurazione del sottocarro caratterizzata da una carreggiata ridotta e una maggiore lunghezza del telaio, ottimizzata per applicazioni che
richiedono un ingombro trasversale contenuto \cite{komatsu_pc210_8_2017_brochure}.
È equipaggiato con un motore diesel common rail a 6 cilindri in linea, sviluppato da \textit{Komatsu Cummins Engine Corporation} (KCEC), joint venture
paritetica tra \textit{Komatsu Ltd.} e \textit{Cummins Inc.}; infatti il motore \textit{SAA6D107E-1} montato sul PC210 NLC-8 è basato sulla stessa
architettura del \textit{Cummins 6D107} \cite{pc210-230-240-manual}.\\ % forse invece meglio citazione su questa roba del Cummins qua
Il sistema idraulico \textit{Komatsu HydrauMind} adotta una logica a centro chiuso (CLSS) abbinata al controllo mutuo pompa-motore \cite{pc210-230-240-manual}.
Sul piano dell'elettronica, questa integra nativamente il sistema proprietario Komatsu di telematica e gestione del mezzo \textit{KOMTRAX}\texttrademark
discusso precedentemente. \\
Il sistema \ac{can} consiste in un unico bus accessibile dalla \ac{ecu} oppure da una presa di diagnostica all'interno della cabina \cite{pc210-230-240-manual}.
Lo schermo nella cabina di controllo infatti è un nodo \ac{can} e visualizza eventuali errori o informazioni utili come regime motore e temperature
direttamente in modo da essere visibili in ogni momento all'operatore. Le informazioni visibili dal sistema \textit{KOMTRAX}\texttrademark vengono anche esse
comunicate tramite \ac{can} bus.
% TODO: foto schermo cabina acceso
La serie PC210 rappresenta una delle piattaforme più diffuse nel segmento delle medie portate a livello europeo. Komatsu è stabilmente tra i primi produttori
di escavatori nel mercato \ac{emea}, ed il PC210 è indicato come uno dei modelli chiave della gamma Komatsu in questa regione.
Un numero significativo di unità \textit{Dash 8} è ancora oggi operativo in flotte di piccole e medie imprese edili e di movimento terra, grazie alla robustezza meccanica
della piattaforma, alla disponibilità di ricambi (anche di provenienza Cummins per il motore) e alla relativa semplicità di manutenzione rispetto alle generazioni
successive.
% TODO: mettere fonti per tutto ciò
% TODO: foto motore
\vspace{5mm}
\begin{table}[htbp]
\centering
\captionsetup{skip=10pt}
\caption{Specifiche tecniche secondo \citeauthor{komatsu_pc210_8_2017_brochure}}
\label{tab:specifiche_nlc8}
\footnotesize
\renewcommand{\arraystretch}{0.85}
\setlength{\tabcolsep}{4pt}
\begin{tabular}{@{} p{4.5cm} p{9.5cm} @{}}
\toprule
\multicolumn{2}{@{}l}{\textbf{Powertrain}} \\
\midrule
Motore & Komatsu-Cummins SAA6D107E-1: Diesel common rail, 6 cilindri in linea, turbo aftercooled \\
Cilindrata & 6,69 L \quad (Alesaggio $\times$ Corsa: 107 $\times$ 124 mm) \\
Potenza (ISO 14396) & 116 kW (156 bhp) @ 2.000 rpm \\
Normativa emissioni & EU Stage IIIA \\
\midrule
\multicolumn{2}{@{}l}{\textbf{Impianto idraulico e scavo}} \\
\midrule
Pompe idrauliche & HydrauMind E-CLSS, 2 pompe a pistoni assiali a cilindrata variabile \\
Portata e pressioni max & 2 $\times$ 219 L/min \quad (Impl./Trasl.: 380 bar, Rotaz.: 295 bar) \\
Forza di scavo & 16.500 kg (benna) / 13.800 kg (braccio) \\
Capacità benna & 1,68 m$^3$ \\
Modalità operative & 5 (Power, Economy, Breaker, Attachment, Lifting) \\
\midrule
\multicolumn{2}{@{}l}{\textbf{Pesi e dimensioni}} \\
\midrule
Peso operativo & 23.360 kg \\
Carreggiata / Passo & 2.040 mm / 4450mm \\
Pattini & 700 mm \\
Profondità di scavo massima & 6.620 mm \\
\midrule
\multicolumn{2}{@{}l}{\textbf{\ac{can} bus}} \\
\midrule
Architettura & Singolo bus SAE J1939 con ID proprietari \\
\bottomrule
\end{tabular}
\end{table}
\begin{figure}[htbp]
\centering
\begin{subfigure}{1\textwidth}
\centering
\includegraphics[width=\textwidth]{assets/images/pc210nlc-8/IMG_0002.jpeg}
\caption{Frontalmente}
\label{fig:komatsu_front}
\end{subfigure}
\hfill
\begin{subfigure}{1\textwidth}
\centering
\includegraphics[width=\textwidth]{assets/images/pc210nlc-8/IMG_0001.jpeg}
\caption{Dal retro}
\label{fig:komatsu_rear}
\end{subfigure}
\caption{Komatsu PC210 NLC-8, oggetto di questo elaborato di tesi}
\label{fig:komatsu_overview}
\end{figure}
\FloatBarrier
\subsection{STM32F405RGT6}
\label{subsec:stm32f405rgt6}
Introduzione alla stm32 usata
\subsection{FreeRTOS}
\label{subsec:freertos}
Descrizione di freertos, brevemente perche l'ho scelto ma poi lo dico meglio in Cap.2
\subsection{TJA1050}
\label{subsec:tja1050}
Descrizione TJA1050 e perche l'ho scelto (brevemente)
% fonti: datasheet per ste tre robe
%
\subsection{Protocolli di comunicazione}
\label{subsec:protocolli}
\subsubsection{CAN bus}
\label{subsubsec:canbus}
\cite{voss2008comprehensible}
\cite{css_electronics_j1939}
Il \ac{can} bus è un protocollo di comunicazione seriale che supporta in modo efficiente il controllo distribuito in tempo reale con un livello di sicurezza molto elevato.
Il suo ambito di applicazione va dalle reti ad alta velocità al cablaggio multiplex a basso costo. \\
Nellelettronica automobilistica, le unità di controllo del motore, i sensori, i sistemi anti-slittamento, ecc. sono collegati tramite CAN con velocità di trasmissione fino a 1 Mbit/s.
Allo stesso tempo, è conveniente integrarlo nellelettronica della carrozzeria del veicolo, ad esempio nei gruppi ottici o nei finestrini elettrici, per sostituire il cablaggio aggiuntivo altrimenti necessario. \\
% fonte CAN ISO 11898 bosch da aggiungere
\subsubsection{SAE J1939}
\label{subsubsec:j1939}
\cite{css_electronics_can_bus}
Introduzione a SAE J1939
% fonte SAE J1939
\subsubsection{UART}
\label{subsubsec:uart}
Introduzione a UART
% trova una fonte
+85
View File
@@ -0,0 +1,85 @@
\chapter{Identificazione}
\label{ch:identification}
Questo capitolo descrive la prima fase pratica del lavoro: l'individuazione di un accesso fisico al \ac{can} bus del mezzo e l'identificazione delle linee
\ac{canh} e \ac{canl}. \\
Il capitolo è organizzato come segue: la sezione \ref{sec:access} descrive le diverse possibilità prese in considerazione per accedere fisicamente al bus e
motiva la soluzione adottata; la sezione \ref{sec:identification} presenta invece le misure effettuate per individuare le linee \ac{canh} e \ac{canl}.
\section{Accesso fisico al \acs{can} bus}
\label{sec:access}
Il primo passo per poter arrivare all'obiettivo finale di interpretare i dati \ac{can} è quello di identificare come è possibile accedervi fisicamente. \\
Per fare ciò si è iniziato con lo studio del manuale del mezzo \cite{pc210-230-240-manual}, il quale ha confermato che il mezzo supporta il
sistema \textit{KOMTRAX}\texttrademark: ciò impone quindi l'esistenza di un sistema \ac{can}, potenzialmente accessibile dall'esterno. Il manuale
non fornisce però ulteriori dettagli su eventuali prese diagnostiche o metodi per ricevere i dati tramite il \textit{KOMTRAX}\texttrademark.\\
È stato quindi necessario cercare un metodo per accedere al \ac{can} bus. Le possibilità valutate sono:
\begin{itemize}
\item Presa diagnostica nella cabina
\item Presa diagnostica nel motore
\item Connessione diretta alla \ac{ecu}
\end{itemize}
Connettersi direttamente alla \ac{ecu} è ipoteticamente possibile ma sarebbe un lavoro più complicato e con maggiore possibilità di commettere degli errori
che potrebbero compromettere l'operatività del mezzo; invece se fosse presente una presa diagnostica nel motore (come spesso esistono in mezzi con motore Cummins)
non è detto che questa contenga anche il \ac{can} bus, ed è comunque di più difficile accesso. Per un sistema che deve operare a motore acceso, inoltre può essere
più difficile connettere un sistema elettrico in un ambiente come il vano motore. Perciò si è preferito cercare prima una presa diagnostica. Infatti, dietro al
sedile dell'operatore si è trovato senza difficoltà un box elettrico, con la scatola dei fusibili ed una presa \textit{Deutsch DT04-12PA}, che si è supposto
fornire la tensione dalle batterie e accesso al \ac{can} bus, similmente a quanto avverrebbe in una presa \ac{obd2}. \\
% TODO: verifica il modello di presa Deutsch (da ordine aliexpress)
\begin{figure} [t]
\centering
\includegraphics[width=\textwidth]{assets/images/pc210nlc-8/IMG_9999.jpeg}
\caption{Scatola fusibili e presa diagnostica Deutsch DT04-12PA}
\label{fig:komatsu_fuse_box}
\end{figure}
\section{Identificazione \acl{canh} e \acl{canl}}
\label{sec:identification}
Per identificare quali pin sono relativi al \ac{can} bus si è misurata la resistenza tra i pin due a due fino a trovare una combinazione che desse come lettura
dal multimetro una resistenza di \SI{60}{\ohm}. Questo valore è, come discusso nel capitolo precedente, il valore di resistenza di un \ac{can} bus terminato
correttamente. \\
I pin trovati sono PIN3 e PIN10 della presa Deutsch. Inoltre si è trovato che tra i PIN1 e PIN12 si ha la tensione delle due batterie in serie (24V 400A):
specificamente PIN12 è la massa e PIN1 i +24VDC. \\
A questo punto è necessario scoprire precisamente quale pin è il \ac{canh} e quale il \ac{canl}, e per fare ciò si è utilizzato un oscilloscopio
\textit{Rigol DHO804}. Connettendo due sonde ai due pin \ac{can} individuati precedentemente ed accendendo il quadro elettrico
del mezzo, si sono viste le prime comunicazioni \ac{can}. Catturando un istante di queste comunicazioni, si riescono ad identificare \ac{canh} e \ac{canl}:
in figura \ref{fig:can_pin_test} si vedono come la sonda gialla (collegata al PIN3) visualizzi una tensione dominante mentre la sonda blu (collegata al PIN10)
una tensione recessiva. Quindi si conclude che PIN3 è \ac{canh} e PIN10 è \ac{canl}.
\begin{figure} [htbp]
\centering
\includegraphics[width=\textwidth]{assets/images/pc210nlc-8/IMG_0085.jpeg}
\caption{Misura della resistenza tra PIN3 e PIN10 della presa Deutsch}
\label{fig:can_ohm_test}
\end{figure}
\begin{figure} [htbp]
\centering
\includegraphics[width=\textwidth]{assets/images/pc210nlc-8/IMG_0096.JPG}
\caption{Individuazione \ac{canh} e \ac{canl} con oscilloscopio}
\label{fig:can_pin_test}
\end{figure}
\begin{table}[b]
\centering
\caption{Pinout della presa diagnostica Deutsch DT04-12PA}
\label{tab:pinout_deutsch}
\begin{tabular}{l c c c c c c}
\toprule
\textbf{Pin} & 7 & 8 & 9 & 10 & 11 & 12 \\
\textbf{Funzione} & ND & ND & ND & \ac{canl} & ND & \SI{+24}{\volt}DC \\
\midrule
\textbf{Pin} & 6 & 5 & 4 & 3 & 2 & 1 \\
\textbf{Funzione} & ND & ND & ND & \ac{canh} & ND & \textit{GND} \\
\bottomrule
\end{tabular}
\end{table}
La presa Deutsch DT04-12PA è un connettore a 12 pin; il suo pinout, così come ricostruito durante le attività descritte in questo capitolo, è riportato in
tabella \ref{tab:pinout_deutsch}. I pin il cui impiego non è stato determinato in questa fase [ND] sono risultati non collegati oppure dedicati a strumenti
di diagnostica Komatsu.
+157 -49
View File
@@ -1,21 +1,50 @@
% font size % font size
\documentclass[12pt]{report} \documentclass[11pt]{report}
% Margini (2.5cm su tutti i lati) % Margini
\usepackage[top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm, head=21.75pt, centering]{geometry} \usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm, head=21.75pt, centering]{geometry}
% Interlinea % Interlinea
\linespread{1.5} \linespread{1.1}
% Lingua e codifica % Lingua e codifica
\usepackage[italian]{babel} \usepackage[italian]{babel}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} \usepackage[T1]{fontenc}
% Stile ClassicThesis % Font TeX Gyre
\usepackage{newpxtext, newpxmath} \usepackage{tgpagella} % Serif
\usepackage{newpxmath} % Matematica
\usepackage[scale=0.9]{tgheros} % Sans-serif
\usepackage{tgcursor} % Monospace
\usepackage{microtype} \usepackage{microtype}
\usepackage{parskip} % no indent \usepackage{parskip} % no indent
% Penalties
\widowpenalty=10000
\clubpenalty=10000
\displaywidowpenalty=10000
\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext=lof2, listname={Grafici}, name=Grafico]{graph}
% Acronimi
\usepackage{acro}
\DeclareAcronym{can}{short = CAN, long = Controller Area Network}
\DeclareAcronym{canh}{short = CANH, long = CAN High}
\DeclareAcronym{canl}{short = CANL, long = CAN Low}
\DeclareAcronym{lin}{short = LIN, long = Local Interconnect Network}
\DeclareAcronym{id}{short = ID, long = Identifier}
\DeclareAcronym{ecu}{short = ECU, long = Electronic Control Unit}
\DeclareAcronym{dtc}{short = DTC, long = Diagnostic Trouble Code}
\DeclareAcronym{pgn}{short = PGN, long = Parameter Group Number}
\DeclareAcronym{sae}{short = SAE, long = Society of Automotive Engineers}
\DeclareAcronym{emea}{short = EMEA, long = Europe Middle East and Africa}
\DeclareAcronym{hv}{short = HV, long = High Voltage}
\DeclareAcronym{lv}{short = LV, long = Low Voltage}
\DeclareAcronym{obd2}{short = OBDII, long = On-board Diagnostics 2}
% Pagina e intestazioni % Pagina e intestazioni
\usepackage{scrlayer-scrpage} \usepackage{scrlayer-scrpage}
@@ -26,10 +55,11 @@
% Colori generali % Colori generali
\usepackage{xcolor} \usepackage{xcolor}
\definecolor{unimorered}{RGB}{240, 73, 38} \definecolor{komatsublue}{RGB}{20, 10, 154}
\definecolor{komatsuyellow}{RGB}{234, 170, 0}
\definecolor{unimoregrey}{RGB}{84, 84, 84} \definecolor{unimoregrey}{RGB}{84, 84, 84}
\definecolor{unimoreblack}{RGB}{0, 0, 0} \definecolor{black}{RGB}{0, 0, 0}
\definecolor{unimorewhite}{RGB}{255, 255, 255} \definecolor{white}{RGB}{255, 255, 255}
\definecolor{urlblue}{RGB}{0, 0, 238} \definecolor{urlblue}{RGB}{0, 0, 238}
% Colori codice % Colori codice
@@ -41,13 +71,26 @@
\definecolor{mauve}{rgb}{0.58,0,0.82} \definecolor{mauve}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92} \definecolor{backcolour}{rgb}{0.95,0.95,0.92}
% Didascalie
\usepackage{caption}
\captionsetup{
font={small, it},
labelfont={bf, color=black},
labelsep=quad,
margin=10pt,
singlelinecheck=false,
justification=centering
}
\captionsetup[table]{font={small}, labelfont={bf, color=black}}
\usepackage[hidelinks]{hyperref} \usepackage[hidelinks]{hyperref}
\hypersetup{ \hypersetup{
colorlinks=true, colorlinks=true,
linkcolor=unimoreblack, linkcolor=black,
filecolor=unimoreblack, filecolor=black,
citecolor=unimoreblack, citecolor=black,
urlcolor=urlblue, urlcolor=unimoregrey,
pdfborder={0 0 0.5},
} }
% Immagini e tabelle % Immagini e tabelle
@@ -58,6 +101,9 @@
\usepackage{makecell} \usepackage{makecell}
\usepackage{multirow} \usepackage{multirow}
\usepackage{float} \usepackage{float}
\usepackage{array}
\usepackage{placeins}
% Formattazione titoli % Formattazione titoli
\usepackage{titlesec} \usepackage{titlesec}
@@ -66,17 +112,17 @@
{\huge\chaptertitlename\ \thechapter} {\huge\chaptertitlename\ \thechapter}
{10pt} {10pt}
{\Huge} {\Huge}
[\vspace{1ex}{\color{unimorered}\titlerule[1.5pt]}] [\vspace{1ex}{\color{komatsublue}\titlerule[1.5pt]}]
\titleformat{\section} \titleformat{\section}
{\normalfont\Large\bfseries\color{unimoreblack}} {\normalfont\Large\bfseries\color{black}}
{\thesection} {\thesection}
{1em} {1em}
{} {}
\titlespacing*{\section}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} \titlespacing*{\section}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titleformat{\subsection} \titleformat{\subsection}
{\normalfont\large\bfseries\color{unimoreblack}} {\normalfont\large\bfseries\color{black}}
{\thesubsection} {\thesubsection}
{1em} {1em}
{} {}
@@ -90,7 +136,6 @@
% Codice e algoritmi % Codice e algoritmi
\usepackage{listings} \usepackage{listings}
\usepackage{inconsolata}
\usepackage{algorithm} \usepackage{algorithm}
\usepackage{algpseudocode} \usepackage{algpseudocode}
\usepackage{xurl} \usepackage{xurl}
@@ -100,74 +145,137 @@
\usepackage{filehook} \usepackage{filehook}
\usepackage{pifont} \usepackage{pifont}
\usepackage[bottom]{footmisc} \usepackage[bottom]{footmisc}
\usepackage{enumitem}
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{calc} \usetikzlibrary{calc}
\usepackage{siunitx}
% Stili per i linguaggi di programmazione % Stili per i linguaggi di programmazione
\usepackage{minted} \usepackage{minted}
\usepackage[most]{tcolorbox}
\tcbuselibrary{minted, skins}
\newtcblisting{codice}[1][]{
minted language=c,
minted options={
fontsize=\footnotesize,
breaklines,
autogobble,
linenos,
numbersep=5pt
},
colback=backcolour,
colframe=unimoregrey!30,
arc=4mm,
boxrule=0.5pt,
left=6pt, right=6pt, top=6pt, bottom=6pt,
#1
}
\usepackage{enumitem} \usepackage{enumitem}
\setlist[itemize]{
label=\textcolor{black}{\textbullet},
leftmargin=*,
itemsep=0.5ex,
topsep=1ex
}
\setlist[enumerate]{
label=\textcolor{black}{\arabic*.},
leftmargin=*,
itemsep=0.5ex,
topsep=1ex
}
\begin{document} \begin{document}
\begin{titlepage} \begin{titlepage}
\begin{tikzpicture}[remember picture, overlay]
\fill[unimorered] (current page.north west) rectangle
([xshift=1.5cm]current page.south west);
\end{tikzpicture}
\begin{center} \begin{center}
\includegraphics[width=8cm]{assets/images/unimore/Sigillo2015.png} \includegraphics[width=8cm]{assets/images/unimore/Sigillo2015.png}
\vspace{1cm} \vspace{1cm}
{\LARGE\color{unimoreblack}{ UNIVERSITÀ DEGLI STUDI DI MODENA \\E REGGIO EMILIA \\}} {\huge\color{black} UNIVERSITÀ DEGLI STUDI DI MODENA \\E REGGIO EMILIA \\}
{\large\color{unimoregrey}{ Dipartimento di Ingegneria "Enzo Ferrari" \\}} {\Large\color{unimoregrey} Dipartimento di Ingegneria "Enzo Ferrari" \\}
{\large\color{unimoregrey}{ Corso di Laurea Triennale in Ingegneria del Veicolo (L-9) \\}} {\Large\color{unimoregrey} Corso di Laurea Triennale in Ingegneria del Veicolo (L-9) \\}
\vspace{3cm} \vspace{3cm}
{\Large\color{unimoreblack}{ \textbf{ Reverse engineering del protocollo CAN bus di un escavatore Komatsu PC210 NLC-8 } }}\\ {\LARGE\color{black} \textbf{ Reverse engineering del protocollo CAN bus di un \\ escavatore idraulico cingolato Komatsu PC210 NLC-8 } }\\
\vspace{3cm} \vspace{3cm}
\end{center} \end{center}
\vspace{2cm}
\noindent
\begin{minipage}[t]{0.47\textwidth} \begin{minipage}[t]{0.47\textwidth}
{\large\color{unimoregrey}{\bf Relatore:}\\} \raggedright
{\large\color{unimoreblack}{Prof. Carlo Augusto Grazia}} {\large\color{unimoregrey}\bfseries Relatore:}\\[0.3ex]
\end{minipage}\hfill\begin{minipage}[t]{0.47\textwidth}\raggedleft {\large\color{black}Prof. Carlo Augusto Grazia}
{\large\color{unimoregrey}{\bf Candidato:}\\} \end{minipage}\hfill
{\large\color{unimoreblack}{Erick Ahmed}\\} \begin{minipage}[t]{0.47\textwidth}
\raggedleft
{\large\color{unimoregrey}\bfseries Candidato:}\\[0.3ex]
{\large\color{black}Erick Ahmed}
\end{minipage} \end{minipage}
\vfill \vfill
{\color{unimorered}\rule{\textwidth}{1pt}} {\color{komatsublue}\rule{\textwidth}{1pt}}
\hrulefill\\ \hrulefill\\
\centering{\large\color{unimoregrey}{\bf ANNO ACCADEMICO 2025/2026 }} \centering{\large\color{unimoregrey}\bfseries ANNO ACCADEMICO 2025/2026 }
\end{titlepage} \end{titlepage}
\clearpage \clearpage
\pagenumbering{roman} \pagenumbering{roman}
\tableofcontents % Genera l'Indice % sommario
\renewcommand{\listfigurename}{Elenco delle Figure} \input{chapters/00_abstract.tex}
\listoffigures % Genera la Lista delle Figure
\renewcommand{\lstlistingname}{Codice}
\renewcommand{\lstlistlistingname}{Elenco dei Codici}
\lstlistoflistings % Genera la Lista dei Codici % indice
\tableofcontents
% figure
\cleardoublepage
\phantomsection
\renewcommand{\listfigurename}{Figure}
\listoffigures
% grafici
\cleardoublepage
\phantomsection
\listofgraphs
% tabelle
\cleardoublepage
\phantomsection
\renewcommand{\listtablename}{Tabelle}
\listoftables
% codice
\cleardoublepage
\phantomsection
\renewcommand{\lstlistingname}{Codice}
\renewcommand{\lstlistlistingname}{Codice}
\lstlistoflistings
% acronimi
\cleardoublepage
\phantomsection
\chapter*{Acronimi}
\printacronyms[heading=none]
\clearpage \clearpage
\pagestyle{scrplain}
\pagenumbering{arabic}
\clearpage
\pagestyle{scrplain} \pagestyle{scrplain}
\pagenumbering{arabic} \pagenumbering{arabic}
% Aggiungi qui i capitoli % Aggiungi qui i capitoli
\input{chapters/01_introduction.tex} \input{chapters/01_introduction.tex}
\input{chapters/02_identification.tex}
%\input{chapters/02_second_chapter.tex} \input{chapters/03_acquisition.tex}
\input{chapters/04_decoding.tex}
%\input{chapters/03_third_chapter.tex} \input{chapters/05_analysis.tex}
\input{chapters/06_conclusions.tex}
\input{chapters/05_conclusions.tex} \input{chapters/99_acknowledgments.tex}
\clearpage \clearpage
\addcontentsline{toc}{chapter}{Bibliografia} \addcontentsline{toc}{chapter}{Bibliografia}