Aller au contenu
tben

Analyses détaillées des données circulant sur le bus CAN pour les TM3 SR+ LFP55

Messages recommandés

Le 02/06/2023 à 17:31, tben a dit :

mais un 12 restera un 12 en montée ou en descente et pareil pour le 14. Ce 14 est d'ailleurs une vraie plaie. Je laisse Jboll le découvrir.

Ça, c'était un teasing.

Je n'ai pas trouvé moi non plus la réponse, mais c'est le sujet sur lequel je travaille depuis des mois. C'est ce qui permettrait de reproduire le Remaining. Et peut-être un jour à deviner le NFP.

Modifié par tben

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 17:28, Jboll a dit :
Le 02/06/2023 à 17:25, tben a dit :

0.5 = 0.12 + 0.12 + 0.12 + 0.14

bien vu 👍 

cela aurait été plus simple s'ils avaient fait 0.5 = 0.125 + 0.125 + 0.125 + 0.125 . Même 0.5 = 0.12 + 0.13 + 0.12 + 0.13 aurait été compréhensible. Mais pourquoi 0.14 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 18:42, tben a dit :

Il nous faut vérifier que ce pid nous permet d'avoir des données plus fréquentes et pas un résumé de l'autre pid

Il est toutes les deux secondes, au lieu d’une minute pour les autres

 

 ps: pourquoi tu appelles ça un Pid? C’est le P de quoi?

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 18:46, tben a dit :

Je n'ai pas trouvé moi non plus la réponse, mais c'est le sujet sur lequel je travaille depuis des mois. C'est ce qui permettrait de reproduire le Remaining. Et peut-être un jour à deviner le NFP.

Exactement, quand tu vois les graphiques de points de mon autonomie à 100% on retrouve encore (et encore) ce même motif

 

on trouvera bien l’explication à force de pousser le destin 😌 

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 18:50, tben a dit :

cela aurait été plus simple s'ils avaient fait 0.5 = 0.125 + 0.125 + 0.125 + 0.125 . Même 0.5 = 0.12 + 0.13 + 0.12 + 0.13 aurait été compréhensible. Mais pourquoi 0.14 ?

Moi je me demanderai pourquoi 0,5? Pourquoi se réaligner sur cette valeur?

 

 Pourquoi se réalignée ? Pourquoi avoir des valeurs remarquables?


ça sent le mapping vers une courbe découpée elle aussi en petit morceaux selon les mêmes valeurs remarquables

 

 c’est la seule explication que je vois qui expliquerai à la fois que le remaining puissent descendre en charge, mais aussi que le remaining peut être estimé de nouveau après une veille plus ou moins longue

 

 autrement dit je pense que c’est bien la tension qui est utilisé, mis dans une case remarquable, projecté sur une courbe pour avoir l’équivalent en kWh

 

 je vais essayé de faire un dessin pour que ce soit plus clair, avec des mots c’est pas évident à décrire

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 18:53, Jboll a dit :
Le 02/06/2023 à 17:42, tben a dit :

Il nous faut vérifier que ce pid nous permet d'avoir des données plus fréquentes et pas un résumé de l'autre pid

Il est toutes les deux secondes, au lieu d’une minute pour les autres

Mais tu as ceux de 3 cellules avec la même fréquence.

Est-ce que la donnée que tu as toutes les 2 secondes n'est pas la même chose que le résumé de la dernière minute ? Il faudrait regarder si les 106 valeurs de la dernière minute sont en accord avec le min et le max, ou si les valeurs toutes les 2 secondes t'annoncent un changement de valeur de la cellule concernée.

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 19:04, Jboll a dit :

Moi je me demanderai pourquoi 0,5?

tu peux mais parce que c'est la moitié de 1, je te dirai.

Le 02/06/2023 à 19:04, Jboll a dit :

ça sent le mapping vers une courbe découpée

clair, mais pourquoi ne pas avoir choisi un decoupage tous les 0.1 ou les 0.2 , ou tous les 0.12, mais tout le temps.

 

Le 02/06/2023 à 19:04, Jboll a dit :

autrement dit je pense que c’est bien la tension qui est utilisé, mis dans une case remarquable, projecté sur une courbe pour avoir l’équivalent en kWh

Ah Ah, on y arrive. C'est pourquoi je suis rentré dans ton étude. La mienne est de deviner quand passera la prochaine valeurs de 0.12 ou 0.14. Et je me demande depuis que tu m'y as encouragé pas ton étude si on peut le deviner par  la tension, tu te poses la question maintenant. Mais regarde une de mes courbes de tension, celle-ci diminue alors que les kWh montent (tu ne veras les kWh, car je ne te les ais pas mis en dessous).

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 19:59, tben a dit :

Je ne sais pas, Planetaire et Priusfan les appelaient comme ça. Alors je respecte mes maitres

Ok, la seul référence que je connais a pid c’est process id, comme tu trouvé sur les systèmes d’exploitation, mais ça doit pas être ça

 

 la spécification dbc appelle ça un message id

http://mcu.so/Microcontroller/Automotive/DBC_File_Format_Documentation.pdf

 

 ou pour le bus, juste id (basique ou étendu selon le nombre de bit)

http://esd.cs.ucr.edu/webres/can20.pdf
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 20:09, tben a dit :

Mais tu as ceux de 3 cellules avec la même fréquence.

Est-ce que la donnée que tu as toutes les 2 secondes n'est pas la même chose que le résumé de la dernière minute ? Il faudrait regarder si les 106 valeurs de la dernière minute sont en accord avec le min et le max, ou si les valeurs toutes les 2 secondes t'annoncent un changement de valeur de la cellule concernée.

Tu as raison, je regarderai aux abords de la fin de charge, là où les tensions sont les plus différentes

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 19:35, Jboll a dit :

Tu as raison, je regarderai aux abords de la fin de charge, là où les tensions sont les plus différentes

Regardes partout, tu as les données. Un petit script, et tu as la réponse.

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 20:22, tben a dit :

Mais regarde une de mes courbes de tension, celle-ci diminue alors que les kWh montent (tu ne veras les kWh, car je ne te les ais pas mis en dessous)

Tu parles de ta courbe de charge avec les bizarreries des tensions des cellules?

 

 

Le 02/06/2023 à 20:22, tben a dit :

Ah Ah, on y arrive

Hehe… 

 

Le 02/06/2023 à 20:22, tben a dit :

clair, mais pourquoi ne pas avoir choisi un decoupage tous les 0.1 ou les 0.2 , ou tous les 0.12, mais tout le temps

Est ce que c’est pareil sur les autres chimie?

edit : et pour la 60 kWh?

Modifié par Jboll

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 19:44, Jboll a dit :

Est ce que c’est pareil sur les autres chimie?

edit : et pour la 60 kWh?

Il faudrait que tu fasses des adeptes et qu'ils ouvrent une discussion !

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 18:50, tben a dit :

cela aurait été plus simple s'ils avaient fait 0.5 = 0.125 + 0.125 + 0.125 + 0.125 . Même 0.5 = 0.12 + 0.13 + 0.12 + 0.13 aurait été compréhensible. Mais pourquoi 0.14 ?

Ça ressemble à un problème de division et de reste. Admettons qu’ils n’utilise pas des kWh mais des dizaines de Wh (precision du bus?!) , ça fait 50/4 -> 12 

(oui et pas 13, bien que ça fasse 12.5, sur un nombre entier (int) si tu divise par un autre nombre entier, la partie décimal est enlevé, il n’y a pas d’arrondi)

 bref, au bout de 3 fois 12, ça fait 36, il te manque 14. CQFD ? 
(Je sais plus pour la précision du bus sur le remaining mais j’imagine que ce 2 nombres après la virgule, a vérifier)

 

 l’erreur qu’on fait c’est peut-être qu’on utilise des multiple d’unités connu, des Wh, des kWh etc. Alors que quand tu regarde le bus can tout est en entier. Ça rejoins la remarque de @MrFurieux qui avait pointé du doigt le fait que j’ai utilisé des doubles dans mes calculs. J’avais dit que je testerai avec que des valeurs entières (pas encore fait) mais je pense que c’est une très bonne piste en complétant avec la division entière expliquée au dessus de ce paragraphe

 

🤞

Modifié par Jboll

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 20:49, tben a dit :

Celle-ci

Ah ok je vois ce que tu veux dire, sur ta courbe la tension diminue donc tu considères que les kWh peuvent pas augmenter, mais c’est justement pour ça que je pense qu’il découpe cette courbe en petit bout, et une tension qui descend dans un bout qui descend c’est normal, donc énergie qui augmente

 

 il faut vraiment que je fasse un schéma…

 

Modifié par Jboll

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 20:50, tben a dit :

