Contenuto principale

To Workspace

Registrare i dati nel workspace dal modello di Simulink

  • To Workspace block

Librerie:
Simulink / Sinks
DSP System Toolbox / Sinks
HDL Coder / Sinks

Descrizione

Il blocco To Workspace registra i dati collegati alla sua porta di input in un workspace da un modello di Simulink®. In genere, i dati registrati vengono restituiti nel workspace di base. Quando si simula un modello in modo programmatico all'interno di una funzione, i dati registrati vengono restituiti nel workspace della funzione. Durante la simulazione, i dati registrati vengono trasmessi al Simulation Data Inspector. I dati registrati vengono scritti nel workspace quando la simulazione viene messa in pausa o interrotta.

È possibile utilizzare il blocco To Workspace per registrare i dati relativi a un segnale, un bus o un array di bus. Il blocco To Workspace supporta la registrazione di dati scalari e multidimensionali, compresi i dati dei segnali a dimensione variabile.

È possibile configurare il nome della variabile che memorizza i dati registrati dal blocco To Workspace e specificare il loro formato. È inoltre possibile controllare quali valori vengono registrati dal blocco To Workspace specificando i parametri del blocco o del modello. Per ulteriori informazioni, vedere Specify Signal Values to Log.

Accesso ai dati registrati

Il modo in cui i risultati della simulazione vengono restituiti al workspace dipende da come si simula e si configura il modello. I risultati della simulazione vengono restituiti in un singolo oggetto Simulink.SimulationOutput in una qualsiasi delle seguenti situazioni:

  • Si abilita il parametro Single simulation output.

    Per impostazione predefinita, il parametro Single simulation output è abilitato quando si crea un nuovo modello. È possibile abilitare il parametro utilizzando la finestra di dialogo Configuration Parameters (Parametri di configurazione). Nella scheda Modeling, alla voce Settings, fare clic su Model Settings. Quindi, nella finestra di dialogo Configuration Parameters (Parametri di configurazione), selezionare Data Import/Export e Single simulation output.

  • Si esegue una serie di simulazioni utilizzando il riquadro Multiple Simulations.

  • Si simula il modello in modo programmatico utilizzando uno o più oggetti Simulink.SimulationInput.

    È possibile configurare le simulazioni utilizzando oggetti SimulationInput quando si eseguono simulazioni utilizzando le funzioni sim, parsim e batchsim.

  • Si simula il modello utilizzando una sintassi della funzione sim che restituisce i risultati come un unico output di simulazione.

    Per ulteriori informazioni, vedere sim.

Quando i risultati della simulazione sono restituiti in un unico output, l'oggetto SimulationOutput contiene una variabile per ciascun blocco To Workspace nel modello. Per accedere ai dati registrati da un blocco To Workspace:

  • Utilizzare un punto con il nome della variabile specificato utilizzando il parametro Variable name del blocco. Per impostazione predefinita, i modelli sono configurati per restituire un unico output di simulazione utilizzando il nome della variabile out e il blocco To Workspace salva i dati in una variabile denominata simout.

    toWksData = out.simout;
  • Utilizzare la funzione get con il nome della variabile che contiene i dati registrati.

    toWksData = get(out,simout);

Nel modello, il blocco To Workspace indica come accedere ai dati nel workspace. Per impostazione predefinita, il blocco mostra out.simout. L'aspetto del blocco si aggiorna quando:

  • Si specifica un valore diverso per il parametro Variable name sul blocco.

  • Si specifica un nome diverso della variabile per l'unico output di simulazione.

  • Si elimina il parametro di configurazione Single simulation output.

Esempi

espandi tutto

Il blocco To Workspace registra i dati di simulazione nel workspace.

Ad esempio, simulare il modello SineToWorkspace.

The SineToWorkspace model

mdl = "SineToWorkspace";
out = sim(mdl);

I risultati della simulazione dal modello sono restituiti in un unico oggetto Simulink.SimulationOutput denominato out. Per accedere ai risultati salvati dal blocco To Workspace, utilizzare la notazione a punto.

toWksData = out.simout
  timeseries

  Common Properties:
            Name: 'Sine Wave'
            Time: [51x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [51x1 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods

Esempi approfonditi

Porte

Input

espandi tutto

Porta di input che riceve i dati da registrare nel workspace. Il blocco To Workspace supporta la registrazione di dati reali e complessi di qualsiasi tipo di dato integrato o definito dall'utente, come bus, enumerazioni e dati in virgola fissa.

Suggerimenti

La registrazione dei dati in virgola fissa richiede una licenza per Fixed-Point Designer™.

Tipi di dati: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | string | fixed point | enumerated | bus | image | datetime
Supporto numeri complessi:

Parametri

espandi tutto

Per modificare i parametri del blocco in modo interattivo, utilizzare Property Inspector. Sulla barra degli strumenti di Simulink, nella scheda Simulation, nella galleria Prepare, selezionare Property Inspector.

Specificare un nome per la variabile che contiene i dati registrati. Per impostazione predefinita, il blocco To Workspace salva i dati registrati in una variabile chiamata simout. Quando un modello contiene più blocchi To Workspace, il valore del parametro Variable name per ciascun blocco deve essere univoco.

Per informazioni sulla denominazione dei nomi delle variabili di MATLAB®, vedere Nomi delle variabili.

Utilizzo programmatico

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

Parametro: VariableName
Valori: "simout" (predefinito) | valid MATLAB variable name
Tipi di dati: character vector | string

Esempio set_param(gcb,"VariableName","myName")

Quando si desidera salvare o analizzare solo i dati dalla fine di una simulazione, specificare il numero di campioni che si desidera registrare come numero intero positivo maggiore di zero. Per impostazione predefinita, il blocco To Workspace registra i dati dell'intera simulazione e il valore del parametro Limit data points to last è inf.

Limitare i dati registrati agli ultimi valori del segnale n influisce direttamente sull'allocazione della memoria. Quando si specifica questo parametro, il software alloca la memoria in anticipo in base al valore specificato e non in base ai passaggi temporali generati durante la simulazione. Per questo motivo si sconsiglia di utilizzare il parametro Limit data points to last quando si registrano un numero indeterminato di passaggi temporali.

Per ulteriori informazioni sul controllo di quali campioni vengono registrati durante la simulazione, vedere Specify Signal Values to Log.

Utilizzo programmatico

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

Parametro: MaxDataPoints
Valori: "inf" (predefinito) | positive integer
Tipi di dati: character vector | string

Esempio set_param(gcb,"MaxDataPoints","20")

Specificare un fattore di decimazione per ridurre la velocità di campionamento effettiva dei dati registrati. Per un fattore di decimazione n, il blocco To Workspace registra ogni n-esimo valore campione. Ad esempio, quando si specifica il valore Decimation come 2, il blocco To Workspace registra ogni altro punto dati.

Per ulteriori informazioni sul controllo di quali campioni vengono registrati durante la simulazione, vedere Specify Signal Values to Log.

Utilizzo programmatico

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

Parametro: Decimation
Valori: "1" (predefinito) | positive integer
Tipi di dati: character vector | string

Esempio set_param(gcb,"Decimation","2")

Specificare il formato dei dati registrati nel workspace. Per registrare i dati relativi all'input di un bus o di un array di bus, utilizzare il formato Timeseries.

Valore Save FormatFormato dei dati nel workspaceSupporto del workflow di simulazione
Timeseries

Input non bus registrato come oggetto timeseries.

Input bus registrato come struttura di oggetti timeseries. La gerarchia e i nomi dei campi nella struttura corrispondono alla gerarchia e ai nomi specificati nell'oggetto Simulink.Bus che definisce il bus.

Array di input bus registrati come array di strutture di oggetti timeseries.

Supportato:

  • Simulazione in modalità normale

  • Simulazione in modalità di accelerazione

  • Simulazione in modalità di accelerazione rapida (da R2022a)

  • Simulazione in modalità esterna che utilizza la comunicazione XCP a condizione che StreamToWks sia impostato su 'on' e MATFileLogging sia impostato su 'off'

Non supportato:

  • Simulazione in modalità esterna che utilizza TCP/IP o comunicazione seriale

  • Simulazione Software-In-the-Loop

  • Simulazione Processor-In-the-Loop

  • Generazione di codice per le destinazioni di SimulinkCoder™

Structure With Time

Input non bus registrato come struttura contenente questi campi:

  • time: vettore colonna dei tempi di simulazione per i quali è stato registrato il valore di input.

  • signals: struttura con valori campione che contiene i campi:

    • values: array di valori campione.

    • dimensions: dimensioni del campione.

    • label: nome della linea del segnale nel modello.

  • blockName: nome del blocco To Workspace.

Sempre supportato:

  • Simulazione in modalità normale.

  • Simulazione in modalità esterna che utilizza la comunicazione XCP a condizione che StreamToWks sia impostato su 'on' e MATFileLogging sia impostato su 'off'

Supportato tranne quando il blocco To Workspace si trova in un modello referenziato:

  • Simulazione in modalità di accelerazione

  • Simulazione in modalità di accelerazione rapida

  • Simulazione in modalità esterna che utilizza TCP/IP o comunicazione seriale

Supportato se MAT-file logging (Simulink Coder) è abilitato per il codice generato, tranne quando il blocco To Workspace si trova in un modello referenziato:

  • Simulazione Software-In-the-Loop

  • Simulazione Processor-In-the-Loop

  • Generazione di codice per le destinazioni di SimulinkCoder

Structure

Input non bus registrato come struttura che corrisponde al formato Structure With Time, ma il campo time della struttura è vuoto.

Array

Valori campione per input non bus salvati come array di N dimensioni, dove N è maggiore di una unità rispetto alle dimensioni dell'input. Ad esempio:

  • I dati dei segnali scalari vengono registrati come vettore colonna.

  • I dati dei segnali vettoriali vengono registrati come matrice.

  • I dati dei segnali matriciali vengono registrati come array tridimensionale.

La struttura dei valori nell'array dipende dalle dimensioni dei dati del segnale di input:

  • Per i segnali scalari e vettoriali, ogni valore campione è una riga nell'array di output. La prima dimensione dell'array si allinea con il tempo in modo tale che simout(1,:) restituisca il primo valore del segnale registrato.

  • Per i segnali matriciali, la terza dimensione dell'array di output si allinea con il tempo in modo tale che simout(:,:,1) restituisca il primo valore del segnale registrato.

  • Per i segnali a N dimensioni, l'ultima dimensione si allinea con il tempo, in modo tale che il numero di elementi nell'ultima dimensione sia uguale al numero di campioni registrati dalla simulazione.

L'array di output contiene solo valori del segnale e non contiene dati temporali.

Suggerimenti

  • Per registrare i dati come basati su frame anziché basati su campione:

    • Configurare il parametro Save format per registrare i dati utilizzando il formato Structure o il formato Array.

    • Specificare il parametro Save 2-D signals as come 2-D array (concatenate along first dimension)

  • Quando si desidera caricare i dati registrati utilizzando un blocco From Workspace, considerare di utilizzare il formato Timeseries o Structure With Time. Quando si registrano dati utilizzando il formato Array, è necessario incorporare i valori del tempo di campionamento nell'array prima di caricare i dati.

Utilizzo programmatico

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

Parametro: SaveFormat
Valori: "Timeseries" (predefinito) | "Structure with Time" | "Structure" | "Array"
Tipi di dati: character vector | string

Esempio set_param(gcb,"SaveFormat","Structure")

Specificare se registrare i dati di input bidimensionali come array tridimensionale o come array bidimensionale.

La registrazione come array tridimensionale è particolarmente adatta per i dati di input basati su campione. I campioni sono concatenati lungo la terza dimensione, consentendo un facile accesso ai dati di campionamento bidimensionali.

La registrazione come array bidimensionale è particolarmente adatta per i dati di input basati su frame. I campioni sono concatenati lungo la prima dimensione, rimuovendo di fatto il buffering dei frame dalla prima dimensione.

Dimensioni dei dati di inputSalvare il segnale bidimensionale come...Dimensioni dei dati del workspace
M x N2-D array (concatenate along first dimension)

Matrice K x N, dove K è uguale a M volte il numero di campioni registrati dalla simulazione.

Ad esempio, registrando dieci campioni di input di una matrice 2x4, si crea una matrice 20x4.

3-D array (concatenate along first dimension)

Array M x N x K, dove K è uguale al numero di campioni registrati dalla simulazione.

Ad esempio, registrando dieci campioni di input di una matrice 2x4, si crea un array 2x4x10.

Dipendenze

Per abilitare questo parametro, impostare Save format su Array o Structure.

Utilizzo programmatico

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

Parametro: Save2DSignal
Valori: "3-D array (concatenate along third dimension)" (predefinito) | "2-D array (concatenate along first dimension)"
Tipi di dati: character vector | string

Esempio set_param(gcb,"Save2DSignal","2-D array (concatenate along first dimension)")

Specificare come registrare i dati di input in virgola fissa.

Il blocco To Workspace registra sempre i dati di input in virgola fissa come oggetto fi (Fixed-Point Designer) quando il parametro Save format è specificato come Timeseries. Per registrare i dati in virgola fissa come oggetto fi quando il parametro Save format non è specificato come Timeseries, selezionare il parametro Log fixed-point data as a fi object ed eseguire la simulazione in modalità normale o di accelerazione.

Quando si deseleziona il parametro Log fixed-point data as a fi object o si esegue la simulazione in modalità di accelerazione rapida, i dati di input in virgola fissa vengono registrati come double.

Per registrare i dati input di tipo int64 come int64 o di tipo uint64 come uint64, selezionare il parametro Log fixed-point data as a fi object. Quando si deseleziona il parametro Log fixed-point data as a fi object, i dati di input di tipo int64 o uint64 sono registrati come double.

L'utilizzo del blocco To Workspace per registrare dati in virgola fissa richiede una licenza per Fixed-Point Designer.

Utilizzo programmatico

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

Parametro: FixptAsFi
Valori: "on" (predefinito) | "off"
Tipi di dati: character vector | string

Esempio set_param(gcb,"FixptAtFi","off")

Specificare quando il blocco registra il valore di input durante la simulazione. Per impostazione predefinita, il tempo di campionamento è ereditato (-1). Per il tempo di campionamento continuo, specificare il valore come 0. Per utilizzare un tempo di campionamento discreto, specificare il parametro Sample time come scalare. Per ulteriori informazioni, vedere Specifica del tempo di campionamento.

Utilizzo programmatico

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

Parametro: SampleTime
Valori: "-1" (predefinito) | scalar
Tipi di dati: character vector | string

Esempio set_param(gcb,"SampleTime","0")

Caratteristiche del blocco

Tipi di dati:

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

Passaggio diretto

no

Segnali multidimensionali

Segnali di dimensioni variabili

Rilevamento zero-crossing

no

Suggerimenti

  • È possibile convertire i dati registrati utilizzando il blocco To Workspace nel formato Dataset. La conversione dei dati può semplificare la post-elaborazione se si utilizzano altre tecniche di registrazione, come la registrazione dei segnali, che utilizzano il formato Dataset. Per ulteriori informazioni, vedere Convert timeseries Object to Dataset Object.

  • Quando si chiama una funzione che simula un modello, i dati registrati nella simulazione vengono restituiti al workspace della funzione. Per restituire i dati registrati da una simulazione in una funzione al workspace di base, utilizzare la funzione assignin. Ad esempio, questa funzione chiamata myfunc simula il modello myModel, che include un blocco To Workspace il quale registra i dati nella variabile simout e invia i dati registrati dal blocco To Workspace al workspace di base.

    function myfunc
        out = sim("myModel");
        toWksData = get(out,"simout");
        assignin("base","toWksData",toWksData);
    end
    

Funzionalità estese

espandi tutto

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