En bascule vers le reseau, courant mini — et le verrou du garde meurt avec sa cause
Incident du 18/09 13:08-13:14 : clic BOOST 28 A, le controleur demande le reseau, l'hysteresis met ~1 min a fermer le contacteur, et pendant ce trou il MAINTIENT 13 A sur la batterie (hold_min_run_wait_grid_takeover). Le garde batterie mord a -32,4 A, 23 secondes AVANT l'arrivee d'EDF, et pose 20 min de verrou — que rien ne leve quand le reseau arrive. Resultat : contacteur ferme, import qui tourne, voiture a l'arret. Trois volets : 1. hold_min_run_wait_grid_takeover retombe au courant MINI — miroir de la sequence d'ouverture (§30) : on ne tient pas la puissance sur la source qu'on quitte. A 6 A le garde n'aurait jamais mordu. 2. Le stop encode si le reseau etait present : absent => blockReason 'grid_battery_guard_no_grid'. Present => verrou plein inchange (incident du 01/09, consigne insuffisante) — c'est ce qui interdit l'oscillateur stop/retry a reseau present. 3. BCL leve le verrou '_no_grid' des que le reseau arrive. Reseau toujours absent : la branche anterieure wait_grid_source protege deja (epingle). Golden 108 -> 113. Mutations en trois directions, chacune tombant sur un scenario different. Piege du fixture note en commentaire : ses seuils ne sont pas a l'echelle du parc reel (fenetre garde reseau / hard general etroite). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
@@ -247,6 +247,14 @@ const blockStillRelevant =
|
||||
)
|
||||
: history.lastBlockReason === 'grid_battery_guard'
|
||||
? isGridSource
|
||||
// Garde batterie declenche RESEAU ABSENT (18/09) : sa cause est le
|
||||
// trou entre la demande de reseau et la fermeture du contacteur.
|
||||
// Le reseau arrive => la cause a disparu => le verrou se leve. Si la
|
||||
// batterie est encore sollicitee au retry, le garde re-mord et pose
|
||||
// cette fois 'grid_battery_guard' (reseau present) — verrou plein.
|
||||
// Convergence en une tentative, meme patron que Fix H.
|
||||
: history.lastBlockReason === 'grid_battery_guard_no_grid'
|
||||
? (isGridSource && !parsed.gridAvailable)
|
||||
: history.lastBlockReason === 'vebus_overload_persistent'
|
||||
? derived.anyVebusOverload
|
||||
: false;
|
||||
|
||||
@@ -614,7 +614,14 @@ else if (cloud.sessionObservedActive) {
|
||||
reasonText: `Arrêt charge réseau: batterie trop sollicitée (${round1(parsed.batteryCurrentA)}A)`,
|
||||
dynamic: false,
|
||||
mustStopFlag: true,
|
||||
blockReason: 'grid_battery_guard',
|
||||
// Un verrou meurt avec sa cause (incident du 18/09 : BOOST demande le
|
||||
// reseau, l'hysteresis met ~1 min a fermer, le garde mord 23 s AVANT
|
||||
// l'arrivee d'EDF et posait 20 min de verrou reseau present). On encode
|
||||
// ICI si le reseau etait la : absent => '_no_grid', et BCL levera le
|
||||
// verrou des que le reseau arrive. Present => la cause est ailleurs
|
||||
// (consigne insuffisante, incident du 01/09) et le verrou plein tient —
|
||||
// c'est ce qui interdit l'oscillateur stop/retry a reseau present.
|
||||
blockReason: parsed.gridAvailable ? 'grid_battery_guard' : 'grid_battery_guard_no_grid',
|
||||
blockedUntilStamp: formatParisStampFromMs(nowMs + 20 * 60000),
|
||||
});
|
||||
}
|
||||
@@ -803,8 +810,13 @@ else if (cloud.sessionObservedActive) {
|
||||
setOn({
|
||||
stateName: 'hold_min_run_wait_grid_takeover',
|
||||
decisionName: 'hold',
|
||||
currentA: Math.min(derived.currentReferenceA, derived.physicalCapA),
|
||||
reasonText: "Maintien jusqu'au mini ON en attente du réseau",
|
||||
// Miroir de la sequence d'ouverture (§30) : quand on bascule VERS le
|
||||
// reseau, on ne tient pas la puissance sur la source qu'on quitte.
|
||||
// Tenir currentReferenceA (13 A le 18/09) pendant les ~80 s ou
|
||||
// l'hysteresis n'a pas encore ferme le contacteur fait porter ~3 kW
|
||||
// a la batterie et declenche le garde — courant MINI en attendant.
|
||||
currentA: Math.min(params.currentMinA, derived.physicalCapA),
|
||||
reasonText: "Attente du réseau au courant mini",
|
||||
dynamic: false,
|
||||
mustStopFlag: false,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user