Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Estimation d'injection avec TIC + CACSI
#6
(14-07-2024, 05:47 PM)Ludovic35 a écrit : Ma curiosité m'a poussé à faire une tentative...
En cas de CACSI détecté (absence EAIT), ET si PuissanceS_M==0, on calcule de l'estimation de la puissance injectée pPuissance (sur réception du champ SMAXSN1).
Si pPuissance < -100, on force PuissanceI_M = pPuissance. S'il y a moins de 100W estimés en injection, on ne change rien.

A ma surprise, cela fonctionne bien; on gagne beaucoup en réactivité.
https://zupimages.net/viewer.php?id=24/28/hro8.png
Les pics à -475W sont issus de ce changement; j'ai un lave-linge qui tourne et fait varier régulièrement la puissance consommée.
Dans mon réglage, je garde la consigne PW=50W, car l'estimation de puissance injectée n'est que grossière, et n'est valable que pour des valeurs <-100W
Je vais continuer à observer le comportement avec cette solution, afin de vérifier que cela ne génère pas d'instabilité.

Je met les bouts de codes ici:
int pIRMS1, pIRMS2, pIRMS3 = -1, pURMS1, pURMS2, pURMS3, pSINSTS1, pSINSTS2, pSINSTS3, pPuissance;
void LectureLinky() {  //Lecture port série du LINKY
...

                if (!EAITvalid && Tm > 8000) {  //Cas des CACSI ou EAIT n'est jamais positionné
                  EAITvalid = true;
  cacsi = true;
  StockMessage("Detection mode CACSI/TIC");
                }
...

          if (code.indexOf("IRMS1") == 0) {
            Intensite_M = val.toFloat();  //Phase 1 uniquement
          }
          if (code.indexOf("URMS1") == 0) {
pURMS1 = val.toInt();
          }
          if (code.indexOf("URMS2") == 0) {
pURMS2 = val.toInt();
          }
          if (code.indexOf("URMS3") == 0) {
pURMS3 = val.toInt();
          }
          if (code.indexOf("IRMS1") == 0) {
pIRMS1 = val.toInt();
          }
          if (code.indexOf("IRMS2") == 0) {
pIRMS2 = val.toInt();
          }
          if (code.indexOf("IRMS3") == 0) {
pIRMS3 = val.toInt();
          }
          if (code.indexOf("SINSTS1") == 0) {
pSINSTS1 = val.toInt();
          }
          if (code.indexOf("SINSTS2") == 0) {
pSINSTS2 = val.toInt();
          }
          if (code.indexOf("SINSTS3") == 0) {
pSINSTS3 = val.toInt();
          }
          if (code.indexOf("SMAXSN1") == 0) {
pPuissance = 0;
if (cacsi && PuissanceS_M == 0) { // estimation de la puissance d'injection si PuissanceS_M==0
pPuissance = (pSINSTS1 == 0?-1:1) * pURMS1 * pIRMS1;
if (pIRMS3 != -1) { // triphasé
pPuissance += (pSINSTS2 == 0?-1:1) * pURMS2 * pIRMS2;
pPuissance += (pSINSTS3 == 0?-1:1) * pURMS3 * pIRMS3;
}
if (pPuissance > -100) { // pas d'estimation si l'écart est faible
pPuissance = 0;
}
}
PuissanceI_M = -pPuissance;
          }

Cordialement

Super boulot Ludovic !
Répondre


Messages dans ce sujet
RE: Estimation d'injection avec TIC + CACSI - par mternet - 21-07-2024, 01:53 PM

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)