Main Content

Rappresentazione delle modalità operative mediante l'utilizzo degli stati

Uno stato descrive una modalità operativa di un sistema reattivo. In un grafico Stateflow®, gli stati sono utilizzati per la progettazione sequenziale volta a creare diagrammi di transizione di stato.

Durante la simulazione, gli stati possono essere attivi o inattivi. L'attività di uno stato cambia a seconda degli eventi e delle condizioni. Gli eventi guidano l'esecuzione del diagramma di transizione di stato rendendo gli stati attivi o inattivi. Per ulteriori informazioni, vedere Esecuzione di un grafico Stateflow.

Per rappresentare più livelli di componenti in un sistema, creare una gerarchia di stati annidando gli stati secondari all'interno degli stati aggregati. Per ulteriori informazioni, vedere Use State Hierarchy to Design Multilevel State Complexity.

Per modellare modalità operative reciprocamente esclusive, abilitare la decomposizione esclusiva (OR) in uno stato, in modo che al massimo uno dei suoi stati secondari sia attivo nello stesso momento. Per implementare modalità operative che funzionano simultaneamente, abilitare la decomposizione parallela (AND) in uno stato, in modo che tutti i suoi stati secondari siano attivi nello stesso momento. Per ulteriori informazioni, vedere Define Exclusive and Parallel Modes by Using State Decomposition.

Ad esempio, in questo grafico, gli stati PowerOn e PowerOff rappresentano le modalità di accensione e spegnimento di un sistema di controllo dell'aria. Nello stato PowerOn, gli stati secondari paralleli FAN1 e FAN2 rappresentano le modalità di funzionamento di una coppia di ventilatori. Ciascuno di questi stati contiene stati secondari esclusivi chiamati On e Off. Per ulteriori informazioni su questo esempio, vedere Model Synchronous Subsystems by Using Parallel Decomposition.

Chart that contains a hierarchy of exclusive and parallel states that represent the operating modes of an air controller system.

Creazione di uno stato

Per aggiungere uno stato a un grafico Stateflow:

  1. Aprire il grafico.

  2. Dalla tavolozza degli oggetti, fare clic sull'icona State (Stato) .

  3. Sull'area di disegno del grafico, fare clic sulla posizione del nuovo stato.

  4. Inserire un'etichetta per lo stato e fare clic fuori dallo stato. L'etichetta specifica il nome dello stato e le azioni opzionali che lo stato esegue durante la simulazione. Per ulteriori informazioni, vedere Definizione delle azioni in uno stato.

Dopo aver creato uno stato, è possibile utilizzare l'Editor di Stateflow per modificare la grandezza, la posizione e i contenuti dello stato:

  • Per ridimensionare lo stato, fare clic e trascinare l'angolo dello stato.

  • Per spostare lo stato, fare clic e trascinare l'interno dello stato.

  • Per modificare l'etichetta dello stato, fare clic sul testo dell'etichetta vicino alla posizione del carattere che si desidera modificare.

Suggerimento

La grafica di uno stato genitore deve essere sufficientemente grande da ospitare tutti i suoi stati secondari; potrebbe pertanto essere necessario dover ridimensionare uno stato genitore prima di trascinarvi un nuovo stato secondario. In alternativa, è possibile convertire uno stato aggregato in un grafico secondario. Per ulteriori informazioni, vedere Encapsulate Modal Logic by Using Subcharts.

Definizione delle azioni in uno stato

L'etichetta di uno stato specifica il nome dello stato e le azioni opzionali che lo stato esegue durante la simulazione. Un'etichetta dello stato appare nell'angolo superiore sinistro dello stato e ha generalmente questo formato:

name entry: entry_actions during: during_actions exit: exit_actions on event_name: on_event_actions on message_name: on_message_actions bind: event_name, data_name

Le azioni dello stato possono apparire in qualsiasi ordine. Per ogni tipo di azione, è possibile specificare più di una dichiarazione inserendo ciascuna dichiarazione su una riga separata. In alternativa, per separare più dichiarazioni sulla stessa riga, utilizzare una virgola o un punto e virgola. È inoltre possibile combinare le azioni entry, during e exit che eseguono le stesse dichiarazioni. Per ulteriori informazioni, vedere Eliminate Redundant Code by Combining State Actions.

Suggerimento

Se si aggiungono dichiarazioni subito dopo il nome dello stato, il grafico interpreta queste dichiarazioni come azioni combinate entry e during.

Nome dello stato

L'etichetta di uno stato inizia con il nome dello stato, seguito facoltativamente da una barra (/). I nomi degli stati differenziano tar lettere maiuscole e lettere minuscole e sono costituiti da una combinazione di caratteri alfanumerici e trattini bassi. Per ulteriori informazioni, vedere Linee guida per la denominazione degli oggetti Stateflow.

Per evitare conflitti di denominazione, non assegnare lo stesso nome a stati fratelli. Tuttavia, è possibile utilizzare lo stesso nome di stato per più stati se il nome completo di ciascun stato è unico. Il nome completo di uno stato è costituito dalla sequenza dei nomi degli antenati nella gerarchia degli stati, separati da punti. Ad esempio, nell'esempio precedente, gli stati in FAN1 e FAN2 sono identificati da questi nomi completi unici:

  • PowerOn.FAN1.On

  • PowerOn.FAN1.Off

  • PowerOn.FAN2.On

  • PowerOn.FAN2.Off

Azioni entry

Per aggiungere un'azione entry, inserire entry o en, seguito da due punti (:) e da una o più dichiarazioni. Il grafico esegue queste dichiarazioni quando lo stato diventa attivo. Ad esempio, in questo grafico, l'azione entry nello stato PowerOff imposta il valore di airflow su zero quando il sistema di controllo dell'aria si spegne. Per ulteriori informazioni, vedere Enter a Chart or State.

State with entry action.

Azioni during

Per aggiungere un'azione during, inserire during o du, seguito da due punti (:) e da una o più dichiarazioni. Il grafico esegue queste dichiarazioni quando lo stato è attivo e quando non sono presenti transizioni verso un altro stato. Ad esempio, in questo grafico, l'azione during nello stato PowerOn calcola il valore di airflow quando il sistema di controllo dell'aria è acceso. Per ulteriori informazioni, vedere Esecuzione di un grafico Stateflow.

State with during action.

Azioni exit

Per aggiungere un'azione exit, inserire exit o ex, seguito da due punti (:) e da una o più dichiarazioni. Il grafico esegue queste dichiarazioni quando lo stato è attivo e si verifica una transizione dallo stato. Ad esempio, in questo grafico, l'azione exit nello stato PowerOn imposta il valore di airflow su zero quando il sistema di controllo dell'aria si spegne. Per ulteriori informazioni, vedere Exit a State.

State with exit action.

Azioni on

Per aggiungere un'azione on, inserire on, seguito dal nome di un evento o di un messaggio, da due punti (:) e da una o più dichiarazioni. Il grafico esegue queste dichiarazioni quando lo stato è attivo e riceve l'evento o il messaggio specificato. Per ulteriori informazioni, vedere Synchronize Model Components by Broadcasting Events e Communicate with Stateflow Charts by Sending Messages.

È possibile specificare azioni on per più di un evento o messaggio. Ad esempio, questo stato contiene azioni diverse on per gli eventi E1 e E2.

State with multiple on actions.

Se si verificano più eventi contemporaneamente, le azioni on sono eseguite secondo l'ordine in cui appaiono nell'etichetta dello stato. Per ulteriori informazioni, vedere Esecuzione di un grafico Stateflow.

Suggerimento

È possibile utilizzare eventi impliciti (come change, enter o exit) e operatori logici temporali (come after, at, before o every) per attivare azioni on negli stati. Per ulteriori informazioni, vedere Control Chart Behavior by Using Implicit Events e Control Chart Execution by Using Temporal Logic.

Azioni bind

Per aggiungere un'azione bind, inserire bind seguito da due punti (:) e dal nome di uno o più eventi o oggetti dati. Per separare più eventi e dati, utilizzare il punto e virgola o la virgola oppure inserire gli eventi e i dati su righe separate. Ad esempio, in questo grafico, lo stato A contiene un'azione bind che vincola l'evento E e l'oggetto dati x allo stato.

State with bind action that binds an event and a data object to the state.

Un'azione bind si applica indipendentemente dalla condizione attiva o inattiva dello stato. Gli altri stati possono leggere i dati vincolati o ascoltare gli eventi vincolati, ma solo lo stato e i suoi stati figli possono modificare il valore dei dati vincolati o trasmettere gli eventi vincolati. In caso contrario, si verifica un errore di compilazione.

Il vincolo di un evento di chiamata di funzione a uno stato vincola anche il sottosistema di chiamata di funzione che l'evento chiama. Il sottosistema di chiamata di funzione è abilitato quando lo stato di vincolo è attivo e disabilitato quando lo stato di vincolo è inattivo. Per ulteriori informazioni, vedere Control Function-Call Subsystems by Using bind Actions.

Se un grafico include azioni che vincolano gli stessi dati o eventi a più stati, si verifica un errore di compilazione.

I grafici Stateflow autonomi in MATLAB® non supportano le azioni bind.

Stati gruppo

È possibile semplificare la modifica di un grafico raggruppando i contenuti grafici di uno stato in modo che agiscano come un'unica unità. Ad esempio, spostando uno stato raggruppato si spostano anche gli stati secondari, le transizioni e gli altri oggetti grafici all'interno di quello stato. Per raggruppare uno stato, fare clic con il pulsante destro del mouse sullo stato e selezionare Group & Subchart > Group nel menu contestuale.

Prima di selezionare gli oggetti all'interno dello stato o di spostare altri oggetti grafici all'interno dello stesso, è necessario disaggregarlo. Ad esempio, se si cerca di spostare uno stato o una funzione grafica in uno stato raggruppato, si ottiene un errore di intersezione non valida. Per disaggregare uno stato, fare clic con il pulsante destro del mouse sullo stato e deselezionareGroup & Subchart > Group nel menu contestuale.