Il faudrait que tu fasses des adeptes et qu'ils ouvrent une discussion !

Oui, ou je que fasse une peu de recherche sur les captures écrans de SMT qu’ils auraient fait pour voir si on a les mêmes multiples …

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 00:24, Jboll a dit :

Je crois comprendre ce que tu dit, tu veux dire que le BMS utiliserait des  valeurs entières a la place des nombre a virgule. Donc pas de calcul de "double" mais de "long". Ça voudrait dire qu'il a la valeur de la tension en mV (admettons) et qu'il aura la valeur, par exemple, de 312455mV qu'il multipliaient avec une valeur en mA,  comme par exemple 12000 mA. Et la multiplication tient dans 64 bits. C'est sans doute vrai. Mais tu risque d'avoir un problème avec le compteur qui va vite monter. Ça se tente, je peux essayer pour voir...

A vrai dire je n'ai pas d'idée sur ce que fait le BMS. A ma connaissance dans les dernières fuites de données Tesla n'y a pas de code, c'est bien dommage 🙂

Je répondais dans la même veine que la remarque précédente, des généralités sur le calcul numérique, en particulier à ta phrase "rien de plus précis que le type double". En fait à nb de bits égal, un type entier est toujours plus précis (= plus de chiffres significatif) qu'un type flottant. A la fois pour les calculs et la représentation, le type double donne un sentiment de sécurité pas toujours justifié. A contrario, un entier 64 bits peut représenter jusqu'à 10^19, avant de faire déborder un compteur il y a de la marge...

NB en C pour avoir 64 bits à coup sûr dans un entier le type n'est pas "long", c'est "long long".

Mais bref, je ne sais pas s'il y a vraiment un pb dans ton code (sans doute pas), j'ai voulu regarder les intégrations mais j'ai pas trouvé ...?

Les remarques de @LIION (cf ci-dessous) m'inquiètent par contre, j'ai essayé d'investiguer et effectivement on lit et on entend des histoires de capacités variables suivant les puissance de charge !

 

Le 02/06/2023 à 07:43, Jboll a dit :

J'ai justement fait une recharge a basse puissance pour être sûr d'en mettre un max

 

Bien que effectivement je pense que ça joue pas vraiment, car le cas d'une  recharge rapide a puissance constante n'existe pas sur un SUC par exemple, la puissance va varier au cours de la charge, diminuant petit a petit jusqu'à l'arrêt, on est pas a courant constant.

Et cette diminution de la puissance va pouvoir en mettre plus donc... Si on voit pas de différence sur un SUC, c'est, je pense, parceque la puissance de charge n'est pas constante. A la différence des courbes que montre @LIION

Au SUC ça baisse mais on reste à des puissances élevées presque jusqu'à la fin. Pour les faibles puissances de charge, si on prend ce test par exemple, on a des variations significatives (cellule de 100 Ah):

image.png.fb9cc4ed4610f1d936718c7e7aabf4a4.png

 

Et pire, la capacité en Ah est différente à la décharge:

image.png.8d952da2d4ee519bf9b8a46702c38c30.png

 

Où partent les charges ? Est-ce que la cellule ne se décharge pas entièrement ? Si oui, qu'est-ce qui se passe quand on répète la charge ? Si non, où partent les électrons ?

🤔

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 21:36, MrFurieux a dit :

NB en C pour avoir 64 bits à coup sûr dans un entier le type n'est pas "long", c'est "long long".

Mais bref, je ne sais pas s'il y a vraiment un pb dans ton code (sans doute pas), j'ai voulu regarder les intégrations mais j'ai pas trouvé ...?

En java un long ou un double c'est 64bits (il n'y a pas de long long)

Le 02/06/2023 à 20:36, tben a dit :

tu as les données

Je les publierai, je sais pas où, je pensais à github, je ne sais pas si c'est limité en taille, le fichier fait 130 Mo pour les data

 

Le 02/06/2023 à 21:36, MrFurieux a dit :

A vrai dire je n'ai pas d'idée sur ce que fait le BMS. A ma connaissance dans les dernières fuites de données Tesla n'y a pas de code, c'est bien dommage 🙂

Je répondais dans la même veine que la remarque précédente, des généralités sur le calcul numérique, en particulier à ta phrase "rien de plus précis que le type double". En fait à nb de bits égal, un type entier est toujours plus précis (= plus de chiffres significatif) qu'un type flottant. A la fois pour les calculs et la représentation, le type double donne un sentiment de sécurité pas toujours justifié. A contrario, un entier 64 bits peut représenter jusqu'à 10^19, avant de faire déborder un compteur il y a de la marge...

