Matlab
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Matlab



  1. #1
    invite437afb85

    Matlab


    ------

    Bonjour tout le monde,

    Je cherche à programmer une charge ou une décharge de batterie à partir d'un script sur Matlab. Il se trouve que le programme ne prend en compte que la valeur initiale que j'ai déclaré. je vous mets le programme pour que vous ayez une idée plus claire des choses. Toute aide de votre part sera la bienvenue. Merci par avance.
    Programme :

    function [SOCi,Pdech] = Batterie(Pe)
    %#codegen
    Pmaxbattc = 6; % Puissance de charge maximale de la batterie
    Pmaxbattd = 5; % Puissance de décharge maximale de la batterie
    nc = 0.6; % Rendement de charge de la batterie
    nd = 0.8; % Rendement de décharge de la batterie
    Q = 7; % Capacité maximale de la batterie
    C = 3.6; % Coefficient de transfert de puissance
    SOCh = 8.5; % Valeur de seuil haut en état de charge de la batterie
    SOCb = 4; % Valeur de seuil bas en état de charge de le batterie
    SOCi = 2; % Valeur initiale de l'état de charge
    SOCt = 0; % Déclaration et initialisation de la variable de temporaire pour l'état de charge
    Pt = 0; % Déclaration et initialisation de la variable temporaire de la puissance

    if Pe > 0 % Puissance à charger
    if Pe <= Pmaxbattc % Vérification si on n'a pas atteint la puissance maximale de la batterie en charge
    Pt = Pe; % Affectation de cette puissance à une variable temporaire de charge
    else
    Pt = Pmaxbattc; % Puissance maximale atteinte, affectation de cette puissance max à la variable temporaire de charge
    end
    SOCt = SOCi + (nc*Pt/(Q*C)); % Calcul de l'état de charge après stockage
    if SOCt > SOCh % Vérification si on atteint la valeur de seuil haut de la batterie
    Pt = Pt - (1/((SOCt-SOCh)*Q*C*nc)); % Calcul de la puissance admissible
    SOCt = SOCh; % Limitation du SOC
    end
    end

    if Pe < 0 % Puissance à décharger
    if Pe >= -Pmaxbattd % Vérification si on a pas atteint la puissance maximale de la batterie en décharge
    Pt = -Pe;% Affectation de cette puissance à une variable temporaire de décharge
    else
    Pt = Pmaxbattd;% Puissance maximale atteinte, affectation de cette puissance max à la variable temporaire de décharge
    end
    SOCt = SOCi + (Q*C/nd*Pt);% Calcul de l'état de charge après décharge
    if SOCt < SOCb % Vérification si on atteint la valeur de seuil bas de la batterie
    Pt = Pt - ((SOCt - SOCb)*Q*C*nd);% Calcul de la puissance déchargeable
    SOCt = SOCb; % Limitation du SOC
    end
    end
    SOCi = SOCt; % Etat de charge de la batterie à temps réel
    Pdech = Pe;% Etat de la puissance à temps réel
    Testez-le et peut être que vous comprendrez mieux ce que je cherche à faire

    -----

  2. #2
    inviteb9f49292

    Re : Matlab

    je vous mets le programme pour que vous ayez une idée plus claire des choses.
    Il vaut bien mieux que tu décrives en toutes lettres ce que tu veux faire, si tu as fais une erreur dans ton programme elle se verrait plus vite.

    Toute aide de votre part sera la bienvenue
    Il n'y a pas de question, nous ne pouvons pas t'aider... Quel est ton problème exactement ? Tu n'arrives pas à trouver une manière de faire quelque chose ou bien tu as des résultats qui te semblent erronés?

    De manière plus générale:
    - il faut un titre explicite à ta question (exemple "calcul décharge de batterie avec MATLAB")
    - les questions relatives à MATLAB sont plus à leur place dans la section informatique, demande à un modérateur de déplacer ta discussion
    - il faut entourer ton code avec les balises "CODE"

    Remet tout ça en forme et on jettera un oeil.

  3. #3
    invite437afb85

    Re : Matlab

    ok je vais faire le nécessaire. Merci

  4. #4
    invite437afb85

    Re : Matlab

    Rebonjour,

    J'ai pu régler le problème parce que j'avais juste pas bien gérer les formules (chose que j'ai corrigé). Par contre j'ai un autre souci. j'utilise une boucle, dans celle-ci j'ai une variable permanente et une variable temporaire pour faire mes calculs. j'initialise ma variable permanente (qui doit évoluer en récupérant à la fin des calculs la valeur de la variable temporaire) pour avoir une base de calcul. Malheureusement, j'écrase la valeur de cette variable permanente pour repartir sur cette valeur d'initialisation. Mes questions sont les suivantes :

    Comment bien déclarer une variable en l'initialisant ?
    Et que faire pour qu'elle garde la valeur de la variable temporaire qui est le résultat de mon calcul (éviter que la valeur d'initialisation écrase la valeur affecter au calcul)?

  5. A voir en vidéo sur Futura
  6. #5
    inviteb9f49292

    Re : Matlab

    Si j'ai bien compris (ce qui n'est pas sûr je n'ai pris qu'un café...) il te suffirait de déclarer ta variable permanente en dehors de ta boucle, et la mettre à jour à la fin du corps de ta boucle comme par exemple ça:
    Code:
    permanent = 0; %attention la valeur initiale
    for (k = 1:N)
        tmp = gros_calcul(permanent);
       permanent = tmp;
    end
    Met ton bout de code pour essayer de clarifier.

  7. #6
    invite437afb85

    Re : Matlab

    Bonjour lou_ibmix_xi,

    Je vais tenter la solution que tu m'as proposé. Au mieux je met en piece jointe le fichier et tu comprendras mieux mon problème.
    Ma variable permanente c'est SOCi et ma variable de calcul c'est SOCt.

    Merci

  8. #7
    invite437afb85

    Re : Matlab

    Le programme est celui que j'ai mis tout au début. La variable permanente c'est SOCi et la variable temporaire de calcul c'est SOCt.

  9. #8
    invite437afb85

    Re : Matlab

    function [SOC,Pchar,Pdech] = Batterie(Pe,SOCi)
    %#codegen
    Pmaxbattc = 6; % Puissance de charge maximale de la batterie
    Pmaxbattd = -5; % Puissance de décharge maximale de la batterie
    n = 0.9; % Rendement la batterie
    Q = 6; % Capacité maximale de la batterie
    C = 18000; % Coefficient de transfert de puissance
    SOCh = 0.85; % Valeur de seuil haut en état de charge de la batterie
    SOCb = 0.4; % Valeur de seuil bas en état de charge de le batterie
    SOCt = 0; % Déclaration et initialisation de la variable de temporaire pour l'état de charge
    SOCi = 0.5; % Valeur initiale de l'état de charge
    Ptc = 0; % Déclaration et initialisation de la variable temporaire de la puissance de charge
    Ptd = 0; % Déclaration et initialisation de la variable temporaire de la puissance de décharge
    U = C*Q;
    Ninv = 1/n;

    if Pe > 0 % Puissance à charger
    if Pe <= Pmaxbattc % Vérification si on n'a pas atteint la puissance maximale de la batterie en charge
    Ptc = Pe; % Affectation de cette puissance à une variable temporaire de charge
    else
    Ptc = Pmaxbattc; % Puissance maximale atteinte, affectation de cette puissance max à la variable temporaire de charge
    end
    SOCt = SOCi + (n*Ptc/U); % Calcul de l'état de charge après stockage
    if SOCt > SOCh % Vérification si on atteint la valeur de seuil haut de la batterie
    Ptc = Ptc - (Ninv *(SOCt-SOCh)*U); % Calcul de la puissance admissible
    SOCt = SOCh; % Limitation du SOC
    end
    end

    Pchar = Ptc;

    if Pe < 0 % Puissance à décharger
    if Pe >= Pmaxbattd % Vérification si on a pas atteint la puissance maximale de la batterie en décharge
    Ptd = Pe;% Affectation de cette puissance à une variable temporaire de décharge
    else
    Ptd = Pmaxbattd;% Puissance maximale atteinte, affectation de cette puissance max à la variable temporaire de décharge
    end
    SOCt = SOCi + (Ninv *(Ptd/U));% Calcul de l'état de charge après décharge
    if SOCt < SOCb % Vérification si on atteint la valeur de seuil bas de la batterie
    Ptd = Ptd - ((SOCt - SOCb)*U*n);% Calcul de la puissance déchargeable
    SOCt = SOCb; % Limitation du SOC
    end
    end
    SOC = SOCt; % Etat de charge de la batterie à temps réel
    Pdech = Ptd; % Etat de la puissance déchargée à temps réel

Discussions similaires

  1. [Programmation] MATLAB.SIMULINK,[Embedded Matlab function]
    Par invitefa0b6af5 dans le forum Électronique
    Réponses: 0
    Dernier message: 08/05/2016, 14h11
  2. [MATLAB] Problème avec MATLAB Compiler
    Par invite17d82053 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 11/03/2016, 11h20
  3. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 11h12
  4. MATLAB: acquisition de donnée via une interface graphique matlab
    Par inviteaeee671e dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 08/05/2011, 17h54
  5. [MatLab] Sb2Sl => Matlab classique = pb intégration.
    Par invite6e6d5361 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/08/2005, 22h02
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...