Plugin régulateur correcteur *PID* (proportionnel, intégral, dérivé)

je vais essayé d envoyé la consigne de l onduleur a jeedom et de jeedom au triac avec 1 minutes de decallage de consigne, mais comme ca change tellment, la consigne ne sera jamais bonne . il faudrait faire une moyenne sur 1 minutes par exemple . 1 moyenne de production de l onduleur . avec un virtuel jeedom , c est certainement le plus simple ? . Comment fais tu pour mettre une phrase d une personne en gris dans ta reponse forum ? Merci

Tu sélectionnes le texte et tu cliques sur citer.

Si tu envoies à ton triac la puissance de ton onduleur en temps réel alors tu n’aurais pas besoin de

Si ton onduleur et ton triac sont en modbus, ce n’est pas possible d’envoyer directement l’info de l’onduleur au triac ?

Si mais comme il y a un nuage toutes les 10 secondes … j ai déjà 5 secondes pour que le triac augmente la puissance de 0 à 100 % … donc je vais perdre bcp trop de temps , il y aura trop de production . et une régulation 20-100% toutes les 10 secondes … je doute que l electronique le triac survive plusieurs années … ( et je n aime pas trop car mon cos phi est trop bouleversé dans mon réseau electrique off grid ,un triac c est vraiment un système électronique de pierre a feu … il faudrait un onduleur pour ne pas avoir le prob de cos phi,mais hors budget ) . pr info , je suis entrain de negocié une regulation de consomation avec un developpeur d’ ASIC pour miner . La consigne pour faire + ou - de calcule et donc de consomation derriere . ca ne sera donc pas un triac mais peut etre un petit os linux comme receveur de consigne … quitte a faire du chaud, autant le faire en passant par du btc à 16K $… :stuck_out_tongue_winking_eye:

c est pour cela qu’une sorte de PID tres doux pour lisser la consigne serait top

Pour revenir à la moyenne de production sur 1 min, tu auras toujours le problème du surproduction (production instantanée supérieure à la production moyenne sur une minute).

J’ai toujours du mal avec ton histoire de consigne qu’il faut lisser. Pour moi une consigne, c’est fixe. On souhaite une température, par exemple, ensuite le régulateur mesure la température réelle qui fluctue et ajuste son actionneur en fonction de l’erreur consigne-mesure.

Dans ton cas, j’ai plus l’impression que c’est un réservoir tampon qu’il te faut comme un stock de batteries. Les batteries se chargent se façon irrégulière avec les panneaux solaires en fonction du soleil et des nuages. Ensuite, un onduleur fourni de la puissance à la demande.

Ben voilà

y pas de consigne de temperature, il n y aura de toute facon jamais assez d energie solaire pour chauffer le batiment,donc la consigne c est tj 100 % . La temperature n as pas d importance .
je desire remplacer la temperature par une consigne modbus et utilisé ton scenario de gestion PID pour reguler la puissance ( qui est enfait ta temperature pour toi ) pour ne pas deglinguer le triac . y a deja une batterie tampon de 30 kwh ( donc ± 2 h à 100% triac ), le but c est de ne pas la vidé quand y a pas de soleil , meme pour 30 secondes sans soleil .

Ok, pour le régulateur PID, il faut 3 éléments (1et 2 sont les entrées et 3 la sortie du régulateur) :

  1. Une consigne : quelle est la grandeur (fixe) voulue au final ? son unité ?
  2. Une mesure en sortie du système : quelle est la grandeur (variable) mesurée réellement ? (même unité que la consigne pour calculer l’erreur consigne-mesure)
  3. Une action : quel est l’actionneur dans ton système ? son unité ?

Exemple avec la régulation du chauffage : sonde déportée + régulateur PID + vanne en mode manuelle

  1. consigne : température ambiante souhaitée de 21°C (modifiable de temps en temps)
  2. mesure : sonde de température qui mesure la température réelle de la pièce toutes les 5 minutes
  3. action : calcul de l’ouverture de la vanne entre 0% et 99% toutes les 5 minutes

@jeanlegrand Peux-tu répondre à ces 3 questions pour ton utilisation ?

1: 100% fixe de la valeur moyenne calculée pendant 1 minute de réception modbus .
2: la valeur moyenne calculée pendant 1 minute de réception modbus .
3: une action PID, qui varie d’une manière calculée . ex , si l écart est grand, il faut démarrer fort pour rattraper l ecart . si l’ecart est petit ( entre la valeur actuelle et la valeur demandée ) il faut démarrer doucement

Pour le 1, tu prends 100% de la puissance moyenne sur 1 minute produite par tes panneaux.
Pour le 2, je ne vois pas de différence avec le 1. Où est la différence consigne-mesure ?

Oui mais, que faut-il actionner ? le triac je suppose.

Lissage
Concernant la moyenne, je te conseille une formule simple comme ceci pour faire un filtre qui lisse les variations

Puiss_moy[n] = (1 - Alpha) x Puiss_moy[n-1] + Alpha x Puiss_inst[n]

Par exemple, avec Alpha = 1/10, chaque nouvelle valeur de puissance instantanée aura un poids de 1/10 dans le calcul de la moyenne.

@jeanlegrand Je t’invite à effectuer ces calculs dans un tableur pour tester différentes valeurs d’Alpha et observer les différents lissages.

Pour un faire un lissage sur 1 minute avec un rafraîchissement de la puissance toutes les 5 secondes, je prendrais la formule suivante (c’est la même que celle utilisée dans le filtrage de la variation d’erreur pour l’action dérivée)
Puiss_moy[n] = (Puiss_moy[n-1] + N x Puiss_inst[n])/(1 + N) avec N=5/60=1/12


1 point = 5 secondes
Exemple avec une puissance de 4kW pendant 1 minute puis 3kW pendant 1 minute, hop 1 nuage pendant 10 secondes (points 25-26 sur le graphique) où la puissance chute à 0.5kW puis le soleil revient et la puissance remonte à 3kW puis 3.5kW puis 4kW.

Je te conseille dans un premier temps de monitorer la puissance de tes panneaux pour avoir des valeurs réalistes

1 « J'aime »

Merci pour la formule. Je suppose que je doit la placée dans un virtuel ou un objet .
Le principe du lissage n est pas vraiement du PID mais conviendra certainement bien.
Penses-tu que le " mode lissage " de l historique ( aucun, minimum, moyen et maximum ) de Jeedom utilise le même type de formule ? Pour peux être passer par la ? Mais c est certainement trop lent de prendre une valeur historisée par jeedom .

Non, ce n’est pas le même type de formule. Le mode lissage « moyen » permet de moyenner les valeurs toutes les 5 minutes sans pondération. Avec des mesures de température bien actualisées toutes les minutes, le graphique affichera la moyenne pour chaque périodes de 5 minutes. Mais si les mesures ne sont actualisées qu’aux changements de valeurs, c’est problématique car 4 minute à 18°C et 1 minute à 20 °C donneront une moyenne de 19°C au lieu de 18.4°C pour ces 5 minutes. De plus, dans ce que j’ai compris de ce lissage, la valeur affichée sur le graphique est moyennée tandis que la valeur de la commande reste non moyennée, donc on ne peut pas exploiter cette valeur moyenne pour d’autres calculs.

Oui, trop lent, pas fiable.

Il te faut une Variable Puiss_Moy, un Scénario et un Virtuel pour afficher les valeurs de la puissance instantanée et la puissance moyenne

Pour le scénario, utilise la puissance instantanée comme déclencheur. Si la puissance instantanée est rafraîchie toutes les 5 secondes, le scénario s’exécutera toutes les 5 secondes.

Reprend le code du PID plus haut et inspire toi du filtrage de Erreur_Variation pour faire un truc comme ceci

tag Puiss_Inst = #[Mon Objet][Mon Onduleur][Puiss_Inst]#
tag Puiss_Moy_Precedente = variable(Puiss_Moy,0)
tag Puiss_Moy = (#Puiss_Moy_Precedente# + #N# x #Puiss_Inst#/(1 + #N#)

Il faudra adapter la force du filtrage avec le coefficient N : plus N est petit, plus ça filtre !

1 « J'aime »

Merci pour l’aide fournie pour la programmation de la moyenne de mes onduleurs Domatizer ( maintenant, je vais t’appeler Monsieur formules :o) ) .
Voici le résultat après quelques heures , cela fonctionne bien . Il faut ± 6 minutes pour que la valeur se stabilise à la valeur réelle pour un écart de ± 3000w ( par contre cela prends du % de puissance de mon pauvre RPI4 qui est déjà limite . je me demande si je ne vais pas mettre mon vieux rpi3 rien que pour cela et 2-3 autres compteurs de gaz, elec, eau, du plugin suivit conso qui pompe un max lorsqu il calcule les stats 3-4 fois par jour ) ! … =>

:smiley:

Super !

Bonjour,
J’ai récupéré le scénario.txt, renommé en .json et chargé comme template, puis modifié les noms d’équipements.
Au moment d’appliquer je n’ai rien dans mon scénario juste le message

Pour constituer votre scénario veuillez ajouter des blocs

Une idée de ce que je fais mal ?

Non, tu n’as rien fait de mal.

Je n’aurais même pas eu cette idée. Je ne vois pas de template pour les scénarios !

Je ne pense pas qu’on puisse importer un scénario facilement dans Jeedom.
Juste pour info, compare le contenu du fichier scenario.txt avec les captures d’écran du scénario. Il manque plein de trucs (commentaires, …). Le scénario est juste plus lisible pour un humain.

Je viens d’exporter le scénario en mode édition.

Donc, si tu édites ton scénario en mode texte, tu pourras copier-coller le texte.
Mais, je pense que tu auras d’autres problèmes avec les IDs des blocs…

Pour moi, il faut tout recréer le scénario à la main en recopiant, sans faire de faute, mon tuto plus haut.

J’ai découvert ça depuis peu et cela avait fonctionner pour un autre.
OK je vais faire du copier/coller

Je veux bien connaître l’astuce pour importer un scénario d’un autre utilisateur.

Tu créé un scénario vide, tu cliques sur l’icone avec les 3 petits cubes empilés à gauche de Exécuter (fonction template)
Puis clic sur charger template.
double clique sur le template
renseigner les champs différents de tes équipements

Mais ne marche pas avec le tien…pour moi

Du coup si tu ne l’a pas télécharger depuis même menu c’est pour ça que ça ne peut pas se charger.
La doc dit :

Template de scénario

Cette fonctionnalité permet de transformer un scénario en template pour par exemple l’appliquer sur un autre Jeedom.

En cliquant sur le bouton template en haut de page, vous ouvrez la fenêtre de gestion des template.

A partir de celle-ci, vous avez la possibilité :

  • D’envoyer un template à Jeedom (fichier JSON préalablement récupéré).
  • De consulter la liste des scénarios disponibles sur le Market.
  • De créer un template à partir du scénario courant (n’oubliez pas de donner un nom).
  • De consulter les templates actuellement présents sur votre Jeedom.

En cliquant sur un template, vous pourrez :

  • Partager : Partager le template sur le Market.
  • Supprimer : Supprimer le template.
  • Télécharger : Récupérer le template sous forme de fichier JSON pour le renvoyer sur un autre Jeedom par exemple.

En-dessous, vous avez la partie pour appliquer votre template au scénario courant.

Etant donné que d’un Jeedom à l’autre ou d’une installation à une autre, les commandes peuvent être différentes, Jeedom vous demande la correspondance des commandes entre celles présentes lors de la création du template et celles présentes chez vous. Il vous suffit de remplir la correspondance des commandes puis de faire appliquer.

Donc, si je comrends bien, faudrait que tu fasses :

Télécharger : Récupérer le template sous forme de fichier JSON pour le renvoyer sur un autre Jeedom par exemple.

Merci @raqpub

J’ai créé le template

1 « J'aime »

Beaucoup mieux
:ok_hand:

Et à mon avis ton virtuel passe aussi via template (jamais essayé)