OBD CAN BUS acquisition de données

PSA Czéro - Ion étant produites sur une base quasi identique car sous license Mistsubishi i-MiEV... les membres leurs ont donné le petit nom de "C-zimion" ou Triplettes...
le Berlingo powered by Venturi, Peugeot Partner Tipee etc.

Modérateurs : Remdo, man3515, moulino51

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 20:09

Bonjour à tous,

Un nouveau sujet sur l'acquisition de données en utilisant le CAN BUS ou la prise OBD.
Ma recherche est partie de ma I-MIEV 2017 où l'on ne peut pas récupérer les tensions et températures batterie avec l'application CaniOn.
L'application ne peut évoluer donc il faut trouver un autre moyen.

J'avais donc trouvé sur l'autre sujet

J'ai vu des gars essayer de visualiser certaines infos du CAN BUS et il y a un sujet (long 18 pages !) :shock:

"Décryptage des données des messages iMiEV et iON CAR-CAN"
https://myimiev.com/forum/viewtopic.php ... pid#p45083

j'ai ouvert les yeux en voyant ça :
(0xb6 + 210) / 100 = 3.92v for batteries
Il va falloir que j'essaye de comprendre tout ça, pas gagné !

Il y a aussi :
Que le piratage commence !


Sinon j'ai vu l'utilisation d'un petit écran fixé sur le tableau de bord, pour visualiser des données depuis la prise OBD :
electric-car-battery-dashboard-gauge
pierre-muth c-zero dashboard

et d'autres :
I-MIEV Sondage du bus CAN pour les informations sur la batterie EV
David Cecil 50 OBDZero

Je vois qu'il faut un module CAN BUS MCP2515 et de l'Arduino, si on utilise un écran déporté...

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 20:10

Si je commence par la première page :
Décryptage des données des messages iMiEV et iON CAR-CAN
Veuillez utiliser ce fil pour discuter des données significatives
domaines que nous découvrons ou étudions.

Veuillez utiliser ces conventions dans ces discussions:

1. L'ID de message est toujours en 3 caractères hexadécimaux, comme 5BC
2. Reportez-vous aux octets de données comme D1, D2, D3, D4, D5, D6, D7, D8
3. Montrez comment décoder et mettre à l'échelle les données, si elles sont connues.
4. Par défaut, D4 signifie les 8 bits de D4
5. Alors, D5[7-4] serait les 4 premiers bits de D5

