Contenuto principale

Creazione di grafici Stateflow

In questo tutorial, si utilizza un grafico Stateflow® per modellare la logica di un sistema di batterie ricaricabili.

Il sistema di batterie presenta i seguenti requisiti:

  • La batteria si carica quando è collegata a una sorgente di alimentazione esterna. In caso contrario, si scarica.

  • La capacità della batteria si carica ad una velocità pari al 4% della carica totale e si scarica ad una velocità pari al 3%.

  • Quando si carica, la batteria non eroga potenza. Quando si scarica, la batteria eroga 3,5 watt di potenza.

Per modellare questi requisiti, si crea un grafico che contiene due stati, Charge e Discharge, che rappresentano le modalità operative del sistema di batterie.

Creazione del grafico

Creare un nuovo modello di Simulink® che contiene un blocco Chart vuoto.

  1. Avviare MATLAB®. Nella barra degli strumenti di MATLAB, nella scheda Home, fare clic su Simulink.

  2. Nella pagina iniziale, nella sezione Stateflow, fare clic sul modello Blank Chart.

    L'Editor di Simulink si apre e visualizza un modello che contiene un blocco Chart.

  3. Fare doppio clic sul blocco Chart. L'Editor di Stateflow si apre.

L'Editor di Stateflow presenta questi componenti:

  • Area di disegno: l'ambiente grafico in cui inserire gli stati e le transizioni. Per impostazione predefinita, l'area di disegno presenta uno sfondo color crema.

  • Barra di esplorazione: un'area rettangolare, situata sopra l'area di disegno, che mostra il percorso del grafico o dell'elemento grafico aperto. È possibile passare dall'Editor di Stateflow all'Editor di Simulink e viceversa facendo clic sui pulsanti freccia o sugli elementi del modello.

  • Tavolozza: un menu, situato a sinistra dell'area di disegno, dal quale è possibile aggiungere oggetti all'area di disegno. Contiene le icone relative agli stati e altri elementi del grafico.

    Per visualizzare i nomi degli oggetti, fare clic con il tasto destro del mouse sulla tavolozza, quindi su Show Names. Per nascondere i nomi, fare clic con il tasto destro del mouse e selezionare Hide Names.

  • Riquadro Symbols: un riquadro, situato per impostazione predefinita a destra dell'area di disegno, in cui è possibile creare e gestire dati, eventi e messaggi che consentono al grafico di comunicare con il resto del modello di Simulink.

    Per aprire o chiudere il riquadro Symbols, nella scheda Modeling, fare clic su Symbols Pane.

Aggiunta di stati

Il sistema di batterie richiede due stati, uno per la carica e uno per la scarica. Utilizzare la tavolozza per aggiungere i due stati all'area di disegno.

  1. Nella tavolozza, fare clic sull'icona di stato . Per posizionare lo stato, puntare su una sezione vuota dell'area di disegno e fare clic.

  2. Quando si posiziona uno stato, l'Editor richiede di inserirne il nome nell'angolo superiore sinistro. inserire Charge.

    Per finalizzare il nome dello stato, fare clic su una sezione vuota dell'area di disegno. Per modificare il nome di uno stato esistente, fare clic sul testo al suo interno.

    Nota

    I nomi degli stati non possono contenere spazi né iniziare con un numero. Ogni nome di stato deve essere univoco.

  3. Aggiungere un secondo stato e denominarlo Discharge.

    Nota

    I confini degli stati non devono sovrapporsi.

Collegamenti degli stati

Le transizioni determinano come e quando il grafico passa da uno stato all'altro.

Utilizzo delle transizioni predefinite per indicare il primo stato attivo

Un cerchio blu indica una transizione predefinita, che determina quale stato diventa attivo all'avvio della simulazione.

Il grafico assegna una transizione predefinita al primo stato aggiunto all'area di disegno. In questo esempio, la transizione predefinita si collega allo stato Charge. È possibile aggiungere altre transizioni predefinite dalla tavolozza facendo clic sull'icona delle transizioni predefinite , quindi sul fronte di uno stato.

Poiché i requisiti stabiliscono che la batteria deve avviarsi in modalità di carica, non è necessario spostare la transizione predefinita.

Aggiunta di transizioni tra gli stati

Le transizioni tra gli stati consentono al grafico di passare da uno stato all'altro.

  1. Per creare la prima transizione, puntare sul fronte dello stato Charge fino a quando il cursore non si trasforma in un simbolo più. Fare clic e trascinare fino al fronte dello stato Discharge.

    Suggerimento

    Per spostare una transizione esistente, fare clic sulla punta della freccia e trascinarla.

  2. Creare una transizione da Discharge a Charge.

  3. Simulare il modello. Nella scheda Simulation, fare clic su Run.

    Quando uno stato diventa attivo, il grafico evidenzia i confini dello stato. Quando il grafico si sposta lungo una transizione, il grafico la evidenzia brevemente. Durante la simulazione, il grafico passa dallo stato Charge allo stato Discharge ad ogni passo.

    Suggerimento

    Per modificare la velocità dell'animazione, nella scheda Debug, fare clic sul menu a discesa Animation Speed e selezionare un'opzione.

Aggiunta di etichette di transizione

Per modificare il comportamento delle transizioni, è possibile aggiungere delle etichette di transizione. Le etichette di transizione hanno tre componenti opzionali:

  • Un trigger di evento o un attivatore di messaggio che impedisce al grafico di spostarsi lungo la transizione fino a quando la transizione non riceve un evento o un messaggio trasmesso da un altro oggetto nel grafico o nel modello.

  • Una condizione che deve essere soddisfatta prima che il grafico possa spostarsi lungo la transizione. Per specificare una condizione, utilizzare le parentesi quadre.

  • Un'azione che viene eseguita quando il grafico si sposta lungo la transizione. Per specificare un'azione, utilizzare le parentesi graffe.

Quando si crea una transizione per la prima volta, l'Editor richiede di inserire un'etichetta. In alternativa, è possibile aggiungere un'etichetta di transizione facendo doppio clic sulla transizione.

Aggiungere condizioni alle transizioni tra gli stati.

  1. Per effettuare la transizione da Charge a Discharge solo quando il modello non è in carica, fare doppio clic sulla transizione e inserire l'etichetta [~isCharging].

    Per finalizzare l'etichetta, fare clic sull'area di disegno. Per spostare l'etichetta, fare clic e trascinare.

  2. Per effettuare la transizione da Discharge a Charge solo quando il modello è in carica, inserire l'etichetta [isCharging].

Aggiunta di codice eseguibile

È possibile eseguire codice negli stati attivi aggiungendo azioni di stato nell'etichetta dello stato. Le azioni di stato contengono una parola chiave, seguita da due punti e da un blocco di codice eseguibile.

In questo esempio, si utilizza tre tipi di azioni di stato.

Azione di statoComportamento
entryViene eseguito quando lo stato diventa attivo.
duringViene eseguito ad ogni passo in cui lo stato è attivo. Non viene eseguito nel passo in cui lo stato diventa attivo o inattivo.
exitViene eseguito quando lo stato diventa inattivo.

Aggiungere delle azioni di stato che modificano l'output e la carica della batteria in base alla modalità operativa.

  1. Nello stato Charge, modificare l'etichetta dello stato facendo clic sul nome dello stato. Aggiungere una nuova riga, quindi inserire il testo sottostante. È possibile aggiungere nuove righe premendo Enter.

    entry:
    sentPower=0;
    during:
    charge=charge+4;
    L'azione entry imposta una variabile denominata sentPower su 0. L'azione during incrementa una variabile denominata charge di 4.

    Suggerimento

    Per ridimensionare manualmente uno stato, fare clic su un angolo qualsiasi e trascinare. Per riformattare automaticamente ciascun oggetto sull'area di disegno, deselezionarli tutti facendo clic su una sezione vuota dell'area di disegno. Quindi, premere CTRL+MAIUSC+A.

  2. Nello stato Discharge, aggiungere un'azione entry che imposta sentPower su 3.5 e un'azione during che decrementi charge di 3.

