Bonjour,

Pour implémenter un dialogue réseau sous Simulink (sans aucune toolbox), j'utilise une fonction C d'accès au réseau qui fonctionne correctement.
Je l'ai utilisé dans une Matlab Fcn. Ce block appele ma fonction de lecture reseau avec plusieurs paramètres passés en entrée du bloc, et renvoi la valeur.
Or il semble que l'utilisation du block Matlab Fcn soit assez lente. Bcp plus lent que l'appel de la fonction dans du code M. (Pour exemple dans une boucle for, 8000 lectures réseau prennent 0.03s par la commande Matlab, alors que la lecture de 80 variables dans une simulation Simulink (50 pas de simulations) (meme fonction) prends près de 1.5 à 2s).

Mon block est un sous système masqué, qui est configuré en modifiant les paramètres du mask.
Selon vous, ce problème pourrait il être résolu en utilisant une S Fonction ?

Voici comment fonctionne ma fonction nommée Reseau (par exemple):
Reseau('Start',...paramètres reseau) : démarre un thread qui ecoute le traffic réseau, et récupère les variables qui nous interesse dans untableau,
Reseau('Read', ...paramètres d'accès) : accède aux données lues par le thread
Reseau('Stop') : ferme le thread

Le problème est qu'avec une S-Function je ne pourrai pas faire des appels différents pour initialiser/lire/stopper.
J'ai pensé à faire l'équivalent suivant
Reseau('Start'...) == fonction mdlStart de la s-fonction
Reseau('Read',...) = fonction mdlOutputs de la s-fonction
Reseau('Stop') : fonction mdlTerminate de la s-fonction

Seulement comment passer des arguments différents à ces différentes fonctions autres que par la boite de dialogue de configuration de la S-Fonction ? L'utilisation des vecteur PWork peut elle être une solution ?

Merci,
Je sais que le problème est un peu fouilli, mais votre aide serai la bienvenue.