<figure><img src="image_1.png" /></figure>

HAL
open science

# Calcul symbolique de l'ensemble des équations d'état pour les bond graphs en commutation

Hervé Cormerais, Jean Buisson, Pierre-Yves Richard, Sylvain Leirens

<figure><img src="image_2.png" /></figure>

## To cite this version:

Hervé Cormerais, Jean Buisson, Pierre-Yves Richard, Sylvain Leirens. Calcul symbolique de l'ensemble des équations d'état pour les bond graphs en commutation. CIFA, Jul 2002, Nantes, France. hal-00959346

HAL Id: hal-00959346

https://hal.science/hal-00959346v1

Submitted on 8 Oct 2024

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_3.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Calcul symbolique de l'ensemble des équations d'état pour les bond graphs en commutation

HERVE CORMERAIS, JEAN BUISSON, SYLVAIN LEIRENS, PIERRE-YVES RICHARD

Equipe d'Automatique des Systèmes Hybrides
SUPELEC, avenue de la Boulaie, BP81127 35511 Cesson-Sévigné CEDEX

Herve.Cormerais@supelec.fr
http://www.supelec.fr

**Résumé**— Les bond graphs, outil de modélisation à l'origine développé pour les systèmes continus, permettent aussi d'envisager la modélisation des systèmes en commutation. L'utilisation d'interrupteurs idéaux conduit alors à des modèles à topologie variable, la causalité du bond graph changeant suivant le mode ; on obtient en général un grand nombre de modèles et la nécessité de réinitialiser le vecteur d'état si les contraintes changent. Cet article présente un programme utilisant le calcul symbolique, développé sous Mathematica, permettant de calculer, pour un système donné, tous les modes valides, ainsi que pour chaque mode, l'équation d'état correspondante. Ces calculs sont effectués à partir de la seule connaissance de la structure de jonction dans un mode donné ainsi que des lois constitutives des différents éléments. Enfin un exemple issu de l'électronique de puissance illustre le fonctionnement du programme.

**Mots clés**— Bond graph, Systèmes hybrides, Formes implicites, Calcul symbolique, Mathematica.

## I. INTRODUCTION

Initialement conçus pour modéliser les phénomènes continus, les bond graphs sont, depuis quelques années, également utilisés pour représenter les systèmes en commutation. L'utilisation de modèles idéaux pour les éléments commutants (encore appelés interrupteurs par abus de langage) conduit alors à des modifications de causalité aux changements de modes (ou configurations). Il en résulte, dans le cas général, un grand nombre de modèles, correspondant aux modes valides i.e. aux modes qui respectent les lois de Kirchhoff (au maximum $2^n$ si le système contient $n$ interrupteurs), ainsi qu'une nécessité de réinitialiser le vecteur d'état si les contraintes changent lors des changements de configuration. L'utilisation de l'outil bond graph et la notion d'équations implicites a permis le développement d'une méthode générale de modélisation de la partie continue des systèmes en commutation [1], [3]. Pour chaque mode valide du système, une forme standard implicite représentant les relations d'entrées/sorties de la structure de jonction est déterminée et via l'adjonction des relations constitutives, on en déduit l'équation d'état implicite correspondante. On obtient alors une collection d'équations d'état correspondant aux différents modes valides du système [2], [4]. Des modèles complets de systèmes hybrides ont été développés comprenant un automate d'état fini auquel est associé un ensemble de sous-modèles pour lesquels sont déterminées les équations d'état et les

éventuelles discontinuités du vecteur d'état. Mais dans ces approches, les sous-modèles étant considérés comme indépendants il faut réitérer le processus permettant la déduction des équations d'état autant de fois que le système comprend de modes. Avec le formalisme bond graph, le processus habituel consiste alors à assigner la causalité sur les interrupteurs afin de fixer le mode puis d'appliquer SCAP. S'il s'avère impossible d'assigner la causalité à l'ensemble du bond graph, c'est que le mode considéré n'est pas valide. Dans le cas contraire on en déduit alors les relations d'entrées/sorties de la structure de jonction puis l'équation d'état correspondante via l'adjonction des relations constitutives. La même procédure devant être répétée $2^n$ fois si le système comporte $n$ interrupteurs [5], [6] et [7].

Or les différents modèles de la partie continue d'un système hybride sont liés, seuls quelques chemins causaux sont modifiés pour passer d'un mode à un autre, cette modification résultant du changement de l'état d'un ou plusieurs interrupteurs. Il apparaît alors que déterminer les modes valides revient à tester le rang d'une matrice et il n'est plus nécessaire d'appliquer SCAP pour les $2^n$ modes. Connaissant les relations d'entrées/sorties de la structure de jonction dans un mode donné ainsi que les lois constitutives des différents éléments, on en déduit les équations d'état pour tous les modes valides. Enfin, une solution formelle au problème de la discontinuité du vecteur d'état peut être donnée [1], [3].

Le caractère systématique et formel de cette méthode a permis d'envisager sa réalisation sous la forme d'un programme utilisant le calcul symbolique. Ce programme a été mis au point via l'outil Mathematica. C'est la réalisation de ce programme et son illustration sur un exemple issu de l'électronique de puissance qui sont présentés dans cet article. Dans une première partie, sont rappelés les principes aboutissant à la détermination de la forme standard implicite dans un mode donné à partir du formalisme bond graph. Un critère algébrique permettant d'évaluer tous les modes valides est aussi présenté. Puis une description de l'algorithme permettant la déduction de toutes les formes standards implicites est présentée en mettant l'accent sur la notion de matrice de passage. On s'efforcera d'adopter une approche procédurale permettant une traduction simple en langage Mathematica.

La seconde partie traite de la traduction de la méthode en langage Mathematica. Après une brève présentation du logiciel, une description du programme réalisé est effectuée. La troisième partie illustre, sur un exemple issu de l'électronique de puissance, il s'agit d'une alimentation continu/continu, le fonctionnement du programme.
### A. Structuration et détermination de la forme standard implicite

Un bond graph représentant la partie continue d'un système en commutation dont les éléments commutants sont modélisés de manière idéale est constitué des éléments suivants :

* un champ correspondant aux éléments produisant de l'énergie, ce sont les sources d'effort Se ou de flux Sf;

* un champ R correspondant aux éléments qui dissipent l'énergie ou résistifs;

* un champ correspondant aux éléments de stockage capacitifs C ou inertiels I;

* un champ qui n'appartient pas aux bond graphs standards et qui correspond aux éléments commutants, il est noté Sw;

* enfin, une structure de jonction traduisant la topologie du système.

La convention de signe pour la puissance est la suivante : des sources vers la structure de jonction et de la structure de jonction vers les autres éléments (R, I, C ou Sw).

<figure><img src="image_4.png" /><figcaption>**Figure 1.** Structure d'un bond graph acausal</figcaption></figure>

Dans un mode donné, déduit du bond graph causal, on obtient le schéma informationnel suivant qui conduit à la forme standard implicite (1) :

<figure><img src="image_5.png" /><figcaption>**Figure 2.** Schéma informationnel déduit du bond graph causal</figcaption></figure>

$$ \underbrace{\begin{pmatrix} \mathbf{I} & -S_{12} \\ 0 & 0 \\ 0 & 0 \\ 0 & -S_{24}^T \end{pmatrix}}_{\dot{M}} \dot{X} = \underbrace{\begin{pmatrix} S_{11} & 0 & S_{13} & 0 & S_{14} & 0 & S_{15} \\ -S_{12}^T & -\mathbf{I} & 0 & 0 & S_{24} & 0 & S_{25} \\ -S_{13}^T & 0 & S_{33} & -\mathbf{I} & S_{34} & 0 & S_{35} \\ -S_{14}^T & 0 & -S_{34}^T & 0 & S_{44} & -\mathbf{I} & S_{45} \end{pmatrix}}_{S} \dot{W} \quad (1) $$

$$ \text{avec : } X = \begin{pmatrix} X_i \\ X_d \end{pmatrix}, \quad W = (Z_i \ Z_d \ D_{in} \ D_{out} \ T_{in} \ T_{out} \ U)^T $$

### B. Changement de mode et conséquence sur la forme standard implicite

On part d'une configuration telle que le nombre d'éléments en causalité intégrale soit maximum. Dans ce cas, $S_{24} = 0$. Une telle configuration est appelée configuration de référence.

Une commutation de mode se traduit par le changement de causalité de certains interrupteurs. Une relation liant les vecteurs $T'_i$ et $T'_o$ dans le nouveau mode aux vecteurs $T_i$ et $T_o$ peut alors être déterminée :

$$ \begin{pmatrix} T_i \\ T_o \end{pmatrix} = \begin{pmatrix} \mathbf{I} - \Lambda & \Lambda \\ \Lambda & \mathbf{I} - \Lambda \end{pmatrix} \begin{pmatrix} T'_i \\ T'_o \end{pmatrix} \quad (2) $$

$\Lambda$ est une matrice diagonale dont chaque élément diagonal vaut 1 si l'état de l'interrupteur correspondant a changé par rapport à la configuration de référence (0 sinon).

Le changement d'état d'interrupteurs entraîne aussi dans le cas général des changements de causalité sur des éléments résistifs ou de stockage d'énergie. Pour les éléments résistifs, ce changement est décrit par une matrice diagonale $\Delta$. Chaque élément diagonal $\Delta$ correspond à un élément R et vaut 1 si sa causalité a changé par rapport à la configuration de référence, 0, sinon. Une relation analogue à (2) est obtenue liant les vecteurs $D'_i$ et $D'_o$ dans le nouveau mode aux vecteurs $D_i$ et $D_o$ :

$$ \begin{pmatrix} D_i \\ D_o \end{pmatrix} = \begin{pmatrix} I - \Delta & \Delta \\ \Delta & I - \Delta \end{pmatrix} \begin{pmatrix} D'_i \\ D'_o \end{pmatrix} \quad (3) $$

Quant aux éléments de stockage d'énergie, certains peuvent avoir perdu leur causalité intégrale. Il est cependant toujours possible de trouver une assignation de la causalité telle que les éléments en causalité dérivée dans le mode de référence le restent. Ainsi $X_i$ peut être divisé en deux parties, $X'_i$ et $X'_{id}$, qui correspondent respectivement aux variables restant en causalité intégrale et aux variables passant en causalité dérivée. De même $Z_i$ est divisé en $Z'_i$ et $Z'_{id}$. Il existe alors 2 matrices $T_1$ et $T_2$ telles que

$$ \begin{pmatrix} T_1 & T_2 & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} X'_i \\ X'_{id} \\ X_d \end{pmatrix} = \begin{pmatrix} X_i \\ X_d \end{pmatrix} \quad (4) $$

$[T_1 \ T_2]$ est une matrice de permutation de dimension égale au nombre d'éléments de stockage en causalité intégrale dans le mode de référence. $T_1$ spécifie quels éléments restent en causalité intégrale, $T_2$ ceux qui passent en causalité dérivée. Puisque la relation algébrique contenue dans (1) est toujours vraie, on obtient en substituant (2), (3) et (4) dans (1) la forme standard implicite après la commutation [1], [3] :

$$ \begin{pmatrix} T_1 & T_2 & -S_{12} \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix} \begin{pmatrix} \dot{X}'_i \\ \dot{X}'_{id} \\ \dot{X}_d \end{pmatrix} = \begin{pmatrix} S_{11} & T_1 & S_{11} & T_2 & 0 & S_{13} & (1-\Delta) & S_{13} & \Delta \\ -S_{12}^T & T_1 & -S_{12}^T & T_2 & -I & 0 & 0 & 0 & \Delta \\ -S_{13}^T & T_1 & -S_{13}^T & T_2 & 0 & S_{33} & (1-\Delta) & -\Delta & -S_{33} & \Delta \\ -S_{14}^T & T_1 & -S_{14}^T & T_2 & 0 & -S_{34}^T & (1-\Delta) & -S_{34}^T & \Delta & 0 \end{pmatrix} \begin{pmatrix} Z'_i \\ Z'_{id} \\ Z_d \\ D'_i \\ D'_{id} \end{pmatrix} + \begin{pmatrix} S_{14} & (1-\Delta) & S_{14} & \Lambda & S_{15} \\ 0 & 0 & S_{25} & 0 & 0 \\ S_{34} & (1-\Lambda) & S_{34} & \Lambda & S_{35} & 0 & 0 \\ S_{44} & (1-\Lambda) & -\Lambda & -(1-\Lambda) & S_{44} & \Lambda & S_{45} & 0 \end{pmatrix} \begin{pmatrix} T'_i \\ T'_o \\ U \end{pmatrix} \quad (5) $$

### C. Critère de détermination des modes valides

On nomme mode valide ou configuration valide, un état des interrupteurs du système tel que les lois de Kirchhoff sont
respectées. En général, pour un système comportant n interrupteurs les 2ⁿ modes ne sont pas valides. Lors de l'application de SCAP, si on considère, du point de vue de la causalité, les interrupteurs comme des sources, les modes non valides correspondent à des conflits de causalité à l'étape1. Un critère algébrique peut alors être déterminé. Considérant (1), pour une configuration de référence, une nouvelle configuration définie par (3)-(4) est valide si et seulement si la relation (5) est vérifiée :

$$ \text{rang}(\Gamma(-S_{14}^T - S_{34}^T - S_{44} \Gamma^T)) = k \quad (6) $$

où k est le nombre d'interrupteurs ayant commuté [4].

### D. Réinitialisation du vecteur d'état

Quant un interrupteur passe dans l'état on ($e=0$), son effort est discontinu (le flux s'il passe dans l'état off ($f=0$)). Dans

ce cas, les variables d'état $X^+ = \begin{pmatrix} X_i^+ \\ X_d^+ \end{pmatrix}$ sont discontinues à la

commutation et certaines variables, les composantes de $T_{out}$ peuvent être impulsionnelles : $T_o = \Pi_o \delta(t - t_c)$ (7)

On détermine analytiquement $X^+$ et $\Pi_o$ en résolvant l'équation (1) correspondant au mode après la commutation (intégration des lignes 1 et 4). On obtient alors [1] :

$$ X_d^+ = R \left( (S_{12}^T F_i + F^T) (S_{12} X_d^- - X_i^-) + S_{25} U^+ \right) \quad (8) $$

avec

$$ R = (-S_{12}^T F - F_d - S_{12}^T F_i S_{12} - F^T S_{12})^{-1} \quad (9) $$

$$ X_i^+ = X_i^- + S_{12} (X_d^+ - X_d^-) \quad (10) $$

$$ \Pi_o = S_{24}^T (X_d^+ - X_d^-) \quad (11) $$

### E. Algorithme de détermination des formes standards implicites

Si on concatène $(X_d^{id} \atop X_d)$ en $X_d'$ et $(Z_d^{id} \atop Z_d)$ en $Z_d'$, pour retrouver

la même forme structurelle que (1), il suffit de multiplier les deux membres de (5) par l'inverse d'une matrice W, dont les colonnes successives sont la première colonne de la matrice du membre de gauche, et les opposées des seconde, troisième, cinquième et septième colonnes de la matrice du membre de droite. On obtient alors la forme suivante pour W :

$$ W = \begin{pmatrix} T_1 & -S_{11} & T_2 & \mathbf{0} & -S_{13} & \Delta & -S_{14} & \Lambda \\ \mathbf{0} & S_{12}^T & T_2 & \mathbf{I} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \Lambda \\ \mathbf{0} & S_{13}^T & T_2 & \mathbf{0} & I - \Delta - S_{33} & \Delta & -S_{34} & \Lambda \\ \mathbf{0} & S_{14}^T & T_2 & \mathbf{0} & S_{34}^T & \Delta & I - \Lambda - S_{44} & \Lambda \end{pmatrix} \quad (12) $$

A partir de la forme standard implicite de référence et étant donné $\Lambda$, la recherche de la nouvelle forme standard implicite nécessite de déterminer 2 matrices $\Delta$ et $T_2$ telles que $W(\Delta, T_1, T_2)$ soit inversible. Afin de simplifier l'inversion de W, on la réécrit ainsi :

$$ W = \underbrace{\begin{pmatrix} T_1 & T_2 & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I} \end{pmatrix}}_{\Lambda} - \underbrace{\begin{pmatrix} \mathbf{I} + S_{11} & \mathbf{0} & S_{13} & S_{14} \\ -S_{12}^T & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ -S_{13}^T & \mathbf{0} & \mathbf{I} + S_{33} & S_{34} \\ -S_{14}^T & \mathbf{0} & -S_{34}^T & \mathbf{I} + S_{44} \end{pmatrix}}_{\mathcal{B}} \begin{pmatrix} T_2 & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{\Omega}^T & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{\Gamma}^T \end{pmatrix} \begin{pmatrix} \mathbf{0} & \mathbf{I} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{\Omega} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{\Gamma} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} \end{pmatrix} \quad (13) $$