NB en C pour avoir 64 bits à coup sûr dans un entier le type n'est pas "long", c'est "long long".

Mais bref, je ne sais pas s'il y a vraiment un pb dans ton code (sans doute pas), j'ai voulu regarder les intégrations mais j'ai pas trouvé ...?

Les remarques de @LIION (cf ci-dessous) m'inquiètent par contre, j'ai essayé d'investiguer et effectivement on lit et on entend des histoires de capacités variables suivant les puissance de charge !

 

Au SUC ça baisse mais on reste à des puissances élevées presque jusqu'à la fin. Pour les faibles puissances de charge, si on prend ce test par exemple, on a des variations significatives (cellule de 100 Ah):

image.png.fb9cc4ed4610f1d936718c7e7aabf4a4.png

 

Et pire, la capacité en Ah est différente à la décharge:

image.png.8d952da2d4ee519bf9b8a46702c38c30.png

 

Où partent les charges ? Est-ce que la cellule ne se décharge pas entièrement ? Si oui, qu'est-ce qui se passe quand on répète la charge ? Si non, où partent les électrons ?

🤔

 

ça c'est pas une bonne nouvelle....

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 22:30, Jboll a dit :

Je les publierai, je sais pas où, je pensais à github, je ne sais pas si c'est limité en taille, le fichier fait 130 Mo pour les data

C’est rien ça, aucun souci. Il y a des limites, mais elles sont très élevées pour les projets open-source.  

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 20:36, tben a dit :

Regardes partout, tu as les données. Un petit script, et tu as la réponse.

Bon, alors,

Sur les graphiques ci-dessous :

-j'ai tracé en rouge les relevés de la tension Max des cellules et en bleu la Min (message ID332BattBrickMinMax)

-en vert les tensions des cellules issuent du messages 1025, donnant les tensions des cellules 3 par 3. Par contre j'ai déplacé temporellement les messages "wagon" sur la date de la locomotive. Comme si tout les messages des tensions étaient reçu en même temps

- en points colorés les 106 tensions des cellules issue du message 1025 sans modification de leur date respectifs 

 

Le vert est parfaitement à l'intérieur :

image.png.cc15009b6e2819ff489af19b1d6d70e4.png

