Contenuto principale

Assignment

Assegnare valori a elementi specifici del segnale

  • Assignment block

Librerie:
Simulink / Math Operations
HDL Coder / Math Operations

Descrizione

Il blocco Assignment assegna valori a elementi specifici del segnale. Si specificano gli indici degli elementi a cui assegnare i valori inserendo gli indici nella finestra di dialogo del blocco oppure collegando al blocco una o più sorgenti esterne di indici. Il segnale sulla porta dati del blocco U specifica i valori da assegnare a Y. Il blocco sostituisce gli elementi specificati di Y con elementi provenienti dal segnale dati.

In base al valore inserito per il parametro Number of output dimensions, viene visualizzata una tabella delle opzioni dell'indice. Ciascuna riga della tabella corrisponde ad una delle dimensioni di output in Number of output dimensions. Per ciascuna dimensione, è possibile definire gli elementi del segnale con cui lavorare. Specificare un segnale vettoriale come segnale monodimensionale e un segnale matriciale come segnale bidimensionale. Per abilitare una porta di indice esterna, nella riga corrispondente della tabella, impostare Index Option su Index vector (port), Starting index (port) o .

Ad esempio, si assuma un segnale in 5 D con una modalità di indice a base unica. La tabella nella finestra di dialogo del blocco Assignment cambia per includere una riga per ciascuna dimensione. Se si definisce ciascuna dimensione con le seguenti voci:

RigaOpzione di indiceIndice
1Assign all 
2Index vector (dialog)[1 3 5]
3Starting index (dialog)4
4Starting index (port) 
5Index vector (port) 

i valori assegnati sono Y(1:end,[1 3 5],4:3+size(U,3),Idx4:Idx4+size(U,4)-1,Idx5)=U, dove Idx4 e Idx5 sono le porte di input per le dimensioni 4 e 5.

Quando si utilizza il blocco Assignment in modalità normale, Simulink® inizializza gli output del blocco a zero anche se il modello non li inizializza esplicitamente. In modalità di accelerazione, Simulink converte il modello in una S-Function. Questo comporta la generazione di codice. Il codice generato potrebbe non eseguire l'inizializzazione implicita degli output dei blocchi. In tali casi, è necessario inizializzare esplicitamente gli output del modello.

È possibile utilizzare il blocco per assegnare valori a segnali vettoriali, matriciali o multidimensionali.

È possibile utilizzare un array di bus come segnale di input per un blocco Assignment.

Blocco Assignment nel sottosistema condizionale

Se si posiziona un blocco Assignment in un blocco sottosistema condizionale, in molti casi viene inserito un buffer di segnale nascosto (equivalente a un blocco Signal Conversion) e l'unione dei segnali provenienti dai blocchi Assignment con scritture parziali può causare un errore.

Tuttavia, se si seleziona il parametro Ensure outport is virtual per il blocco Outport del sottosistema condizionale, tali casi sono supportati ed è possibile eseguire scritture parziali negli array utilizzando i blocchi Assignment. Vedere Ensure Output Port Is Virtual.

Esempi

Limitazioni

  • Il parametro Index non è sincronizzabile durante la simulazione. Se Index Option per una dimensione è impostato su Index vector (dialog) o Starting index (dialog) e si specifica un valore simbolico, compreso un oggetto Simulink.Parameter, per il corrispondente Index nella finestra di dialogo del blocco, il valore istantaneo all'inizio della simulazione sarà utilizzato per tutta la simulazione e il parametro apparirà come valore in linea nel codice generato. Vedere Tune and Experiment with Block Parameter Values. È possibile modificare l'indice di assegnazione in modo dinamico utilizzando le porte di indice.

Porte

Input

espandi tutto

Il valore iniziale del segnale di output. Se al segnale specificato sulla porta di input dei dati (U) non viene assegnato un valore diverso da quello iniziale, il valore del segnale di output nella porta Y corrisponde al valore iniziale.

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

Valore assegnato all'elemento di output, quando specificato.

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

Porta esterna che specifica un indice per l'assegnazione dell'elemento di output corrispondente.

È possibile specificare un numero intero di larghezza personalizzata (ad esempio, un numero intero a 15 bit o un numero intero a 23 bit) come valore del segnale di indice. Quando si configura la larghezza del numero intero, è necessario specificare Mode come Fixed point con Word length inferiore o uguale a 65.535, Slope uguale a 1 e Bias uguale a 0. Per ulteriori informazioni sulla specificazione di un tipo di dato in virgola fissa, vedere Specify Data Types Using Data Type Assistant.

Dipendenze

Per abilitare una porta di indice esterna, nella riga corrispondente della tabella Index Option, impostare Index Option su Index vector (port), Starting index (port) o .

Tipi di dati: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Output

espandi tutto

Il segnale di output con valori assegnati per gli elementi specificati.

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

Parametri

espandi tutto

Inserire il numero di dimensioni del segnale di output.

Utilizzo programmatico

Parametro: NumberOfDimensions
Tipo: vettore di caratteri
Valori: numero intero
Impostazione predefinita: '1'

Selezionare la modalità di indicizzazione. Se si seleziona One-based, un indice di 1 specifica il primo elemento del vettore di input. Se si seleziona Zero-based, un indice di 0 specifica il primo elemento del vettore di input.

Utilizzo programmatico

Parametro: IndexMode
Tipo: vettore di caratteri
Valori: 'Zero-based' | 'One-based'
Impostazione predefinita: 'One-based'

Definire, in base alla dimensione, come devono essere indicizzati gli elementi del segnale. Dall'elenco, selezionare:

Voce del menuAzione
Assign all

Tutti gli elementi sono assegnati.

Index vector (dialog)

Abilita la colonna Index. Inserire gli indici degli elementi.

Index vector (port)

La porta indice definisce gli indici degli elementi.

Starting index (dialog)

Abilita la colonna Index. Inserire l'indice iniziale dell'intervallo di elementi a cui assegnare i valori.

Starting index (port)

La porta indice definisce l'indice iniziale dell'intervallo di elementi a cui assegnare i valori.

Se si sceglie Index vector (port) o Starting index (port) per qualsiasi dimensione nella tabella, è possibile specificare uno di questi valori per il parametro Initialize output (Y):

  • Initialize using input port <Y0>

  • Specify size for each dimension in table

In caso contrario, Y0 inizializza sempre la porta di output Y.

Le colonne Index e Output Size vengono visualizzate, se pertinenti.

Utilizzo programmatico

Parametro: IndexOptionArray
Tipo: array di celle di vettori di caratteri
Valori: {'Assign all'} | {'Index vector (dialog)'} | {'Index vector (port)'} | {'Starting index (dialog)'} | {'Starting index (port)'}
Impostazione predefinita: {'Index vector (dialog)'}

Per un vettore di caratteri anziché un array di celle di vettori di caratteri, utilizzare IndexOptions.

Se Index Option è Index vector (dialog), inserire l'indice di ciascun elemento desiderato.

Se Index Option è Starting index (dialog), inserire l'indice iniziale dell'intervallo di elementi da selezionare. Il numero di elementi dal punto di partenza è determinato dalla grandezza di questa dimensione in U.

Utilizzo programmatico

Parametro: IndexParamArray
Tipo: array di celle di vettori di caratteri
Valori: numeri interi
Impostazione predefinita: {'1'}

Per un vettore di caratteri anziché un array di celle di vettori di caratteri, utilizzare Indices.

Inserire la larghezza del segnale di output del blocco.

Dipendenze

Per abilitare questa colonna, impostare Initialize output (Y) (Inizializza l'output) su Specify size for each dimension in table.

Utilizzo programmatico

Parametro: OutputSizeArray
Tipo: array di celle di vettori di caratteri
Valori: numeri interi
Impostazione predefinita: {'1'}

Per un vettore di caratteri anziché un array di celle di vettori di caratteri, utilizzare OutputSizes.

Specificare come inizializzare il segnale di output.

  • Initialize using input port <Y0>: il segnale sulla porta di input Y0 inizializza l'output.

  • Specify size for each dimension in table: richiede che la larghezza del segnale di output del blocco sia specificata nel parametro Output Size. Se l'output contiene elementi non assegnati, il valore di tali elementi è indefinito.

Dipendenze

Per abilitare questo parametro, impostare Index Option su Index vector (port) o Starting index (port) per una o più dimensioni.

Utilizzo programmatico

Parametro: OutputInitialize
Tipo: vettore di caratteri
Valori: 'Initialize using input port <Y0>' | 'Specify size for each dimension in table'
Impostazione predefinita: 'Initialize using input port <Y0>'

Specificare se generare un avviso o un errore nel caso in cui non siano stati assegnati tutti gli elementi di output. Le opzioni includono:

  • Warning: Simulink visualizza un avviso e continua la simulazione.

  • Error: Simulink termina la simulazione e visualizza un errore.

  • None: Simulink non intraprende alcuna azione.

Dipendenze

Per abilitare questo parametro, impostare Index Option su Index vector (port) o Starting index (port) per una o più dimensioni. Quindi, impostare Initialize output (Y) su Specify size for each dimension in table.

Utilizzo programmatico

Parametro: DiagnosticForDimensions
Tipo: vettore di caratteri
Valori: 'Error' | 'Warning' | 'None'
Impostazione predefinita: 'Warning'

Specificare l'intervallo di tempo tra i campionamenti. Per ereditare il tempo di campionamento, impostare questo parametro su -1. Per ulteriori informazioni, vedere Specifica del tempo di campionamento.

Dipendenze

Questo parametro è visibile solo se è stato impostato su un valore diverso da -1. Per saperne di più, vedere Blocks for Which Sample Time Is Not Recommended.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param.

Parametro: SampleTime
Valori: "-1" (predefinito) | scalar or vector in quotes

Selezionare questa casella affinché Simulink verifichi durante la simulazione in modalità di accelerazione e di accelerazione rapida se un qualsiasi valore dell'indice non rientra nell'intervallo degli indici validi per la dimensione pertinente del segnale di input. Se un indice non rientra nell'intervallo, Simulink interrompe la simulazione e visualizza un messaggio di errore.

Nota

Se non si seleziona questa casella, i valori degli indici fuori intervallo potrebbero causare un comportamento non definito durante la simulazione in modalità di accelerazione o di accelerazione rapida.

In modalità normale, Simulink esegue questa verifica indipendentemente dalla selezione di questa casella.

Utilizzo programmatico

Parametro: RuntimeRangeChecks
Tipo: vettore di caratteri
Valori: 'Off' | 'On'
Impostazione predefinita: 'Off'

Caratteristiche del blocco

Tipi di dati:

Boolean | double | enumerated | fixed point | integer | single

Passaggio diretto

Segnali multidimensionali

Segnali di dimensioni variabili

Rilevamento zero-crossing

no

Funzionalità estese

espandi tutto

Generazione di codice C/C++
Genera codice C e C++ con Simulink® 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 R2006a

espandi tutto