diff --git a/docs/courriers/20260905-garantie-pylontech.md b/docs/courriers/20260905-garantie-pylontech.md index 102c493..cf6837b 100644 --- a/docs/courriers/20260905-garantie-pylontech.md +++ b/docs/courriers/20260905-garantie-pylontech.md @@ -88,10 +88,16 @@ communiquerai le résultat : il dira si ces cellules sont récupérables ou non. `soh`, et à partir de quelle valeur Pylontech considère qu'une cellule doit être traitée ? -Je tiens à votre disposition l'ensemble des relevés bruts : exports BatteryView, -sorties console verbatim des huit modules, et historiques complets tension par -cellule. Un rapport détaillé est également disponible en français, en anglais -et en chinois, si cela facilite l'échange avec le constructeur. +Vous trouverez en pièce jointe l'ensemble du dossier +(`archive-pylontech-20260905.tar.gz`, 4,8 Mo) : un dossier par module nommé par +son code-barres, contenant les exports BatteryView d'origine, les sorties +console verbatim, l'historique complet tension par cellule et le journal +d'événements. Le rapport d'analyse s'y trouve également en **français, anglais +et chinois**, au format HTML — il s'ouvre dans un navigateur sans connexion, ce +qui devrait faciliter la transmission au constructeur. + +Le fichier `LISEZ-MOI.md` à la racine de l'archive, également trilingue, indique +quel module est quel et par où commencer la lecture. Restant à votre disposition pour toute mesure complémentaire que Pylontech souhaiterait, diff --git a/docs/mesures/archive-pylontech-20260905.tar.gz b/docs/mesures/archive-pylontech-20260905.tar.gz index a1b1e2e..9dbff58 100644 Binary files a/docs/mesures/archive-pylontech-20260905.tar.gz and b/docs/mesures/archive-pylontech-20260905.tar.gz differ diff --git a/docs/mesures/archive-pylontech-20260905/2023-Y230202C30371426/202609052031-suivi.csv b/docs/mesures/archive-pylontech-20260905/2023-Y230202C30371426/202609052031-suivi.csv new file mode 100644 index 0000000..16c213b --- /dev/null +++ b/docs/mesures/archive-pylontech-20260905/2023-Y230202C30371426/202609052031-suivi.csv @@ -0,0 +1,5 @@ +heure_reelle,etat,courant_mA,c1_mV,c2_mV,c3_mV,c4_mV,c5_mV,c6_mV,c7_mV,c8_mV,c9_mV,c10_mV,c11_mV,c12_mV,c13_mV,c14_mV,c15_mV,ecart_mV +2026-09-05T18:31:45.233Z,Y230202C30371426,,3290,3291,3292,3292,3292,3290,3291,3292,3292,3291,3290,3291,3292,3292,3292,2 +2026-09-05T18:31:45.388Z,Y230202C30371425,,3291,3292,3291,3292,3290,3290,3292,3292,3292,3290,3290,3292,3292,3292,3290,2 +2026-09-05T18:31:45.633Z,Y230202C30371431,,3290,3292,3292,3292,3291,3289,3292,3292,3292,3291,3290,3292,3292,3292,3291,3 +2026-09-05T18:31:45.788Z,Y230202C30371427,,3289,3291,3291,3291,3291,3289,3291,3291,3291,3291,3289,3291,3292,3292,3291,3 diff --git a/docs/mesures/archive-pylontech-20260905/2023-Y230202C30371426/202609052040-suivi.csv b/docs/mesures/archive-pylontech-20260905/2023-Y230202C30371426/202609052040-suivi.csv new file mode 100644 index 0000000..a8d3e17 --- /dev/null +++ b/docs/mesures/archive-pylontech-20260905/2023-Y230202C30371426/202609052040-suivi.csv @@ -0,0 +1,5 @@ +heure_reelle,etat,courant_mA,c1_mV,c2_mV,c3_mV,c4_mV,c5_mV,c6_mV,c7_mV,c8_mV,c9_mV,c10_mV,c11_mV,c12_mV,c13_mV,c14_mV,c15_mV,ecart_mV +2026-09-05T18:40:18.873Z,Y230202C30371426,,3304,3304,3304,3304,3303,3303,3304,3303,3304,3303,3304,3303,3304,3304,3303,1 +2026-09-05T18:40:19.033Z,Y230202C30371425,,3303,3303,3303,3304,3304,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,1 +2026-09-05T18:40:19.191Z,Y230202C30371431,,3303,3303,3304,3303,3303,3303,3303,3303,3303,3303,3303,3304,3303,3304,3303,1 +2026-09-05T18:40:19.348Z,Y230202C30371427,,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,3303,0 diff --git a/docs/mesures/archive-pylontech-20260905/LISEZ-MOI.md b/docs/mesures/archive-pylontech-20260905/LISEZ-MOI.md index cf2651e..d44d675 100644 --- a/docs/mesures/archive-pylontech-20260905/LISEZ-MOI.md +++ b/docs/mesures/archive-pylontech-20260905/LISEZ-MOI.md @@ -73,5 +73,7 @@ BatteryView `*.txt` exports carry the raw module clock. - `*-evenements-distant-*.csv` — journal d'événements, à la seconde, déclenchements uniquement - `*-console.txt` — sorties `info`, `stat`, `soh`, `pwr` verbatim - `*_history_*.txt`, `*_event_*.txt` — exports BatteryView d'origine (UTF-16) +- `rapport/` — le rapport d'analyse en français, anglais et chinois (HTML, + s'ouvre dans n'importe quel navigateur, sans connexion) - `commun/` — sessions console couvrant plusieurs modules a la fois, relevés simultanés des trois modules du pack 2022, et captures d'écran BatteryView diff --git a/docs/mesures/archive-pylontech-20260905/rapport/rapport-FR.html b/docs/mesures/archive-pylontech-20260905/rapport/rapport-FR.html new file mode 100644 index 0000000..50db1d9 --- /dev/null +++ b/docs/mesures/archive-pylontech-20260905/rapport/rapport-FR.html @@ -0,0 +1,184 @@ +
Huit modules, quinze cellules chacun. Dix de ces cellules brident la charge des quatre-vingt-quinze autres. Voici lesquelles, comment on le sait, et ce qu’on peut en faire.
+Le parc n’est pas usé. Quatre modules sur huit sont irréprochables : +soixante cellules sans une seule anomalie, après plus de trois cents cycles. Un +cinquième l’est tout autant.
+Trois modules portent l’ensemble du problème, et à l’intérieur de ces trois, +dix cellules. Quand l’une d’elles atteint 3550 mV, le BMS réduit +le courant de charge — non pas de son module, mais de tout le parc. +Cinq modules sains sont bridés par dix cellules.
L’identité d’un module est son code-barres, jamais son adresse : chaque +chaîne renumérote ses modules à partir de 1, il existe donc deux « module 1 » +dans cette installation.
| Code-barres | Pack | Adr. | Cellules atteintes | Lesquelles | Écart médian | Surtensions | Sous-tensions | |
|---|---|---|---|---|---|---|---|---|
| K220803C30160322 | ancien | 1 | 4 | 6 · 7 · 12 · 14 | 108 | 498 | 86 | en service |
| K220803C30160323 | ancien | 2 | 0 | — | 6 | 0 | 0 | en service |
| K220803C30160319 | ancien | 3 | 5 | 2 · 6 · 10 · 12 · 15 | 45 | 416 | 179 | en service |
| K220803C30160324 | ancien | 4 | 1 | 15 | 57 | 29 | 59 | isolée |
| Y230202C30371426 | récent | 1 | 0 | — | 2 | 1 | 1 | en service |
| Y230202C30371425 | récent | 2 | 0 | — | 2 | 1 | 1 | en service |
| Y230202C30371431 | récent | 3 | 0 | — | 2 | 1 | 1 | en service |
| Y230202C30371427 | récent | 4 | 0 | — | 2 | 1 | 0 | en service |
Lisez la colonne des écarts médians. Les cinq modules sains tiennent entre +2 et 6 millivolts ; les trois autres sont à 45, 57 et 108. Le même +contraste apparaît sur les surtensions : 498 pour le premier +module contre une seule pour chacun des quatre du pack récent, +qui ont pourtant encaissé dix fois plus de cycles.
+Les soixante cellules du pack récent balayent toutes entre 168 et 191 mV +d’amplitude, sans exception. L’inventaire est clos.
+ +Le 5 septembre, la console a été branchée sur les trois modules du pack +ancien pendant que l’alarme montait. Ce qui suit est le relevé, à la seconde.
| Heure | Ce qui se passe | |
|---|---|---|
| 13:04:48 | cellule 7 du module …0322 à 3526 mV, cellule 6 du module …0319 à 3541 | sous le seuil |
| 13:05:08 | les mêmes à 3555 et 3575 mV | niveau 3 franchi |
| 13:05:13 | le BMS abaisse le courant de charge autorisé de 50 à 30 A | cinq secondes plus tard |
| 13:15:10 | les cellules redescendent à 3499 et 3522 mV, l’alarme repasse au vert | le plafond, lui, reste à 30 A |
| 13:22:40 | plafond 30 → 40 A | après 7 min 31 s |
| 13:26:39 | plafond 40 → 35 A, meneuses à 3563 et 3548 mV | il redéclenche |
| 13:38:10 | plafond 35 → 40 A | après 11 min 31 s |
La découverte la plus utile tient dans la quatrième +ligne : l’alarme repasse au vert bien avant que le plafond ne remonte. Chercher +l’alarme dans les journaux fait donc manquer l’essentiel du phénomène — elle dure +quelques minutes, le bridage dure des heures.
Les seuils ne sont pas des valeurs choisies : ce sont ceux que le matériel +déclare lui-même, lus dans sysinfo du LV-HUB.
La question décide de ce qu’un rééquilibrage peut rendre. Deux points de +mesure suffisent à la trancher, sur la même cellule à deux courants différents.
+| courant par cellule | écart | |
|---|---|---|
| 13:04:48 | 6,33 A | 163 mV |
| 14:05:42 | 0,04 A | 46 mV |
La pente donne ≈ 18,6 mΩ de résistance excédentaire sur la +cellule meneuse, vingt à quarante fois celle d’une cellule saine. L’ordonnée à +l’origine, ≈ 46 mV, est le vrai décalage de charge.
+Contrôle indépendant : cette droite prédit 312 mV à 100 A de courant parc. +L’écart maximal réellement enregistré sur trente-sept jours est de 280 mV.
+Donc sur les ~190 mV d’écart en charge, 46 mV seulement sont un +décalage — le reste est de la capacité perdue. Un rééquilibrage parfait +ramènerait le déclenchement de 3555 à environ 3510 mV : sous le seuil, mais avec +quarante millivolts de marge seulement.
+ +Pas de l’usure. Le pack récent a encaissé trois cent quarante cycles en un +an et ses soixante cellules sont intactes : cycler n’abîme pas ces modules. Et le +module témoin a partagé la chaîne, les courants et les journées des deux abîmés +sans une égratignure.
+Les deux cellules terminales du parc sont descendues à 2953 +et 2939 mV, sous le seuil d’alarme basse. Un accumulateur +au lithium-fer-phosphate mené là sous charge perd de la capacité de façon +irréversible. Ces cellules n’ont pas vieilli, elles ont été vidées trop +bas.
+ +Eight modules, fifteen cells each. Ten of those cells throttle the charging of the other ninety-five. Here is which ones, how we know, and what can be done about it.
+The pack is not worn out. Four modules out of eight are flawless: +sixty cells without a single anomaly, after more than three hundred cycles. A +fifth is just as clean.
+Three modules carry the entire problem, and within those three, ten +cells. When one of them reaches 3550 mV the BMS reduces the charge +current — not for its own module, but for the whole pack. Five +healthy modules are throttled by ten cells.
A module's identity is its barcode, never its address: each chain renumbers +its modules from 1, so there are two “module 1” in this installation.
| Barcode | Pack | Addr. | Affected cells | Which ones | Median spread | Overvoltage | Undervoltage | |
|---|---|---|---|---|---|---|---|---|
| K220803C30160322 | older | 1 | 4 | 6 · 7 · 12 · 14 | 108 | 498 | 86 | in service |
| K220803C30160323 | older | 2 | 0 | — | 6 | 0 | 0 | in service |
| K220803C30160319 | older | 3 | 5 | 2 · 6 · 10 · 12 · 15 | 45 | 416 | 179 | in service |
| K220803C30160324 | older | 4 | 1 | 15 | 57 | 29 | 59 | isolated |
| Y230202C30371426 | newer | 1 | 0 | — | 2 | 1 | 1 | in service |
| Y230202C30371425 | newer | 2 | 0 | — | 2 | 1 | 1 | in service |
| Y230202C30371431 | newer | 3 | 0 | — | 2 | 1 | 1 | in service |
| Y230202C30371427 | newer | 4 | 0 | — | 2 | 1 | 0 | in service |
Read the median spread column. The five healthy modules sit between +2 and 6 millivolts; the other three are at 45, 57 and 108. The +same contrast shows in the overvoltage counters: 498 for the +first module against one for each of the four in the newer pack, +which have nonetheless taken ten times more cycles.
+All sixty cells of the newer pack sweep between 168 and 191 mV, without +exception. The inventory is closed.
+ +On 5 September the console was connected to the three modules of the older +pack while the alarm was rising. What follows is the record, to the second.
| Time | What happens | |
|---|---|---|
| 13:04:48 | cell 7 of module …0322 at 3526 mV, cell 6 of module …0319 at 3541 | below threshold |
| 13:05:08 | the same two at 3555 and 3575 mV | level 3 crossed |
| 13:05:13 | the BMS drops the allowed charge current from 50 to 30 A | five seconds later |
| 13:15:10 | cells fall back to 3499 and 3522 mV, alarm clears | the limit stays at 30 A |
| 13:22:40 | limit 30 → 40 A | after 7 min 31 s |
| 13:26:39 | limit 40 → 35 A, leading cells at 3563 and 3548 mV | it trips again |
| 13:38:10 | limit 35 → 40 A | after 11 min 31 s |
The most useful finding is in the fourth row: the alarm +clears well before the limit recovers. Looking for the alarm in the logs therefore +misses the bulk of the phenomenon — the alarm lasts minutes, the throttling lasts +hours.
The thresholds are not values we chose: they are the ones the hardware +declares, read from sysinfo on the LV-HUB.
The answer decides what balancing can give back. Two measurement points on +the same cell at two different currents settle it.
+| current per cell | spread | |
|---|---|---|
| 13:04:48 | 6.33 A | 163 mV |
| 14:05:42 | 0.04 A | 46 mV |
The slope gives ≈ 18.6 mΩ of excess internal resistance on the +leading cell, twenty to forty times that of a healthy one. The intercept, +≈ 46 mV, is the true charge imbalance.
+Independent check: this line predicts 312 mV at 100 A pack current. The largest +spread actually recorded over thirty-seven days is 280 mV.
+So of the ~190 mV of spread under charge, only 46 mV are an +imbalance — the rest is lost capacity. A perfect rebalance would bring the +trip from 3555 down to about 3510 mV: below the threshold, but with only forty +millivolts of margin.
+ +Not from wear. The newer pack has taken three hundred and forty cycles in a +year and its sixty cells are intact: cycling does not damage these modules. And +the control module shared the chain, the currents and the days of the two damaged +ones without a scratch.
+The two terminal cells went down to 2953 and +2939 mV, below the low-voltage alarm threshold. A +lithium iron phosphate cell taken there under load loses capacity irreversibly. +These cells did not age, they were discharged too deep.
+ +八个模块,每个十五颗电芯。其中十颗电芯限制了其余九十五颗的充电。本报告说明是哪几颗、依据何在、以及可以怎么处理。
+电池组并未整体老化。八个模块中有四个毫无异常: +六十颗电芯在三百多次循环之后没有一处异常。第五个模块同样干净。
+全部问题集中在三个模块,而在这三个模块之内只有十颗电芯。 +当其中一颗达到 3550 mV,BMS 便降低充电电流——降的不是该模块,而是 +整个电池组。五个健康模块被十颗电芯拖住。
模块的身份是它的条码,而不是地址:每条链上的模块都从 1 重新编号, +因此本系统中存在两个「模块 1」。
| 条码 | 电池组 | 地址 | 受影响电芯数 | 具体编号 | 压差中位数 | 过压次数 | 欠压次数 | |
|---|---|---|---|---|---|---|---|---|
| K220803C30160322 | 旧 | 1 | 4 | 6 · 7 · 12 · 14 | 108 | 498 | 86 | 在运行 |
| K220803C30160323 | 旧 | 2 | 0 | — | 6 | 0 | 0 | 在运行 |
| K220803C30160319 | 旧 | 3 | 5 | 2 · 6 · 10 · 12 · 15 | 45 | 416 | 179 | 在运行 |
| K220803C30160324 | 旧 | 4 | 1 | 15 | 57 | 29 | 59 | 已隔离 |
| Y230202C30371426 | 新 | 1 | 0 | — | 2 | 1 | 1 | 在运行 |
| Y230202C30371425 | 新 | 2 | 0 | — | 2 | 1 | 1 | 在运行 |
| Y230202C30371431 | 新 | 3 | 0 | — | 2 | 1 | 1 | 在运行 |
| Y230202C30371427 | 新 | 4 | 0 | — | 2 | 1 | 0 | 在运行 |
请看压差中位数一列。五个健康模块在 2 至 6 毫伏之间; +另外三个分别为 45、57 与 108。过压计数呈现同样的对比:第一个模块为 +498 次,而新电池组四个模块各自仅 1 次—— +后者的循环次数还多出十倍。
+新电池组的六十颗电芯,幅度全部落在 168 至 191 mV 之间,无一例外。 +清点至此完成。
+ +9 月 5 日,在告警上升过程中,控制台接入了旧电池组的三个模块。 +以下为逐秒记录。
| 时间 | 发生了什么 | |
|---|---|---|
| 13:04:48 | 模块 …0322 的 7 号电芯 3526 mV,模块 …0319 的 6 号电芯 3541 | 低于阈值 |
| 13:05:08 | 同两颗电芯升至 3555 与 3575 mV | 越过三级阈值 |
| 13:05:13 | BMS 将允许充电电流由 50 A 降至 30 A | 五秒之后 |
| 13:15:10 | 电芯回落至 3499 与 3522 mV,告警解除 | 但电流限值仍保持 30 A |
| 13:22:40 | 限值 30 → 40 A | 经过 7 分 31 秒 |
| 13:26:39 | 限值 40 → 35 A,最高电芯 3563 与 3548 mV | 再次触发 |
| 13:38:10 | 限值 35 → 40 A | 经过 11 分 31 秒 |
最有价值的一处发现在第四行:告警远早于电流限值 +恢复之前就已解除。因此仅在日志中查找告警,会错过该现象的绝大部分—— +告警持续数分钟,而限流持续数小时。
这些阈值并非我们所选:它们由设备本身声明,读取自 LV-HUB 的 +sysinfo。
这个问题决定了均衡能够挽回多少。同一颗电芯在两种电流下的两个测点 +即可判定。
+| 单芯电流 | 压差 | |
|---|---|---|
| 13:04:48 | 6.33 A | 163 mV |
| 14:05:42 | 0.04 A | 46 mV |
斜率给出最高电芯的额外内阻约 18.6 mΩ,为健康电芯的 +二十至四十倍。截距 约 46 mV,才是真正的荷电不均衡。
+独立验证:该直线预测在整组电流 100 A 时压差为 312 mV;三十七天记录中 +实际出现的最大压差为 280 mV。
+因此在充电时约 190 mV 的压差中,只有 46 mV 属于不均衡, +其余为容量损失。即便完成理想均衡,触发点也只能从 3555 mV 降至约 3510 mV: +低于阈值,但余量仅四十毫伏。
+ +并非老化所致。新电池组一年内完成三百四十次循环,六十颗电芯完好无损: +循环本身不会损坏这些模块。对照模块与两个受损模块同链、同电流、同工况, +亦毫发无伤。
+两颗已失效电芯曾降至 2953 与 +2939 mV,低于低压告警阈值。磷酸铁锂电芯在带载状态下 +被放至该电压,会发生不可逆的容量损失。这些电芯不是老化,而是被过放。
+ +