Comparaison de régulateurs discrets PID et FLOU


Tracés réalisés avec gnuplot version 4.0

Principes évoqués

Le procédé consiste à réguler le niveau d'une cuve à eau à l'aide d'un système numérique.
A l'opposé d'un système continu avec un régulateur classique analogique, le système "discret" opère par numérisations successives des mesures au temps d'échantillonage.
Ce comportement est celui des systèmes programmés numériques (automates, ordinateurs,....).

La comparaison des résultats porte donc sur des régulateurs à systèmes programmés, que ce soit pour la méthode "FLOU" mais aussi pour la méthode "PID".

Procédé simulé

Cette cuve est alimentée par un apport d'eau déterminé. Le niveau de la cuve est controlé par action sur une vanne de vidange déchargeant l'eau dans une turbine.
Les modules de régulation doivent maintenir un niveau défini dans la cuve.
Un des critères de réussite du régulateur étant la limitation des mouvements de l'organe réglant.

Caractéristiques de la cuve à eau

Apport d'eau : lois de variation

L'apport d'eau dans la cuve est simulée de la façon suivante : Attention: Le calcul du volume d'apport est aussi effectué de façon discrète. L'objectif étant de comparer des comportements, la réalité des apports ne fournirait pas d'informations supplémentaires.

Régulateur PID

Valeurs des paramêtres

/*init des parametres */
PidPrm->Cons_min = 0.0 ;	/*consigne de débit minimum (m3/s)*/
PidPrm->Cons_max = 2.50 ;	/*consigne de débit maximum (m3/s)*/
PidPrm->Kp = 5 ;		/* coefficient proportionnel */
PidPrm->Ki = 0.6 ;		/* coefficient intégral */
PidPrm->Kd = 1.2 ;		/* coefficient dérivé */
PidPrm->Z_morte = 0.2 ;		/* zone morte */


Régulateur FLOU

Valeurs des paramêtres

/*init des parametres */
FlouPrm->Baseniv = 0.1;		/*base de caractérisation du niveau (m)*/
FlouPrm->Basevar = 0.005 ;	/*base de caractérisation de la dérivée du niveau (m/s)*/

FlouPrm->Ntph = 10 ;		/*seuil de niveau trop haut (mNGF)*/
FlouPrm->Ntpb =  6 ;		/*seuil de niveau trop bas (mNGF)*/
FlouPrm->Pas_cod = 10/256 ;	/*pas codeur niveau (m)*/
FlouPrm->Te = TE ;		/*période d'échantillonnage (s)*/

FlouPrm->Cons_min = 0.0 ;	/*consigne de débit minimum (m3/s)*/
FlouPrm->Cons_max = 2.50 ;	/*consigne de débit maximum (m3/s)*/
FlouPrm->Omin = 0.015;		/*ordre minimum de variation de consigne de débit (m3/s)*/
FlouPrm->Omax = 0.50 ;		/*ordre maximum de variation de consigne de débit (m3/s)*/
FlouPrm->Typ_der = DERIV_BASIC;	/*type de dérivation : 0=basique, 1=à mémorisation*/
FlouPrm->Typ_algo = ALGO_STD;	/*type d'algorithme : 0=standard, 1=priorité à la stabilité*/

:set ai softtabstop=3