Note de ce sujet :
  • Moyenne : 5 (2 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Sortie Version V16.05
#11
Merci André pour cette nouvelle version !
J'ai remarqué un petit bug avec le favicon qui ne s'affiche plus. Après investigation, la correction est très simple, à la ligne 790 de JS_Accueil.h le tag utilisé est "< svg" au lieu de "<svg" (sans espace entre le < et svg).
Répondre

#12
(Il y a 11 heures)Piemdp a écrit : Bonjour,
J'avoue ne pas comprendre comment effectuer ces réglages...
J'ai un cumulus de 3000W et je ne sais pas quel résultat essayer d'obtenir en changeant le PID.
J'ai lu et relu les sujets mais ça reste nébuleux..


Le PID est une "régulation" à trois composantes qui vide à faire varier un paramètre, ( ici le niveau d'ouverture du triac ou du SSR en % ) pour ralier au plus vite une consigne (ici un niveau cible de consommation), sans trop osciller.
Vous pouvez lire une multitude d'articles sur le net qui en expliquent les principes de fonctionnement.

La consigne pour notre routeur, est de faire en sorte que l'excédent de notre production solaire soit "consommée" dans notre (nos) appareil(s)  ( Chauffe-eau, chauffage électrique ... ou autre ).

ex : je mets un seuil de régulation à 50W dans les actions. En cas de production solaire qui excède de plus de 50W ma consommation à l'instant 't', je souhaite que mon triac s'ouvre pour que mon chauffe-eau consomme cet éxcédent ( mais pas plus ...) et donc que mon routeur "régule" l'ouverture de mon triac pour s'assurer que j'utilise bien l'énergie que je produis.

sauf qu'il y a des nuages, des consommateurs dans ma maison qui s'allument et s'éteignent (frigo, pompes à chaleur ... ) et donc en permanence le routeur doit "s'adapter" à ces variations.

le PID est juste une méthode (parmi d'autres) de régulation qui calcule et utilise trois composantes 
un paramètre "proportionnel" (P)
un paramètre "intégral" (I)
un paramètre "dérivé" (D).
  • Proportionnel (P) : Réagit à la différence entre la consigne et la valeur mesurée.
  • Intégral (I) : Accumule (intègre) les différences passées pour les corriger de manière continue.
  • Dérivé (D) : Anticipe les erreurs futures en se basant sur la vitesse à laquelle change cette différence
    Et ces trois composantes sont affublées d'un coefficient  Kp, Ki, et Kd que l'on peut "ajuster" afin que la régulation fonctionne au mieux, c'est à  dire converge le plus vite sans trop osciller. C'est ce que permet le routeur d'André dorénavant.En visualisant l'erreur en Watt (+-100W), on peut agir sur (= régler) les 3 coefficients en question en "voyant" leur impact sur la régulation lors de l'allumage ou l'arrêt d'un consommateur, ou d'un passage nuageux.Si vous trouvez cela trop compliqué, ne cochez pas la case PID et restez avec le mode "historique", "réactivité".
V16_05 serveur UxIx3 + ref Linky, client Triac CE tampon + client SSR CE tampon + client SSR sur CE tri (+ 3 clients SSR sur 3 radiateurs d'appoint). Variateurs de fréquence sur pompes tri pour Piscine et Spa. 8 panneaux (3 SE 2 S, 3 SO ) 425Wc sur 4 HM800 produisent 20kWh par jour au 16 Mars (Sud-Est France)
Répondre

#13
Merci pour ces précisions.
Ma question n'était apparemment pas assez claire.
En fait, je ne sais pas que rechercher au niveau des courbes.
Doivent elles toutes se trouver autour du Zéro?
Les valeurs idéales doivent avoir quelles résultante sur la forme des courbes ?

Merci pour ces précisions.
Ma question n'était apparemment pas assez claire.
En fait, je ne sais pas que rechercher au niveau des courbes.
Doivent elles toutes se trouver autour du Zéro?
Les valeurs idéales doivent avoir quelle résultante sur la forme des courbes ?
12 panneaux mk-sun 520kwc - 6 onduleurs ds3-h - Ecu-c
Routeur RMS UxIx2 - Borne VE-TRONIC
Répondre

#14
Merci pour le debug. J'ai passé la modif pour la prochaine version.

André
Répondre

#15
(Il y a 10 heures)Mike a écrit : Merci André pour cette nouvelle version !
J'ai remarqué un petit bug avec le favicon qui ne s'affiche plus. Après investigation, la correction est très simple, à la ligne 790 de JS_Accueil.h le tag utilisé est "< svg" au lieu de "<svg" (sans espace entre le < et svg).

Merci pour le debug. J'ai passé la modif pour la prochaine version.

André
Répondre

#16
BUG dans la page pageHtmlActions.h

Ce bug n'est pas lié à cette dernière version , je pense qu'il traine depuis pas mal de temps
sur de mes ESP comme pas mal d'entre vous ont pu l'avoir je devais souvent me bagarrer pour que la page Action reapparaisse correctement

dans les explications du bug 
Le fichier /ActionsJS se charge et s execute
Il appelle TracePlanning() qui utilise Pins
MAIS le fichier /PinsActionsJS (qui définit Pins) n'est pas encore chargé car les routes definies dans Server ne s'executent pas forcement de façon synchrone

pour corriger
dans le fichier  pageHtmlActions.h
rajouter 
  if (typeof Pins === 'undefined') {
    var Pins = [0, -1, 2, 4, 5, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33];
}

juste avant
  function TracePlanning(iAct) {


depuis je n'ai plus aucun soucis de rechargement de la page Actions
Répondre

#17
Je préfère avancer le téléchargement du fichier de description des pins afin que les personnes utilisent les bonnes pins adaptées au modèle de carte. Il faut aussi éviter les 2,12,15 comme bien expliqué dans l'article de upesy : https://www.upesy.fr/blogs/tutorials/esp...mate-guide

Ce sera pour la prochaine version.

André
Répondre

#18
Le principe est effectivement de charger dans le bon ordre ;-)

Pour le réglage PID ça n a pas beaucoup de sens de visualiser chacune des composantes du PID , c est surtout à but didactique.
La méthodologie de réglage a été décrite dans le fil sur la v16.0
Seule la superposition de la sortie sur la mesure puissance active 10m permet d analyser la réponse du régulateur pour affiner les 3 paramètres
Répondre

#19
(Il y a 6 heures)Lolo691 a écrit : Le principe est effectivement de charger dans le bon ordre ;-)

Pour le réglage PID ça n a pas beaucoup de sens de visualiser chacune des composantes du PID , c est surtout à but didactique.
La méthodologie de réglage a été décrite dans le fil sur la v16.0
Seule la superposition de la sortie sur la mesure puissance active 10m permet d analyser la réponse du régulateur pour affiner les 3 paramètres

au contraire, pour les gens normaux (qui ne font pas du pid leur métier) c'est très parlant: cela permet de voir quelle réglage fait quoi facilement, et surtout de revenir au réglage précédant sans avoir à réfléchir (vu qu'il est visible sur la courbe).
le routeur s'adresse à tout le monde, la plupart découvrent ce qu'est un pid avec le routeur.
très bonne idée de mettre la représentation visuelle des réglages, on a l'action et la réaction sur le même graphique.

personnellement, je vais rester avec ma 14.25 qui fonctionne au poil, cela devient bien trop complexe: un bon systeme est un systeme qu'on oublie, pas un systeme qu'on passe sa vie à régler.
j'aime à dire que mettre à jour pour mettre à jour quand tout fonctionne bien, c'est chercher les pbs...

quand il y aura le module afficheur IPS tactile capacitif ESP32-S3 ), la effectivement, je mettrai à jour tout le systeme...
Répondre

#20
J’ai remarqué que lorsque l’on ouvre le graphique PID en temps réel, si l’on modifie un slider puis que l’on change d’onglet ou que l’on appuie sur “Retour” sans sauvegarder, les valeurs des sliders ne reviennent pas à leurs valeurs initiales : elles restent en RAM. Il faut faire un reset pour retrouver les bonnes valeurs sauvegardé.

j ai corriger 
dans fichier  JS_Actions.h

apres ligne 837  function AdaptationSource() {}

rajouter ceci.

Code :
var valeursInitialesPID = {};
var enCourseDeSauvegarde = false;

window.addEventListener('load', function() {
    setTimeout(function() {
        if (typeof LesActions !== 'undefined') {
            for (var i = 0; i < LesActions.length; i++) {
                valeursInitialesPID[i] = {
                    Kp: LesActions[i].Kp,
                    Ki: LesActions[i].Ki,
                    Kd: LesActions[i].Kd
                };
            }
        }
    }, 1000);
});

var OriginalSendValues = SendValues;
SendValues = function() {
    enCourseDeSauvegarde = true;
    OriginalSendValues();
};

window.addEventListener('beforeunload', function() {
    if (enCourseDeSauvegarde) {
        return;
    }
    if (typeof valeursInitialesPID !== 'undefined') {
        for (var i = 0; i < LesActions.length; i++) {
            if (valeursInitialesPID[i]) {
                var sliderKp = document.getElementById("sliderKp" + i);
                var sliderKi = document.getElementById("sliderKi" + i);
                var sliderKd = document.getElementById("sliderKd" + i);
                var sensiKp = document.getElementById("sensiKp" + i);
                var sensiKi = document.getElementById("sensiKi" + i);
                var sensiKd = document.getElementById("sensiKd" + i);
                if (sliderKp) {
                    sliderKp.value = valeursInitialesPID[i].Kp;
                    if (sensiKp) sensiKp.innerHTML = valeursInitialesPID[i].Kp;
                }
                if (sliderKi) {
                    sliderKi.value = valeursInitialesPID[i].Ki;
                    if (sensiKi) sensiKi.innerHTML = valeursInitialesPID[i].Ki;
                }
                if (sliderKd) {
                    sliderKd.value = valeursInitialesPID[i].Kd;
                    if (sensiKd) sensiKd.innerHTML = valeursInitialesPID[i].Kd;
                }
                if (typeof UpdateK === 'function' && typeof PlotIdx !== 'undefined') {
                    var oldPlotIdx = PlotIdx;
                    PlotIdx = i;
                    UpdateK(i);
                    PlotIdx = oldPlotIdx;
                }
            }
        }
    }
});

il y a peux être plus simple et moins long .
Répondre



Atteindre :


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

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