F1ATB forum
Estimation d'injection avec TIC + CACSI - Version imprimable

+- F1ATB forum (https://f1atb.fr/forum_f1atb)
+-- Forum : Forum de F1ATB (https://f1atb.fr/forum_f1atb/forum-3.html)
+--- Forum : Routeur Photovoltaïque (https://f1atb.fr/forum_f1atb/forum-4.html)
+---- Forum : Evolutions faites, à faire, dont vous rêvez... (https://f1atb.fr/forum_f1atb/forum-10.html)
+---- Sujet : Estimation d'injection avec TIC + CACSI (/thread-685.html)



Estimation d'injection avec TIC + CACSI - Ludovic35 - 01-11-2024

Bonjour,

Pour ceux qui utilisent la TIC pour la lecture, et qui ont un CACSI, la régulation en cas d'injection est plutôt lente, voir très lente si on baisse le seuil de régulation à une faible valeur (Pw=50W dans mon cas).
En cas d'injection, on ne voit donc que Consommation = 0.
Serait-il possible d'intégrer un bout de code qui permet d'estimer la puissance injectée?
Cela ne permettra pas de réduire le seuil de régulation (50W semble être un minimum), mais ça accélère fortement la régulation en cas d'injection.

L'algo que j'utilise est basé sur les informations Irms et Urms de la TIC. Irms étant en entier, l'erreur est de +- 0.5A (soit 115W).
L'algo ne s'active que si la consommation est à 0W (PuissanceS_M); il est donc transitoire car on régule sur 50W.

Détail du calcul ci-dessous (les valeurs sont collectées avant le calcul, "cacsi=true" sur la condition  (!EAITvalid && Tm > 8000)).
Les valeurs de puissance apparente SINSTS ne sont utilisées que pour tester si c'est ==0VA, le calcul est fait avec les valeur Urms et Irms.
Si SINSTS==0, alors une valeur de courant non nulle signifie de l'injection, sinon c'est de la consommation.

pPuissance = 0; // initialisation valeur puissance injectée
if (cacsi && PuissanceS_M == 0) { // estimation de la puissance d'injection seulement si PuissanceS_M==0 et si on est en CACSI
  pPuissance = 150 + (pSINSTS1 == 0?-1:1) * pURMS1 * pIRMS1; // marge de 150W
  if (pIRMS3 != -1) { // triphasé
    pPuissance += (pSINSTS2 == 0?-1:1) * pURMS2 * pIRMS2;
    pPuissance += (pSINSTS3 == 0?-1:1) * pURMS3 * pIRMS3;
  }
}
if (pPuissance >= 0) { // pas d'estimation si l'écart est faible en prenant la marge de 150W
  PuissanceI_M = 0;
} else {
  PuissanceI_M = -pPuissance; // "-" car on donne la valeur injectée
}

Cela fonctionne bien malgré l'imprécision relative aux mesures d'intensités (la marge de 150W réduit le risque de surestimation de l'injection).

Code ici:
  https://drive.google.com/file/d/17LqBHq9KQL6fqP2Gdd2sJuAt6yCAiEaE

Exemple du valeurs retournées (routage sur un radiateur de 1500W qui ne consomme pas tout):
  https://drive.google.com/file/d/1SOb3sI2WNGeh3hoQpthD6m5EzUt5BSIX/view?usp=sharing
On voit qu'en injection, les valeurs sont en "escalier" (car le courant est en valeurs entières).
Cela ne change pas la courbe bleue (puissance apparente)

Cordialement,