Main Content

Specifica del tempo di campionamento

Designazione dei tempi di campionamento

Simulink® consente di specificare il tempo di campionamento di un blocco direttamente come valore numerico o simbolicamente, definendo un vettore di tempo di campionamento. Il valore del tempo di campionamento deve essere un double o un array a due elementi di double che contiene il periodo di tempo di campionamento e l'offset. Nel caso di un tempo di campionamento discreto, il vettore è [Ts, To] dove Ts è il periodo di campionamento e To è l'offset temporale iniziale. Ad esempio, si consideri un modello discreto che produce gli output ogni due secondi. Se l'unità di tempo di base è il secondo, è possibile impostare direttamente il tempo di campionamento discreto specificando il valore numerico di 2 come parametro SampleTime. Poiché il valore dell'offset è pari a zero, non è necessario specificarlo; tuttavia, è possibile inserire [2,0] nel campo Sample time.

Per i blocchi non discreti, i componenti del vettore sono valori simbolici che rappresentano uno dei tipi in Types of Sample Time. La tabella seguente riassume questi tipi e i corrispondenti valori di tempo di campionamento. La tabella definisce inoltre la natura esplicita di ciascun tipo di tempo di campionamento e designa il colore e l'annotazione associati. Poiché un tempo di campionamento ereditato è esplicito, è possibile specificarlo come [-1, 0] o come -1. Al contrario, poiché un tempo di campionamento attivato è implicito, solo Simulink può assegnare il tempo di campionamento di [-1, -1]. (Per ulteriori informazioni sui colori e sulle annotazioni, vedere View Sample Time Information.)

Designazione delle informazioni sul tempo di campionamento

Tipo di tempo di campionamentoTempo di campionamentoAnnotazioneEsplicita
Discreto[Ts, To]D1, D2, D3, D4, D5, D6, D7,... Di
Costante[0, 0]Cont
Fisso a passo minore[0, 1]FiM
Ereditato[–1, 0]N/A
Costante[Inf, 0]Inf
Variabile[–2,Tvo]V1, V2,... ViNo
multivelocitàN/AN/ANo
Asincrono[–1, –n]A1, A2,... AiNo
Flusso di datiN/AN/ANo
Evento inizializzato a livello di modello[Inf,1]IE 
Evento terminato a livello di modello[Inf, 2]TE 
Evento rinviato a livello di modello[Inf, 3, 4, … ]RE1, RE2, RE3... 
Unione[NaN, NaN]U1, U2, U3... 
Partizioni aperiodiche[1, -30]AP1, AP2, AP3... 

Il colore assegnato a ciascun blocco dipende dal rispettivo tempo di campionamento rispetto agli altri tempi di campionamento del modello. Questo significa che allo stesso tempo di campionamento possono essere assegnati colori diversi in un modello padre e nei modelli a cui fa riferimento. (Vedere Riferimenti al modello.)

Ad esempio, si supponga che un modello definisca tre tempi di campionamento: 1, 2 e 3. Si supponga inoltre che faccia riferimento a un modello che definisce due tempi di campionamento: 2 e 3. In questo caso, i blocchi che operano alla velocità di campionamento 2 appaiono in verde nel modello padre e in rosso nel modello di riferimento.

È importante notare che i blocchi Mux e Demux sono semplicemente degli operatori di raggruppamento e che i segnali che li attraversano mantengono le loro informazioni di temporizzazione. Per questo motivo, le linee emanate da un blocco Demux possono avere colori diversi se sono guidate da sorgenti con tempi di campionamento diversi. In questo caso, i blocchi Mux e Demux sono codificati a colori come ibridi (giallo), ad indicare che gestiscono segnali con velocità multiple.

Allo stesso modo, anche i blocchi Subsystem contenenti blocchi con tempi di campionamento diversi sono colorati come ibridi in quanto non è presenta una singola velocità associata ad essi. Se tutti i blocchi all'interno di un sottosistema funzionano a un'unica velocità, il blocco Substystem è colorato in base a tale velocità.

Per i tempi di campionamento basati su blocchi o su porte, è possibile utilizzare i valori di tempo di campionamento espliciti di questa tabella per specificare i tempi di campionamento in modo interattivo o programmatico.

Il modello seguente serve come riferimento per questa sezione.

