Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Simulink
Simulink Forum d'entraide sur la plate-forme Simulink
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/11/2012, 15h55   #1
jul89
Invité de passage
 
Inscription : octobre 2012
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2012
Messages : 15
Points : 0
Points : 0
Par défaut transcription d'un code Simulink en simscape

Bonjour,

je souhaite modéliser un ballon à stratification thermique. pour cela, j'ai élaboré un code type "gestion de stock" avec de l'énergie qui entre et de l'énergie qui sort. les températures de sortie et le nombre de strates dépendent de l'énergie accumulée dans le ballon.

Cependant, je voudrais utiliser ce code dans Simscape ou le retranscrire dans un fichier .ssc au lieu d'un .m

Comment pourrais-je faire? j'ai essayer de retranscrire le code mais ça coince quand je veux donner une valeur a une de mes températures de sortie (par exemple: Tci == 70°) j'ai comme erreur que l'un des 2 membres de l'égalité doit être égal à 0.

P.S: je me suis aperçu que commencer par 20*Qnec et redescendre à 1*Qnec apporte un plus au code, mais je n'ai pas voulu réécrire.

Merci d'avance.

Voici le code de mon .m:

Code :
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
function [Tco, Teo, Strate, Q] = ballon(Tco, Teo, Tci, Tei, Cp, Debit, rho, Hcuve, Dcuve, Tini, Q)

% Tco: temperature de sortie du ballon coté chaudiere
% Teo: temperature de sortie du ballon coté consommateur
% Strate: nombre de strates chaudes dans le ballon
% Q: chaleur cumulée dans le ballon
% Tci: temperature d'entrée du ballon coté chaudiere
% Tei: temperature d'entrée du ballon coté consommateur
%Cp: Cp de l'eau
% Debit: Débit d'eau
% rho: rho de l'eau
% Hcuve: hauteur de la cuve
% Dcuve: diamètre de la cuve
% Tini: temperature initiale de la cuve

Vcuve = (3.1418*Dcuve^2/4)*Hcuve;
Vstrateeau = Vcuve/5;
Qnec = Vstrateeau*rho*Cp*20;
Qini = Vstrateeau*rho*Cp*Tini;
Qapport = Debit*rho*Cp*(Tci-Tco);
Qconso = Debit*rho*Cp*(Teo-Tei);
Q = Q+Qini+Qapport-Qconso;
if (Q > Qnec)
    
    Strate = 1;
    Teo = 30;
    Tco = 10;
    
elseif (Q > 2*Qnec)
     
    Strate = 2;
     Teo = 30;
     Tco = 10;
     
elseif (Q > 3*Qnec)
      
      Strate = 3;
      Teo = 30;
      Tco = 10;
      
elseif (Q > 4*Qnec)
       
       Strate = 4;
       Teo = 30;
       Tco = 10;
       
elseif (Q > 5*Qnec)
        
        Strate = 5;
        Teo = 30;
        Tco = 10;
        
elseif (Q > 6*Qnec)
         
         Strate = 1;
         Teo = 50;
         Tco = 30;
         
elseif (Q > 7*Qnec)
          
          Strate = 2;
          Teo = 50;
          Tco = 30;
          
elseif (Q > 8*Qnec)
           
           Strate = 3;
           Teo = 50;
           Tco = 30;
           
elseif (Q > 9*Qnec)
            
            Strate = 4;
            Teo = 50;
            Tco = 30;
            
elseif (Q > 10*Qnec)
             
             Strate = 5;
             Teo = 50;
             Tco = 30;
             
elseif (Q > 11*Qnec)
              
              Strate = 1;
              Teo = 70;
              Tco = 50;
              
elseif (Q > 12*Qnec)
               
               Strate = 2;
               Teo = 70;
               Tco = 50;
               
elseif (Q > 13*Qnec)
                
                Strate = 3;
                Teo = 70;
                Tco = 50;
                
elseif (Q > 14*Qnec)
                 
                 Strate = 4;
                 Teo = 70;
                 Tco = 50;
                 
elseif (Q > 15*Qnec)
                  
                  Strate = 5;
                  Teo = 70;
                  Tco = 50;
                  
elseif (Q > 16*Qnec)
                   
                   Strate = 1;
                   Teo = 90;
                   Tco = 70;
                   
elseif (Q > 17*Qnec)
                    
                    Strate = 2;
                    Teo = 90;
                    Tco = 70;
                    
elseif (Q > 18*Qnec)
                     
                     Strate = 3;
                     Teo = 90;
                     Tco = 70;
                     
elseif (Q > 19*Qnec)
                      
                      Strate = 4;
                      Teo = 90;
                      Tco = 70;
                      
elseif (Q > 20*Qnec)
                       
                       Strate = 5;
                       Teo = 90;
                       Tco = 70;
                       
end
end
jul89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 09h32   #2
FLB
Modérateur
 
Avatar de FLB
 
Homme Florent
Ing. Aérospatiale
Inscription : juin 2003
Messages : 583
Détails du profil
Informations personnelles :
Nom : Homme Florent
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Ing. Aérospatiale
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juin 2003
Messages : 583
Points : 924
Points : 924
Fait attention à tes conditions sur Q :
Code :
1
2
3
4
5
if (Q > Qnec)
    Strate = 1;
    Teo = 30;
    Tco = 10;
elseif (Q > 2*Qnec) %on est dans le cas Q<=Qnec, donc on ne rentrera jamais ici
Code :
1
2
3
4
5
if (Q > Qnec && Q <= 2*Qnec)
    Strate = 1;
    Teo = 30;
    Tco = 10;
elseif (Q > 2*Qnec) %là ca passe ;)
FLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 11h24   #3
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 472
Points : 809
Points : 809
ou tu inverses tes conditions
Code :
1
2
3
4
5
6
7
if (Q > 20*Qnec) 
elseif (Q > 19*Qnec)
elseif (Q > 18*Qnec)
...
elseif (Q > Qnec)
else
end
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2012, 15h52   #4
jul89
Invité de passage
 
Inscription : octobre 2012
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2012
Messages : 15
Points : 0
Points : 0
oui merci pour vos réponses. C'est pour cette raison que j'avais ajouté mon petit P.S à la fin de mon message.

Mais comment utiliser cela sous Simscape?
jul89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2012, 16h32   #5
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 472
Points : 809
Points : 809
je sais pas (je ne connais pas simScape)
mais question : pourquoi ne pas utiliser un bloc embedded matlab ?
cela me paraîtrait plus approprié au vue de ton code
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 09h16   #6
jul89
Invité de passage
 
Inscription : octobre 2012
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2012
Messages : 15
Points : 0
Points : 0
car on ne sait pas insérer de bloc simulink dans la partie "physique" du système (du moins je n'ai jamais réussi à le faire même avec les blocs s to ps et ps to s converter.
jul89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h17.


 
 
 
 
Partenaires

Hébergement Web