IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Simulink Discussion :

Verification de model


Sujet :

Simulink

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut Verification de model
    bonjour a tous,

    Pensez vous qu'on peut vérifier le comportement des models qu'on est entrain de developper sur simulink avec des scripts ecrits sur matlab ? Pour le moment, les seuls outils de vérifications de modeles que j'utilise sont Un scope et des steps ou des signaux sinusoidaux. Avez vous des exemples de scripts qui peuvent remplacer ces scopes et ces steps, et qui, une fois lancés, exécutent automatiquement plusieurs tests a la fois ?

    Merci beaucoup

  2. #2
    Membre éprouvé
    Avatar de mr_langelot
    Profil pro
    Inscrit en
    Août 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 113
    Par défaut
    Bonjour,

    * Au lieu d'un step, tu mets une variable matlab d'entrée (sources>simin).

    * Au lieu (ou en parallèle) de scope, tu mets une variable de sortie (sources>workspace).

    * tu fais un .m qui va définir tes variables d'entrée, lancer ton modèle simulink et analyser les variables de sortie.

    * tu itéres après en changeant tes entrées, en sauvegardant tes résultats pour chaque itération.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    d'accord, merci pour la reponse.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    rebonjour´,

    donc voila, j'ai essayé de tester mon model à l'aide de ce script:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    % Start simulation
     
     
    clc;
    close all;
    clear all;
     
    simulation_input; % j'ai mis les inputs de ma simulation dans ce fichier
     
     
    % =========================================================================
     
    for loop = 1:length(test_cases)
        tic                                                      
        model_folder = cd;                                       
        simulation_input;                                           
     
        case_loop           = sprintf('%d',test_cases(loop));    
     
        fprintf('================================================================\n')
        fprintf('Simulation of case %s...................',case_loop)
     
     
        % loading needed parameters
        % =========================================================================
        parameter_file = sprintf('D:/SimulinkModels/param_%s.m',case_loop);
        exec_file      = sprintf('run %s',parameter_file);
        eval(exec_file);
     
        %open_system(model_name);
     
     
     
        % starting simulation
        % =========================================================================
        set_param(model_name,'simulationmode',sim_mode)
        sim(model_name,[0 t_final]);
     
        fprintf('finished\n')
     
        % move result-files to data directory 
        % =====================================================================
        %     save results...
        fprintf('Plotting...................')
     
        figure;
        plot(time, output_1)
        saveas(gcf,['output_1_case_',case_loop,'.fig'])
        print (h,'-dpdf',['output_1_case_loop])
     
        fprintf('finished\n')
     
     
        t_sim_case            = toc;                     % CPU time end
        t_sim_case            = num2str(t_sim_case);
     
        fprintf('Simulation Real Time of case %s: %s\n', case_loop, t_sim_case)
        fprintf('================================================================\n')
     
        close all;
        clear all;
    end
     
     
    fprintf('All Simulations finished!!\n')
    quand je lance ma simulation, j'obtiens l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Plotting...................??? Error using ==> plot
    Invalid line property: 'time'.
     
    Error in ==> start at 47
        plot(time, output_1)
    et pourtant, j'ai bien prevu un block clock et une variable to workspace 'time'.

    Avez vous une idee ?

    Merci

  5. #5
    Membre éprouvé
    Avatar de mr_langelot
    Profil pro
    Inscrit en
    Août 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 113
    Par défaut
    Bonjour,

    est-ce que la variable time est échantillonné de la même manière que output_1?

    J'ai toujours préferé redéfinir mon vecteur temps à posteriori.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dt =  ; %période d'échantillonnage
    temps = 0 : dt : (size(output_1, 1 ou 2 selon) - 1) * dt;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    Ok, ca marche. par contre, pourquoi on vous mettez size(output_1, 1 ou 2 selon) ? ca correspond a quoi le 1 et le 2 ? (desole pour les accents, j'ai un clavier anglais...)

  7. #7
    Membre éprouvé
    Avatar de mr_langelot
    Profil pro
    Inscrit en
    Août 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 113
    Par défaut
    la fonction size donne la taille de la variable suivant la dimension demandée.
    On doit donc mettre 1 ou 2 suivant que c'est un vecteur ligne ou colonne.

    Tu as aussi length qui fonctionne et qui est plus simple.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    D'accord, merci beaucoup!
    J'ai encore une question:
    Dans un script Matlab, vous savez comment on peut creer des variables qui prennent des valeurs en crenaux ?

    pare exemple: une variable qui est egale a 1 de 0 jusqu'a 5s ensuite egale a 0.

    merci beaucoup

  9. #9
    Membre éprouvé
    Avatar de mr_langelot
    Profil pro
    Inscrit en
    Août 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 113
    Par défaut
    oui,

    c'est marqué dans le bloc simin.
    Tu fais tes vecteurs comme indiqué, tu choisis l'interpolation et le tour est joué

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    bonjour,
    la documentation simulink sur les simin a ma disposition n'est pas trop clair. Peux tu s'il te plait me donner un exemple sur l'utilisation de la demarche a suivre pour utiliser le bloc simin ?

    premiere etape, on doit creer un fichier .m. On doit l'appeler comment pour que simin le charge ?
    pour l'instant j'ai declare ma variable crenaux comme suit dans un fichier que j'ai appele essai.m dans mon workspace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    t= 1 2 3 4 5 6 7 8 9 10
    signal= 1 1 1 1 1 1 1 1 1 1
     
    simin=[t signal]
    ensuite j'ai choisi d'extrapoler le signal a zero dans le bloc simulink. mais ca ne marche pas.

    j'ai besoin de votre aide sachant que je ne suis pa tres familier avec simulink.

    merci beaucoup,

  11. #11
    Membre éprouvé
    Avatar de mr_langelot
    Profil pro
    Inscrit en
    Août 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 113
    Par défaut
    En fait, tu dois mettre dans le bloc simin le nom de ta variable matlab. Par exemple, tu crées dans matlab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    creneau = [ 0 3 ; 2 3; 2 5 ; 6 5; ]
    creneau =
     
         0     3
         2     3
         2     5
         6     5
    Ta première colonne est ton temps et la deuxième colonne tes données. Là, je crée un 1er créneau de valeur 3 pendant 2s suivi d'un autre créneau de valeur 5 jusqu'à 6s.

    Donc, dans le bloc simin, tu as dans le champ data "creneau" (sans les " bien sûr), sample time ta période d'échantillonnage.

    Pour ce faire, fais déjà un simulink avec juste le bloc simin et un scope que tu connectes.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    oui, ca marche, merci beaucoup pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/07/2011, 19h20
  2. Verification des champs d'un formulaire
    Par 164emie dans le forum ASP
    Réponses: 5
    Dernier message: 19/11/2003, 14h03
  3. Réponses: 2
    Dernier message: 16/06/2003, 15h15
  4. programmation reseau - couche 2 du modele osi
    Par sahor dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h33
  5. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo