KWP2000 PDF Imprimer Envoyer
Samedi, 17 Janvier 2009 09:01
Ce protocole est une extension du protocole ISO 9142. Celui ci travaille sur la ligne K en mode bidirectionnelle qui est donc utilisé pour initialiser la communication.
9141-2_k
L'intérêt de ce bus, très largement employé, est de permettre de transmettre des informations de donnée d'une longueur pouvant varier de 1 à 255 Octets (Ce qui nous donne une trame maximum de 260 Octects en ajoutant le Header et le Checksum).
Format
Target Address
Source AddressLengthService ID byteDataCRC
Header 3 à 4 OctetsDonnées 1 à 255 Octets1 Octet
  
L'octet Format détermine le type de trame.
A1A0L5L4L3L2L1L0
Il est constitué de 2 bits (A0,A1) codant pour le type d'adressage et de 6 autres (L0 à L5)  pour la longueur des données transmises (Service ID inclus).
L0 à L5 sont utilisés pour coder une longueur de donnée comprise entre 1 et 63 octets, si c'est le cas l'Octet Length est absent du header. Lorsque les données sont supérieures à 63 Octets les bits L0 à L5 doivent être placés à 0.
Généralement le codage des bits L0 à L5 est uniquement utilisé dans la trame d'initialisation de la communication.

La transmission des données (après initialisation) s'effectuant en utilisant l'octet Length supplémentaire même si la longueur du message est inférieure à 63 Octets (L0-L5 = 0).
Les octets Target Address et Source Address peuvent également être omis.
Dans le cas où le calculateur permettrait seulement des données de 63 octets il subsiste une possibilité pour celui ci de découper une information de taille supérieure sur plusieurs trames. Dans ce cas le Service ID Byte contient le même identifiant pour toutes les trames relatives au message segmenté, dans cette optique les trames sont  ordonnées et consécutives.
 
Comme on le voit le format des informations échangées est loin d'être figé, le calculateur doit donc indiquer à l'appareil de test la manière dont ils vont pouvoir communiquer ensemble.
 
L'appareil voulant entrer en communication avec le calculateur envoi une trame d'initialisation (Wake up Pattern) puis une requête de départ de communication.

 
Scantool-ECU
Le calculateur retourne une réponse contenant 2 mots d'un octet (Keybytes KB2 + KB1) indiquant la manière dont il peut traiter les  messages.
ECU-Scantool

Décryptage des mots :
KB1  
P1TP1TP0HB1HB0AL1AL0
(Bit à 0→Non, Bit à 1→Oui)
  • AL0 : Support de l'information de longueur de donnée dans l'octet Format du header
  • AL1 : Support de l'Octet optionel de longueur Length dans le header
  • HB0 : Support d'un header codé sur un seul octet
  • HB1 : Support des adresses Source et Target dans le header
  • TP0 : Timing normal (0) / Timing etendu (1)
  • TP1 : Timing étendu (0) / Timing normal (1)
  • 1      : Toujours égal à 1
  • P     : Parité impaire (dépend donc du nombre de 1 dans les 7 premiers bits)
Subtilité pour le timing qui est codé sur deux bits qui ne peuvent prendre que les états 01 (normal) ou 10 (étendu).
KB2  
P 0 0
0
1
1 1 1
Le mot est fixe, le bit P de parité impaire est donc toujours à 1 (vous n'avez pas oubliez qu'il faisait parti du compte).
On a donc 10001111
Remarque : Les constructeurs suédois se sont entendus pour que leurs calculateurs travaillent toujours sur un type de trame. Le mot retourné KB1 sera  8FEA en hexadécimal qui donne : 1110 1010
Mis à jour ( Mardi, 09 Octobre 2012 19:06 )