Bonjour à tous,
Voici ma fonction :
Le problème c'est que lorsque T_cabin = floor(Tintc-2) T_cabin ne peut pas remonter à floor(Tintc+2) car cette condition contredit la condition de départ if floor(T_cabin) > floor(Tintc-2).
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 function S_AC = f(T_cabin, Tintc, temps) S_AC=0; if floor(T_cabin) > floor(Tintc-2) S_AC=1; if floor(T_cabin) == floor(Tintc-2) S_AC=0; while floor(T_cabin) ~= floor(Tintc+2) S_AC=0; end end end end
Pour faire plus simple la température de la cabine de base est 40°C. Le compresseur s'active et la temperature chute a 31°C.
A ce moment là, ce que je veux faire c'est désactiver le compresseur jusqu'à ce que la température de la cabine remonte à 35°C, puis activer le compresseur jusqu'à que la température de la cabine atteint 31°C et ceci en boucle.
Je réussi à faire descendre la température à 30.999°C mais celle ci ne remonte que jusqu'à 31 et redescend. De ce fait le compresseur s'active et se réactive trop rapidement alors que je voudrais avoir une marge de plus ou moins 2°C par rapport à la consigne de 33°C.
S_AC : activation ou non du compresseur (1 ou 0)
Tintc : température de consigne (ici = 33 plus ou moins 2°C)
T_cabin : température de la cabine (varie dans le temps)
Ce que je voudrai faire plsu globalement :
40°C --S=1--> 31°C --S=0--> 35°C --S=1-->31°C--S=0-->35°C
avec: 31°C=Tintc-2 et 35 Tintc+2
40°C=Temperature initiale
En gros, je souhaite faire une boucle qui réalise cela.
Merci par avance de votre réponse.
Partager