Bonjour
J’ai un modele simulink (relativement complexe) qui utilise des variables de type Simulink.IntEnumType
Je veux passer une variable Simulink.IntEnumType en external input vers un modele
Pour ce test mon modele comprend un In1 et un scope (et c’est tout).
Ces variables ENUM sont définies dans un fichier de définition de classe tel que :
Dans le workspace je peux définir des variable de la class pumpOrder par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 % Definition classe pumpOrder classdef pumpOrder < Simulink.IntEnumType enumeration noOrder(1000) %unknown(0) start_pump(1011) % Running (11) a modifier plus tard en runningPV (11) runningGV (12)(12) stop_pump(1010) % standby(10) mnt_pump (1019) % maintenance (19) end end
Je veux ensuite passer cette variable W au modele en utilisant « External input » et un port d’entré par ex In1 et l’option input du configuration parameter [t,u]
Code : Sélectionner tout - Visualiser dans une fenêtre à part W=pumpOrder.noOrder ;
(jai choisit d'avoir une seule valeur pour simplifier mais avec 2 ou 10 valeurs c'est le même probleme)
Code : Sélectionner tout - Visualiser dans une fenêtre à part t=[1] ; u=W ;
ca ne marche par j’ai le message d’errreur suivant
Dans given input argument , je n’ai que un element « noOrder » et cet élément existe bien dans la description de class pumpOrderError evaluating expression '[t,u]' for 'ExternalInput' specified in the Configuration Parameters dialog for block diagram 'EssaiSimplifiedpump2': Cannot find a member of the 'pumpOrder' enumeration class that corresponds to each element of the given input argument.
Donc je ne comprend pas ce qui ce passe...
j'ai essayer de passer le type du bloc In1 à pumpOrder (au lieu de inhereted) mais ca ne change rien...
j'ai l'impression que c'est l'interpolation de u pour les différentes valeur de t qui pose pb, mais je ne sais pas coment régler cela.
Est-ce que l’utilisation de Simulink.IntEnumType est possible en entré « External input » et comment ?
l'exemple est dans le ZIP
Mise a jour 24-01-2019 :
en cherchant sur le site matworks j'ai trouvé plusieurs choses
1) que les entrée externe acceptent tout type de signez yc les ENUM
2) que dans le cas des ENUM il faut décocher la case interpolate data du inblock correspondant
puis ailleurs "
to load discrete signals data from the workspace , in the inport block dialog box
1) Set the sample time parameter to a discrete value such 2
2) Clear the interpolate data parameter
j'ai essayé mais ce ne marche pas même message que avant
Après divers indice me laissene à penser que le bout de logiciel qui interprete [t,u] ne trouve pas les membres de la classe que j'ai défini (alors que le fichier de définition de class est dans le path matlab)
est ce que il y a une operation spéciale à faire ?
enfin la syntaxe de [t,u] n'est pas claire pour moi dans le cas de plusieurs entrées de classe différentes. Je ne peux pas les concaténer en une seul matrice u .
comment faire dans ce cas ?
pour résumer j'ai besoin d'aide sur ce sujet aucun progres en 4 jours et la voie de contournement si elle existe sera compliquée
merci
Partager