Desmo Riders
Le comptoir => L'atelier => Tutoriels => Discussion démarrée par: LL le avril 27, 2020, 13:28:42
-
Ceci a juste pour but de dégrossir un peu et peut présenter des erreurs de langages.En gros, j'ai voulu comprendre un peu comment marcher les outils de débogage car il existe pleins de possibilités actuels avec les nouveaux mini pc ( carte arduino, carte teensy).
En guise de bibliographie et aide, je voudrai citer :
Le créateur de scanST christian GUIPPONI
Le site internet de FUELINO ( il a crée un systeme similaire à un powercommander en utilisant une carte arduino)
Le site internet de pulsesecurity sur ses aventures avec le bus can sur un ducati
Le forum sur la bellastrada ( montage d'un compteur de 848 sur une multistrada premiere generation)
- Sur les ecu iaw59 am, seul le protocole KWP2000 est possible. j'attire votre attention sur le fait que si l'on s'attache aux correspondances aux bornes de l'ecu, on voit néanmoins la présence de CAN + et CAN - même si physiquement elles ne sont pas câblées. Il semble donc que ducati ne les ai pas implémenté.
(https://www.desmo-riders.fr/uploads/member_86/1587987616.png)
Les bornes intéressantes sont donc 16, 20 et 29.
- Sur les ecu iaw5am, il y a deux protocoles possibles le KWP 2000 ainsi que par le bus CAN
Je vais surtout parler de la ducati 848 car elle présente l'avantage d'utiliser deux protocoles de communication différente.
Vous savez tous qu'on utilise la norme OBD2 pour on board Diagnostic mais qui peut utiliser différents protocoles de communications.En conséquence, on peut utiliser la petite connectique situé prés de l'ecu ( 2 fils)
(https://www.desmo-riders.fr/uploads/member_86/1587986955.png)
ou bien celle situé prés de la selle arrière que l'on nomme aussi prise DDA ( ducati data acquisition) et qui utilise 4 fils ( et qui correspond au BUS CAN).
(https://www.desmo-riders.fr/uploads/member_86/1587987022.png)
et qui correspond à ces deux elements au niveau du schema electrique :
(https://www.desmo-riders.fr/uploads/member_86/1587987170.png)
La principale difference entre les deux consiste en la vitesse ( hos initialisation, nous sommes en 10400 bauds avec les puces iaw5am ( debit impossible sur les puces iaw59am) tandis que le bus can culmine à 125 Kbps ( Source sur cet excellent article https://pulsesecurity.co.nz/articles/ducati-can-bus ) .
Le KWP 2000 implemente la norme ISO 14230 Version 4 tandis que le buscan implemente la norme 11898-3.
Je vais m'attacher à vous décrire ce qui se passer par exemple quand on utilise les logiciels pour accéder aux tests ou autres.
Ducati comme d'habitude a implémenté sa version du protocole que l'on peut retrouver dans des fichiers pdf que je tiens à disposition pour ceux-qui le souhaitent.
-
Voici l'ensemble des fonctions disponibles :
(https://www.desmo-riders.fr/uploads/member_86/1588001427.png)
Pour le moment et pour pas compliquer, on ne vas s'interesser uniquement à la trame de demande d'informations ( on l'oublie la partie chiante d'entete et de checksum).
Par exemple, si je voulais afficher la tension de la batterie, d'après la doc je dois utiliser la fonction ReadDataLocalIdentifier définie ainsi :
(https://www.desmo-riders.fr/uploads/member_86/1588000753.png)
et voici une partie de la liste des RLI
(https://www.desmo-riders.fr/uploads/member_86/1588001580.png)
[img]https://www.desmo-riders.fr/uploads/member_86/1588001592.png[/img
Pour les codeurs, il pourrait penser au premier abord qu'il faudrait tapper
ResultatDelaFonction = ReadDataLocalIdentifier ( Parametre 1, Parametre2);
Alors qu'en fait, il ne faut pas raisonner en temre de fonction mais d'adresse hexadecimal.
Ainsi pour appeler notre fonction, il suffit juste d'ecrire 21 3C
le premier bit 21 fait reference à l'appel de la fonction readdatabylocalidentifier
le deuxième bit 3C fait reference à la tension batterie
toujours suivant la description de la fonction ReadatalocalIdentifier
en cas de reponse positive, la trame renvoyée sera du type
613C0080
61 => 40+21 le 40 indique le message de succès
3C => reference au rli qui correspond à la tension de la batterie
00 80 => 128/10 soit 12.8 V
-
Si tu as du temps, je veux bien que tu m'expliques la différence entre les pin 20 et 29 et la différence en CAN High/+ et un CAN Low/-?
Merci à toi
-
Du peu que j'ai retenu pour le moment
CAN L et CAN H sont en parallèles et sont reliés à chaque extrémité par ce qu'on appelle une résistance de terminaison ( 120 ohms au début de l'application de la norme CAN).
Dans notre cas, si on se réfère au schéma électrique, on comprend donc qu'il existe un résistance de terminaison dans l'ecu et une autre dans le compteur.
L'ecu et le compteur se servent à ce différentiel de tension pour communiquer ( en gros une tension correspond à un bit 0 ou 1)
Après je ne sais pas si c'est bien dit car je n'ai pas encore approfondi. je regarderai si tu veux
Un bon article avec les valeurs de tension est :
http://www.madcogz.com/mstd1200s/wsm/fr/MTS1200_ABS_10_6_6.32.1.html (http://www.madcogz.com/mstd1200s/wsm/fr/MTS1200_ABS_10_6_6.32.1.html)
-
Très interessant ce decortiquage 8) merci pour le partage ;)
-
Je vais vous montrer comment afficher les messages d erreur , c est surtout ce qui nous intéresse tous.
Ensuite, j expliquerai pourquoi tous les logiciels disponibles fonctionnent en bluetooth en wifi ou en liaison série ( afin d éviter d avoir à gérer les initialisation de connections , de faciliter de ne pas avoir d écrire des en-têtes de ne pas avoir à calculer de cheksum à chaque trame envoyé..).
-
voici pour afficher les messages d'erreur.
Pour commencer, on en revient toujours à la specification ducati
(https://www.desmo-riders.fr/uploads/member_86/1593172268.png)
Il faut donc utiliser la fonction readdiagnosticTroubleCodeByStatus, mais comme nous l'avons dit pas en ecrivant la suite de chiffre hexa suivant :
1800FF00
Attention avec le type de dongle utilisé car la réponse pourra être tronquée s'il y a plusieurs messages d'erreur.
Voici la trame de reponse :
1800FF00 58 03 0335 24 048044017064
en analysant celle-ci
1800FF00 correspond tout simplement à l'echo de notre demande
58 comme l'indique la spec signifie une reponse positive ( 58=18+40 comme signalé auparavant)
03 correspond aux nombres de défauts en mémoires
0335 24 P0335: Crankshaft Position Sensor A Circuit Malfunction
0480 44 = P0480 Cooling Fan 1 Control Circuit Malfunction
0170 64 = P0170 Fuel Trim Malfunction (Bank 1)
24, 44, 64 sont les statuts (intermittent, présent, ...) suivant la spec FIAT.
si nous avions eu une reponse negative, on aurait pas eu 58 au début mais 7F
-
sympa, mais j'avoue j'ai pas trop le courage de me lancer dans ce genre de truc !!
-
En fait à terme, j'aimerai utiliser une carte teensy ( qui sont plus puissante et qui ont des fonctionnalités supplementaires par rapport aux cartes arduino) afin de pouvoir lire et supprimer les erreurs, effectuer le reset tps. en effet, on peut y ajouter des modules comme un ecran tft ( donc tactile) que je pourrai placer discretement sous le compteur motogadget sur le S4R.
Aviez vous lu le post d'une femme sur ducati.ms qui avait crée une carte mere ( en lieu et place des fusibles) à base de mosfet et de diode?
En gros tant que le defaut etait present, une diode etait allumé mais pas de fusible à changer. Par ailleurs, elle avait amelioré la puissance de demarrage de la bete... J'ai tenté de la contacter sans succés....
-
Intéressant, t'as le lien?
-
http://www.ducatimonsterforum.org/index.php?topic=56614.30
-
merci ducati748 !
le seul point ou je ne suis pas d'accord , c'est qu'elle a supprimé la plaque qui sert d'ailette de refroidissement sous l'ecu. Par exemple, j'ai monté une mwtuning qui permet de gagner 10% de refroidissement.
J'ai cherché partout mais je pense qu'elle l'avait fait faire elle même. Dimensionnement optimal. elle montre meme la puce exact à couper sur le compteur qui gere le clignotement
-
Merci @ducati748 :)
-
samytou
j'ai tout essayé pour essayer de la retourver ou de retrouver le fruit de son travail.... ça aurait été tellement bien