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 :

Débutant sous StateFlow


Sujet :

Simulink

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut Débutant sous StateFlow
    Bonjour à tous,

    J'aimerais décrire un système sous StateFlow, j'ai fait quelques tutoriels, essayé de comprendre les exemples fournis avec MATLAB, mais je suis encore un peu perdu.
    Si j'ai bien compris StateFlow fonctionne comme un GRAFCET mais avec un interface un peu différente.

    Voilà le système que j'aimerais d'écrire:
    entrée: SOC_i (i:input; en entrée de cycle)
    sortie: SOC_e (e:exit; en sortie de cycle)

    Si SOC_i >a alors faire le traitement1
    Sinon faire le traitement2 de jusqu'à ce que SOC_e >=0.8

    En fait ma valeur d'entrée évolue au cours de la simulation:
    La valeur SOC_i(0) est entrée par l'utilisateur puis les prochaines valeurs SOC_i(i) (i entre 1 et N=nombre de calculs durant la simulation) sont les SOC_e(i-1).

    Un exemple:
    L'utilisateur rentre la valeur SOC_i(0)=0.4
    Or 0.4>0.2 donc le traitement1 (assimilable à une décharge de batterie) s'effectue, on obtient SOC_e(0)=0.3
    Cette fois SOC_i(1)=0.3
    Or 0.3>0.2 le traitement1 s'effectue, on obtient SOC_e(1)=0.2
    Là SOC_i(2)=0.2 on effectue donc le traitement2 (assimilable à une recharge des batteries), on obtient SOC_e(2)=0.3
    Là SOC_i(3)=0.3 que l'on compare cette fois à 0.8
    0.3<0.8 donc on recommence le traitement2 => SOC_e(3)=0.4
    ....
    ....
    SOC_i(n)=0.7 où 0.7<0.8 => traitement2 => SOC_e(n)=0.8
    Or 0.8 >=0.8, donc on effectue cette fois ci le traitement1 jusqu'à ce que SOC_e(m)=SOC_i(m+1)<=0.2 (où m>n)
    etc


    Voilà, j'espère avoir été clair pour que vous puissiez m'aider.
    Merci beaucoup, bonne soirée tout le monde!

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour qu'on puisse t'aider efficacement, il faudrait préciser un peu ta question. As-tu commencer à coder quelquechose? Pourrais-tu nous le montrer?

    Cela dit, je pense que Stateflow est bien adapté à ton besoin.

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    En fait l'exemple caractérise parfaitement le fonctionnement désiré.
    En reformulant autrement on peut dire que j'aimerais faire un cycle d'hystérésis avec pour frontières verticales les niveaux d'énergies des batteries (0.2 et 0.8 donc on "aurait" traitement=f(énergie batterie)).

    Pour ce qui est du travail effectué: j'ai un fichier simulink avec un chart qui comporte 2 entrées (une horloge et le niveau d'énergie restant dans les batteries) et 2 sorties (est-ce correct?)
    Voici une miniature.

    Merci pour l'aide apportée

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    As-tu seulement testé ton modèle? Je ne pense pas que ca fonctionne

    Rapidement, il n'y a pas de point d'entrée dans ton diagramme StateFlow, ton SOC vaut tout le temps 0.95 dans StateFlow et ca m'étonnerait que la condition "traitement effectué" ne génère pas d'erreur.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    J'ai réussi à modéliser le comportement décrit dans le 1er post! *fier*
    En fait c'était tout simple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Sous sequence croissante (ou decroissante).
    Par Lucky-94 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 26/10/2005, 11h14
  2. Gros débutant sous access...
    Par legillou dans le forum Access
    Réponses: 6
    Dernier message: 17/06/2005, 08h03
  3. [Débutante]Sous requete
    Par mimi74 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/07/2004, 14h02
  4. Réponses: 1
    Dernier message: 06/01/2003, 07h55

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