Contenu principal

Création de diagrammes au moyen d’un script MATLAB

Cet exemple indique comment intégrer des commandes API Stateflow® à une fonction ou à un script MATLAB®. La création d'un script de commandes API vous permet d'éviter les étapes répétitives de création de diagrammes et ainsi de recréer le même modèle avec une commande unique. Pour plus d’informations, veuillez consulter Overview of the Stateflow API.

Exécution de la fonction MATLAB

La fonction makeMyModel définie au bas de cette page génère un diagramme Stateflow « de base » que vous pouvez réutiliser en tant que modèle pour vos applications.

ch = makeMyModel;
view(ch)

Stateflow chart with a hierarchy of states. The outer state is called A. It contains two inner states called A1 and A2.

Création d’une fonction de diagramme de base

Cette fonction crée un diagramme Stateflow et renvoie l’objet Stateflow.Chart correspondant.

function ch = makeMyModel

Créez un modèle et accédez à un nouvel objet Stateflow.Chart.

    rt = sfroot;
    prev_machines = find(rt,"-isa","Stateflow.Machine");
    sfnew;
    curr_machines = find(rt,"-isa","Stateflow.Machine");
    m = setdiff(curr_machines,prev_machines);
    ch = find(m,"-isa","Stateflow.Chart");

Créez l’état A dans un diagramme.

    sA = Stateflow.State(ch);
    sA.Name = "A";
    sA.Position = [50 50 310 200];

Créez l’état A1 au sein de l’état A.

    sA1 = Stateflow.State(ch);
    sA1.Name = "A1";
    sA1.Position = [80 120 90 60];

Créez l’état A2 au sein de l’état A.

    sA2 = Stateflow.State(ch);
    sA2.Name = "A2";
    sA2.Position = [240 120 90 60];

Créez une transition de A1 vers A2.

    tA1A2 = Stateflow.Transition(ch);
    tA1A2.Source = sA1;
    tA1A2.Destination = sA2;
    tA1A2.SourceOClock = 3;
    tA1A2.DestinationOClock = 9;

Ajoutez une transition par défaut à l’état A.

    dtA = Stateflow.Transition(ch);
    dtA.Destination = sA;
    dtA.DestinationOClock = 0;
    dtA.SourceEndPoint = dtA.DestinationEndpoint-[0 30];
    dtA.MidPoint = dtA.DestinationEndpoint-[0 15];

Ajoutez une transition par défaut à l’état A1.

    dtA1 = Stateflow.Transition(ch);
    dtA1.Destination = sA1;
    dtA1.DestinationOClock = 0;
    dtA1.SourceEndPoint = dtA1.DestinationEndpoint-[0 30];
    dtA1.MidPoint = dtA1.DestinationEndpoint-[0 15];
end

Voir aussi

Fonctions

Objets

Rubriques