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

Simulink Discussion :

[Simscape] Hydraulic


Sujet :

Simulink

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant Ingénieur Industriel MA2
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Etudiant Ingénieur Industriel MA2
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut [Simscape] Hydraulic
    Bonjour,

    je développe actuellement une bibliothèque dans le domaine hydraulique (un peu plus complexe que celle présente de base dans simscape)

    Un des seuls composants que je n'arrive pas à simuler est une vanne contrôlable parfaite.

    Cette vanne aurait comme input un signal booléen (1 ou 0), aucune perte de charge engendrée

    Le problème est que je n'arrive pas à créer un élément qui si l'ouverture est = 1, p == 0 sinon q == 0 (simscape n'autorise pas de définir une variable seulement si une condition est remplie, ce qui est mon cas)

    Voici les composant que j'aimerai creer, mais qui n'est pas possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    component vanne_parfaite
    % Vanne Parfaite
    nodes
        A = myHydraulic.hydraulic; % A:left
        B = myHydraulic.hydraulic; % B:right
    end
     
    inputs
        ouv = {1, '1'}; %O:left
    end
     
    variables
        q       = { 0,      'm^3/s'     };	% Debit volumique à travers l'élément
        p       = { 0,      'Pa'        };	% Pression différentielle
    end
     
     
    branches
        q : A.q -> B.q; % Debit en A = Débit en B
    end
     
    equations
     
        q == if ge(ouv,{1,'1'}), 0 
                end
        p == if le(ouv,{0,'1'}), 0 
                end
        p == A.p - B.p; % Conservation de la pression 
    end 
    end
    Ce code renvoie les erreurs suivantes (comme expliqué)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Line: 24 Column: 32 Illegal use of if expression. An else branch is required for if expression in equations section.
    Line: 25 Column: 32 Illegal use of if expression. An else branch is required for if expression in equations section.
    Si quelqu'un à une solution à ce problème, une piste ou un conseil, je suis tout ouïe

    Cordialement,

    S.Colaux

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    je ne connais pas Simscape, toutefois le message d'erreur me parait explicite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         q == if ge(ouv,{1,'1'}), 0  end
    Tu dois lui dire la valeur que prend q lorsque ge(ouv,{1,'1'}) est faux. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         q == if ge(ouv,{1,'1'}), 0 else 1 end
    Je te conseille la lecture suivante :
    http://fr.mathworks.com/help/physmod...equations.html

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant Ingénieur Industriel MA2
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Etudiant Ingénieur Industriel MA2
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Tout d'abord, merci pour ta réponse,

    Je sais très bien pourquoi mes deux équations sont fausses, néanmoins vu le comportement physique d'une vanne, je ne peux (selon moi) définir le débit que si la vanne est fermée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         q == if ge(ouv,{1,'1'}), 0 else 1 end
    N'a physiquement aucun sens. Ton code peut se traduire par : si la vanne est fermé, le débit vaut 0, sinon la vanne est ouverte et le débit vaut 1 (m^3/s), alors que le débit à travers la vanne n'est définis que par la chute de pression y ayant lieu si cette dernière est ouverte.

    J'espère avoir été assez clair

    Cordialement,

    S.Colaux

  4. #4
    Candidat au Club
    Homme Profil pro
    Etudiant Ingénieur Industriel MA2
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Etudiant Ingénieur Industriel MA2
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Voici les différents tests que j'ai fait afin de solutionner le problème. En vain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    equations
        q == if ge(ouv,{1,'1'}), {0,'m^3/s'} else q end
        p == if le(ouv,{0,'1'}), {0,'Pa'} else p end
        p == A.p - B.p; % Conservation de la pression 
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error compiling Simscape network for model rez4.
    Caused by: Number of equations exceeds number of variables.
    Ainsi que,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    equations
        q == if ge(ouv,{1,'1'}), {0,'m^3/s'} else q end
        p == if le(ouv,{0,'1'}), {0,'Pa'} else p end 
    end
    erreur : p n'est plus définis comme étant la pression différentielle, et n'a donc plus aucun sens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Caused by:
    Initial conditions solve failed to converge.
    ...Nonlinear solver to advance time one step failed to converge due to Linear Algebra error. Failed to solve using iteration matrix.
    Une dernière solution envisagée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    equations    
        p == if le(ouv,{0,'1'}), {0,'Pa'} else {10^100,'Pa'} end
        p == A.p - B.p; % Conservation de la pression 
    end
    Dans ce cas-ci, le code fonctionne correctement, le débit est bien nul lorsque la vanne est fermée mais les valeurs obtenues ne correspondent pas à la réalité (débit ~100 m^3/s dans une conduite de diamètre 0.1m !!!)

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/02/2014, 08h35
  2. [simscape] modélisation d'une chaudière
    Par jul89 dans le forum Simulink
    Réponses: 9
    Dernier message: 25/10/2012, 13h52
  3. Panneau solaire sur simscape
    Par Delaready dans le forum Simulink
    Réponses: 2
    Dernier message: 15/07/2012, 22h45
  4. j'ai un probleme avec avec simscape
    Par elhaini dans le forum Simulink
    Réponses: 5
    Dernier message: 12/07/2012, 21h39
  5. Paramétrisation d'un AO sur simscape
    Par nikita65 dans le forum Simulink
    Réponses: 0
    Dernier message: 11/06/2012, 22h23

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