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 :

Création d'un bloc "if"


Sujet :

Simulink

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 3
    Par défaut Création d'un bloc "if"
    Bonjour à tous,

    Je bute sur un bloc simulink qui a priori devrait être plutôt simple à réaliser, mais j'y arrive pas.
    J'ai une entrée x. Je veux une sortie y comme indiqué ci-dessous.
    Si x>a, alors y=a
    Sinon y=x

    Il y a bien des blocs "if" dans la section "subsystems" mais c'est un peu obscur comme fonctionnement, et je pense qu'il y a plus propre que de créer des sous-systèmes pour un simple if.

    J'ai d'un autre côté créé la fonction matlab suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function [ y ] = Vol( x, a)
    if x > a
      y = a;
    else y = x;
    end
    Quand j'appelle la fonction Vol(10,a), la fonction réagit correctement (en ayant fixé préalablement a). J'ai essayé de l'appeler sous simulink grâce au bloc MATLABfunction, mais je n'obtiens que des messages d'erreur.

    Y a-t-il des moyens simples de résoudre mon problème?
    Merci!

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Le plus simple dans ton cas serait d'utiliser le bloc Switch (qui se trouve dans la bibliothèque Signal Routing).

    Duf

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 3
    Par défaut Lucky Duf
    Lucky Duf, l'homme qui répond plus vite que son ombre:



    Bon, trêves de plaisanteries, le block Switch reste obscur pour moi.

    Description du bloc:
    Pass through input 1 when input 2 satisfies the selected criterion; otherwise, pass through input 3. The input 1 pass-through criteria are input 2 greater than or equal, greater than, or not equal to the threshold. The first and third input ports are data ports, and the second input port is the control port.
    Si je comprends bien:
    • Switché 1 quand 2 est dans la plage sélectionnée (ici, 0<x<a)

    • Switché 3 sinon.


    Je fais un test avec une rampe connectée en 1 et 2, mon a en trois, et j'ai en sortie juste la même rampe
    J'ai fait je pense toutes les combinaisons possibles, mais rien ne marche. Est-ce dans les properties du bloc qu'il faut changer qqch?

    Merci!

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    La seconde entrée du boc Switch permet de définir quel sera le signal qui sera transmis en sortie. Cette seconde entrée est comparée avec un seuil que tu peux régler dans les paramètres du Switch (par défaut la valeur est zéro).

    Si le test est vrai (par défaut si la valeur de la seconde entrée est supérieure ou égale à 0), la signal de sortie est le signal branché sur le premier port d'entrée, sinon c'est le troisième.

    Pour résumé, u1 étant le premier port d'entrée, u2 le second, u3 le troisième et y la sortie, voici le pseudo-code du bloc Switch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (u2 >= 0)
        y = u1;
    else
        y = u3;
    end

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 3
    Par défaut
    C'est bien clair maintenant
    En fait le fonctionnement du bloc me semble inversé:
    Ça passe de u3 à u1 quand u2 est supérieur au Treshold.

    Problème résolu, merci!

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