Comment puis-je obtenir les données à partir d'un bloc Simulink dans un GUI MATLAB?
J'ai un modèle Simulink qui utilise un intégré à la fonction MATLAB pour un bloc, et je n'ai pas été en mesure de comprendre comment faire pour déplacer des données entre l'embedded MATLAB bloc et une interface graphique en temps réel (c'est à dire, bien que le modèle est en cours d'exécution). J'ai essayé de mettre en œuvre un "à la place de travail" bloc dans mon modèle, mais je ne sais pas comment bien l'utiliser.
Personne ne sait comment déplacer les données d'un bloc Simulink dans une interface graphique en temps réel?
- veuillez préciser... quelles données, quelles valeurs, quels sont les paramètres, essayez-vous de lire les paramètres du modèle dans une .m de fichier, ou êtes-vous essayer de définir des paramètres du modèle dans une .m de fichier, ou essayez-vous à utilisation de l'espace de travail variables dans un modèle? (ou autre chose)
- merci beaucoup pour la réponse rapide jason... regarde, j'ai un modèle simulink, pas beaucoup de blocs, et dans ce modèle, j'utilise un embedded matlab fonction ... et il m'est impossible d'utiliser l'entrée ou de la sortie de ce embedded matlab bloc dans mon interface graphique en temps réel. j'ai essayé de mettre en œuvre un "à la place de travail" bloquer dans mon modèle, et i a été affichée en temps réel dans le modèle, mais je ne sais pas comment l'utiliser, comment l'implémenter dans mon gui, que je peux utiliser cette valeurs de l'entrée ou de la sortie de mon incorporé d'une fonction.
Vous devez vous connecter pour publier un commentaire.
Non une solution en temps réel:
Si vous souhaitez définir des paramètres dans une interface graphique, de simuler un modèle avec ces paramètres, puis affichage de la sortie de simulation dans l'interface graphique, il y a un bon tutoriel sur blinkdagger.com. Une solution qu'ils décrivent est à l'aide de la SIMSET fonction pour définir l'espace de travail le modèle Simulink interagit avec. Vous devriez être en mesure de remplacent la base de l'espace de travail de sorte que les données sont envoyées vers et à partir de l'espace de travail de l'interface graphique des fonctions que l'on nomme le modèle Simulink.
Une solution en temps réel
Comme suggéré par MikeT, vous pouvez utiliser un RuntimeObject. Vous devez d'abord utiliser le get_param fonction pour obtenir les RuntimeObject à partir du bloc:
Où
obj
est un bloc de chemin ou un bloc-handle d'objet. Vous pouvez obtenir le nom de chemin de la plus récente bloc sélectionné à l'aide de la GCB fonction (dans ce cas, vous pouvez remplacerobj
avecgcb
). Ensuite, vous pouvez obtenir le bloc de sortie avec les éléments suivants:Un inconvénient supplémentaire à partir de la documentation:
Vous auriez probablement jusqu'à la fin avec une boucle ou d'une minuterie de routine en cours d'exécution dans votre interface graphique utilisateur qui serait en permanence obtenir les données de sortie de la RuntimeObject aussi longtemps que la simulation est en cours d'exécution. La documentation indique également:
Votre boucle ou de la minuterie de routine aurait donc à garder le contrôle de premier qui la RuntimeObject existe, et soit arrêter (si il n'est pas) ou de récupérer des données (si c'est le cas). Je ne suis pas sûr de exactement comment vérifier l'existence d'un RuntimeObject, mais je crois que vous vérifiez si l'objet est vide ou si la BlockHandle propriété de l'objet est vide:
De vos réponses, je suppose que vous voulez voir les résultats en cours de simulation, est-ce correct? L'blinkdagger.com didacticiel vous permet d'afficher les résultats d'une simulation après il est fait, mais pas lorsqu'il est en cours d'exécution. Ne vous souhaitez intégrer quelque chose comme un champ de bloc dans votre INTERFACE?
Il ya quelques façons de le faire, le meilleur est sans doute à l'aide de la LME du bloc objet runtime. Si vous utilisez cette option, vous devriez être en mesure de chercher à la sortie de la LME en bloc alors qu'il est en cours d'exécution.