Retour à Tutoriel

Observateurs

Un observateur peut être considéré comme un capteur virtuel. En entrée, il prend les données de capteurs ou d’autres observateurs et produit en sortie une ou plusieurs estimation(s) de variable.

Pour créer un observateur, un outil a été développé pour vous simplifier la tâche et seul la partie algorithmique nécessite des connaissances en Scilab (logiciel libre de calcul numérique similaire à Matlab).

Il y a 7 étapes à réaliser pour créer un observateur. Certaines sont facultatives selon la complexité de votre observateur.
Vous pouvez naviger entre les différentes étapes comme vous le souhaitez en cliquand sur les onglets ou en utilisant les boutons Etape précédente et Etape suivante

De la page de présentation, vous pouvez aller directement à une étape en cliquant sur l’étiquette jaune associée.

Lorsqu’un champ est obligatoire, le symblose « ** » y est associé.

Etape 1 : Informations générales

  • Nom de l’observateur (UID) ** : Un observateur est considéré comme un dispositif virtuel. Comme pour les autres dispositif, il faut donc lui définir un UID unique
  • Description : Description de ce que fait cet observateur.
  • Continu/Discret ** : 2 modes sont disponibles (Continu ou Discret) pour la résolution des équations différentielles Ordinaires (E.D.O.)
  • Mode de résolution : Plusieurs méthodes de résolution sont proposées pour approcher la résolution de l’E.D.O.
    ode est la fonction utilisée pour approcher la solution d’une équation différentielle ordinaire (EDO)
    explicite du premier ordre en temps, définie par : dy/dt=f(t,y) , y(t0)=y0.
    Il s’agit d’une interface vers diverses bibliothèques, en particulier ODEPACK.
    Le type du problème et la méthode utilisée dépendent de la valeur du premier argument optionnel type qui peut être égal à :
    « adams » : Problèmes non raides. Le solveur lsode du package ODEPACK est utilisé (schéma d’Adams).
    « stiff » : Pour les systèmes raides. Le solveur lsode du package ODEPACK est utilisé avec le schéma BDF.
    « rk » : Schéma de Runge-Kutta adaptatif d’ordre 4 (RK4).
    « rkf » : Formules de Shampine et Watts basées sur les paires de Runge-Kutta Fehlberg d’ordre 4 et 5 (RKF45). Bien pour les problèmes non raides ou moyennement raides, lorsque le calcul du second membre n’est pas trop coûteux. Cette méthode est à éviter si l’on recherche une très grande précision.
    « fix« : Identique à « rkf », mais l’interface est simplifiée, i.e. uniquement rtol et atol sont communiqués au solveur.
    « root« : Solveur d’EDO avec recherche de racines. Le solveur lsodar du package ODEPACK est utilisé. C’est une variante de lsoda permettant la recherche d’une racine d’une fonction vectorielle donnée. Voir ode_root pour plus de détails.
    « discrete« : Simulation en temps discret. Voir ode_discrete pour plus de détails.
  • Auteur : Nom de la personne ayant créer cet observateur (utile pour savoir qui contacter en cas de problème ou pour comprendre l’algorithme)

Etape 2 : Sélection des capteurs

On sélectionne ici les capteurs dont on a besoin pour générer le(s) observateur(s).

Etape 3 : Variables Estimées

Variables estimées ou capteurs virtuels sont les observateurs. Vous devez remplir, ici les informations comme pour un capteur réel.

  • Donnez un nom unique (UID) ** : Nom du capteur, il doit être unique pour tous les capteurs et actionneurs. ODIN ne sait pas faire la différence entre deux capteurs/actionneurs avec le même nom (l’enregistrement sera défectueux)
  • Unité : si elle existe unité associée au capteur virtuel
  • Gammes de valeur, minimum/maximum : utilisé dans l’expérience pour savoir si la valeur est dans le domaine attendu. Elle s’affichera en rouge dans les graphes sinon. Utilisé aussi dans l’exportation des données pour indiquer si la valeur est fiable ou non
  • Valeur initiale ** : valeur utilisée au lancement du capteur, on utilse ensuite la valeur calculée.
  • Description : description du capteur virtuel
  • Label : Le label est seulement utilisé pour l’export des données au format XML
  • Nom du groupe : Le nom de groupe est seulement utilisé pour l’export des données au format XML

Etape 4 : Variables d’état (facultatives si votre modèle est simple – sans EDO)

Ce sont les variables d’états du système d’équations différentielles.

  • Donnez un nom unique (UID) ** : Ce nom doit être unique pour chaque variable d’état.
  • Unité : si elle existe unité associé au capteur
  • Valeur initiale ** : valeur utilisée au lancement du capteur, on utilse ensuite la valeur calculée.
  • Description : description de la variable d’état

Etape 5 : Paramètres internes

Les paramètres sont des constantes que l’on souhaite identifier avec leurs propriétés pour une meilleure lecture de l’algorithme de calcul (appeler simplement ses variables k1, k2, k3 ce n’est pas vraiment clair pour quelqu’un qui ne connait pas l’algorithme).

  • Donnez un nom unique (UID) ** : Ce nom doit être unique pour chaque paramètre.
  • Unité : si elle existe unité associé à la constante
  • Valeur ** : valeur du paramètre.
  • Description : description du paramètre

Etape 6 : Fonction dynamique (facultatives si votre modèle est simple – sans EDO et que vous ne voulez pas définir d’autres fonctions)

Dans cette page, vous pouvez définir des fonctions Scilab que vous souhaitez utiliser par la suite.
Si vous avez une E.D.O., vous devez remplir la zone de texte inférieur qui contient votre système à résoudre.

Vous pouvez ajouter, avec les listes/boutons sur la partie gauche,  les différent-e-s variables/paramètres que vous avez définis précédemment.

Etape 7 : Calcul de l’obervateur

Vous devez ici définir le calcul des capteurs virtuels (variables estimées). Vous avez à votre disposition tou-te-s les variables/paramètres définis lors des étapes précédentes ainsi que les « fonctions de calcul classique » de l’étape 6.
La valeur des variables d’état est celle après la résolution de l’E.D.O.

Vous pouvez maintenant générer votre observateur en allant dans le dernier onglet et en cliquant sur générer. Vous pouvez ensuite afficher le contenu du fichier (affichage seulement, pas écriture) pour vérifier qu’il n’y a pas eu de problème de génération (utilisateur connaissant Scilab).

 Retour à la page précédente