(Ps : j'avais dit que je ferai un post sur ma 60, j'ai l'autre bout de la courbe qui est interressant, j'y pense, j'y pense...trop de sujets)

 

Avec les tensions aux dates reçu, on voit bien que ces points sont décalé par rapport aux deux autres courbes, la verte (que j'ai reconstruit) et la rouge qui est le max 

image.png.d1664b2f239dea4da2e1018282f790c9.png

Donc c'est bien une locomotive : c'est à dire qu'à un moment toutes les tensions des cellules sont mesurées et après on passe 1 minute à les envoyer. Ce qui créé ce décalage qu'on voit sur le graphique entre les points de couleur et la courbe rouge

 

On constate aussi que la fréquence des tensions unitaire est toutes les minutes (en vert) et pas du tout précis, alors que le message contenant les min/max a beaucoup plus de point et permet donc une précision suffisante pour couper la charge

 

 

Mais... (parce que sinon c'est trop beau ;)) ce min/max a aussi des paliers, (décidément  😀) et donc il arrive qu'il soit pas si précis que ça lorsque les tensions sont proches, par exemple en charge mais avec un SOC plus faible

Exemple :

image.png.0ae9077c1cd5cae04e3cc00aa1d385ba.png

 

Ou encore :

image.png.2acf8bb0510fcf0d5bcdf4c48cb956a9.png

 

Et c'est des paliers de 0.002 V, soit la précision du bus :

 

BO_ 818 ID332BattBrickMinMax: 6 VehicleBus
 SG_ BattBrickMultiplexer332 M : 0|2@1+ (1,0) [0|0] ""  Receiver
 SG_ BattBrickempMaxNum332 m0 : 2|4@1+ (1,0) [0|0] ""  Receiver
 SG_ BattBrickTempMinNum332 m0 : 8|4@1+ (1,0) [0|0] ""  Receiver
 SG_ BattBrickTempMax332 m0 : 16|8@1+ (0.5,-40) [0|0] "C"  Receiver
 SG_ BattBrickTempMin332 m0 : 24|8@1+ (0.5,-40) [0|0] "C"  Receiver
 SG_ BattBrickModelTMax332 m0 : 32|8@1+ (0.5,-40) [0|0] "C"  Receiver
 SG_ BattBrickModelTMin332 m0 : 40|8@1+ (0.5,-40) [0|0] "C"  Receiver
 SG_ BattBrickVoltageMax332 m1 : 2|12@1+ (0.002,0) [0|0] "V"  Receiver
 SG_ BattBrickVoltageMin332 m1 : 16|12@1+ (0.002,0) [0|0] "V"  Receiver
 SG_ BattBrickVoltageMaxNum332 m1 : 32|7@1+ (1,1) [0|0] ""  Receiver
 SG_ BattBrickVoltageMinNum332 m1 : 40|7@1+ (1,1) [0|0] ""  Receiver

 

Par contre ça ne gène pas pour arrêter la charge, c'est juste que c'est des paliers de 0.002 V

Et sans doute pour ça que la charge s'arrête à 3.802 V (il doit y avoir une ligne de code type "if (max>3.8) then stopCharge" 😄)

 

 

Le 02/06/2023 à 20:57, Jboll a dit :

(Je sais plus pour la précision du bus sur le remaining mais j’imagine que ce 2 nombres après la virgule, a vérifier)

Même pas deux nombres après la virgule

BO_ 850 ID352BMS_energyStatus: 8 VehicleBus
 SG_ BMS_energyStatusMultiplexer M : 0|2@1+ (1,0) [0|3] "" VehicleBus
 SG_ BMS_nominalFullPackEnergy m0 : 16|16@1+ (0.02,0) [0|1310.7] "kWh" VehicleBus
 SG_ BMS_nominalEnergyRemaining m0 : 32|16@1+ (0.02,0) [0|1310.7] "kWh" VehicleBus
 SG_ BMS_idealEnergyRemaining m0 : 48|16@1+ (0.02,0) [0|1310.7] "kWh" VehicleBus
 SG_ BMS_fullChargeComplete m1 : 15|1@1+ (1,0) [0|1] "" VehicleBus
 SG_ BMS_energyBuffer m1 : 16|16@1+ (0.01,0) [0|655.35] "kWh" VehicleBus
 SG_ BMS_expectedEnergyRemaining m1 : 32|16@1+ (0.02,0) [0|1310.7] "kWh" VehicleBus
 SG_ BMS_energyToChargeComplete m1 : 48|16@1+ (0.02,0) [0|1310.7] "kWh" VehicleBus

ça doit venir de là le problème de division entière

 

Edit : la valeur entière du remaining doit être multiplié par 0.02 pour avoir des kWh. Mais multiplier par 0.02 c'est pareil que diviser par 50. On retombe sur le post précédent : ça tombe pas juste. C'est ce qui explique les paliers de taille non constante a mon avis

 

Modifié par Jboll

Partager ce message


Lien à poster
Partager sur d’autres sites

Le 02/06/2023 à 21:57, Jboll a dit :

Et c'est des paliers de 0.002 V,

et moins précis que les données individuelles

12 bits pour le résumé, 16 bits pour le détail

Le 02/06/2023 à 22:00, planetaire a dit :

Petite parenthèse en plein milieu de vos recherches : PID

Merci, j'avais pas rêvé. Tu es toujours le maitre.

 

Le 02/06/2023 à 21:57, Jboll a dit :

ça doit venir de là le problème de division entière

Interessant. ça colerait.  Je vais reflechir avec cette idée en tête.

Modifié par tben

Partager ce message


Lien à poster
Partager sur d’autres sites





×
×
  • Créer...
Automobile Propre

Automobile Propre est un site d'information communautaire qui est dédié à tout ce qui concerne l'automobile et l'environnement. Les thématiques les plus populaires de notre blog auto sont la voiture électrique et les hybrides, mais nous abordons également la voiture GNV / GPL, les auto à l'hydrogène, les apects politiques et environnementaux liés à l'automobile. Les internautes sont invités à réagir aux articles du blog dans les commentaires, mais également dans les différents forums qui sont mis à leur dispositon. Le plus populaire d'entre eux est certainement le forum voiture électrique qui centralise les discussions relatives à l'arrivée de ces nouveaux véhicules. Un lexique centralise les définitions des principaux mots techniques utilisés sur le blog, tandis qu'une base de données des voitures (commercialisées ou non) recense les voitures électriques et hybrides.