Contenuto principale

Chart

Implementare la logica di controllo con macchina a stato finito

  • Chart block

Librerie:
Stateflow

Descrizione

Il blocco Chart rappresenta graficamente una macchina a stato finito. In un grafico Stateflow®, gli stati e le transizioni costituiscono i blocchi di costruzione di base di un sistema logico modale sequenziale. Gli stati corrispondono alle modalità operative mentre le transizioni rappresentano il passaggio del sistema da una modalità operativa a un'altra. Per ulteriori informazioni, vedere Model a Finite State Machine.

Per implementare la logica di controllo, i grafici Stateflow possono utilizzare il linguaggio di azione di MATLAB® o il linguaggio di azione C. Per ulteriori informazioni, vedere Differences Between MATLAB and C as Action Language Syntax.

Esempi

Porte

Input

espandi tutto

Quando si creano i dati di input nel grafico Stateflow utilizzando il riquadro Symbols, Stateflow crea una porta di input corrispondente sul blocco Chart.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string

Output

espandi tutto

Quando si creano i dati di output nel grafico Stateflow utilizzando il riquadro Symbols, Stateflow crea una porta di output corrispondente sul blocco Chart.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string

Parametri

espandi tutto

Per modificare i parametri del blocco in modo interattivo, utilizzare il Property Inspector. Dalla barra degli strumenti di Simulink®, nella scheda Simulation, nella galleria Prepare, selezionare Property Inspector.

Nota

I grafici dispongono inoltre di parametri del blocco Subsystem (Simulink) a cui è possibile accedere facendo clic con il tasto destro del mouse sul grafico e selezionando Block Parameters (Subsystem). Tuttavia, l'aggiornamento di questi parametri non è consigliato.

Metodo per aggiornare o attivare un grafico Stateflow, specificato come Inherited, Discrete o Continuous.

Inherited

L'input dal modello di Simulink determina il momento in cui il grafico si attiva durante una simulazione.

Se si definiscono degli eventi di input per il grafico, il segnale proveniente dal blocco Simulink collegato alla porta di attivazione determina l'avvio del grafico. Il segnale di Simulink può essere Rising, Falling o Either (ascendente e discendente) oppure una risposta a Function Call. Per ulteriori informazioni, vedere Activate a Stateflow Chart by Sending Input Events.

Se non si definiscono gli eventi input, il grafico Stateflow eredita implicitamente i trigger dal modello di Simulink. Questi eventi impliciti sono i tempi di campionamento discreti o continui dei segnali di Simulink che forniscono gli input al grafico. Se si definiscono gli input dei dati, il grafico si attiva alla velocità di input dei dati più rapida. Se non si definisce alcun input dei dati per il grafico, lo stesso si attiva in base al comportamento di esecuzione del sottosistema genitore.

Discrete

Il grafico Stateflow si attiva quando il modello di Simulink genera un evento implicito a intervalli di tempo regolari specificati nelle proprietà del grafico Tempo di campionamento. Altri blocchi nel modello di Simulink possono avere tempi di campionamento diversi.

Continuous

Il grafico Stateflow aggiorna il proprio stato solo durante i passi temporali principali e calcola gli output e le variabili continue locali durante i passi temporali principali e secondari. Il grafico può registrare gli zero-crossing, consentendo in questo modo ai modelli di Simulink di campionare i grafici Stateflow ogni volta che si verificano cambiamenti di stato. Il grafico Stateflow calcola le derivate per le variabili continue locali. Per ulteriori informazioni, vedere Continuous-Time Modeling in Stateflow.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: ChartUpdate
Valori: "INHERITED" (predefinito) | "CONTINUOUS" | "DISCRETE"

Specificare l'intervallo di tempo in cui il grafico si attiva durante la simulazione. Il valore predefinito indica che il grafico eredita il tempo di campionamento da Simulink. Per ulteriori informazioni sulla definizione del tempo di campionamento, vedere Specifica del tempo di campionamento (Simulink).

Non utilizzare il parametro Tempo di campionamento nei parametri del blocco Subsystem. Utilizzare invece il Property Inspector.

Dipendenze

Per abilitare questo parametro, impostare Update method (Metodo di aggiornamento) su Discrete.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: SampleTime
Valori: "-1" (predefinito) | string scalar | character vector
Tipi di dati: string | char

Abilitare o meno il rilevamento dello zero-crossing sulle transizioni di stato nel grafico. Per ulteriori informazioni, vedere Continuous-Time Modeling in Stateflow.

Dipendenze

Per abilitare questo parametro, impostare Update method (Metodo di aggiornamento) su Continuous.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: EnableZeroCrossings
Valori: true or 1 (predefinito) | false or 0
Tipi di dati: logical

Utilizzare o meno operazioni su bit nelle azioni di stato e transizione nel grafico, specificate come valore numerico o logico 1 (vero) o 0 (falso).

Dipendenze

Per abilitare questo parametro, impostare Action language (Linguaggio di azione) su C.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: EnableBitOps
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Creare o meno una porta di output dei dati per il grafico attivo. Per ulteriori informazioni, vedere Monitor State Activity Through Active State Data.

Dipendenze

Per abilitare questo parametro, creare uno stato Stateflow, una tabella di transizione di stato o un grafico atomico secondario.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: HasOutputData
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Modalità di monitoraggio dei dati dell'output dello stato attivo. Per ulteriori informazioni, vedere Monitor State Activity Through Active State Data.

Dipendenze

Per abilitare questo parametro, selezionare Create output for monitoring (Generazione di output per il monitoraggio).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: OutputMonitoringMode
Valori: "ChildActivity" (predefinito) | "LeafStateActivity"

Nome dell'oggetto dati dello stato attivo per la tabella di transizione dello stato.

Dipendenze

Per abilitare questo parametro, selezionare Create output for monitoring (Generazione di output per il monitoraggio).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: OutputPortName
Valori: "ChartMode" (predefinito) | string scalar | character vector
Tipi di dati: string | char

Nome dell'oggetto dati dello stato attivo per la tabella di transizione dello stato.

Dipendenze

Per abilitare questo parametro, selezionare Create output for monitoring (Generazione di output per il monitoraggio).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: EnumTypeName
Valori: "ChartModeType" (predefinito) | string scalar | character vector
Tipi di dati: string | char

Definire manualmente o meno il tipo di dato enumerato per l'output dei dati dello stato attivo. Per ulteriori informazioni, vedere Define State Activity Enumeration Type.

Dipendenze

Per abilitare questo parametro, selezionare Create output for monitoring (Generazione di output per il monitoraggio).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: DoNotAutogenerateEnum
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Avanzato

Inizializzare o meno la configurazione dello stato del grafico al tempo zero anziché al primo evento di input. Per ulteriori informazioni, vedere Execution of a Chart at Initialization.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: ExecuteAtInitialization
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Se i dati nel grafico saturano o meno in caso di overflow dell'intero. Se si deseleziona questo parametro, i dati nel grafico si avvolgono sull'overflow dell'intero. Per ulteriori informazioni, vedere Handle Integer and Enumeration Overflow for Chart Data.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: SaturateOnIntegerOverflow
Valori: true or 1 (predefinito) | false or 0
Tipi di dati: logical

Inizializzare o meno i dati di output ogni volta che il grafico si attiva.

Quando si seleziona questo parametro, il grafico azzera i propri valori di output ogni volta che si attiva, non solo al tempo 0. Il grafico azzera i valori di output ogni volta che viene attivato da una chiamata di funzione, un trigger del fronte o da impulsi di clock. Se si imposta un valore iniziale per un oggetto dati di output, l'output si reimposta su tale valore. In caso contrario, l'output si reimposta su zero. Selezionare questo parametro per:

  • Assicurare che tutti gli output siano definiti ad ogni esecuzione del grafico.

  • Impedire il mantenimento degli output, ossia impedire che vengano mantenuti i valori degli output calcolati nelle esecuzioni precedenti.

  • Fornire a tutti gli output del grafico un valore iniziale significativo.

Per ulteriori informazioni, vedere Initial value.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: InitializeOutput
Valori: true or 1 (predefinito) | false or 0
Tipi di dati: logical

Se il grafico supporta o meno dati di dimensioni variabili. Per ulteriori informazioni, vedere Declare Variable-Size Data in Stateflow Charts.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: SupportVariableSizing
Valori: true or 1 (predefinito) | false or 0
Tipi di dati: logical

Esportare o meno le funzioni a livello di grafico in altri blocchi del modello di Simulink. Per ulteriori informazioni, vedere Export Stateflow Functions for Reuse.

Dipendenze

Per abilitare questo parametro, aggiungere una funzione al grafico.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: ExportChartFunctions
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Se le funzioni esportate dal grafico sono visibili globalmente o meno nel modello di Simulink. Quando questa proprietà è abilitata, i blocchi in tutto il modello possono richiamare funzioni esportate dal grafico senza utilizzare la notazione qualificata.

Dipendenze

Per abilitare questo parametro, selezionare Export chart level functions (Esporta funzioni a livello di grafico).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: AllowGlobalAccessToExportedFunctions
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Abilitare o meno la semantica super-step per il grafico. Selezionare questo parametro per consentire al grafico di effettuare più transizioni in ogni passo temporale fino al raggiungimento di uno stato stabile. Questa opzione non è disponibile quando si imposta la proprietà del grafico Update method su Continuous. Per ulteriori informazioni, vedere Super Step Semantics.

Dipendenze

Per abilitare questo parametro, impostare Update method (Metodo di aggiornamento) su Discrete.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: EnableNonTerminalStates
Valori: false or 0 (predefinito) | true or 1
Tipi di dati: logical

Il numero massimo di transizioni che possono essere completate in un unico super-step. Per ulteriori informazioni, vedere Super Step Semantics.

Dipendenze

Per abilitare questo parametro, selezionare Enable super step semantics (Abilita la semantica super-step).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: NonTerminalMaxCounts
Valori: 1000 (predefinito) | positive integer
Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Azione che Stateflow deve eseguire nel caso in cui il super-step superi il numero massimo di transizioni consentite in un unico super-step. Per ulteriori informazioni, vedere Super Step Semantics.

Dipendenze

Per abilitare questo parametro, selezionare Enable super step semantics (Abilita la semantica super-step).

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: NonTerminalUnstableBehavior
Valori: "Proceed" (predefinito) | "Throw Error"

Da R2022b

Se il grafico tratta o meno i dati non scalari con una dimensione di lunghezza 1 come a dimensione fissa. Quando si seleziona questo parametro, il grafico tratta i dati non scalari che hanno almeno una dimensione di lunghezza 1 come a dimensione fissa, indipendentemente dal fatto che la proprietà dei dati Variable size sia abilitata o meno. Quando si deseleziona questo parametro, il grafico tratta i dati non scalari con la proprietà Variable size abilitata come a dimensione variabile.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: TreatDimensionOfLengthOneAsFixedSize
Valori: true or 1 (predefinito) | false or 0
Tipi di dati: logical

Specificare quali sono le varianti del blocco che Stateflow analizza durante la simulazione e la generazione di codice. In base all'opzione scelta, Stateflow determina se il codice generato deve contenere solo la scelta attiva o entrambe le scelte, attiva e inattiva.

  • update diagram analyze all choices: quando si seleziona questa opzione Stateflow analizza sia le scelte attive che quelle inattive per individuare eventuali incompatibilità negli attributi del segnale e genera codice solo per la scelta attiva.

  • code compile: quando si seleziona questa opzione Stateflow analizza sia le scelte attive che quelle inattive delle transizioni delle varianti e genera codice sia per le scelte attive che per quelle inattive. Le scelte sono racchiuse nelle dichiarazioni condizionali C #if e #endif del preprocessore C che vengono compilate in modo condizionale quando si compila il codice generato.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: VariantActivationTime
Valori: "update diagram analyze all choices" (predefinito) | "code compile"

Linguaggio di azione da utilizzare per programmare il grafico, specificato come MATLAB o C. Per ulteriori informazioni, vedere Differences Between MATLAB and C as Action Language Syntax.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: ActionLanguage
Valori: "MATLAB" (predefinito) | "C"

Semantica della macchina a stati implementata dal grafico, specificata come Classic, Mealy o Moore. Per ulteriori informazioni, vedere Overview of Mealy and Moore Machines.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: StateMachineType
Valori: "Classic" (predefinito) | "Mealy" | "Moore"

Proprietà in virgola fissa

Segnali Simulink ereditati da trattare come oggetti Fixed-Point Designer™ fi, specificati come uno dei seguenti valori:

  • Fixed-point: il grafico tratta tutti gli input in virgola fissa come oggetti fi.

  • Fixed-point & Integer: il grafico tratta tutti gli input in virgola fissa e interi come oggetti fi.

Dipendenze

Per abilitare questo parametro, impostare Action language (Linguaggio di azione) su MATLAB.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: TreatAsFi
Valori: "Fixed-point" (predefinito) | "Fixed-point & Integer"

Proprietà fimath predefinite per il grafico, specificate come uno dei seguenti valori:

  • Same as MATLAB: il grafico utilizza le stesse proprietà dell'oggetto fimath dell'oggetto fimath predefinito attuale. La casella di testo è disattivata e visualizza l'oggetto globale fimath attuale in modalità di sola lettura.

  • Specify other: specificare il proprio oggetto fimath nella casella di testo in uno dei due modi seguenti:

    • Costruire l'oggetto fimath all'interno della casella di testo.

    • Costruire l'oggetto fimath nel workspace di MATLAB o del modello, quindi inserire il nome della variabile nella casella di testo. Se si utilizza questa opzione e si intende condividere il modello con altri, definire la variabile nel workspace del modello.

Per ulteriori informazioni, vedere fimath Object Construction (Fixed-Point Designer).

Dipendenze

Per abilitare questo parametro, impostare Action language (Linguaggio di azione) su MATLAB.

Utilizzo programmatico

Per impostare il valore del parametro del grafico in modo programmatico, accedere all'oggetto Stateflow.Chart del grafico e modificare la proprietà dell'oggetto utilizzando la notazione a punto.

Parametro: EmlDefaultFimath
Valori: "Same as MATLAB Default" (predefinito) | "Other:UserSpecified"

Funzionalità estese

espandi tutto

Generazione di codice C/C++
Genera codice C e C++ con Simulink® Coder™.

Conversione a virgola fissa
Progetta e simula sistemi a virgola fissa con Fixed-Point Designer™.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto