IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

simulation schéma électrique


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut simulation schéma électrique
    Bonjour !

    je développe en java un logiciel de simulation d'un schéma électrique
    j'ai besoin d'aide pour l'algorithme de calcul des tensions et des intensités pour chaque composant (résistances, transistors etc) je sais à peu près résoudre une matrice dans le cas d'un schéma particulier (Théorème de Thévenin / Norton) mais je ne sais pas comment écrire automatiquement la matrice dans le cas d'un schéma quelconque. Si vous avez des idées Merci !

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    je développe en java un logiciel de simulation d'un schéma électrique
    D'abord, on ne simule pas un schéma mais le comportement d'un circuit électrique.
    Ensuite, il faudrait savoir
    • si les sources sont continues, sinusoïdales ou autres;
    • si tu étudies un régime permanent ou transitoire;
    • si les éléments du circuit sont linéaires ou non.


    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci pour la précision sur le vocabulaire peu rigoureux (simulation du comportement d'un circuit et non pas d'un schéma bien sûr), en fai t le lapsus vient de ce que j'ai déjà programmé la partie éditeur de schéma.
    La source est un générateur idéal de tension continue, et les composants des conducteurs ohmiques et des transistors (2N2222) donc régime permanent et éléments du circuit pas toujours linéaire. voilà voilà. je rappelle que le problème n'est pas la résolution d'une simulation en particulier, mais la simulation de n'importe quel circuit tel qu'il est dessiné par l'utilisateur.
    :merci

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Alors, la première chose à faire est de décider comment seront introduites les données de ton circuit. Personnellement, je les enregistrerais dans un fichier ASCII dans lequel chaque ligne correspondrait à un élément de circuit. Chaque ligne comporterait
    • un identificateur indiquant de quel type d'élément il s'agit;
    • les numéros des noeuds entre lesquels se trouve l'élément;
    • le(s) paramètre(s) caractérisant l'élément.

    A chaque exécution, ton programme commencera par lire ce fichier. Tu pourras par la suite écrire un programme auxiliaire pour la saisie interactive des données et la génération du fichier.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Citation : Alors, la première chose à faire est de décider comment seront introduites les données de ton circuit. Personnellement, je les enregistrerais dans un fichier ASCII dans lequel chaque ligne correspondrait à un élément de circuit. Chaque ligne comporterait
    un identificateur indiquant de quel type d'élément il s'agit;
    les numéros des noeuds entre lesquels se trouve l'élément;
    le(s) paramètre(s) caractérisant l'élément.
    A chaque exécution, ton programme commencera par lire ce fichier. Tu pourras par la suite écrire un programme auxiliaire pour la saisie interactive des données et la génération du fichier.


    Tout cela c'est déjà fait : c'est d'ailleurs comme cela que fonctionne actuellement mon logiciel d'édition de schéma électrique. Mon problème maintenant c'est de trouver un algorithme qui permet de calculer les valeurs des courants dans les branches

  6. #6
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Alors, le plus simple est d'appliquer la méthode des noeuds:
    1. Tu numérotes les noeuds de 0 à n.
    2. Tu numérotes les branches de 1 à m.
    3. Tu as n potentiels inconnus qui sont les tensions entre les noeuds 1 à n et le noeud 0.
    4. Tu as m courants inconnus; chacun porte le numéro de la branche dans lequel il circule.
    5. Sur chacun des noeuds 1 à n, tu écris que la somme des courants sortants est nulle; ça te donne n équations.
    6. Dans chacune des branches, tu écris la relation entre le courant qui y circule et la différence des potentiels aux extrémités; ça te donne m autres équations.
    7. Tu as ainsi un système de m+n équations à autant d'inconnues, qu'il te suffit de résoudre.

    Pour des gros circuits, il peut être avantageux d'optimiser la méthode, mais je ne veux pas compliquer maintenant.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    J’ai commencé à programmer un algorithme basé sur cette méthode. Ca marche pour quelques circuits très particuliers, mais pour l’instant je suis confronté à deux problèmes :
    - Comment choisir le nœud 0 ? quelle est l’influence de son choix sur la réussite de la résolution du système d’équation (il ne me semble pas indifférent de virer du système d’équations un nœud qui est relié à 3 branches ou un autre qui est relié à 4 branches par exemple) ?

    - Lorsque deux nœuds sont reliés exactement aux mêmes branches, ils produisent chacun une équation identique donc échec de la résolution. Il faut alors supprimer une des deux équations pour que le système soit soluble, ce qui alourdi pas mal l’algorithme puisqu’il faut chercher les occurrences de « nœud symétriques », puis réduire le système d’équations

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    - Comment choisir le nœud 0 ? quelle est l’influence de son choix sur la réussite de la résolution du système d’équation (il ne me semble pas indifférent de virer du système d’équations un nœud qui est relié à 3 branches ou un autre qui est relié à 4 branches par exemple) ?
    En fait, c'est absolument indifférent.

    - Lorsque deux nœuds sont reliés exactement aux mêmes branches, ils produisent chacun une équation identique donc échec de la résolution.
    Qu'est-ce que tu veux dire par là?

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur Études et développements
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Études et développements
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    J'effectue en ce moment même un stage et je dois effectuer un logiciel en Java de calcul des chutes de tension sur un réseau électrique. Ce qui ressemble pas mal à votre sujet.

    J'ai quelques questions si ça te dérange pas, j'espère qu'on pourrait s'entraider.

    - quelle structure de données tu as utilisé? Moi j'utilise une liste d'adjacence dans les noeuds.

    - Est ce que tu vérifie qu'il n'y a pas de boucle dans ton réseau afin d'éviter une boucle infini, si oui comment fais tu?

    merci d'avance,
    Je t'envoi par MP mon mail personnel si tu trouves ça plus simple.

  10. #10
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    quelle structure de données
    J'utilise qui comporte d'abord une ligne qui contient 2 entiers, le nombre de noeuds (sans le noeud de référence qui portera le numéro zéro) n et le nombre de branches m. On a ensuite m lignes, soit une par branche, avec, dans chacune, 2 entiers (les numéros des noeuds entre lesquels se trouve la branche) et 2 réels, soit la valeur de la résistance (strictement positive) et la valeur de la tension de source éventuelle. De cette manière, le problème des boucles ne se pose pas.

    Par exemple, pour un pont de Wheatstone:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        3    6
        1    0        R1        U1
        1    2        R2         0
        1    3        R3         0
        2    0        R4         0
        3    0        R5         0
        2    3        R6         0
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    J'ai compris mathématiquement pourquoi le choix du noeud 0 est indifférent, mon problème était que j'avais oublié de signer les courants. Maintenant que j'ai corrigé ce problème, l'algorithme fonctionne très bien.
    Maintenant je souhaite ajouter au montage des transistors (2N2222) en fonctionnement statique (ou TBF ce qui revient au même).

    Je n'ai pas bien compris les questions de manik
    - quelle structure de données tu as utilisé? Moi j'utilise une liste d'adjacence dans les noeuds.

    - Est ce que tu vérifie qu'il n'y a pas de boucle dans ton réseau afin d'éviter une boucle infini, si oui comment fais tu?


    que veut-il dire par liste d'adjacence ?
    et que veut-il dire par boucle ?

    l'algorithme en question n'est pas itératif, il consiste en la résolution d'un système de n+m équations à n+m inconnues
    si le système est soluble (ce qui est le cas de tous les circuits testés pour l'instant) l'algo donne les bons courants et les bonnes tensions, sinon l'algo ne donne rien et c'est tout il n'y a pas de boucle.

  12. #12
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    je souhaite ajouter au montage des transistors (2N2222)
    Tu aurais dû le dire tout de suite, parce que ça change tout. Alors, de deux choses l'une:
    Ou bien tu linéarises les caractéristiques de ton transistor, ce qui revient à le considérer comme une source de courant commandée en courant combinée avec des résistances, ce qui t'oblige à ajouter deux colonnes supplémentaires à ton fichier de données pour pouvoir traiter les biportes élémentaires.
    Ou bien le problème devient non linéaire et il faudra te diriger vers une méthode itérative, comme par exemple Newton-Raphson.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Ou bien tu linéarises les caractéristiques de ton transistor, ce qui revient à le considérer comme une source de courant commandée en courant combinée avec des résistances, ce qui t'oblige à ajouter deux colonnes supplémentaires à ton fichier de données pour pouvoir traiter les biportes élémentaires.
    Ou bien le problème devient non linéaire et il faudra te diriger vers une méthode itérative, comme par exemple Newton-Raphson.
    Je ne vois pas trop l'intérêt d'une méthode itérative puisque le transistor NPN peut être linéarisé par :
    en statique : VBE = 0,7 V et IC = bêta.IB
    plus les termes dynamiques petits signaux :
    vBE = h11.iB + h12.vCE
    iC = h21.iB + h22.vCE
    où h est le matrice de transfert
    le problème c'est que h dépend de la polarisation du transistor donc de l'ensemble du schéma électrique, donc je ne sais pas comment calculer h
    et en plus je ne vois pas du tout comment intégrer ces propriétés dans notre algorithme !

  14. #14
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    h dépend de la polarisation du transistor donc de l'ensemble du schéma électrique
    donc ça n'est pas linéaire!
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    OK, mais quand tu écris :

    Ou bien tu linéarises les caractéristiques de ton transistor, ce qui revient à le considérer comme une source de courant commandée en courant combinée avec des résistances, ce qui t'oblige à ajouter deux colonnes supplémentaires à ton fichier de données pour pouvoir traiter les biportes élémentaires.

    tu propose de faire comment concrètement ?

Discussions similaires

  1. [TDQ 4.1.1] job générique (simuler schéma dynamique)
    Par msomso dans le forum Développement de jobs
    Réponses: 10
    Dernier message: 28/01/2011, 08h38
  2. programmation pour schéma électrique
    Par cetenza dans le forum Débuter
    Réponses: 3
    Dernier message: 22/07/2008, 23h56
  3. schéma électrique industriel
    Par utilisateur51 dans le forum Visio
    Réponses: 3
    Dernier message: 24/01/2008, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo