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 :

Comment trouver le "DataType ID" d'une classe simulink enumere ?


Sujet :

Simulink

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut Comment trouver le "DataType ID" d'une classe simulink enumere ?
    Bonjour.
    Je veux créer une Sfunction Matlab level2 qui utilise en entrées et sorties des variables de type Simulink.IntEnumType.
    Les classes de variable sont crées dans un fichier .m de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    classdef Valeur_State < Simulink.IntEnumType
        	enumeration
            Valeur1(0)
            Valeur2 (1110)
            Valeur3 (1120)
            Valeur4 (1130)
     
        	end
    end
    Dans la Sfunction je peux définir un port d’entrée (par ex port 3) qui accepte une variable Enumerée de classe "Valeur_State" en mettant -1 (inherited) pour la propriété «DatatypeID » :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    block.InputPort(3).DatatypeID  = -1;  % -1 pour inherited
    block.InputPort(3).Complexity  = 'Real';
    je peux vérifier que la variable énumérée « entre » dans la Sfunction et je peux utiliser sa valeur dans mon code. Bon...

    Pour un port de sortie, la documentation dit que le « DatatypeID » doit être explicitement défini.

    Mon problème est que je ne sais pas trouver le DatatypeID correspondant à la classe « Valeur_State » que j’ai défini dans le fichier.m du même nom.
    Donc que faut-il mettre ? Quelle est la fonction/méthode pour trouver le «DatatypeID » ?
    (la documentation propose de 0 à 8 pour les types standards de nombre de matlab mais aucune de ces valeurs ne convient pour la variable enumerée définie),

    Une bonne semaine que je tourne en boucle dans la documentation sans rien y comprendre.
    Merci de m’orienter.

  2. #2
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut Contournement
    Bonjour

    le problème cité n'est pas résolu mais provisoirement contourné
    j'ai mis pour chaque sortie souhaitée une constante enumérée du type adéquate et dans la S function je modifie la valeur de cette constante via un set_Param ( ...,'value', valeur). Cela fonctionne mais
    1) cela ne passera pas une génération de code
    2) cela ralentie beaucoup le modèle.

    Pour ces 2 raisons il me faut la solution pour identifier de DataType ID et remettre les chose en ordre...

    je laisse donc la question ouverte

    Merci

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut toujours pas resolu
    bonjour
    question toujours pas résolue et cela va devenir bloquant car mon projet avance.
    Question également mise sur le site de mathwok sans succès !

    Cordialement

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    question très technique, je n'ai pas la réponse
    j'ai fais un petit tour dans la donc est je suis tombé sur la fonction "ssRegisterDataType" ... cela ne correspond pas à ta recherche ??

    désolé si ma réponse est à coté de la plaque, tu as du passer beaucoup de temps dans la doc et moi que quelques minutes ...

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut
    Merci le Fab
    Oui j'ai passé un peu temps sur la doc.
    La fonction que vous citez "ssRegisterDataType" est probablement celle qu'il faut utiliser mais il y a 3 points qui font que ca ne convient pas ou que je n'arrive pas à comprendre comment l'utiliser.
    1) ma S fonction est en Matlab level 2 et manifestement ssRegisterDataType apparait comme une fonction destiné au S function en C C++ , il faudrait donc l'équivalent pour les Matlab SFunction level 2. Pas trouvé d'information dans la doc.
    Je ne connais pas le C et transcrire ma Sfunction en C serait difficile pour moi . (rien d'impossible par principe !)

    2) Lorsque je regarde "ssRegisterDataType" je ne vois pas ou est l'argument "Data type Name' qui est passé à la fonction pour récupérer le DataTypeID.
    J'ai plusieurs variables simulink enuméré et il va bien falloir que je trouve ce lien DataTypeName DataTypeID. Sans argument la fonction pourrait retourner une structure avec tous les DataTypeName DataTypeID et donc on pourrait chercher "le bon" dans la structure. Encore faudrait il que ce soit documenté d'une façon compréhensible. Pour moi ce n'est pas assez clair!

    3) du mal à voir ou il faudrait placer cette fonction dans la structure de la S Function et comment lui passer les arguments si il y en a.
    (je ne comprends pas la syntaxe de "ssRegisterDataType" ss fait partie du nom de la fonction ou ss représente la structure et RegisterDataType la methode ? (je ne connais pas le C)

    le lien suivant vers la doc parait intéressant (mais pas très encourageant !)
    https://fr.mathworks.com/help/simuli...ata-types.html

    Merci pour votre aide

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/01/2009, 10h43
  2. comment trouver le jour de la semaine d'une date ?
    Par mon_proj dans le forum wxPython
    Réponses: 2
    Dernier message: 13/04/2008, 22h27

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