Nell'Editor di Stateflow, gli stati raggruppati appaiono più scuri di quelli non raggruppati. Ad esempio, in questo grafico, lo stato FAN1 è raggruppato mentre lo stato FAN2 non lo è.

Stateflow chart that contains a grouped state called FAN1 and an ungrouped state called FAN2.

Specifica delle proprietà per gli stati

Le proprietà elencate di seguito consentono di specificare il modo in cui uno stato interagisce con gli altri componenti del grafico Stateflow. È possibile modificare queste proprietà nel Property Inspector, nel Model Explorer o nella finestra di dialogo delle proprietà dello stato.

Per utilizzare Property Inspector:

  1. Nella scheda Modeling, sotto Design Data, selezionare Property Inspector.

  2. Nell'Editor di Stateflow, selezionare lo stato.

  3. Nel Property Inspector, modificare le proprietà dello stato.

Per utilizzare Model Explorer:

  1. Nella scheda Modeling, sotto Design Data, selezionare Model Explorer.

  2. Nel riquadro Model Hierarchy, selezionare lo stato.

  3. Nel riquadro Dialog, modificare le proprietà dello stato.

Per utilizzare la finestra di dialogo delle proprietà dello stato:

  1. Nell'Editor di Stateflow, fare clic con il tasto destro del mouse sullo stato.

  2. Selezionare Properties.

  3. Nella finestra di dialogo delle proprietà, modificare le proprietà dello stato.

È inoltre possibile modificare le proprietà dello stato in modo programmatico utilizzando gli oggetti Stateflow.State. Per ulteriori informazioni sull'interfaccia programmatica di Stateflow, vedere Overview of the Stateflow API.

Nome

Nome dello stato. Questa proprietà è in sola lettura. Quando si fa clic sul collegamento ipertestuale del nome dello stato nel Model Explorer e nella finestra di dialogo delle proprietà dello stato, l'Editor di Stateflow porta lo stato in primo piano.

Ordine di esecuzione

Ordine di esecuzione per uno stato parallelo (AND). Questa proprietà non compare per gli stati esclusivi (OR). Per ulteriori informazioni, vedere Execution Order for Parallel States.

Generazione di output per il monitoraggio

Creare o meno una porta di output dei dati per lo stato attivo. Vedere Monitor State Activity Through Active State Data.

Opzione di incorporazione della funzione

Aspetto delle funzioni di stato nel codice generato. Le opzioni comprendono:

  • Auto: Un calcolo interno determina l'aspetto delle funzioni di stato nel codice generato.

  • Inline: le chiamate alle funzioni di stato sono sostituite da codice, purché la funzione non faccia parte di una ricorsività.

  • Function: le funzioni di stato sono implementate come funzioni statiche separate.

Per ulteriori informazioni, vedere Inline State Functions in Generated Code (Simulink Coder). Questa proprietà non è disponibile nel Property Inspector.

Etichetta

Etichetta per lo stato. Per ulteriori informazioni, vedere Definizione delle azioni in uno stato. Questa proprietà non è disponibile nel Property Inspector.

Registrazione dell'attività autonoma

Abilitare o meno la registrazione dei segnali. La registrazione dei segnali salva l'attività autonoma dello stato nel workspace di MATLAB durante la simulazione. Per ulteriori informazioni, vedere Log Simulation Output for States and Data.

Nome della registrazione

Nome del segnale utilizzato per registrare l'attività dello stato.

  • Per utilizzare il nome dello stato, selezionare Use state name.

  • Per specificare un nome diverso, selezionare Custom e inserire il nome di registrazione personalizzato.

Limitazione dei punti dati all'ultimo punto

Limitare o meno il numero di punti dati registrati al massimo specificato. Ad esempio, se si imposta il numero massimo di punti dati su 5000, il grafico registra solo gli ultimi 5000 punti dati generati dalla simulazione.

Decimazione

Limitare o meno la quantità di dati registrati saltando i campioni grazie all'intervallo di decimazione specificato. Ad esempio, se si imposta un intervallo di decimazione di 2, il grafico registra ogni due campioni.

Punto di test

Impostare o meno lo stato come punto di prova da monitorare con un oscilloscopio durante la simulazione. È inoltre possibile registrare i valori dei punti di prova nel workspace di MATLAB. Per ulteriori informazioni, vedere Monitor Test Points in Stateflow Charts.

Descrizione

Descrizione dello stato.

Collegamento alla documentazione

Collegamento alla documentazione online sullo stato. È possibile inserire un indirizzo URL web o un comando di MATLAB che visualizza la documentazione come file HTML o come testo nella finestra dei comandi di MATLAB. Quando si fa clic sul collegamento ipertestuale Document link, Stateflow valuta il collegamento e visualizza la documentazione.

Vedi anche

Oggetti

Strumenti

Argomenti complementari