Bonjour,

Dans le cadre d'un projet Simulink, j'aimerai mettre en place une base de données accessible en lecture et en écriture par tous les composants de mon modèle pendant la simulation.

En effet, durant la simulation, je suis amené à créer différents objets (des structures en l’occurrence) dans divers blocs de mon modèle (uniquement des blocs "Matlab Function") et j'aimerai donc qu'à tout moment, chacun de ces objets créé soit accessible depuis n'importe quel bloc.

Basiquement, j'avais pensé "ranger" ces structures dans un tableau de structure qui serait déclaré en variable globale. Malheureusement, je n'ai pas l'impression que Simulink permette ceci (surtout pour un tableau qui serait de taille variable).

j'ai donc ensuite pensé sauvegarder chacun de mes objets dans un fichier .MAT : à chaque fois que j'en créerai un nouveau, je l'ajouterai au fichier .MAT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 save('masauvegarde.mat', 'toto' ,'-append')
et le bloc qui voudrait accéder à cette donnée n'aurait qu'à la charger via la fonction "load"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
load('masauvegarde.mat', 'toto')
Cependant, il semble que celle-ci retourne un objet de classe "MATLAB type" non utilisable par Simulink. De plus, une telle gestion imposerait d'avoir des noms différents pour chaque élément sauvegardé, et donc que chaque fonction dans chaque bloc connaisse à l'instant t le nom de l'objet qu'il souhaite récupérer... Ce qui n'est pas possible dans mon application.
Une solution envisagée était d'en fait sauvegarder dans mon fichier .MAT un tableau de structure et d'effectuer une sauvegarde de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
objet_a_sauver = creer_nouvel_objet() ;
load('masauvegarde.mat' , 'tableau_struct') ;
tableau_struct = [tableau_struct objet_a_sauver] ;
save('masauvegarde.mat', 'tableau_struct') ;
clear objet_a_sauver ;
clear tableau_struct ;
Mais le problème de l'objet de classe "MATLAB type" persiste.

j'ai aussi pensé utiliser la fonction matfile qui semble permettre de sauvegarder et d'accéder facilement à des données sauvegardées dans un fichier .MAT, mais je ne dispose que de la version 2011A de Matlab

Une dernière solution serait de sauvegarder chaque objet dans un fichier .txt, avec une colonne correspondant à un champ de la structure... Une solution bien lourde en écriture et en lecture quand on sait que les fichiers .MAT permettent d'arriver au même-résultat via les simples fonctions "save" et "load".

J'aimerai donc savoir si quelqu'un a déjà mis en place un tel mécanisme de base de données, et si il était possible de m'expliquer comment ?

Cordialement,
Amaury.