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

ma pompe a chaleur samsung peut reguler la vitesse du compresseur via une carte d’integration modbus .
tu peux egalement utilisé un emeteur infra rouge broadlink universal remote qui change la temperature de consigne suivant du PID.
Donc le pid est possible de 2 manières différente sans faire de on/off

Qu’est-ce que tu dois faire exactement ?
=> j’ai un triac Power Control Eurotherm EPack™ qui varie 40 A en modbus . Le but est de régulé la puissance des 40 A suivant une autre consigne modbus ( une valeur de puissance que l’onduleur photovoltaique fournit d’une maniere fort variable ) .

Donc un PID sur une valeur modbus en entree , et sortire la valeur en modbus avec la regulation pid .
Le but est de ne pas tirer sur la batterie du offgrid local . si possible un PID en 10 secondes max .

c est un peux comme font les appareil ici dans le lien
MY-PV AC • THOR
MY-PV ELWA DC Immersion Heater

Le constructeur ne propose-t-il rien correspondant à ton besoin ?
Ton compresseur, tourne-t-il par intermittence comme un frigo ?
Comment régule la pompe à chaleur actuellement ? Où sont les sont les consignes ?
Supposons que tu prennes la carte d’intégration modbus et que tu puisses faire varier la vitesse du compresseur de 0 à 100%, tu voudrais faire varier ce pourcentage en fonction de la température intérieure et de la température de consigne comme je le fais avec les vannes thermostatiques ? Dans ce cas, je peux t’aider

c’est un 2ème sujet ?

Le régulateur doit calculer un courant entre 0 et 40A. OK

Je ne comprends pas bien. Quelle est la consigne ? Quelle est la grandeur mesurée ?

Les crons et les scénarios Jeedom fonctionnent plutôt à la minute ==> pas très adapté !

Pourquoi ne prends tu pas un appareil déjà tout fait car ton application semble assez critique ?

Que se passerait-il lors d’un redémarrage de Jeedom ou lors d’un autre problème possible avec une valeur constante sur le triac pendant plusieurs minutes ?

As-tu déjà regardé du côté des petits automates type Crouzet ou Logo Siemens en leur rajoutant une interface modbus ? En effet, ils contiennent des blocs régulateurs PID tous faits !
Il existe aussi des régulateurs PID en modbus prêt à l’emploi.
http://dpannelec.fr/Pages/Produits_Pixsys.html

2 « J'aime »

Maintenant qu’il fait bien froid, la régulation devient plus intéressante, voici le résultat.

1 « J'aime »

merci pr le lien des regulateurs PID . je vois des entrées anal mais pas numérique ? il y a une com modbus slave, mais je ne pense pas qu’il soit possible de communiquer avec l appareil pour une regulation avec une entree et une sortie modbus.

ma pompe a chaleur samsung regule la vitesse du compresseur , il ne s arrete jamais . actuellement, je l utilise avec un broadlink rm pro avec une commande que jeedom transfert avec l ir du rm pro .
je n achète pas la carte modbus propriétaire de samsung car elle coute moitié prix de la pompe a chaleure neuve … donc l infra rouge donne la consigne et c est la samsung qui fait le reste .

je parle du triac car c est lui que je desire faire une regulation PID . Pas pour la pompe samsung .

La consigne doit suivre la production photovoltaique . il n y a pas de consigne fixe . le régulateur modbus prend le maximum d’energie des panneaux solaire . ont s’enfou si il n y a pas assez d énergie fin de journee, car il y a une autre chaudiere qu gaz qui a une consigne également en cas de manque d energie elecrique et qui chauffe avec de energie fossile :pensive: . ( bâtiment off grid )

Pq 10 secondes ? car c est un temps moyen d e passage d un nuage devant les panneaux solaires . mais 1 minute c est correct aussi si obligatoire par le cron …

jene prends pas d appareils tout fait car a force d ajouter des appareils, c est non seulement plus chere, mais plus risquer d avoir 1 panne . j ai confiance a jeedom , ca fait 3 ans qu il tourne a merveille derrière un ups . Si le triac perds la communication modbus , je peux lui dire d arrêter la consommation de puissance ,remise en veille jusqu a que la communication revienne .

Si se n est pas moi qui developpe la regulation PID modbus dans jeedom, ca sera une autre personne plustard,jeedom evelue et evoluera dans cette direction grace a la communauté . Le plugin est peut etre deja existant, mais pas partager …

Il n’y pas de plugin pour l’instant @jeanlegrand, mais le code est existant et partagé, il n’y a plus qu’à t’y mettre. :grinning: Je peux t’aider bien sûr.

@afawaz vient d’implémenter le code pour externaliser la sonde de sa vanne thermostatique ici.

Pour revenir à ton triac

La consigne doit être fixe un minimum de temps pour le régulateur. Imagine un changement de consigne du chauffage toutes les 15 minutes ou un changement de consigne sur le régulateur de vitesse toutes les 2 secondes, le régulateur va galérer en permanence pour rejoindre la consigne.

La production photovoltaïque fluctue énormément avec le passage d’un nuage. Si cette grandeur doit servir de consigne pour autre chose, il faudra que le régulateur tourne plutôt très très vite, plusieurs fois par seconde. J’ai un peu de mal à comprendre. Quelle est la fréquence d’actualisation de la puissance de tes panneaux ? À quelle fréquence peux-tu modifier le courant de ton triac ? Peux-tu détailler ton installation (panneau, batterie, triac, chaudière gaz) ? Comment fais-tu actuellement sans ton futur PID ?

@Domatizer Mes reglages actuels :
image
Je dois avoir qlq chose qui ne va pas, surtout avec ce Ki !

Ce matin j’ai essayé d’aumenté la temperature de consigne a 25 degre pour voir comment ca reagit ! pas evident du tout !
voici le plan de l’appartement :

voici le resultat → ouverture vanne = 100% !!


autant dire que la monte en temperature est lente, temperature exterieur = 13 degre et appart isole double vitrage !
bref test en court …

Oui, ton Ki est beaucoup trop grand ! Du coup l’action intégrale I est à plus de 1500%
La durée Ti est trop petite, son ordre de grandeur est quelques heures : plutôt 200 à 300 minutes et non pas 5 min

Remarque, le changement de Ki fait un saut dans la courbe de l’erreur d’intégration pour ne pas avoir d’à-coup dans la courbe de l’action intégrale I. Dans ton cas, l’erreur d’intégration est dans les choux, je te propose modifier le Ti pour avoir un Ki correct et de la réinitialiser l’erreur d’intégration à zéro afin de gagner du temps.

Si la montée en température est lente avec une vanne ouverte à fond sachant qu’il fait 13°C dehors : soit l’eau n’est pas assez chaude, soit le radiateur sous dimensionné, soit la consigne est trop haute (c’est possible avec 25°C). Bref, c’est l’opposé de ce que je t’ai dit pour tes 6% précédemment !

À titre de comparaison, dans mon séjour de 30 m², le radiateur met environ 7h (de 5h à midi) pour atteindre la consigne de 20°C en partant de 18°C avec la vanne est ouverte à 100% les premières heures. Avec la régulation autonome de la tête, j’atteignais la consigne seulement en fin de journée puisque la tête ne voulait jamais ouvrir très grand la vanne. Dans mon cas, cette lenteur s’explique par le fait que chaudière applique de son côté la loi d’eau. En effet, elle chauffe l’eau au minimum nécessaire en fonction de la température extérieure. Donc l’eau n’est pas assez chaude pour monter rapidement en température. C’est un peu comme si on met une cale sous la pédale d’accélération, c’est plus long pour doubler ou pire impossible de doubler.

@afawaz Corrige tes coefficients, remet ta consigne à 22°C, monitore tout et laisse faire la régulation…

en 1 secondes les 2 onduleurs de 6kw peuvent passer de 100% à 20% et inversement avec un gros nuage. ce sont ses même onduleurs sunny boy sma qui fournissent l info en modbustcp ip . mais je peux recevoir l info par un autre onduleur sur place qui fait office de chef d orchestre , le sunny island .
le triac peut passer de 0à100% en 5 secondes ± et de 100 % à 0 % en 1 secondes . je peux le faire des milliers de x par jour …
actuellement je régule manuellement moi même ( en début de journée ) avec mymodbus ou j ai fait sur la dashboard 6 bouton de 20/30/40/50/60/100 . je choisit suivant la puissance moyenne des panneaux solaire dans la journée . Le soir , mon sunny island bascule un relay quand la batterie est moins de 60 % , le triac est donc en veille jusqu a que la batterie repasse au dessus de 70% ( hystérésis de 10 % pour ne pas avoir de on/off par dizaines entre la valeur±1%).
la chaudiere gaz est bloquee sur un thermostat fixe 24/24 à 22 degres … le batiment est super bien isolé,il y a que tres peux de deperdition, je ne coupe donc pas la nuit .

Ok @Domatizer, je remets a 22, je mets kp a 50%/°C et Ti a 240min !!
Mais du coup je n’est pas vraiment compris ce que c’est Ti ! Il faut vraiment que je replonge dans mes cours de régulation d’il y a 20 ans !
Mon scenario s’exécute tous les 5 mn.

Tu dis que N ne sert qu’a la régulation D, mais il intervient tout le temps dans le calcule de la variation_erreur. Je le remet a zero, ca simplifie .

Je test tout ca …
Merci

Oui, le calcul de variation_erreur est toujours effectué, tu peux laisser N=2, ça permet de voir l’allure du filtrage de la variation d’erreur même si elle n’est pas pris en compte lorsque le régulateur est en mode PI.

Ne va pas de te faire mal à la tête. :grinning:
Ti représente la constante de temps pour l’intégration. Je raisonne plutôt avec le Ki=Kp/Ti en %/(°C.h)
L’erreur d’intégration, correspond à la somme des erreurs au cours du temps et s’exprime en °C.h :
Erreur d’intégration = surface verte - surface rouge

Tu veux que ton triac suive tes onduleurs ? Tu ne peux pas dire à ton triac de prendre comme valeur la puissance fournies par tes onduleurs (ou un truc qui appui sur 1 de tes 6 boutons) toutes les 10 secondes ? Je ne vois toujours pas le besoin de régulateur.

1 « J'aime »

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 .