Memory
Generare l'input dal passo temporale precedente
Librerie:
Simulink /
Discrete
HDL Coder /
Discrete
Descrizione
Il blocco Memory trattiene e ritarda il proprio input di un passo temporale di integrazione principale. Quando è inserito in un sottosistema iteratore, trattiene e ritarda il proprio input di un'iterazione. Questo blocco accetta segnali continui e discreti. Il blocco accetta un input e genera un output. Ciascun segnale può essere uno scalare, un vettore, una matrice o un array N-D. Se l'input non è scalare, il blocco trattiene e ritarda tutti gli elementi dell'input dello stesso passo temporale.
L'output del blocco per il primo passo temporale si specifica utilizzando il parametro Initial condition. Un'attenta selezione di questo parametro può minimizzare il comportamento indesiderato dell'output. Tuttavia, non è possibile specificare il tempo di campionamento. Il tempo di campionamento di questo blocco dipende dal tipo di risolutore utilizzato; in alternativa è possibile specificare di ereditarlo. Il parametro Inherit sample time determina se il tempo di campionamento è ereditato o basato sul risolutore.
Suggerimento
Evitare di usare il blocco Memory quando entrambe queste condizioni sono vere:
Il modello utilizza il risolutore a passo variabile
ode15s
oode113
.L'input del blocco cambia durante la simulazione.
Quando il blocco Memory eredita un tempo di campionamento discreto, il blocco è analogo al blocco Unit Delay. Tuttavia, il blocco Memory non supporta la registrazione dello stato. Se è necessario registrare lo stato finale, utilizzare invece un blocco Unit Delay.
Confronto con blocchi simili
I blocchi Memory, Unit Delay e Zero-Order Hold presentano funzionalità simili, ma con capacità diverse. Inoltre, anche lo scopo di ciascun blocco è diverso.
La tabella mostra l'utilizzo consigliato per ciascun blocco.
Blocco | Scopo del blocco | Esempi di riferimento |
---|---|---|
Unit Delay | Implementare un ritardo utilizzando un tempo di campionamento discreto specificato dall'utente. Il blocco accetta e genera segnali con un tempo di campionamento discreto. |
|
Memory | Implementare un ritardo di un passo temporale di integrazione principale. Idealmente, il blocco accetta segnali continui (o fissi con passo temporale minore) e genera un segnale fisso con passo temporale minore. |
|
Zero-Order Hold | Convertire un segnale di input con tempo di campionamento continuo in un segnale di output con tempo di campionamento discreto. |
Ciascun blocco ha le seguenti funzionalità.
Capacità | Memoria | Ritardo di unità | Mantenimento di ordine zero |
---|---|---|---|
Specifica della condizione iniziale | Sì | Sì | No, perché l'output del blocco al tempo t = 0 deve corrispondere al valore di input. |
Specifica del tempo di campionamento | No, perché il blocco può ereditare il tempo di campionamento solo dal blocco di comando o dal risolutore utilizzato per l'intero modello. | Sì | Sì |
Supporto per segnali basati su frame | No | Sì | Sì |
Supporto per la registrazione dello stato | No | Sì | No |
Supporto per il bus
Il blocco Memory è un blocco compatibile con il bus. L'input può essere un segnale bus virtuale o non virtuale, con le seguenti limitazioni:
Initial condition deve essere pari a zero, uno scalare diverso da zero o una struttura numerica finita.
Se Initial condition è pari a zero o è una struttura e si specifica State name, l'input non può essere un bus virtuale.
Se Initial condition è uno scalare diverso da zero, non è possibile specificare State name.
Per informazioni sulla specificazione di una struttura delle condizioni iniziali, vedere Specify Initial Conditions for Bus Elements.
Tutti i segnali in un bus non virtuale di input a un blocco Memory devono avere lo stesso tempo di campionamento, anche se gli elementi dell'oggetto bus associato specificano tempi di campionamento ereditati. È possibile utilizzare un blocco Rate Transition per modificare il tempo di campionamento di un singolo segnale o di tutti i segnali di un bus. Per ulteriori informazioni, vedere Modify Sample Times for Nonvirtual Buses e Bus-Capable Blocks (Blocchi compatibili con il bus).
È possibile utilizzare un array di bus come segnale di input per un blocco Memory. È possibile specificare il parametro Initial condition con:
Il valore
0
. In questo caso, tutti i singoli segnali dell'array di bus utilizzano il valore iniziale0
.Un array di strutture che specifica una condizione iniziale per ciascuno dei singoli segnali dell'array di bus.
Una struttura scalare che specifica una condizione iniziale per ciascuno degli elementi che il tipo di bus definisce. Utilizzare questa tecnica per specificare le stesse condizioni iniziali per ciascuno dei bus dell'array.
Per ulteriori dettagli sulla definizione e l'utilizzo di un array di bus, vedere Group Nonvirtual Buses in Arrays of Buses.
Esempi
Esempi approfonditi
Porte
Input
Output
Parametri
Caratteristiche del blocco
Funzionalità estese
Cronologia versioni
Introduzione prima di R2006a