Liste des valeurs connues:
Remarque : Un (#) suivant la description = affiché
sur le tableau de bord CAN-Do v198.

412:D2 = Vitesse, en km par heure (#)
412:D3,D4,D5 comme ((((D3 * 256) + D4) * 256) + D5) = Odomètre, en km (#)

373:D3,D4 as (((D3 * 256) + D4) - 32768) * -0.01 = Pack Amps Out (#)
373:D5,D6 as ((D5 * 256) + D6) * 0.1 = Pack Volts (#)

----------
6E1, 6E2, 6E3 et 6E4 sont une séquence qui contient
tensions des cellules (88 tensions) et températures (66 d'entre elles).
Voir les détails dans un post ultérieur.
Donc je suppose que c'est ça qui a dû changer 6E1 etc :?:

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 20:11

Je continue ma lecture et note ce qui concerne les tensions et températures batterie :
Tensions des éléments de la batterie et températures des modules

---------
6E1, 6E2, 6E3 et 6E4 sont une séquence de messages qui
contient les tensions des cellules (88 tensions) et les températures (66 d'entre elles).

Vraisemblablement, il y a 22 modules, chacun avec 4 cellules et 3 températures.

----------
6E1 est immédiatement suivi de 6E2, puis environ 20 ms plus tard,
il y a un 6E3, immédiatement suivi d'un 6E4. Ce groupe de 4
les messages ont tous le même Index (1 à 12), et 12 tels
groupes, chacun avec un indice croissant, forment un ensemble complet de
messages qui transportent des données pour 88 tensions et 66 températures.

Le Set se répète environ deux fois par seconde, je crois.

Tous ces messages utilisent D1 comme Index (01 à 0C), et ils
tous utilisent les octets D5 et D6 pour une tension, et D7 et D8 comme l'autre
tension. Chaque tension est multipliée par 100 et stockée sous forme de 2 octets
entier. Les valeurs varient généralement d'environ 250 à 400 (2,5 volts
à 4,00 volts). Les 4 messages, avec 12 valeurs d'index, et deux
tensions dans chacun ... ont de la place pour 96 tensions, mais elles
ne contiennent en fait que des données représentant 88 tensions.

De même, il y a de la place pour 4 * 12 * 4 températures, mais il y a
sont seulement 2 temps dans la plupart de ces messages, et même alors,
il n'y a que 66 températures utilisées.

Les données inutilisées sont généralement des octets entiers de valeur zéro, je pense.

6D1:D1 est l'Index, valeur 01 à 0C
6D1:D2 vaut zéro
6D1: D3 et D4 sont deux températures d'un octet
6D1:D5 & D6 comme ((D5 * 256) + D6) / 100 = une tension de cellule
6D1:D7 & D8 comme ((D7 * 256) + D8) / 100 = une tension de cellule

6D2:D1 est l'Index, valeur 01 à 0C
6D2: D2 et D3 sont deux températures d'un octet
6D2:D4 est zéro
6D2:D5 & D6 comme ((D5 * 256) + D6) / 100 = une tension de cellule
6D2:D7 & D8 comme ((D7 * 256) + D8) / 100 = une tension de cellule

6D3:D1 est l'Index, valeur 01 à 0C
6D3:D2 et D3 sont deux températures d'un octet
6D3:D4 est zéro
6D3:D5 & D6 comme ((D5 * 256) + D6) / 100 = une tension de cellule
6D3:D7 & D8 comme ((D7 * 256) + D8) / 100 = une tension de cellule

6D4:D1 est l'Index, valeur 01 à 0C
6D4:D2, D3 et D4 sont nuls (pas de température)
6D4:D5 & D6 comme ((D5 * 256) + D6) / 100 = une tension de cellule
6D4:D7 & D8 comme ((D7 * 256) + D8) / 100 = une tension de cellule

Notez que tout l'espace pour les tensions ou les températures
est effectivement utilisé.

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 20:21

Évidemment il y a des versions plus récentes, que je vais découvrir au fur et à mesure de ma lecture.
Le mieux c'est le lien du site Can do :
Can_do

Je vois qu'il y a possibilité d'utilisation sous Ubuntu avec Wine...
Il faut un OBDLink (donc Bluetooth pour le mien) et un PC portable avec Bluetooth bien sûr !
Et Can-do.

Premier problème installer proprement CAN Do sur un vieux PC portable avec Ubuntu Mate, pas simple pour moi :mrgreen:

Il faut CAN Do, j'ai pris le plus récent
CAN-Do-v232.zip

ensuite il faut un CAN recipe file, sinon il y a un message qui signale qu'il manque VarParmList.csv
VarParmList-v1.zip

ensuite si besoin (Win7, Ubuntu) on peut avoir besoin des fichiers MSCOMM32.OCX et COMDLG32.OCX (mettre en exécutable)
CANDo-Ubuntu-v3.zip

Et si j'ouvre bien CAN Do dès que j'essaye quelque chose j'ai erreur 339 MSCOMCTL.OCX, et je n'ai même pas connecté à l'OBD ! Vaut mieux pas !!
Faudra que j'essaye avec un PC plus récent avec Win7.
A priori je vais utiliser un EOBD/OBD interface USB, j'ai vu qu'il avait utiliser un OBDLink SX USB.


Je viens d'essayer sur un PC Win7 et ça fonctionne, il faut bien ajouter les fichiers MSCOMM32.OCX et COMDLG32.OCX
Mais pour que ça fonctionne je ne les ai pas installés sur C:\Windows\System32\ mais dans le dossier CAN Do v232 dans Programmes.

Ce n'est peut-être pas l'idéal mais ça semble bien fonctionner, mais bon va falloir comprendre comment récupérer des données sur l'I-MIEV 2017 !

A noter que l'on voit LEAF mais c'est bien sur le site des I-MIEV que le sujet a été lancé par Garygid qui a créé le logiciel CAN_Do
cando
apparemment ça sert sur d'autres VE, j'ai vu un fichier pour Tesla :
This Recipe File V1.05: Recipe file with added guesses for Tesla S OBD-CAN data and its SC Pilot-CAN data

Voila ce que ça donne sur PC Windows 7
Capture_Can_do_25-08-2022.PNG
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 20:25

Je copie une des interventions de GaryG qui indique quelque chose par rapport aux I-MIEV
Cette case à cocher est étiquetée '(*) Erreurs' et lorsqu'elle est cochée, elle modifie
la liste produite en double-cliquant sur n'importe quel MsgId est la liste ci-dessus.

Chaque MsgID est précédé d'un N: indiquant la longueur des données
de messages avec ce MsgID. Cependant, si le MsgID a
plusieurs longueurs de données, un astérisque (*) s'affiche
au lieu d'un nombre (chiffre hexadécimal).

Habituellement, tout MsgID unique n'a qu'une seule longueur de données associée
avec ses messages, mais il est possible qu'il y en ait
messages avec le même MsgID, mais une longueur de données différente.

Dans l'iMiEV, il semble que tout MsgID avec plus d'un
data-length sont dues à des erreurs de données ou de bus, et non intentionnelles.
Pour mieux étudier cela, cochez la case '(*) Erreurs',
puis double-cliquez sur n'importe quel MsgID avec le préfixe '*:'.


Ensuite, tous ces messages seront analysés pour trouver la dominante
(la plus fréquente) data-length, quelles sont les autres longueurs de données
trouvés dans ces messages, et combien de messages ont
chacune des longueurs découvertes.

Lorsqu'il y a des milliers de messages avec la longueur dominante,
mais seulement quelques messages avec des longueurs différentes, les quelques-uns sont très
erreurs probables. Parfois, ces erreurs rendent très difficile
tracer et analyser les données.

Je soupçonne que je vais ajouter une fonction 'Clean', remplaçant tout cela
'mauvais' messages avec le MsgID EEE ou quelque chose comme ça.
Pour l'instant, vous pouvez au moins mieux examiner vos données.

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 21:19

Une réponse suite à un problème d'utilisation du logiciel, ça peut servir pour la configuration je suppose :
Une fois que vous avez le 'MSCOMM32.OCX' en place, vous pouvez essayer RealTerm et/ou Can-Do en utilisant ces paramètres.

Le port COM doit être initialement configuré à 115 200 bauds, 8,N,1.

Le 'Serial Enumerator' ne doit PAS être coché.

La taille du tampon doit être de 4096.

Latence à 4.

avec ces commandes qui lui sont envoyées:
stsbr 500000
500000 (reconnecter à 500000)
ATSP6
ATE0
ATH1
ATL0
ATS0
ATCAF0
ATMA

La première vérification à faire est avec RealTerm et voir si le voyant d'erreur rouge s'allume toutes les xx secondes lors de la capture ou de l'affichage des données au fur et à mesure qu'elles défilent. Si vous ne voyez pas d'erreurs, essayez de capturer en utilisant Can-Do.

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 21:39

Quelqu'un qui a aussi travaillé sur les codes de l'I-MIEV :

i-miev-obd2
This project aims to document the OBD-II codes for Mitsubishi I-Miev electric vehicle.

Conventions used in this document:

Message ID is always 3 hex characters
Data bytes are zero-indexed: D0, D1, etc

OBD-II Traffic analysis

Periodically occurring PIDs:

1000ms (1 fps): 01C [1]
200ms (5 fps): 568 [1]
100ms (10 fps): 101, 286, 298, 29A, 2F2, 374, 375, 384, 385, 389 [1], 38A [1], 3A4, 408, 412, 695, 696, 697, 6FA, 75A, 75B
50ms (20 fps): 38D, 564, 565, 5A1, 6D0, 6D1, 6D2, 6D3, 6D4, 6D5, 6D6, 6DA
40ms (25 fps): 424, 6E1, 6E2, 6E3, 6E4
20ms (50 fps): 119, 149, 156, 200, 208, 210, 212, 215, 231, 300, 308, 325, 346, 418
10ms (100fps): 236, 285, 288, 373

[1] (1, 2, 3, 4) Possibly only sent in debug mode.
PID descriptions
208 - Brake pedal

Break pedal sensor data is transmitted every 20ms. Data bits seem to be following:

D0: 0x00 (const?)
D1: 0x20 (const?)
D2-D3: pedal position, 60:00 is zero position, max seems to be around 61:bf
D4: 0xc0 (const?)
D5: 0x00 (const?)
D6: 0xc0 (const?)
D7: 0x00 (const?)

231 - Brake pedal switch sensor

D0-D3: 0x00 (const?)
D4: 0x00 if brake is free, 0x02 if brake pedal is pressed
D5-D7: 0x00 (const?)

236 - Steering wheel sensor

Steering wheel sensor data is transmitted every 10ms. Data bits:

D0-D1: Steering wheel position with 0.5 degree accuracy, center point (0.0 degrees) = D0:0x10, D1:0x00. (((D0 * 256) + D1) - 4096) / 2 = steering wheel position in degrees). Negative angle - right, positive angle left.
D2-D3: possibly represents rate of change, defaults to D2:0x10, D3:0x00 when steering wheel is at rest.
D4: counter, but only high-nibble bits (4-7) are used, D4[0:3]=0
D5: 0x00 (const?)
D6: 0x00 (const?)
D7: TODO

412 - Speed + Odometer value

Transmitted every 100ms. Data bits:

D0: 0x7f (const?)
D1: speed in km/h
D2-D4: Odometer display in km. ((((D2 * 256) + D3) * 256) + D4) = km/h
D5: 0x00 (const?)
D6: 0x21 (const?)
D7: 0x06 (const?)
Merveilleux, au moins certaines des données semblent être les mêmes, par exemple:

208 - pédale de frein
6E1-6E4 qui contiennent des informations sur la batterie (cependant, je n'ai pas encore eu beaucoup de temps pour les documenter)

236 - capteur de position du volant, ça ne devrait pas être toutes les 10 ms ?
236: 10 ms me conviennent
la dernière colonne de mon document est Frame/Sec, donc 100 signifie 10 mS...

6E1 - 6E4 est un peu délicat : le premier octet de données est un numéro de séquence de 1 à 12.
les 3 octets suivants contiennent des informations sur les températures en °C (offset 50°C)
seulement 66 capteurs dans ma voiture.

les 4 derniers octets contiennent des informations sur l'individu V (peut-être avec un facteur de correction (1,28 ???))

donc, à la fin, vous obtenez un tableau de 96 positions ....

Je peux publier le code que j'utilise pour cette partie, et en fait vous pouvez obtenir mon dev ici :

https://drive.google.com/folderview?id= ... sp=partage (le lien est HS !)

il a été créé à l'aide de B4A, mais vous pouvez lire le fichier nommé scanner.bas avec n'importe quel éditeur de texte et essayer de suivre son fonctionnement...

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 21:54

Autre info de Priusfan
l'iMiev n'est pas une voiture standard. vous devez envoyer la bonne séquence de commandes...

par exemple essayez ceci:

atsp6
ate0
ath1
stcfp
stfap 373,FFF
stm

il ne devrait afficher que les messages pour le pid 373, dans lesquels se trouvent des informations sur V & Amps
bonjour Cristi
soyez prudent lorsque vous essayez d'envoyer des demandes:
les demandes traditionnelles ne donneront pas de réponses traditionnelles, et sachez que vous pouvez perdre l'assistance au freinage si vous jouez à ce jeu.

en utilisant atma, vous obtiendrez 1625 frames/sec
en utilisant des filtres avec un STN1110, j'obtiens les infos les plus intéressantes à 180 fps (seulement 298, 346, 373, 374 & 412)

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 22:17

Peut-être une info intéressante par Cristi pour les commandes de chauffage et climatisation :
Nous avons finalement réalisé que le PID 3A4 représente les cadrans de climatisation.

l'octet 0 représente la position du cadran de chauffage/refroidissement (en haut) (les 4 bits les moins significatifs). Il est de 7 lorsque le chauffage/refroidissement est éteint, 7 signifie refroidissement, 7 signifie chauffage. Les bits les plus significatifs indiquent AC activé, chauffage MAX activé, recirculation d'air activée (c'est-à-dire en appuyant sur les 3 cadrans)

l'octet 1 représente la position du cadran de ventilation (milieu), ses 4 bits les moins significatifs sont la position du cadran. Le ou les bits les plus significatifs représentent le dégivrage, etc.

Sur le PID 384 que vous avez indiqué, nous voyons les _effets_ de ces cadrans. L'octet 4 est le courant de chauffage multiplié par 10 et varie beaucoup (monte lentement lorsque le chauffage + la ventilation sont allumés, puis il repasse à zéro, puis il remonte régulièrement). Nous souhaitons estimer l'effet du chauffage (et d'autres facteurs) sur la portée, donc 3A4 est ce que nous recherchions.
Ce serait formidable, mais je ne sais pas si quelqu'un a réussi à écrire des données sur le bus CAN iMiev. D'après ce dont je me souviens, il y a des risques importants concernant la perte de l'assistance aux pauses, etc. Je n'ai pas suivi ce problème récemment, peut-être que ça s'est amélioré.

Quoi qu'il en soit, voici des détails plus spécifiques:

NID 3A4
octet 0, bits 0-3: niveau de chauffage (7 est éteint, moins de 7 est le refroidissement, plus de 7 est le chauffage)
octet 0, bit 7: CA activé (molette de ventilation enfoncée)
octet 0, bit 5: chauffage MAX (touche de chauffage enfoncée)
octet 0, bit 6 : recyclage d'air (sélecteur de sens de ventilation enfoncé)

octet 1, bits 0-3 : niveau de ventilation (si AUTO est choisi, le niveau calculé automatiquement est retourné)
octet 1, bits 4-7 : sens de ventilation (1-2 face, 3 jambes+face, 4-5 jambes, 6 jambes+pare-brise 7-9 pare-brise)
Par rapport aux commandes Priusfan et Cristi :
les commandes

STSBR 921600
(reconfigurez le terminal pour le nouveau débit en bauds!)
ATSP6
ATS0
ATH1
ATCAF0
ATMA

b) le protocole :

Utilisez un terminal qui peut gérer 921600 (RealTerm sous Windows fonctionne, même sous Parallels sur Mac). Configurez-le pour vous connecter à un fichier. Envoyez ensuite ces commandes:

peut-être pourriez-vous commencer par consulter la documentation de stn11xx

sur iMiev, on peut voir 1625 frames/sec.
en Bluetooth, la bande passante n'est tout simplement pas suffisante...

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 22:41

Alors je viens de voir un nouveau logiciel pour lire les données, ça date de 2017 :

can4eve.bitplan
Qu'est-ce que can4eve ?

can4eve
est un logiciel pour véhicules électriques
il lit, analyse, visualise, stocke et rejoue les données du bus CAN du véhicule prises via un adaptateur OBDII
est un projet de logiciel open source voir https://github.com/BITPlan/can4eve
Image

Image

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 22:56

Il est tard mais une dernière info :
myimiev.com/forum p12/18

de kiev = kenny's innovative electric vehicle
le format de trame du bus CAN, si cela peut vous aider. Le PID se trouve dans le champ d'arbitrage, le nombre d'octets de données est de 4 bits dans la trame de contrôle, suivi des octets de données réels et d'une somme de contrôle.
Mu626eg.png

Une autre info
Voici une liste des conversions PID dans l'application OBDZero. La plupart des conversions utiles ont été trouvées par d'autres sur cette discussion avant que je commence à chercher.
Image
Remarque 0
Chaque PID contient de 1 à 8 octets. Le premier octet est numéroté 1 et le dernier octet est numéroté 8. Lorsque l'information marche/arrêt est codée, elle est codée dans les bits d'un octet, un bit égal à 1 signifie marche, sauf frein marche/arrêt où 2 est égal à marche. Les bits sont numérotés dans le tableau ci-dessus par valeur de position dans l'octet, c'est-à-dire 1, 2, 4, 8, 16, 32, 64, 128. Le quartet bas dans un octet est le nombre représenté par les 4 bits les moins significatifs et le haut quartet est le nombre représenté par les 4 bits les plus significatifs.

Note 1
Je crois que l'accélération, la rotation, la vitesse des roues et la position du volant font toutes partie du système de stabilité électronique, mais ce ne sont que des suppositions. et je ne suis pas sûr des facteurs de conversion.

Note 2
Le courant vers le chargeur de batterie 12 volts est une supposition et je n'en suis pas du tout sûr.

Note 3
Je suis à peu près sûr que ces deux conversions sont des amplis moteur et des amplis de régénération. Afin de trouver les facteurs de conversion, je les ai comparés avec des amplis de batterie entrants et sortants. Cependant, en raison de nombreux autres facteurs, cette comparaison est difficile et les facteurs de conversion sont incertains.

Remarque 4
Jusqu'à récemment, j'utilisais la vitesse affichée (PID 412) comme vitesse de la voiture. Cependant j'utilise maintenant la vitesse basée sur le PID 215 car elle indique le mouvement de la voiture 1 à 2 secondes avant la vitesse affichée, elle a un chiffre après la virgule et elle est toujours en km/h. J'ai reçu des données d'une voiture au Royaume-Uni où la vitesse PID 412 était en mph. Savoir avec certitude si les nombres sont en unités métriques ou anglaises est nécessaire pour les calculs effectués par l'application.

Remarque 5
Il existe deux valeurs pour l'état de charge (SoC). Les deux sont calculés par la voiture dans le cadre d'un système d'estimation de la capacité actuelle de 100 % de la batterie, c'est-à-dire l'état de santé (SoH). En tant que tel, aucun n'est plus correct que l'autre.

Remarque 6
La batterie étant amplifiée, le courant vers la batterie peut être à la fois positif et négatif. Le signe est en relation avec la batterie, donc la charge est positive et la décharge est négative. Cependant, la plupart des calculs dans OBDZero sont du point de vue des fonctions motrices et auxiliaires. Ainsi, pour les amplis de batterie calibrés, la décharge est positive et la charge est négative. Le courant du moteur est toujours positif et le courant de régénération est toujours négatif. Le courant de chauffage et le courant de climatisation sont tous deux positifs. Cependant, cette convention ne s'applique pas au courant de l'unité de charge vers la batterie et au courant de Chademo vers la batterie, qui sont tous deux positifs. Une description de l'étalonnage des ampères de batterie est disponible à l'adresse:
viewtopic.php?f=25&t=763&p=36989&hilit=amps#p36989

Remarque 7
J'ai comparé cette conversion avec la température mesurée pour mon emplacement et l'accord est bon mais pas parfait. La température extérieure de la voiture est souvent inférieure à la température mesurée lors du premier démarrage de la voiture, mais augmente jusqu'à la température mesurée pendant la conduite.

Remarque 8
La position des vitesses est un peu compliquée. L'information est contenue dans le PID 285. Si l'octet (7) est égal à 12, la position est soit Park soit Neutral sans indication de laquelle. Si l'octet (7) est égal à 14 et l'octet (8) est égal à 16, la position est Drive. Si l'octet (7) est égal à 14 et que l'octet (8) n'est pas égal à 16, la position est inversée. Il y a probablement un autre PID où la position de l'engrenage est plus explicite, mais je ne l'ai pas encore trouvé. Autre chose, l'iMiev a deux positions de vitesse de plus que le CZero et l'iOn. Ces deux positions sont indiquées comme Drive dans OBDZero.

Remarque 9
Le codage des informations de cellule individuelle n'est pas représenté ci-dessus. Voir
https://myimiev.com/forum/viewtopic.php ... ells#p4898
Je voulais juste partager une découverte potentielle, il semble que le PID 418 contienne la position du levier de vitesses.
Le premier octet (B0) traduit en ASCII est la position du levier de vitesses. Le reste (B1-B7) semble être des constantes.
0x50: P
0x52: R
0x4E: N
0x44: D
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » jeu. 25 08 , 2022 23:13

Et une autre application pour I-MIEV :

Kiev :
anko a partagé ses découvertes avec zzcoopej d'Australie, qui a développé l'application EvBatMon qui est disponible pour le phev et le miev sur son site Web à l'adresse
evpositive.com/evbatmon-for-i-miev
EVBATMON_I-MIEV_ANDROID.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » ven. 26 08 , 2022 19:05

Sur Github il y en a des infos :

KommyKT/i-miev-obd2
Ce projet vise à documenter les codes OBD-II du véhicule électrique Mitsubishi I-Miev.

Conventions utilisées dans ce document:

L'ID de message est toujours composé de 3 caractères hexadécimaux
Les octets de données sont indexés à zéro: D0, D1, etc.

Analyse du trafic OBD-II

PID se produisant périodiquement:


1000ms (1 fps): 01C 1
200ms (5 fps): 568 1
100ms (10 fps): 012,101, 286, 298, 29A, 2F2, 374, 375, 377, 384, 385, 389 1, 38A 1, 3A4, 408, 412, 695, 696, 697, 6FA, 75A, 75B
50ms (20 fps): 38D, 564, 565, 5A1, 6D0, 6D1, 6D2, 6D3, 6D4, 6D5, 6D6, 6DA
40ms (25 fps): 424, 6E1/6E2/6E3/6E4
20ms (50 fps): 119, 149, 156, 200, 208, 210, 212, 215, 231, 300, 308, 325, 346, 418
10ms (100fps): 236, 285, 288, 373

PID descriptions
012

Key status (early iMiEV)

Transmitted every 100ms. Data bits:

D2: 0x04 Key is turned on

101

Key status (later iMiEV)

Transmitted every 100ms. Data bits:

D0: 0x04 Key is turned on

149

Rotation ESC

Transmitted every 20ms. Data bits:

D4-D5: Rotation ESC: (D5 * 256 + D4 - 32934) / 32.934 (OBDZero)

200

Wheel rotation

Transmitted every 20ms. Data bits:

D2-D3: Wheel rotation: (D2 * 256 + D3 - 49152) / 19 (OBDZero)
D3-D4: Wheel rotation: (D4 * 256 + D5 - 49152) / 19 (OBDZero)

208

Brake pedal / Wheel rotation

Break pedal sensor data is transmitted every 20ms. Data bits seem to be following:

D2-D3: Brake pedal position (D2 * 256 + d3 - 24576) / 6.4
D4-D5: Wheel rotation: (D4 * 256 + D5 - 49152) / 19 (OBDZero)
D6-D7: Wheel rotation: (D6 * 256 + D7 - 49152) / 19 (OBDZero)

210

Gas pedal

Gas pedal sensor data is transmitted every 20ms. Data bits seem to be following:

D2: gas pedal position (%) D2 * 0.4

215

Vehicle speed

Transmitted every 20ms. Data bits:

D0-D1: vehicle speed: (D0 * 256 + D1) / 128

231

Brake pedal switch sensor

Transmitted every 20ms. Data bits:

D4: 0x02 if brake is free, 0x00 if brake pedal is pressed

236

Steering wheel sensor

Transmitted every 10ms. Data bits:

D0-D1: Steering wheel position with 0.5 degree accuracy, center point (0.0 degrees) = D0:0x10, D1:0x00. (((D0 * 256) + D1) - 4096) / 2 = steering wheel position in degrees). Negative angle - right, positive angle left.
D2-D3: possibly represents rate of change, defaults to D2:0x10, D3:0x00 when steering wheel is at rest.

285

Transmitted every 10ms. Data bits:

D0-D1: Acceleration (D0 * 256 + D1 - 2000) / 400

286

Transmitted every 100ms. Data bits:
298

Transmitted every 100ms. Data bits:

D0-D3: Motor temp D* - 40
D6-D7: Motor RPM D6 * 256 + D7 - 10000

29A

Vehicle identification number

Transmitted every 100ms. Data bits:
346

Estimated range, handbrake

Transmitted every 20ms. Data bits:

D4 handbrake D4 bit 32 released
D7 Estimated range: D7

373

Battery

Transmitted every 10ms. Data bits:

D0: Battery Cell Maximum Voltage (V): (D0 + 210) / 10 (OBDZero)
D1: Battery Cell Minimum Voltage (V): (D1 + 210) / 10 (OBDZero)
D2-D3: Battery pack amps (A) (D2 * 256 + D3 - 32768)/100
D4-D5: Battery pack voltage (V) (D4 * 256 + D5) / 10

374

Battery SOC

Transmitted every 100ms. Data bits:

D0: State of charge (%): (D0 - 10) / 2 (OBDZero)
D1: State of charge (%): (D1 - 10) / 2
D4: Cell Maximum temperature (oC): D4 - 50 (OBDZero)
D5: Cell Minimum temperature (oC): D5 - 50 (OBDZero)
D6: Battery 100% capacity (Ah): D6 / 2 (OBDZero)

377

OBC (data from https://openinverter.org/wiki/Mitsubish ... r_DCDC_OBC)

Transmitted every 100ms. Data bits:

D0-D1: 12V battery voltage in mV: D0 + D1
D2 + D3 12V battery charging current in A: (D2 + D3) / 10
D4-D6 = temperatures of OBC: D* - 40
D7 = status bytes

Bits D0
0: Error
1: In Operation
2:
3:
4:
5: Ready
6:
7:
384

Heating / Cooling

Transmitted every 100ms. Data bits:

D0: AC (A): (D0 * 256 + D1) / 1000
D3: Charging 12V Battery (A): D3 / 100 (OBDZero)
D4: Heating (A): D4 / 10
D5: Heating water temp return: (D5 - 32) / 1.8 ) - 3 OR D5 * 0.6 - 40
D6: Heating water temp flow: (D6 - 32) / 1.8 ) - 3 OR D6 * 0.6 - 40

389

Charger

Transmitted every 100ms. Data bits:

D0: Charge DC Voltage (V): 2 * D0 +1 (OBDZero)
D1: Charger Input voltage (V): D1
D2: Charge DC Input Current(A): D2 / 10 (OBDZero)
D3: Charger temp: D3 - 40 (D3 - 50 (OBDZero))
D4: Charger temp: D4 - 50 (OBDZero)
D6: Charging Input current (A): D6 / 10

3A4

Climate console

Transmitted every 100ms. Data bits:

D0: Heating level:
D0 bit 15 = 7 Middle
D0 bit 15 < 7 Cooling
D0 bit 15 > 7 Heating
D0: Recirculation: D0 bit 64
D0: AC On: D0 bit 128
D0: Fan spee MAX: D0 bit 32
D1: Fan speed (%): ((D1 bit 15) * 12.5) + 0.5
D1: Ventillation direction:
D1 >> 4 3
1/2: Face
3/4: Legs + Face
5/6: Legs
7/8: Legs + Windshield
9: Windshield

412

Speed + Odometer value

Transmitted every 100ms. Data bits:

D0: Key On D0 = 254
D1: Speed
D2-D4: Odometer ((((D2 >> 16) + D3) >> 8 ) + D4) 3

418

Gearshift

Transmitted every 20ms. Data bits:

D1:
80 : P
82 : R
78 : N
68 : D
131: B
50 : C

424

Light

Transmitted every 40ms. Data bits:
Bits D0 D1 D2 D6
0: hazard lights Unlock doors
1: Right Blinker Unlock driver door
2: Automatic light Upper Beam
3: Fog lights Wiper rear Rear window heating
4: Rear fog light Night headlights
5: Sidelights
6:
7:
696

Motor

Transmitted every 100ms. Data bits:

D2-D3: Motor current (A): (D2 * 256 + D3 - 500) / 20 (OBDZero)
D6-D7: Regeneration amps (A): (D6 * 256 + D7 -10000) /5 (OBDZero)

697

CHAdeMO

Transmitted every 100ms. Data bits:

D0: Connected
D1: Percent (%) (OBDZero)
D2: Charger current (A)

6E1 6E2 6E3 6E4

Battery pack cells

Transmitted every 40ms. Data bits:

MessageID: 6E1 / 6E2 / 6E3 / 6E4

PID_ID: MessageID - 1761

D0: CMU index (CMU_ID): D0 bit 15
D1: Temperature 1 (T1): D[1] - 50
D2: Temperature 2 (T2): D[2] - 50
D3: Temperature 3 (T3): D[3] - 50
D4-D5: Cell voltage 1 (V1): ((D4 * 256 + D5) / 200) + 2.1
D6-D7: Cell voltage 2 (V2): ((D6 * 256 + D7) / 200) + 2.1

Voltage index (VOLT_ID): (CMU_ID - 1) * 8 + (2 * PID_ID) Temperature index (TEMP_ID): (CMU_ID - 1) * 6 + (2 * PID_ID)

Voltage and temperature index modify based on CMU_id (because cmu 6 has only 4 cell) If CMU_ID >= 7

voltage index: VOLT_ID - 4

temperature index: TEMP_ID - 3

VOLT_ID = V1

VOLT_ID + 1 = V2

Temperature index fix based on PID_ID

If PID_ID == 0 {

TEMP_ID = T2
TEMP_ID + 1 = T3 } else {
TEMP_ID = T1 if CMU_ID != 6 && CMU_ID != 12 (this 2 CMU contain T2) - TEMP_ID + 1 = T2 }

Comment

1: Possibly only sent in debug mode.
2: Available when car in sleep and wake up with CAN message
3: bitshift: 1 >> 1 == 1 * 2, 1 >> 2 == 1 * 4 , 1 >> 8 == 1 * 256, 1 >> 16 == 1 * 65536 ,
x >> 34 == x * 2^34


michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » ven. 26 08 , 2022 19:22

D'autres infos que je ne maîtrise pas :mrgreen:

Collin Kidder collin80
Un gars qui écrit du code et le met sur Internet. Pense qu'il pourrait savoir quelque chose sur CANbus. Bricoler avec divers matériels embarqués

michelm
Messages : 210
Enregistré le : sam. 09 09 , 2006 21:36
Mes véhicules : Scoot'élec 1996 & I-MIEV 2017
Localisation : FR-63-Riom-

Re: OBD CAN BUS acquisition de données

Message par michelm » ven. 26 08 , 2022 20:04

Et un autre logiciel + matériel, qui permettrait des commandes à distances :
(Il peut aussi faire CAN Bus Data Logging)

OVMS

Open Vehicle Monitoring System (OVMS)

play.google.com/store/apps/openvehicles.OVMS

J'ai vu I-MIEV dans l'historique :
Open-Vehicle-Android/wiki/History

Guide utilisateur
openvehicles/userguide/index
Surveillance en direct
Nous fournissons une surveillance en direct des mesures du véhicule telles que l'état de charge, les températures, la pression des pneus et les conditions de défaut de diagnostic. Nous travaillons dur pour fournir des informations aussi détaillées que possible sur les composants internes d'un véhicule.
Présenté par le projet open-source OVMS, vous pouvez enfin surveiller à distance vos véhicules électriques de pointe. L'application affiche l'état de charge actuel (SOC), l'état de la porte/du coffre/du capot, la pression et la température des pneus (TPMS), les températures du système de base (PEM, moteur et ESS/batterie) et affiche la position GPS en direct de votre voiture sur le carte.

Bien que le matériel OVMS soit nécessaire pour surveiller à distance votre Tesla Roadster (ou d'autres véhicules pris en charge), vous pouvez essayer cette application et voir ce qu'elle fait via le compte de voiture DEMO inclus.
Et qu’est ce que ça peut faire sur nos petites autos :

https://docs.openvehicles.com/en/latest ... index.html
Métriques spécifiques au trio

NB! Toutes les métriques ne sont pas correctes ou testées correctement. C'est un travail en cours de réalisation.
Description de la métrique
xmi.b.power.min L'utilisation minimale de la batterie
xmi.b.power.max L'utilisation maximale de la batterie
xmi.e.lowbeam État des feux de croisement
xmi.e.highbeam État des feux de route
xmi.e.frontfog État des feux de brouillard avant
xmi.e.rearfog État des feux de brouillard arrière
xmi.e.rightblinker État du clignotant droit
xmi.e.leftblinker État du clignotant gauche
xmi.e.warninglight État du voyant d'avertissement
xmi.c.kwh.dc Énergie de charge côté CC en kWh
xmi.c.kwh.ac Énergie de charge côté AC en kWh
xmi.c.efficiency Efficacité de charge (DC/AC)
xmi.c.power.ac Puissance de charge côté AC en kW
xmi.c.power.dc Puissance de charge côté DC en kW
xmi.c.time Temps de charge (h:mm.ss)
xmi.c.soc.start Début de charge soc en %
xmi.c.soc.stop Arrêt de charge soc en %
xmi.e.heating.amp Consommation d'énergie de chauffage en A
xmi.e.heating.watt Consommation d'énergie de chauffage en W
xmi.e.heating.temp.return Température de l'eau de retour du chauffage
xmi.e.heating.temp.flow Température d'eau de départ du chauffage
xmi.e.ac.amp Consommation d'énergie CA en A
xmi.e.ac.watt Consommation d'énergie AC en W
xmi.e.trip.park Compteur de début de trajet en km
xmi.e.trip.park.energy.used Énergie consommée en kWh
xmi.e.trip.park.energy.recuperated Énergie récupérée en kWh
xmi.e.trip.park.heating.kwh Consommation d'énergie du chauffage pendant le déclenchement en kWh
xmi.e.trip.park.ac.kwh Consommation d'énergie CA pendant le trajet en kWh
xmi.e.trip.park.soc.start Démarrage soc
xmi.e.trip.park.soc.stop Trip stop soc
xmi.e.trip.charge Compteur de début de trajet en km depuis la charge
xmi.e.trip.charge.energy.used Énergie consommée en kWh depuis la charge
xmi.e.trip.charge.energy.recuperated Récupération.. d'énergie en kWh depuis la charge
xmi.e.trip.charge.heating.kwh Consommation de chauffage en kWh depuis la charge
xmi.e.trip.charge.ac.kwh Consommation d'énergie CA en kWh depuis la charge
xmi.e.trip.charge.soc.start Démarrage trajet soc depuis charge
xmi.e.trip.charge.soc.stop Trip stop soc depuis la charge

Notez que certaines métriques sont interrogées à des taux différents des autres et que certaines métriques ne sont pas disponibles lorsque la voiture est éteinte. Cela signifie qu'après un redémarrage de l'OVMS, certaines mesures seront manquantes jusqu'à ce que la voiture soit allumée et peut-être conduite pendant quelques minutes.

Commandes personnalisées
Commandes en lecture seule
xmi voyage
Renvoie des informations sur le dernier trajet, à partir du démarrage de la voiture avec la clé.
tripc xmi
Renvoie des informations sur le trajet depuis la dernière charge.
xmi aux
Imprime le niveau de tension de la batterie auxiliaire.
vin xmi
Imprime quelques informations supplémentaires tirées du numéro VIN de la voiture.
L'importateur en GB :
openenergymonitor.com/ovms/

open-vehicle-monitoring-system-ovms-wifi-4g-sim-ant-included/

Un tableau pour résumer ce qui est possible :
OVMS_tableau_01.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Répondre

Retourner vers « PSA "génération 2" et Mitsubishi i-MiEV »