L'utilisation du lemme d'inversion :

$$ (A - BCD)^{-1} = A^{-1} + A^{-1} B (C^{-1} - D A^{-1} B)^{-1} D A^{-1} \quad (14) $$

appliquée à cette décomposition avec $C = \mathbf{I}$ conduit à :

$$ W^{-1} = \begin{pmatrix} T_1^T & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ T_2^T & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{I} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I} \end{pmatrix} + \begin{pmatrix} T_1^T (\mathbf{I} + S_{11}) T_2 & T_1^T S_{13} \mathbf{\Omega}^T & T_1^T S_{14} \mathbf{\Gamma}^T & T_2^T (\mathbf{I} + S_{11}) T_2 \\ T_2^T (\mathbf{I} + S_{11}) T_2 & T_2^T S_{13} \mathbf{\Omega}^T & T_2^T S_{14} \mathbf{\Gamma}^T & T_2^T (\mathbf{I} + S_{11}) T_2 \\ -S_{12}^T T_2 & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ -S_{13}^T T_2 & (\mathbf{I} + S_{33}) \mathbf{\Omega}^T & S_{34} \mathbf{\Gamma}^T & (\mathbf{I} + S_{44}) \mathbf{\Gamma}^T \end{pmatrix} V^{-1} \begin{pmatrix} T_2^T & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{\Omega} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{\Gamma} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{\Gamma}^T \end{pmatrix} \quad (15) $$

Où $V$ est la matrice définie par :

$$ V = \begin{pmatrix} T_2^T & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{\Omega} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{\Gamma} \end{pmatrix} \begin{pmatrix} -S_{11} & -S_{13} & -S_{14} \\ S_{13}^T & -S_{33} & -S_{34} \\ S_{14}^T & S_{34}^T & -S_{44} \end{pmatrix} \begin{pmatrix} T_2 & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{\Omega}^T & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{\Gamma}^T \end{pmatrix} \quad (16) $$

$$ \text{avec } \Gamma \Gamma^T = \mathbf{I} \text{ et } \Gamma^T \Gamma = \Lambda \quad (17) $$

$$ \Omega \Omega^T = \mathbf{I} \text{ et } \Omega^T \Omega = \Delta \quad (18) $$

L'inversion de W se réduit à celle de V dont la dimension est bien moindre. Elle est en effet égale au nombre d'éléments ayant changé de causalité.

### F. Algorithme de détermination de $\Delta$, $T_1$ et $T_2$

L'algorithme de détermination de V se décompose en 3 étapes. [3]

$$ \text{On examine d'abord le rang de } V_1 = -\Gamma S_{44} \Gamma^T \quad (19) $$

Si $V_1$ est inversible alors $V=V_1$, $\Omega$ et $T_2$ sont des matrices vides et $T_1 = \mathbf{I}$. Ce cas correspond à un changement de causalité qui ne concerne que les interrupteurs.

Si $V_1$ est singulière, on recherche la matrice $\Omega$ de plus faible rang telle que

$$ V_2 = \begin{pmatrix} -\Omega S_{33} \Omega^T & -\Omega S_{34} \Gamma^T \\ \Gamma S_{34}^T \Omega^T & -\Gamma S_{44} \Gamma^T \end{pmatrix} \quad (20) $$

soit de rang plein ou maximum. Si le rang est plein, alors $V=V_2$, $T_2$ est alors une matrice vide et $T_1 = \mathbf{I}$. Ce cas correspond à un changement de causalité qui ne concerne que les interrupteurs et les éléments résistifs. On peut vérifier que ce cas correspond à rang $(\Gamma(-S_{34}^T S_{44} \Gamma^T)) = k$.

Si $V_2$ est singulière, avec $\Omega$ comme défini précédemment, on cherche $T_2$ de plus faible rang telle que la matrice V définie par (16) soit inversible. Dans ce cas des éléments de stockage perdent leur causalité intégrale.

Une fois parcouru cet algorithme, on est assuré de trouver la matrice de passage permettant de déduire la forme standard implicite dans le nouveau mode [3].

### III. REALISATION SOUS MATHEMATICA

#### A. Introduction

De manière générale, la réalisation d'applications sous Mathematica se fait à travers un notebook, interface textuelle et graphique qui permet de dialoguer avec le noyau de Mathematica (Kernel). Les programmes sont développés dans
le notebrok et les résultats qu'ils soient sous forme d'expressions mathématiques ou de graphismes sont également affichés dans un notebook [9]. Le but est ici de réaliser un programme reprenant les différents points exposés au §II. Ce dernier se présentera sous forme de procédures réalisant chacune une fonction élémentaire correspondant à un point particulier de la méthode. Le travail réalisé ici est à mettre en parallèle avec les travaux de Venuti [8], celui-ci ayant développé sous Mathematica un toolbox permettant à partir de la saisie graphique d'un bond graph de générer les équations d'état associées dans le cas de systèmes continus.

## B. Spécifications logicielles, conception

Le programme doit effectuer les traitements suivants (les termes entre crochets correspondent aux procédures Mathematica qui réalisent ces fonctions) :

* aller lire dans un fichier texte la matrice de structure de jonction et les relations constitutives correspondant au mode de référence [GetSmjs],

* déterminer les modes valides pour le système [DetCfgOk],

* déterminer les formes standards implicites correspondant aux modes valides [NewSmj],

* écrire les résultats à l'écran et dans un fichier texte [PutSmj].

Trouver les formes standards implicites dans un mode donné revient à déterminer les matrices Ω, T₁ et T₂ indispensables au calcul de V et donc de W afin de déduire les formes standards implicites les unes des autres.

Pour chacune des configurations valides du système, une fonction [DetOmegT1T2] va rechercher les matrices Ω et T₂ telle que V soit inversible. Cette fonction, fait appel a plusieurs autres fonctions :

* [Invers] qui teste l'inversibilité d'une matrice.

* [RechOmeg] qui recherche la matrice Ω conformément à l'algorithme décrit au §II.

* [RechT2] qui recherche la matrice T2 en suivant l'algorithme décrit au §II.

Pour les différents tests de rang, une fonction spécifique [Rang] a été crée. Une fois la matrice V déterminée, on calcule son inverse et on en déduit l'expression de W via la fonction [InvW]. On peut donc en déduire la nouvelle forme standard implicite dans le mode désiré (utilisation de la procédure [NewSmsj]).

Enfin, en insérant les relations constitutives, on en déduit la forme d'état implicite correspondante.

En terme d'entrées/sorties, les données à fournir au programme sont :

* Nombre d'éléments en causalité intégrale : $n_I$

* Nombre d'éléments en causalité dérivée : $n_D$

* Nombre d'éléments résistifs : $n_R$

* Nombre d'éléments commutants : $n_T$

* Nombre de sources : $n_U$

* Le mode (ou configuration) initial(e) : CfgInt

* Les sous-matrices de structure de jonction : $S_{11},..., S_{45}$

Ces données sont stockées dans un fichier texte. Le programme fournit les résultats sous deux formes :

* a l'écran, où sont affichées pour le mode données la forme standard implicite et la forme d'état implicite correspondantes.

* dans un fichier texte dont la syntaxe est analogue au fichier de données.

## C. Présentation du codage de quelques procédures

A titre d'exemple, sont représentés ci-dessous, les algorithmes de deux procédures.

### 1) DetOmegT1T2

**Service rendu** : rechercher Ω et T2 (+T1) telles que V soit inversible

**Paramètres d'entrée** : S33, S34, S11, S13, S14, Γ

**Paramètre de retour** : liste {Ω, T1, T2}

**Fonctions appelées** : nbL, PdM, TrM, Rang, Invers, RechOmeg, AddCol, RechT2, ConstrT1

**Principe de l'algorithme** :

<figure><img src="image_6.png" /></figure>

### 2) RechOmeg

**Service rendu** : recherche la matrice Ω telle que V soit de rang maximum

**Paramètres d'entrée** : S33, S34, Γ, V22

**Paramètre de retour** : Ω

**Fonctions appelées** : nbL, Rang, Invers, Ligne, AddCol, PdM, TrM

**Principe de l'algorithme** :

<figure><img src="image_7.png" /></figure>
IV. EXEMPLE

A. Présentation

Considérons le convertisseur de puissance décrit figure 3. Un tel montage permet de réguler la puissance à fournir à la charge R, L1 série, qui constitue un modèle simplifié de machine tournante, à partir de la source de tension continue U. C'est le pilotage des interrupteurs qui permettra de fournir la puissance souhaitée à la charge.

<figure><img src="image_8.png" /><figcaption>Figure 3. Schéma électrique de l'alimentation</figcaption></figure>

L'application du programme va permettre de déterminer pour tous les modes valides du système les formes standards et les formes d'état implicites correspondantes. La démarche est alors la suivante :

B. Création du fichier de données

En premier lieu, il faut pour une configuration de référence déterminer la forme standard implicite correspondante.

La figure 4 représente le bond graph causal dans la configuration où T1 et T3 sont off, T2 et T4 on, qui est une configuration de référence.

<figure><img src="image_9.png" /><figcaption>Figure 4. Bond graph causal avec T1 et T3 off, T2 et T4 on</figcaption></figure>

A partir de ce bond graph, on crée un fichier de données « ex3.dat » contenant la matrice de structure de jonction et les relations constitutives.

<figure><img src="image_10.png" /></figure>

Des commentaires peuvent être insérés avant l'identificateur data. Puis les différents paramètres sont rentrés : d'abord le nombre d'éléments en causalité intégrale puis dérivée ainsi que le nombre d'interrupteurs et de sources, puis La matrice de structure de jonction qui est indentifiée par ses sous-matrices Sij et enfin les relations constitutives.

C. Lancement du programme

Un fois lancé, le programme se présente comme indiqué figure 5. Il est alors demandé à l'utilisateur de spécifier le répertoire de travail et d'y choisir le fichier de données correspondant à l'exemple que l'on souhaite traiter. En l'occurrence, il s'agit ici du fichier « ex3.dat ».

<figure><img src="image_11.png" /><figcaption>Figure 5. Lancement du programme</figcaption></figure>

D. Forme standard implicite dans la configuration de référence

Le programme affiche la forme standard implicite dans la configuration de départ ainsi que les relations constitutives et l'équation d'état implicite correspondante.

<figure><img src="image_12.png" /><figcaption>Figure 6. Forme standard et d'état implicites dans le mode de départ</figcaption></figure>
## E. Détermination des modes valides

Puis sont déterminés tous les modes valides. Pour chaque nouveau mode, est indiqué l'état des interrupteurs. Est spécifié aussi quels sont les interrupteurs qui ont commuté par rapport à la configuration de départ.

Voic: les configurations d'interrupteurs acceptables :

1 : {F, E, F, F}
Les interrupteurs qui ont commutés sont : {4}

2 : {F, E, E, E}
Les interrupteurs qui ont commutés sont : {3}

3 : {F, E, E, F}
Les interrupteurs qui ont commutés sont : {3, 4}

4 : {F, F, F, E}
Les interrupteurs qui ont commutés sont : {2}

5 : {F, F, F, F}
Les interrupteurs qui ont commutés sont : {2, 4}

6 : {F, F, E, E}
Les interrupteurs qui ont commutés sont : {2, 3}

7 : {F, F, E, F}
Les interrupteurs qui ont commutés sont : {2, 3, 4}

8 : {E, F, F, E}
Les interrupteurs qui ont commutés sont : {1, 2}

9 : {E, F, F, F}
Les interrupteurs qui ont commutés sont : {1, 2, 4}

10 : {E, F, E, E}
Les interrupteurs qui ont commutés sont : {1, 2, 3}

11 : {E, F, E, F}
Les interrupteurs qui ont commutés sont : {1, 2, 3, 4}

<caption>**Figure 7.** Affichage des modes valides</caption>

Dans le cas considéré, on trouve 11 modes valides autre que le mode de départ.

Remarque : les variables E ou F identifient l'état des interrupteurs. E indique que l'interrupteur est en causalité source d'effort, il est donc dans l'état on, F indiquant quant à lui un interrupteur en source de flux, donc dans l'état off.

## F. Choix d'une nouvelle configuration et détermination des formes standard et d'état implicite correspondantes

A l'étape suivante, le programme détermine les formes standard et d'état implicite pour un mode valide (l'utilisateur en choisissant 1 parmi ceux trouvés à l'étape précédente).

Forme standard implicite :

$$ \begin{pmatrix} (1) & (0 & 0) \\ (0) & (0 & 0) \\ (0) & (0 & 0) \end{pmatrix} \begin{array}{c} \Xpi \\ \Xpd \end{array} = \begin{pmatrix} (0) & (0 & 0) & (-1) & (0) & (0 & -1 & 0 & 0) \\ (0) & (-1 & 0) & (0) & (0 & 1 & -1 & 0) \\ (1) & (0 & 0) & (0) & (-1) & (0 & 0 & 0 & 0) \\ (0) & (0 & 0) & (0) & (0 & 0 & 0 & 0) \\ (0) & (0 & 0) & (0) & (0 & 0 & 0 & 0) \\ (0) & (0 & 0) & (0) & (0 & 0 & 0 & 0) \end{pmatrix} \begin{pmatrix} Z\pi \\ Z\pd \\ D\pi \\ D\pout \\ T\pout \\ T\pout \\ U \end{pmatrix} $$

Relations constitutives :

$$ Lp = (R) \quad F\pi = (\frac{1}{L1}) \quad F\pd = (\frac{1}{C} \quad 0) \quad Fp = (0 \quad 0) $$

$$ \text{Equation d'état :} \begin{pmatrix} (1 & 0 & 0) \\ (0 & 0 & 0) \\ (0 & 0 & 0) \end{pmatrix} \begin{array}{c} \Xpi \\ \Xpd \end{array} = \begin{pmatrix} -\frac{R}{L1} & 0 & 0 \\ 0 & -\frac{1}{C} & 0 \\ 0 & 0 & -\frac{1}{L2} \end{pmatrix} \begin{array}{c} \Xpi \\ \Xpd \end{array} + \begin{pmatrix} (1) \\ (0) \\ U \end{pmatrix} $$

<caption>**Figure 8.** Affichage des formes standards et d'état implicite dans le nouveau mode.</caption>

De plus, le programme indique les matrices Γ, Ω et T2 ainsi que tous les changements de causalité intervenus sur le bond graph afin de passer du mode de départ au mode courant.

## G. Stockage des résultats

Enfin le programme propose un stockage des données dans un fichier dont la structure est analogue au fichier de données. Il est aussi possible d'effectuer un nouveau calcul de forme standard et d'état implicite portant sur une nouvelle configuration valide.

## V. CONCLUSION

Le programme présenté dans cet article permet dans le cas de systèmes en commutation utilisant un modèle idéal d'interrupteur de systématiser la procédure de recherche des modes valides et des équations d'état correspondantes. Il s'inscrit donc comme le complément aux modèles complets de systèmes hybrides développés par Strömberg ou Edström pour lesquels aucune méthode particulière n'est précisée quant à la détermination des équations d'état correspondant aux configurations valides ou pour ce qui concerne les calculs de discontinuités du vecteur d'état lors de changements de modes.

## VI. REFERENCES

[1] Buisson J., Cornerais H., Richard P.Y. "Analysis of the bond graph model of hybrid physical systems with ideal switches", Journal of System and Control Engineering, Vol 216, n°1, 2002.

[2] Buisson J., Richard P.Y., Cornerais H. "Formally computing the state equations for available configurations of bond graphs with switches", ICBGM 2001 Conference and proceedings, Phoenix, January 7-11, 2001.

[3] Buisson J., Cornerais H. "Descriptor Systems for the Knowledge Modelling and Simulation of Hybrid Physical Systems", Journal Européen des Systèmes Automatisés, Vol. 32, N° 9-10, (1998), pp 1047-1072

[4] Cornerais H., Buisson J. "A Determination of the Possible Modes of an Hybrid System Using the Bond Graph Formalism", IFAC Symposium on Power Plants & Power Systems Control 2000, Bruxelles, Avril 2000.

[5] Edström K. "Switched Bond Graphs, simulation and analysis", thesis, Linköping 1999.

[6] Mosterman P.J. "Hybrid dynamic systems : a hybrid bond graph modelling paradigm ans its application in diagnosis", thesis, 1997

[7] Strömberg J.E. "A mode switching modelling philosophy", thesis, Linköping 1994

[8] Venuti N. J. "Bond graph empowered by Mathematica", ICBGM 2001 Conference and proceedings, Phoenix, January 7-11, 2001.

[9] WOLFRAM S., "The Mathematica book, 3rd ed.", Wolfram Media/Cambridge University Press, ISBN 0-9650532-0-2/0-521-58889-8, 1996.