Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Régulateur PID proposé en Version 16.00 du logiciel du routeur
#81
Ok merci Lolo69
j'ai mis un seuil a -20 et non pas -200 pour ne rien consommer du tout lorsqu'il n'y a pas de perturbateurs.
Cela ne me gêne pas dans le sens ou je revends en EDF OA. (j'ai donc bien des actions chez Enedis Big Grin )

J'essaierai de jouer un peut avec le KD comme conseillé pour voir ce que cela donne.
Dans tous les cas merci pour ton aide aux réglages car je n’étais pas trop a l'aise avec tout cela Rolleyes
F4AME - Patoutheone
8 panneaux Recom Sillia Panther 375 Wc Full Black soit 3 KWc
Onduleur Huawei 3KTL-L1 mono et compteur DDSU666-H
Routeur F1ATB + 2 Afficheurs - Home Assistant


Répondre

#82
(22-11-2025, 01:33 PM)Lolo69 a écrit : Si seulement on avait la courbe sortie triac superposée sur le premier graphique on pourrait beaucoup mieux observer la réponse et guider vers le réglage optimal.

Bonjour,

  pour affichage de la courbe d'ouverture en superposée, je propose de détourner un peu le programme

Le principe:
-> si le nom du routeur contient LOL suivi d'un chiffre, alors on remplace la courbe PVA par celle correspondant à la courbe d'ouverture de l'action correspondant au chiffre après LOL
pour la cosmétique, il y a encore le VA avec la case a cocher, mais on se satisfera de ce détail ...

chiffre 0 pour le triac, chiffre 1 à 9 pour les autres actions

dans le prog, 
modifié dans Solar_Router... dans le loop : ajout de 3 lignes dans la boucle qui mémorise les données pour les courbes ouvertures pour chaque actions :

Code :
      for (int i = 0; i < NbActions; i++) {
        if (Actif[i] != MODE_INACTIF) {
          tab_histo_2s_ouverture[i][IdxStock2s] = 100 - Retard[i];
        } else {
          tab_histo_2s_ouverture[i][IdxStock2s] = 0;
        }
        // LOLx si dans le nom du routeur on a LOL suivi d'un chiffre, alors la courbe PVA sera remplacer par le % d'ouverture de l'action x
        int p = nomRouteur.indexOf("LOL");
        if (p >= 0 && isDigit(nomRouteur.charAt(p + 3)) && nomRouteur.substring(p + 3, p + 4).toInt() == i)
          tabPva_Maison_2s[IdxStock2s] = 10 * tab_histo_2s_ouverture[i][IdxStock2s];  // coef 10 pour visibilité
      }


dans Server.ino, fonction handleAjaxData, on remplace l'envoi de PVAS_M par la valeur pour faire la courbe
Code :
  S = "Deb" + RS + DateLast + RS + Source_data + RS + LTARF + RS + STGEt + RS + S + RS + String(Pva_valide);
  // LOLx trucage si nom du routeur contient LOLx avec x numérique correspondant a l'action a considérer (tabPva_Maison_2s[xxx] est actualisé au moment du traitement de l'action)
  int p = nomRouteur.indexOf("LOL");
  if (p >= 0 && isDigit(nomRouteur.charAt(p + 3)))  // N° d'action a considérer est gérée ailleurs
    S += GS + String(PuissanceS_M) + RS + String(PuissanceI_M) + RS + String(tabPva_Maison_2s[IdxStock2s == 0 ? 299 : IdxStock2s - 1]) + RS + String(PVAI_M);
  else
    S += GS + String(PuissanceS_M) + RS + String(PuissanceI_M) + RS + String(PVAS_M) + RS + String(PVAI_M);
  S += RS + String(EnergieJour_M_Soutiree) + RS + String(EnergieJour_M_Injectee) + RS + String(Energie_M_Soutiree) + RS + String(Energie_M_Injectee);
  if (Source_data == "UxIx2" || ((Source_data == "ShellyEm" || Source_data == "ShellyPro") && EnphaseSerial.toInt() != 3)) {  //UxIx2 ou Shelly monophasé avec 2 sondes
Merci André Smile ,
Routeur V16.04 (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (multi) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (multi) : circuit d'eau 1500W
1 SSR (multi) : Ultime 2000W
Répondre

#83
(23-11-2025, 07:26 PM)michy a écrit :
(22-11-2025, 01:33 PM)Lolo69 a écrit : Si seulement on avait la courbe sortie triac superposée sur le premier graphique on pourrait beaucoup mieux observer la réponse et guider vers le réglage optimal.

Bonjour,

  pour affichage de la courbe d'ouverture en superposée, je propose de détourner un peu le programme

Le principe:
-> si le nom du routeur contient LOL suivi d'un chiffre, alors on remplace la courbe PVA par celle correspondant à la courbe d'ouverture de l'action correspondant au chiffre après LOL
pour la cosmétique, il y a encore le VA avec la case a cocher, mais on se satisfera de ce détail ...

chiffre 0 pour le triac, chiffre 1 à 9 pour les autres actions

dans le prog, 
modifié dans Solar_Router... dans le loop : ajout de 3 lignes dans la boucle qui mémorise les données pour les courbes ouvertures pour chaque actions :

Code :
      for (int i = 0; i < NbActions; i++) {
        if (Actif[i] != MODE_INACTIF) {
          tab_histo_2s_ouverture[i][IdxStock2s] = 100 - Retard[i];
        } else {
          tab_histo_2s_ouverture[i][IdxStock2s] = 0;
        }
        // LOLx si dans le nom du routeur on a LOL suivi d'un chiffre, alors la courbe PVA sera remplacer par le % d'ouverture de l'action x
        int p = nomRouteur.indexOf("LOL");
        if (p >= 0 && isDigit(nomRouteur.charAt(p + 3)) && nomRouteur.substring(p + 3, p + 4).toInt() == i)
          tabPva_Maison_2s[IdxStock2s] = 10 * tab_histo_2s_ouverture[i][IdxStock2s];  // coef 10 pour visibilité
      }


dans Server.ino, fonction handleAjaxData, on remplace l'envoi de PVAS_M par la valeur pour faire la courbe
Code :
  S = "Deb" + RS + DateLast + RS + Source_data + RS + LTARF + RS + STGEt + RS + S + RS + String(Pva_valide);
  // LOLx trucage si nom du routeur contient LOLx avec x numérique correspondant a l'action a considérer (tabPva_Maison_2s[xxx] est actualisé au moment du traitement de l'action)
  int p = nomRouteur.indexOf("LOL");
  if (p >= 0 && isDigit(nomRouteur.charAt(p + 3)))  // N° d'action a considérer est gérée ailleurs
    S += GS + String(PuissanceS_M) + RS + String(PuissanceI_M) + RS + String(tabPva_Maison_2s[IdxStock2s == 0 ? 299 : IdxStock2s - 1]) + RS + String(PVAI_M);
  else
    S += GS + String(PuissanceS_M) + RS + String(PuissanceI_M) + RS + String(PVAS_M) + RS + String(PVAI_M);
  S += RS + String(EnergieJour_M_Soutiree) + RS + String(EnergieJour_M_Injectee) + RS + String(Energie_M_Soutiree) + RS + String(Energie_M_Injectee);
  if (Source_data == "UxIx2" || ((Source_data == "ShellyEm" || Source_data == "ShellyPro") && EnphaseSerial.toInt() != 3)) {  //UxIx2 ou Shelly monophasé avec 2 sondes
Bonjour Michy j ai implementé ton code à l aveugle mais je n arrive pas à faire fonctionner...non routeur j ai mis MAISON -LOL1 , j ai des doutes sur le 1 je n ai' pas decortiqué le code mais j 'ai essayé aussi avec LOL0 .1 2 3 4 ..et j ai deseperement la courbe VA sur le graphe
Répondre

#84
(Il y a 6 heures)Lolo69 a écrit : Bonjour Michy j ai implementé ton code à l aveugle mais je n arrive pas à faire fonctionner...non routeur j ai mis MAISON -LOL1 , j ai des doutes sur le 1 je n ai' pas decortiqué le code mais j 'ai essayé aussi avec LOL0 .1 2 3 4 ..et j ai deseperement la courbe VA sur le graphe

Bonjour,
  
  en image comparaison entre la source initiale et ce que j'ai ajouté

  + image évolution avec 2 relais (sans charge derrière ...) (le relais 1 avec un seuil PW de 1500, le second avec un seuil 1200 proche de la conso au moment de l'essai)
 
entre -10 et -8.25, l'esp n'était pas démarré, compil/injection du code (le nom de l'ESP contenait LOL1 en mémoire NVS)
entre -8.25 et -6.5, bricolage sur les seuils PW des relais 1 et 2
entre -6.5 et -5.8 pente de régule sur relais 1 (extrait de LOL1)
entre -5.8 et -3.9, pas grand chose, la régule ne peut rien faire, il n'y a pas de charge ...
a -3.9,un forçage OFF de l'action1
a -3.5, décoche du forçage OFF, 
la régule repart avec +/- la même pente pour l'action 1
a -2.2, renommage du routeur avec LOL2, c'est la pente pour relais 2 qui s'affiche
a -0.8, renommage du routeur pour supprimer LOL, c'est les PVA qui s'affiche


quelques F5 pour prendre le dernier JS ?


Pièces jointes Miniature(s)
           
Merci André Smile ,
Routeur V16.04 (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (multi) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (multi) : circuit d'eau 1500W
1 SSR (multi) : Ultime 2000W
Répondre

#85
Il faut que je recontrole si je n ai pas fais une erreur de copier coller. ….
Répondre



Atteindre :


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

Moteur MyBB, © 2002-2025 Melroy van den Berg.