In questo esempio, impostare il tempo di campionamento del segnale dell'onda sinusoidale in ingresso su 0.1. L'obiettivo è quello di ottenere un tempo di campionamento di output di 0.2. Il blocco Rate Transition svolge la funzione di blocco di ordine zero. Il diagramma del blocco risultante dopo l'impostazione dei tempi di campionamento e la simulazione del modello sono illustrati nella figura seguente. (I colori e le annotazioni indicano che si tratta di un modello discreto).

ex_specify_sample_time dopo l'impostazione dei tempi di campionamento

Specifica dei tempi di campionamento basati su blocchi in modo interattivo

Per impostare il tempo di campionamento di un blocco in modo interattivo:

  1. Nella finestra del modello Simulink, are doppio clic sul blocco. Si apre la finestra di dialogo dei parametri del blocco.

  2. Inserire il tempo di campionamento nel campo Sample time.

  3. Fare clic su OK.

Di seguito è riportata una figura della finestra di dialogo dei parametri del blocco Sine Wave dopo aver inserito 0.1 nel campo Sample time.

Per specificare e ispezionare i tempi di campionamento basati su blocchi in tutto il modello, si può utilizzare Model Data Editor (nella scheda Modeling, fare clic su Model Data Editor). Nelle schede Inports/Outports, Signals e Data Stores, impostare l'elenco a discesa Change view su Design e utilizzare la colonna Sample Time. Per ulteriori informazioni, vedere Model Data Editor (Editor dei dati del modello).

Specifica dei tempi di campionamento basati su porte in modo interattivo

Il blocco Rate Transition ha tempi di campionamento basati su porte. È possibile impostare il tempo di campionamento della porta di output in modo interattivo completando i seguenti passaggi:

  1. Fare doppio clic sul blocco Rate Transition. Si apre la finestra di dialogo dei parametri.

  2. Lasciare la scelta del menu a discesa del Output port sample time options impostata su Specify.

  3. Sostituire il -1 nel campo Output port sample time con 0.2.

  4. Fare clic su OK.

Per ulteriori informazioni sulle opzioni relative al tempo di campionamento nella finestra di dialogo dei parametri della transizione di velocità, vedere la pagina di riferimento Rate Transition.

Specifica dei tempi di campionamento basati su blocchi in modo programmatico

Per impostare il tempo di campionamento di un blocco in modo programmatico, impostare il relativo parametro SampleTime sul tempo di campionamento desiderato utilizzando il comando set_param. Ad esempio, per impostare il tempo di campionamento del blocco Gain nel modello Specify_Sample_Time su ereditato (-1), inserire il seguente comando:

set_param('Specify_Sample_Time/Gain','SampleTime','[-1, 0]')

Come per le specifiche interattive, è possibile inserire solo il primo componente del vettore se il secondo componente è zero.

set_param('Specify_Sample_Time/Gain','SampleTime','-1')

Specifica dei tempi di campionamento basati su porte in modo programmatico

Per impostare il tempo di campionamento della porta di output del blocco Rate Transition su 0.2, utilizzare il comando set_param con il parametro OutPortSampleTime:

set_param('Specify_Sample_Time/Rate Transition',...
'OutPortSampleTime', '0.2')

Accesso alle informazioni sui tempi di campionamento in modo programmatico

Per accedere a tutti i tempi di campionamento associati a un modello, utilizzare l'API Simulink.BlockDiagram.getSampleTimes.

Per accedere al tempo di campionamento di un singolo blocco, utilizzare l'API Simulink.Block.getSampleTimes.

Specifica dei tempi di campionamento per un blocco personalizzato

È possibile progettare blocchi personalizzati in modo che le porte di input e di output funzionino a velocità di campionamento diverse. Per informazioni su come specificare i tempi di campionamento basati su blocchi e su porte per le S-functions, vedere Specify S-Function Sample Times .

Determinazione delle unità di tempo di campionamento

Poiché l'esecuzione di un modello di Simulink non dipende da un insieme specifico di unità, è necessario determinare l'unità di tempo di base appropriata per l'applicazione e impostare i valori del tempo di campionamento di conseguenza. Ad esempio, se l'unità di tempo di base è il secondo, si dovrebbe rappresentare un tempo di campionamento di 0.5 secondi impostando il tempo di campionamento su 0.5.

Modifica del tempo di campionamento dopo il momento di avvio della simulazione

Per modificare un tempo di campionamento dopo l'inizio della simulazione, è necessario interrompere la simulazione, reimpostare il parametro SampleTime e quindi riavviare l'esecuzione.

Argomenti complementari