Vous êtes sur la page 1sur 8

2023/2024

ESTIMATION DES MODELES DE BOITE


GRISE NON LINEAIRES
MODELISATION DU SYSTEME SOUS MATLAB

ABDELLAOUI SOUMIA
CI3-ESI2A
I. Objectif :
L'objectif de ce rapport est de présenter une méthode pour estimer les modèles de boîte grise non
linéaires à l'aide de MATLAB.

II. Manipulation 1 : Principe d’un moteur à courant continu.

 Le code :
load('dcmotordata');
z = iddata(y, u, 0.1, 'Name', 'DC-motor');
z.InputName = 'Voltage';
z.InputUnit = 'V';
z.OutputName = {'Angular position', 'Angular velocity'};
z.OutputUnit = {'rad', 'rad/s'};
z.Tstart = 0;
z.TimeUnit = 's';
figure('Name', [z.Name ': Voltage input -> Angular position output']);
plot(z(:, 1, 1)); % Plot first input-output pair (Voltage -> Angular
position).
figure('Name', [z.Name ': Voltage input -> Angular velocity output']);
plot(z(:, 2, 1)); % Plot second input-output pair (Voltage -> Angular
velocity).

La méthode proposée consiste à utiliser l'objet idnlgrey de la boîte à outils MATLAB System
Identification. Cet objet permet de spécifier la structure d'un modèle non linéaire en temps continu
ou discret, puis d'estimer ses paramètres à partir de données d'entrée-sortie.

 Les graphes :

2|P age
Les graphiques présentés dans le rapport montrent la réponse du moteur à courant continu à une
entrée sinusoïdale. Les données d'entrée-sortie sont représentées dans les deux graphiques.
Le graphique de la position angulaire montre que la réponse du modèle est en accord avec les
données d'entrée-sortie. La réponse est sinusoïdale et a la même fréquence que l'entrée.
Le graphique de la vitesse angulaire montre que la réponse du modèle est également en accord
avec les données d'entrée-sortie. La réponse est sinusoïdale et a la même amplitude et la même
phase que l'entrée.

III. Manipulation 2 : Données d’entrée-sortie d’un moteur à courant


continu

 Le code : Modélisation linéaire du moteur à courant continu


FileName = 'dcmotor_m'; % File describing the model structure.
Order = [2 1 2]; % Model orders [ny nu nx].
Parameters = [1; 0.28]; % Initial parameters. Np = 2.
InitialStates = [0; 0]; % Initial initial states.
Ts = 0; % Time-continuous system.
nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts, ...
'Name', 'DC-motor');
set(nlgr, 'InputName', 'Voltage', 'InputUnit', 'V', ...
'OutputName', {'Angular position', 'Angular velocity'}, ...
'OutputUnit', {'rad', 'rad/s'}, ...
'TimeUnit', 's');
nlgr = setinit(nlgr, 'Name', {'Angular position' 'Angular velocity'});
nlgr = setinit(nlgr, 'Unit', {'rad' 'rad/s'});
nlgr = setpar(nlgr, 'Name', {'Time-constant' 'Static gain'});
nlgr = setpar(nlgr, 'Unit', {'s' 'rad/(V*s)'});
size(nlgr)
nlgr.InitialStates(1)
nlgr.Parameters(2)

 La fonction dcmotor_m() définit les équations d'état et de sortie du moteur à courant


continu. La fonction prend en entrée le temps, le vecteur d'état, le vecteur d'entrée, les
paramètres du modèle et des arguments auxiliaires. Elle renvoie le vecteur des dérivées
d'état et le vecteur de sortie.

3|P age
 L'objet idnlgrey est utilisé pour représenter le modèle de boîte grise non linéaire. L'objet
prend en entrée le nom du fichier de modèle, les ordres du modèle, les paramètres initiaux,
les états initiaux et la taille de l'échantillonnage.

 Dans cet exemple, le nom du fichier de modèle est dcmotor_m. Les ordres du modèle sont
[2 1 2], ce qui signifie que le modèle a deux sorties, une entrée, deux états et deux
paramètres. Les paramètres initiaux sont [1; 0.28] et les états initiaux sont [0; 0]. La taille de
l'échantillonnage est 0, ce qui signifie que le modèle est continu dans le temps.

 Le modèle est ensuite visualisé en utilisant les fonctions size(), get() et nlgr.

 La fonction size() renvoie la taille du modèle. Dans cet exemple, le modèle a 2 sorties, 1
entrée, 2 états et 2 paramètres.

 La fonction get() renvoie des informations sur les propriétés du modèle. Dans cet exemple,
la fonction get() est utilisée pour renvoyer les noms et les unités des entrées et des sorties,
les noms et les unités des états et paramètres initiaux, et des informations de base sur le
modèle.

 La fonction nlgr renvoie une représentation textuelle du modèle. Dans cet exemple, la
fonction nlgr est utilisée pour renvoyer une représentation textuelle du modèle de moteur à
courant continu.

 Le code : Evaluation des performances du modèle initial de moteur à


courant continu
nlgr.SimulationOptions.AbsTol = 1e-6;
nlgr.SimulationOptions.RelTol = 1e-5;
compare(z, nlgr);

 Modèle: Le modèle utilisé pour la simulation est un modèle gris-boîte non linéaire,
représenté par l'objet nlgr.

 Options de simulation: Les options de simulation pour le modèle nlgr sont définies
avec AbsTol = 1e-6 et RelTol = 1e-5. Ces options spécifient les tolérances absolue et relative
pour la simulation, qui contrôlent la précision des résultats de la simulation.
4|P age
 Données de validation: Les données de validation consistent en des valeurs mesurées de la
réponse du système (position angulaire et vitesse angulaire) pour une entrée donnée
(tension).

 Comparaison: La fonction compare(z, nlgr) est utilisée pour comparer la réponse simulée à
partir du modèle nlgr aux données de validation. L'objet z représente probablement les
données de validation.

 Les graphes :

Les graphiques de l'image montrent la réponse simulée et les données de validation pour la
position angulaire et la vitesse angulaire. La réponse simulée semble correspondre étroitement aux
données de validation, ce qui indique que le modèle nlgr est une bonne représentation de la
dynamique du système.

5|P age
IV. Manipulation 3 : Comparaison entre les sorties mesurées et les
sorties simulées du modèle initial de moteur à courant continu.
 Le code : Estimation des paramètres :
nlgr = setinit(nlgr, 'Fixed', {false false}); % Estimate the initial states.
opt = nlgreyestOptions('Display', 'on');
nlgr = nlgreyest(z, nlgr, opt);

 La première étape du code consiste à spécifier que les états initiaux doivent être estimés.
Cela est fait en définissant la propriété Fixed de l'objet nlgr sur false pour les deux états
initiaux.
 La deuxième étape consiste à créer un jeu d'options pour la fonction nlgreyest(). Ce jeu
d'options spécifie les paramètres de l'algorithme d'estimation, tels que la méthode
d'optimisation à utiliser et la précision souhaitée de l'estimation. Dans ce cas, le seul
paramètre spécifié est Display, qui est défini sur on pour afficher la progression de
l'estimation.
 La troisième étape consiste à appeler la fonction nlgreyest(). Cette fonction prend en entrée
les données d'entrée-sortie, l'objet nlgr et le jeu d'options. La fonction retourne un objet
nlgr mis à jour avec les paramètres et les états initiaux estimés.

 Le graphe :

6|P age
Le graohe montre les résultats de l'estimation des paramètres et des états initiaux. Les graphiques
montrent la réponse simulée du modèle estimé aux données d'entrée-sortie. La réponse simulée
semble correspondre étroitement aux données d'entrée-sortie, ce qui indique que les paramètres
et les états initiaux estimés sont corrects

 Le code : Évaluation des performances du modèle de moteur à courant


continu estimé :
nlgr.Report
fprintf('\n\nThe search termination condition:\n')
nlgr.Report.Termination
compare(z, nlgr);

 La fenêtre de commande :

 Les graphes :
Les résultats simulés et mesurés sont présentés dans l'image que vous avez envoyée. Les
graphiques montrent la réponse simulée et mesurée de la position angulaire et de la vitesse
angulaire du moteur à courant continu.

7|P age
Les ajustements de la position angulaire et de la vitesse angulaire sont de 98 % et 84 %,
respectivement. Ces ajustements sont élevés, ce qui indique que le modèle estimé capture
bien la dynamique du moteur à courant continu.

8|P age

Vous aimerez peut-être aussi