Okay merci oui c´est bien l´objectif,
donc il faut modifier le coeur de la fonction aussi; et le fait que je n´ai pas pu relier directement au bloc write0, contenant cette fonction, le paramètre 'InputSignalNames' et 'S***' n´est pas problématique ?
Okay merci oui c´est bien l´objectif,
donc il faut modifier le coeur de la fonction aussi; et le fait que je n´ai pas pu relier directement au bloc write0, contenant cette fonction, le paramètre 'InputSignalNames' et 'S***' n´est pas problématique ?
Je ne sais pas. Pour tout t'avouer je n'ai absolument rien compris à cette partie-là...
Pour moi ce que dit la documentation c'est que ce paramètre sur le bloc write0 doit te retourner le nom de l'input ie S***.
J'ai tendance à croire la doc vu que je ne peux tester.
Après je n'arrive pas à comprendre ce que tu as essayé.
Un petit conseil : essaye de faire des messages plus courts et aérés, ce sera plus simple à lire.
Et puis montrer le code que tu as essayé en expliquant bien sur quel bloc tu viens de cliquer lorsque tu utilises GCB.
Bonjour,
J´essaie d´etre plus clair, et c´est pas simple de simuler quand on voit pas pourquoi ca s´articule pas simplement.
J´ai laissé joint un Word.
Et merci pour les infos
Bonjour,
En travaillant sur la fonction:
J´ai déjà réglé les problèmes d´input : message d´erreur lors de la simulation (First Input Variablename must be a char...) en modifiant la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function fcn(u) eml.extrinsic('writevar2'); bloc_courant=gcb; nom_entree=get_param(bloc_courant,'InputSignalNames'); writevar2(nom_entree,num2str(u));
nom_ entree doit etre un char a priori donc entre ' '.
Code : Sélectionner tout - Visualiser dans une fenêtre à part writevar2(nom_entree, num2str(u));
Cela fonctionne : après avoir simulé, Matlab me retourne
Mais aussiEmbedded MATLAB parsing for model "bloc"...Done
Embedded MATLAB code generation for model "bloc"....Done
Embedded MATLAB compilation for model "bloc"... 1 Datei(en) kopiert.
DoneJ´ai vu qu´un (Datei) fichier a été copié : le nom de mon fichier Simulink étant bloc.mdl, il a créé bloc_sfun.mexw32Warning: The model 'bloc' does not have continuous states...
Il s´agit d´une S-function je crois : je suis allé exporer mais rien de spécial.
Suis-je dans la bonne direction?
Ce que je comprend pas : comment ma valeur peut elle etre modifiée en simulant avec cette meme fonction ? : en utilisant les modifications que tu as proposé Caro**.
Merci encore et j´espère avoir des infos
Tiens c'est bizarre nom_entree te retourne donc finalement un char et pas un cell.
Bon pourquoi pas ?
Juste par curiosité tu pourrais quand même enlever le ; dans la ligne ci-dessous, normalement tu devrais alors avoir nom_entree qui s'affiche dans le command window quand la fonction sera appelée :
Après :
Code : Sélectionner tout - Visualiser dans une fenêtre à part nom_entree=get_param(bloc_courant,'InputSignalNames')Rien compris De quelle valeur tu parles ?Envoyé par Jerome24
Bonjour,
Quand je parle de valeur : c´est de ma valeur à modifier 'S***' dont il est question.
Oui, en enlevant le ' ; ' sur la ligne associée à nom_entree, Command Window retourne:
c´est à dire le meme résultat que lorsque je tape:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 nom_entree = {''}
J´ai entré pour le moment la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 get_param(gcb, 'InputSignalNames')
à la place de la fonction d´origine :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function fcn(u) eml.extrinsic('writevar2'); bloc_courant=gcb; nom_entree=get_param(bloc_courant,'InputSignalNames') writevar2('nom_entree',num2str(u));
Ma question de compréhension était:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function fcn(u) eml.extrinsic('writevar2'); writevar2('S000E20.0',num2str(u));
Comment cette fonction peut s´auto-modifier (changer 'S000E20.0' en 'S000E20.1') ?
Etait-ce le 1er niveau : création du fichier (S-fonction : bloc_sfun.mexw32) à réutiliser peut-etre?
Avant je pensais devoir absolument écrire une fonction extérieure au bloc, et qui ordonne à ce bloc de modifier la valeur 'S***' .
Merci pour les retours d´infos
Bon apparemment le paramètre InputSignalNames ne renvoie pas ce qu'il faut. C'est bizarre
Pour ta question : non ce n'est pas la peine a priori de modifier tes fonctions "à la main" ou par une fonction externe pour que le nom soit écrit en dur : c'est quand même mieux si tu peux écrire la même pour tous tes blocs.
Mais pour cela il faut réussir à récupérer cette $ù*$$$* de valeur à partir de gcb qui normalement dans ta fonction est le bloc write* (on aurait le même problème pour la fonction externe de toute façon...)
Là je dois dire que je n'ai plus d'idée...désolée
Et oui,
Je souhaite écrire une seule fonction pour modifier plusieurs fonctions : clair.
Mais fondamentalement c´est étrange que le paramètre 'InputSignalNames' ne retourne pas la fameuse 'S***'
Et ce serait incorrect d´attribuer cette valeur, car elle doit etre variable :
S000E20.0 à S000E20.7
hmm - merci quand meme
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager