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 :

Embedded MATLAB Function


Sujet :

Simulink

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Embedded MATLAB Function
    Bonjour,

    Je souhaiterais obtenir un renseignement concernant l'utilisation de l' "Embedded
    MATLAB Function" de Simulink. Ci-dessous voici une image avec le code de la function.
    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
    function [out1, out2] = detection_positive(in1, in2, in3, in4, t)
     
    %in1=reference=0.8*sin(2*pi*50*t);
    %in2=porteuse
    %fcarrier = 1000 ;          
    %y = sawtooth(2*pi*fcarrier*t+pi);
    %carrier = abs(y);
     
    if in1 && in2 && in4 %reference positive & derivée porteuse>0 & ref=porteuse
            %tc1=t;
            out1 = false;
            out2 = false;
       %les deux instructions du dessus restent valables pendant 1 temps donné
            %out1 = false;
            %out2 = true;
     
    else if in1 && in3 && in4 %reference positive & derivée porteuse<0 &     ref=porteuse
            %tc2=t;
            out1 = false;
            out2 = false;
            %les deux instructions du dessus restent valables pendant 1 temps donné
            out1 = true;
            out2 = false;
         else
            out1 = true;
            out2 = false;
        end
    end
    questions:
    - je voudrais utiliser la clock (t1 qui apparait dans Simulink) afin de mémoriser les temps tc1 et tc2 correspondant aux temps de commutations respectivement pour une dérivée de porteuse >0 et <0
    - je ne trouve pas comme instaurer le "delay" dans le cas ou deux output changent d'état après une temps donné. Par exemple à tc1+temps_donné j'obtiens out1 = false et out2 = true pour la deuxième étape de la première instruction "if".

    Merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    problème résolu à peu de choses près ... toutefois il subsiste un problème, comment récupérer la valeur de la clock afin de procéder à une exécution comme celle-ci

    if t=in3+2µs
    out3 = true
    out4 = false
    En gros, lorsque t (temps de simulation) est égal à in3 (un autre temps) + 2µs dans mon cas alors out3 = vrai et out4 = faux. (mon step time est de 1µs)
    merci

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    petite avancée qui n'en ai pas réellement une, en ajustant le sample time de mes données "to workspace" j'arrive à obtenir les résultats desirées mais je joue un peu sur la précision. Par exemple, ce dead time = sample time de la clock et de ma tension de sortie alors ca marche. Néanmoins, ce "dead-time" ne fonctionne toujours pas ...
    une idée ?

    merci

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    histoire de reformuler ma question,
    je souhaite en fait faire une condition sur le temps de simulation que je n'arrive pas à enregistrer:

    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
    
    function [out1,out2,out3,out4] = detection_positive(in1,in2,in3,in4)
    
    T=10e-4; %periode de la porteuse
    out1 = false;
    out2 = false;
    out3 = 0;
    out4 = 0;
    
    if in1==in2        % reference = porteuse(carrier)
        if mod(t,T)<0.5     % si on se trouve sur la premiere demi-periode de la porteuse
            out3 = t;       % tc1 = t (bloc to workspace vers un temps tc1)
            out1 = false;   % MSp = 0
            out2 = false;   % FWp = 0
                  
        else
            out4 = t;       % tc2 = t (bloc to workspace vers un temps tc2) 
            out1 = false;   % MSp = 0
            out2 = false;   % FWp = 0
        end
        
    else if in1>in2             % reference>porteuse
            if mod(t,T)<0.5     % si on se trouve sur la premiere demi-periode de la porteuse
               out1 = true;     % MSp = 1
               out2 = false;    % FWp = 0
               
            else if t>=in4+5e-6 % à l'instant t=tc2+temps-mort [ne marche pas] 
             out1 = true;        % MSp = 1
             out2 = false;       % FWp = 0
                end
            end
            
    else if in1<in2          % reference<carrier
           if t>=in3+5e-6 % à l'instant t=tc1+temp-mort  [ne marche pas]
           out1 = false;     % MSp = 0
           out2 = true;      % FWp = 1
           end
         end
        end
    end
    seules deux lignes ne marchent pas, mais je pense que cela provient du fait que je n'arrive pas a enregistrer la valeur du temps de simulation pour lequel in1=in2 ou que la condition t>=in3+5µs ne s'effectue pas.

    une idée, je desespere ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/10/2007, 11h27
  2. [Embedded Matlab Function] Etablir un compteur
    Par berberat dans le forum Simulink
    Réponses: 1
    Dernier message: 28/09/2007, 10h36
  3. [Embedded Matlab Function] Problème d'utilisation
    Par berberat dans le forum Simulink
    Réponses: 1
    Dernier message: 21/09/2007, 15h27
  4. [Embedded MATLAB function] Comment ça fonctionne ?
    Par droledelolo dans le forum Simulink
    Réponses: 1
    Dernier message: 04/04/2007, 09h03
  5. [Embedded MATLAB Function] Type mxArray
    Par 250583 dans le forum Simulink
    Réponses: 2
    Dernier message: 28/03/2007, 15h31

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