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 :

Plusieurs données par Liaison série


Sujet :

Simulink

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Par défaut Plusieurs données par Liaison série
    Je cherche à récupérer des données (venant d'un robot) via un module Xbee(comm. série) dans Simulink (sur PC). Cela fonctionne bien avec le bloc Query Instrument. Mais le robot envoyant plusieurs données à la file, je ne parviens pas à les "séparer" lorsqu'elles arrivent. Comment puis je faire? J'ai essayé de les enregistrer dans une même variable du workspace mais ensuite je ne sais pas les trier . Merci pour votre aide.

  2. #2
    Membre expérimenté
    Profil pro
    Doctorant
    Inscrit en
    Mars 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 147
    Par défaut
    Peux tu préciser la question.
    Si tu as plusieurs données dans un même signal, tu peux utiliser des Bus Selector ou des Demux.
    A quoi ressemble les données obtenues (quel type) pour savoir si c'est plus facile de les séparer dans Simulink ou dans Matlab.

    Matersss

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Par défaut
    Mes données sont les valeurs renvoyées par des capteurs. Elles sont envoyées par la fonction Print qui convertit les valeurs en chaînes de caractères. Après chaque envoi, elle envoie un terminator (CR, carriage return).

    Le bloc Query Instrument (bloc de Simulink) les reconvertit en Double et enregistre les valeurs successives dans une même variable de type tableau à une colonne.

    J'ai essayé sans succès le demux et le bus selector sans succès.

    Je ne suis pas sûr que l'on puisse les séparer directement après le bloc Query instrument. Peut-être devrais je trier mon tableau à une dimension mais je ne sais pas comment à part utiliser un index,etc... peut-être y a t-il plus simple?

    merci

  4. #4
    Membre expérimenté
    Profil pro
    Doctorant
    Inscrit en
    Mars 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 147
    Par défaut
    D'accord, donc au final tu obtiens une seule variable qui contient toutes les variables ?
    Je ne connais pas le bloc Query Instrument mais peut être y a-t-il moyen de le configurer pour avoir des variables distinctes.
    Sinon, est ce que tu sais si les sous-variables font toutes la même taille ? Dans ce cas, il faudrait trouver cette taille et ce serait relativement simple de les séparer.
    Essaie de tracer ta variable en fonction du temps et voir où sont les discontinuités pour pouvoir séparer les sous-variables. Si tu peux refaire l'expérience avec le robot, tu peux avant de commencer ta manip faire une manoeuvre spécifique que tu pourrais identifier pour pouvoir reconnaître plus facilement les différentes variables.

    Matersss

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Par défaut
    Je reformule mon problème:
    Les valeurs sont envoyées dans un ordre connu : par exemple : valeur du gyroscope, valeur de l'accéleromètre sur X, valeur de l'accéleromètre sur Z, angle d'inclinaison, et on recommence valeur du gyroscope,...

    Toutes ces valeurs sont pour l'instant enregistrées dans l'ordre d'arrivée dans une variable tableau à une dimension (par exemple VAL).

    Donc pour trier les valeurs du gyroscope, j'ai (juste) besoin de prendre VAL[1], VAL[5],VAL[9], etc...et les enregistrer dans une variable à part (par exemple GYRO). Idem pour les autres données ACC_X= VAL[2], VAL[6],VAL[10], etc...

    J'aimerais trouver une solution flexible car le nombre de données envoyées peut changer.
    merci pour ton aide

  6. #6
    Membre expérimenté
    Profil pro
    Doctorant
    Inscrit en
    Mars 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 147
    Par défaut
    Ou bien tu fais des boucles for et tu règles tes indices, ce n'est pas très compliqué.
    Sinon, solution peut être un peu plus belle (quand on peut éviter les boucles, on les évite) :
    Essaie un truc comme ça (c'est un exemple):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    VAL=linspace(1,100)
    l=length(VAL)/4 % si tu as 4 variables
    d=0:l-1
    GYRO=VAL(1+d*4)
    ACC_X=VAL(2+d*4)
    Matersss

Discussions similaires

  1. Communication par liaison série
    Par sdecorme dans le forum MATLAB
    Réponses: 0
    Dernier message: 21/05/2013, 16h28
  2. [WD-2007] Publipostage avec access (Plusieurs données par personne)
    Par compatible dans le forum Word
    Réponses: 1
    Dernier message: 08/03/2012, 22h01
  3. Signal carré par liaison série en c
    Par Divix dans le forum C
    Réponses: 3
    Dernier message: 20/05/2010, 08h12
  4. problème récupération de données en liaison série
    Par prison_break dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/06/2007, 08h51
  5. Réponses: 4
    Dernier message: 03/07/2006, 18h13

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