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 Finite State Machines by Using Stateflow Charts.
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 Specify Properties for Stateflow Charts. 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
Porte
Input
Port_1 — Porta di input
scalare | vettore | matrice
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
Port_1 — Porta di output
scalare | vettore | matrice
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
Mostra etichette porte — Selezionare come visualizzare le etichette delle porte
FromPortIcon
(predefinito) | none
| FromPortBlockName
| SignalName
Selezionare come visualizzare le etichette delle porte sull'icona del blocco Chart.
none
Non visualizzare le etichette delle porte.
FromPortIcon
Se 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.
FromPortBlockName
Visualizzare il nome del blocco della porta corrispondente sul blocco Chart.
SignalName
Se è 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" |
Permessi di lettura/scrittura — Selezionare l'accesso al contenuto del grafico
ReadWrite
(predefinito) | ReadOnly
| NoReadOrWrite
Controllare l'accesso dell'utente al contenuto del grafico.
ReadWrite
Consentire l'apertura e la modifica del contenuto del grafico.
ReadOnly
Consentire 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.
NoReadOrWrite
Disabilitare 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" |
Minimizzare le occorrenze di loop algebrici — Controllare l'eliminazione dei loop algebrici
off (predefinito) | on
- off
Non 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" |
Tempo di campionamento — Specificare l'intervallo temporale
-1
(predefinito) | [Ts 0]
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
-1
oinf
), 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 eseguiti5
volte 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
,-1
oinf
, Simulink visualizza un errore quando si aggiorna o si simula il modello.
-1
Specificare 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
Raggruppamento di funzioni — Selezionare il formato del codice
Auto
(predefinito) | Inline
| Nonreusable function
| Reusable function
Selezionare il formato del codice generato per un grafico secondario atomico (non virtuale).
Auto
Simulink Coder sceglie il formato ottimale per il sistema in base al tipo e al numero di istanze del grafico presenti nel modello.
Inline
Simulink Coder incorpora il grafico in modo incondizionato.
Nonreusable function
Simulink 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 function
Simulink 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
Auto
o 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 diAuto
non consente di controllare la funzione o il nome del file per il codice del grafico.Le opzioni
Reusable function
eAuto
determinano 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,Auto
produce 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 function
mentre il codice generato è sottoposto al controllo sorgente, impostare File name options suUse subsystem name
,Use function name
oUser 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 function
oReusable function
si 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 function
si 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™.
Generazione di codice HDL
Genera codice VHDL, Verilog e SystemVerilog per progetti FPGA e ASIC utilizzando HDL 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 R2006aR2023b: Conversione in grafico
Per convertire in un grafico della tabella di transizione di stato, utilizzare la funzione oggetto convertToSTT
.
Comando MATLAB
Hai fatto clic su un collegamento che corrisponde a questo comando MATLAB:
Esegui il comando inserendolo nella finestra di comando MATLAB. I browser web non supportano i comandi MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)