Chart
Implementare la logica di controllo con macchina a stato finito
Librerie:
Stateflow
Descrizione
Il blocco Chart è una rappresentazione grafica di una macchina a stato finito basata su un diagramma di transizione di stato. In un grafico Stateflow®, gli stati e le transizioni costituiscono i blocchi di costruzione di base di un sistema logico sequenziale. Gli stati corrispondono alle modalità operative e le transizioni rappresentano i percorsi tra gli stati. 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.
Le proprietà del grafico specificano come il grafico Stateflow si interfaccia con il modello di Simulink®. È possibile modificare le proprietà del grafico nel Property Inspector, nel Model Explorer o nella finestra di dialogo delle proprietà del grafico. Per ulteriori informazioni, vedere . In alternativa, è possibile modificare le proprietà del grafico in modo programmatico utilizzando gli oggetti Stateflow.Chart. Per ulteriori informazioni sull'interfaccia programmatica di Stateflow, vedere Overview of the Stateflow API.
Esempi
Design a Game by Using Stateflow
Implement the game of Tetris by using a Stateflow® chart. This model is a redesigned version of the classic Stateflow demo sf_tetris. The new design incorporates these programming paradigms:
Model a Fitness Tracker
Implement a fitness tracker by using temporal logic and messages.
Porte
Input
Quando si creano i dati di input nel riquadro Symbols, Stateflow crea le porte di input. I dati di input creati avranno una corrispondente porta di input che apparirà una volta creati i dati.
Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string
Output
Quando si creano i dati di output nel riquadro Symbols, Stateflow crea le porte di output. I dati di output creati avranno una corrispondente porta di output che apparirà una volta creati i dati.
Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string
Parametri
I parametri della scheda Code Generation (Generazione di codice) richiedono Simulink Coder™ o Embedded Coder®.
Principale
Selezionare come visualizzare le etichette delle porte sull'icona del blocco Chart.
noneNon visualizzare le etichette delle porte.
FromPortIconSe l'icona della porta corrispondente visualizza un nome del segnale, visualizzare il nome del segnale sul blocco Chart. Altrimenti, visualizzare il nome del blocco della porta.
FromPortBlockNameVisualizzare il nome del blocco della porta corrispondente sul blocco Chart.
SignalNameSe è presente un nome del segnale, visualizzare il nome del segnale collegato alla porta sul blocco Chart. Altrimenti, visualizzare il nome del blocco della porta corrispondente.
Utilizzo programmatico
Parametro: ShowPortLabels |
| Tipo: scalare di stringa o vettore di caratteri |
Valore: "none""FromPortIcon" | "FromPortBlockName" | "SignalName" |
Predefinito: "FromPortIcon" |
Controllare l'accesso dell'utente al contenuto del grafico.
ReadWriteConsentire l'apertura e la modifica del contenuto del grafico.
ReadOnlyConsentire l'apertura del grafico ma non la modifica. Se il grafico si trova in un blocco libreria, è possibile creare e aprire collegamenti al grafico e creare e modificare copie locali dello stesso, ma non è possibile cambiare i permessi o modificare il contenuto dell'istanza della libreria originale.
NoReadOrWriteDisabilitare l'apertura o la modifica del grafico. Se il grafico si trova in una libreria, è possibile creare collegamenti al grafico in un modello, ma non è possibile aprire, modificare, cambiare i permessi o creare copie locali del grafico.
Utilizzo programmatico
Parametro: Permissions |
| Tipo: scalare di stringa o vettore di caratteri |
Valore: "ReadWrite" | "ReadOnly" | "NoReadOrWrite" |
Predefinito: "ReadWrite" |
offNon provare ad eliminare i loop algebrici artificiali che includono il grafico secondario atomico.
on Provare ad eliminare i loop algebrici artificiali che includono il grafico secondario atomico.
Utilizzo programmatico
Parametro: MinAlgLoopOccurrences |
| Tipo: scalare di stringa o vettore di caratteri |
Valore: "off" | "on" |
Predefinito: "off" |
Specificare se tutti i blocchi di questo grafico devono essere eseguiti alla stessa velocità o se possono essere eseguiti a velocità diverse.
Se i blocchi nel grafico possono essere eseguiti a velocità diverse, specificare il tempo di campionamento del grafico come ereditato (
-1).Se tutti i blocchi devono essere eseguiti alla stessa velocità, specificare il tempo di campionamento corrispondente a tale velocità come valore del parametro Sample time.
Se uno dei blocchi del grafico indica un tempo di campionamento differente (diverso da
-1oinf), Simulink visualizza un messaggio di errore quando si aggiorna o si simula il modello. Ad esempio, si supponga che tutti i blocchi del grafico debbano essere eseguiti5volte al secondo. Per garantire questo tempo, specificare il tempo di campionamento del grafico come0.2. In questo esempio, se uno dei blocchi del grafico indica un tempo di campionamento diverso da0.2,-1oinf, Simulink visualizza un errore quando si aggiorna o si simula il modello.
-1Specificare il tempo di campionamento ereditato. Se i blocchi del grafico possono essere eseguiti a velocità diverse, utilizzare questo tempo di campionamento.
[Ts 0]Specificare il tempo di campionamento periodico.
Utilizzo programmatico
Parametro: SystemSampleTime |
| Tipo: scalare di stringa o vettore di caratteri |
Valore: "-1" | "[Ts 0]"
|
Predefinito: "-1" |
Generazione di codice
Selezionare il formato del codice generato per un grafico secondario atomico (non virtuale).
AutoSimulink Coder sceglie il formato ottimale per il sistema in base al tipo e al numero di istanze del grafico presenti nel modello.
InlineSimulink Coder incorpora il grafico in modo incondizionato.
Nonreusable functionSimulink Coder genera esplicitamente una funzione separata in un file distinto. I grafici con questa impostazione generano funzioni che potrebbero avere argomenti dipendenti dall'impostazione dei parametri dell'interfaccia della funzione in Code Generation (Simulink). È possibile assegnare un nome alla funzione e al file generati utilizzando rispettivamente i parametri nome della funzione e nome file (senza estensione), da Code Generation (Simulink). Queste funzioni non sono rientranti.
Reusable functionSimulink Coder genera una funzione con argomenti che consente di riutilizzare il codice del grafico quando un modello include più istanze del grafico.
Questa opzione genera una funzione con argomenti che consente di riutilizzare il codice del grafico nel codice generato di una gerarchia di riferimento del modello che include più istanze di un grafico attraverso i modelli di riferimento. In questo caso, il grafico deve essere una libreria.
Suggerimenti
Quando si desidera che più istanze di un grafico siano rappresentate come un'unica funzione riutilizzabile, è possibile definire ciascuna di esse come
Autoo comeReusable function. È preferibile utilizzare solo un'opzione poiché l'utilizzo di entrambe crea due funzioni riutilizzabili, una per ogni definizione. I risultati di queste scelte differiscono solo quando il riutilizzo non è possibile. La selezione diAutonon consente di controllare la funzione o il nome del file per il codice del grafico.Le opzioni
Reusable functioneAutodeterminano entrambe se sono presenti più istanze di un grafico e se il codice può essere riutilizzato. Le opzioni hanno un comportamento diverso quando è impossibile riutilizzare il codice. In questo caso,Autoproduce codice incorporato o, nel caso in cui le circostanze impediscano l'incorporazione, produce funzioni separate per ciascuna istanza del grafico.Se si seleziona l'opzione
Reusable functionmentre il codice generato è sottoposto al controllo sorgente, impostare File name options suUse subsystem name,Use function nameoUser specified. Altrimenti, i nomi del file di codice cambiano ogni volta si modifica il modello, impendendo quindi il controllo della sorgente sui file.
Dipendenza
Questo parametro richiede Simulink Coder.
Impostando questo parametro su
Nonreusable functionoReusable functionsi abilitano i seguenti parametri:Function name options
File name options
Sezione di memoria per le funzioni di inizializzazione/termine (richiede Embedded Coder e un file di destinazione di sistema basato su ERT)
Sezione di memoria per le funzioni di esecuzione (richiede Embedded Coder e un file di destinazione di sistema basato su ERT)
Impostando questo parametro su
Nonreusable functionsi abilita Function with separate data (richiede una licenza per Embedded Coder e un file di destinazione di sistema basato su ERT).
Utilizzo programmatico
Parametro: RTWSystemCode |
| Tipo: scalare di stringa o vettore di caratteri |
Valore: "Auto" | "Inline" | "Nonreusable function" | "Reusable function" |
Predefinito: "Auto" |
Funzionalità estese
Generazione di codice C/C++
Genera codice C e C++ con Simulink® Coder™.
HDL Coder™ fornisce ulteriori opzioni di configurazione che influiscono sull'implementazione HDL e sulla logica sintetizzata.
Questo blocco presenta un'architettura HDL predefinita.
Per generare una porta di output nel codice HDL che mostri lo stato attivo, nella finestra proprietà del grafico selezionare Create output for monitoring. L'output è un tipo di dati enumerati. Vedere Simplify Stateflow Charts by Incorporating Active State Output.
Per inserire un registro di output che ritardi l'output del grafico da un ciclo di simulazione, utilizzare la proprietà del blocco OutputPipeline (HDL Coder).
| ClockDrivenOutput | Abilitare gli output guidati dal temporizzatore per impedire alla logica combinatoria di pilotare l'output e per consentire un aggiornamento immediato al cambiamento del segnale del temporizzatore e dello stato. Per impostazione predefinita è impostato su |
| ConstMultiplierOptimization | Cifra canonica firmata (CSD) o ottimizzazione CSD fattorizzata. Per impostazione predefinita è impostato su |
| ConstrainedOutputPipeline | Numero di registri da posizionare sugli output spostando i ritardi esistenti nel progetto. La pipelining distribuita non ridistribuisce questi registri. Per impostazione predefinita è impostato su |
| DistributedPipelining | Distribuzione del registro della pipeline o nuova distribuzione temporale del registro. Per impostazione predefinita è impostato su |
| InputPipeline | Numero di stadi della pipeline di input da inserire nel codice generato. La pipelining distribuita e la pipelining di output vincolata possono spostare questi registri. Per impostazione predefinita è impostato su |
| InstantiateFunctions | Generare una VHDL® |
| LoopOptimization | Srotolare, trasmettere o non ottimizzare i loop. Per impostazione predefinita è impostato su |
| MapPersistentVarsToRAM | Mappare gli array persistenti nella RAM. Per impostazione predefinita è impostato su |
| OutputPipeline | Numero di stadi della pipeline di output da inserire nel codice generato. La pipelining distribuita e la pipelining di output vincolata possono spostare questi registri. Per impostazione predefinita è impostato su |
| ResetType | Sopprime la generazione della logica di ripristino. Per impostazione predefinita è impostato su |
| SharingFactor | Numero di risorse funzionalmente equivalenti da mappare su una singola risorsa condivisa. Per impostazione predefinita è impostato su 0. Vedere inoltre Resource Sharing (HDL Coder). |
| VariablesToPipeline | Avviso
Inserire un registro della pipeline all'output della variabile o delle variabili di MATLAB specificate. Specificare l'elenco delle variabili come vettore di caratteri, includendo gli spazi per separare le variabili. |
Questo blocco supporta la generazione di codice per segnali complessi.
Per saperne di più sulle limitazioni in merito all'utilizzo dei grafici, vedere Introduction to Stateflow HDL Code Generation (HDL Coder).
Generazione di codice PLC
Genera codice di testo strutturato con Simulink® PLC Coder™.
Conversione a virgola fissa
Progetta e simula sistemi a virgola fissa con Fixed-Point Designer™.
Cronologia versioni
Introduzione prima di R2006aPer convertire in un grafico della tabella di transizione di stato, utilizzare la funzione oggetto convertToSTT.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)

