Si vous pouvez compiler le code, faites vos expérimentations, c'est plutôt simple à modifier.
La ligne à modifier est celle-ci:
RetardF[i] = RetardF[i] + (Puissance - SeuilPw) * GainBoucle / 10000.0;
Tout est là...
% = 100 - RetardF[i]
GainBoucle = réactivité en paramètre
SeuilPw = le seuil en paramètre
Puissance = la mesure à corriger.
Dans le code actuel, vous pouvez voir que c'est une intégration de l'écart (Puissance - SeuilPw) avec un facteur de proportionnalité.
Vous voulez faire un truc qui corrige directement en puissance. Il faudra commencer par convertir RetardF[i] en puissance en utilisant la formule en sin² (voir H_Ouvre_Equivalent() )
Et ensuite trouver la variation en % à appliquer pour que la prochaine variation soit égale à (Puissance - SeuilPw).
Vous pourrez aussi garder un coefficient de proportionnalité <1 pour garder de la marge sur le gain de boucle.
Comme écrit juste avant, le système actuel est déjà bien; il a aussi l'avantage de la simplicité.
La ligne à modifier est celle-ci:
RetardF[i] = RetardF[i] + (Puissance - SeuilPw) * GainBoucle / 10000.0;
Tout est là...
% = 100 - RetardF[i]
GainBoucle = réactivité en paramètre
SeuilPw = le seuil en paramètre
Puissance = la mesure à corriger.
Dans le code actuel, vous pouvez voir que c'est une intégration de l'écart (Puissance - SeuilPw) avec un facteur de proportionnalité.
Vous voulez faire un truc qui corrige directement en puissance. Il faudra commencer par convertir RetardF[i] en puissance en utilisant la formule en sin² (voir H_Ouvre_Equivalent() )
Et ensuite trouver la variation en % à appliquer pour que la prochaine variation soit égale à (Puissance - SeuilPw).
Vous pourrez aussi garder un coefficient de proportionnalité <1 pour garder de la marge sur le gain de boucle.
Comme écrit juste avant, le système actuel est déjà bien; il a aussi l'avantage de la simplicité.