Definizione dei dati del grafico e condivisione con il modello di Simulink

Quando si utilizza una variabile in una transizione o in uno stato, è necessario definirla come dati di input, dati di output o dati locali. Nel riquadro Symbols, il badge di avviso indica la presenza di dati non definiti.

IconaTipoComportamento
Dati di input

Durante la simulazione, questi dati ricevono il valore del segnale di input.

La definizione di un dato di input aggiunge una porta di input al blocco Chart in Simulink. Non è possibile assegnare manualmente i valori ai dati di input.

Dati di output

Durante la simulazione, il grafico restituisce il valore di questi dati a Simulink.

La definizione di un dato di output aggiunge una porta di output al blocco Chart in Simulink.

Dati localiDurante la simulazione, questi dati memorizzano informazioni che sono accessibili solo nel grafico.

Il grafico deduce il tipo di ciascun dato in base al contesto. Ad esempio, il grafico deduce che isCharging è un dato di input, sentPower è un dato di output e charge è un dato locale.

Definire il tipo e il valore dei dati del grafico.

  1. Per accettare i tipi di dato dedotti, nel riquadro Symbols, fare clic sul pulsante Resolve undefined symbols (Risoluzione di simboli non definiti) . I badge di avviso accanto ai dati non definiti scompaiono.

  2. Impostare la carica iniziale della batteria. Nel riquadro Symbols, nella riga charge, fare clic sulla colonna Value e inserire 50.

    Nota

    Durante la simulazione, i dati con un valore non definito assumono il valore predefinito 0.

  3. Per tornare al livello superiore del modello di Simulink, nella barra di esplorazione, fare clic sul pulsante Up to Parent (Torna al livello genitore) .

    Il blocco Chart ha una porta di input e una porta di output. Per vedere i nomi delle porte, espandere il blocco Chart facendo clic su un angolo e trascinando verso l'esterno.

Collegamento dei blocchi Simulink a un grafico

Per completare il modello, collegare i blocchi sorgente e destinazione alle porte di input e di output del blocco Chart.

  1. Per rappresentare il sistema di batterie che si collega o si scollega da una sorgente di alimentazione esterna, aggiungere un blocco Manual Switch all'area di disegno di Simulink. Collegare l'output all'input del blocco Chart.

  2. Aggiungere un blocco Constant con valore 1. Collegare l'output alla prima porta di input del blocco Manual Switch.

  3. Aggiungere un blocco Constant con valore 0. Collegare l'output alla seconda porta di input del blocco Manual Switch.

  4. Aggiungere un blocco Scope. Collegare la porta di output del blocco Chart alla porta di input del blocco Scope.

  5. Denominare il blocco Chart come Battery.

Simulazione del modello

Simulare il modello completato.

  1. Nella scheda Simulation, impostare Stop Time su Inf.

  2. Fare doppio clic per inserire il blocco Chart.

  3. Per simulare il modello, nella scheda Modeling, fare clic su Run. Osservare l'evidenziazione blu intorno allo stato Charge.

  4. Tornare all'Editor di Simulink.

  5. Per commutare il blocco Manual Switch, fare doppio clic su di esso.

  6. Aprire l'Editor di Stateflow. Osservare l'evidenziazione blu intorno allo stato Discharge.

  7. Per terminare la simulazione, nella scheda Modeling, fare clic su Stop.

  8. Commutare il blocco Manual Switch su 1.

Nella fase successiva del tutorial, si utilizza l'output dello stato attivo, la registrazione e i punti di interruzione per verificare ed eseguire il debug del modello della batteria.

Vedi anche

Argomenti