Bonjour,
je travaille sur un projet de véhicule hybride pour lequel j'aurais besoin d'établir un profil d'accélération en entrée. J'ai dans un premier temps utilisé un script pour réaliser mon profil d'accélération, qui fonctionne.
Je voudrais maintenant réaliser ce même script via le bloc 'embedded matlab function', afin de passer en paramètre d'entrée mon accélération pour pouvoir la modifier facilement sous simulink. Problème, je n'arrive pas à obtenir une sortie correcte avec ce bloc, alors que mon script quasi identique fonctionne...
Cela fait maintenant plusieurs heures que je bloque sur ce problème, en ayant essayer différentes choses, mais je n'arrive pas à trouver de solutions.
Si quelqu'un peut m'aider je lui en serais extrêmement reconnaissant ^^. Voici à quoi ressemble ma fonction (un peu long):
je mets une constante sur l'entrée 'a' du bloc, égale à 0.5 pour tester. J'ai un plot en sortie.
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 function accel = profil_accel(a) % profil vitesse: % init indicateurs tfinal = 1000; tchargement = 50; % temps de chargement/déchargement twait = (tfinal - (650+2*tchargement))/2; % temps d'attente accel = zeros(tfinal,1); masse = zeros(tfinal,1); for t=1:1:tfinal % véhicule en attente if t<=twait accel(t,1) = 3*a; end %accélération de 25s suivi d'une vitesse constante durant 300s, puis %décelération de 25s if (t>(twait+tchargement)) && (t<=(twait+tchargement+25)) accel(t,1) = a; end if (t>(twait+tchargement+325)) && (t<=(twait+tchargement+350)) accel(t,1) = -a; end % véhicule en attente if (t>(twait+tchargement+350)) && (t<=(2*twait+tchargement+350)) accel(t,1) = -5*a; end %accélération de 25s suivi d'une vitesse constante durant 250s, puis %décelération de 25s if (t>(2*twait+2*tchargement+350)) && (t<=(2*twait+2*tchargement+375)) accel(t,1) = 1.5*a; end if (t>(2*twait+2*tchargement+625)) && (t<=(2*twait+2*tchargement+650)) accel(t,1) = -1.5*a; end end
J'espère que c'est suffisamment clair...merci d'avance!
Partager