Bonjour tout le monde,
je viens vous demander de l'aide suite à une grosse impasse dans un projet que j'ai à réaliser sur matlab.
L'objectif est de créer un programme permettant d'appliquer la méthode DMC (Dynamic Matrix Control) à un réacteur dont on peut contrôler la positon d'une vanne 3 voies régulant les arrivées d'eau chaude et d'eau froide dans la double enveloppe d'un réacteur dont on souhaite réguler la température. Simulink est utilisé.
L'algorithme (très simplifié) est le suivant :
- on impose une première valeur à u (position de la vanne) : on mesure une température dans le réacteur
- on s'en sert pour calculer :
- la différence entre le vecteur de prédiction des sorties et le vecteur de référence
- la prédiction de sortie basée sur les entrées passées
- le résidu entre la prédiction et la sortie mesurée
- on en déduit un delta_u, d'où la prochaine position de la vanne à partir de laquelle on remesure une température dans le réacteur
on utilise dans l’algorithme la pile polonaise inversée. L'algorithme a été à priori relu et corrigé plusieurs fois.
Le souci rencontré est le suivant : on peut à priori demander une régulation de température entre 280 K (Tf) et 360 K (Tc). Lors de la durée de la régulation, la position de la vanne oscille très fortement, en faisant osciller également la température mesurée dans le réacteur. Dans les premiers intervalles de temps la température augmente ou diminue à partir de Tinitial (autour de 320K), puis la position de la vanne oscille et la température oscille également en s'éloignant de la valeur de référence. Ce phénomène se passe quelle que soit la température de référence imposée.
Auriez-vous une idée de l'origine de ce problème ? Je peux si jamais fournir les fichiers sources du projet par mp.
Merci d'avance !
-----