Contenuto principale

Simulink.Bus

Specificare le proprietà dei bus

Descrizione

Un oggetto Simulink.Bus, quando utilizzato con oggetti Simulink.BusElement, specifica e valida le proprietà di un bus e dei suoi elementi. Quando si simula o si aggiorna un modello, il software verifica se i bus collegati ai blocchi corrispondono agli oggetti Simulink.Bus specificati dai blocchi.

Un oggetto bus specifica solo le proprietà dell'architettura di un bus. Ad esempio, un oggetto bus può specificare nomi di elementi, gerarchia, ordine e tipi di dato. Un oggetto bus è analogo a una struct nel codice C perché definisce gli elementi bus ma non lo crea. Un oggetto bus è anche simile a un connettore di cavi. Il connettore definisce tutti i pin e la loro configurazione e controlla quali tipi di cavo possono essere collegati ad esso. In modo analogo, un oggetto bus definisce la configurazione e le proprietà dei segnali che deve avere il bus associato.

Gli oggetti Simulink.Bus contengono oggetti Simulink.BusElement. Ogni oggetto elemento bus specifica le proprietà di un segnale in un bus, quali nome, tipo di dato e dimensione. L'ordine degli oggetti elemento bus nell'oggetto bus definisce l'ordine dei segnali nel bus.

Un oggetto bus può specificare proprietà non definite dai segnali costituenti, ma lasciate per l'ereditarietà.

Per creare e modificare oggetti bus nel workspace di base o in un dizionario dei dati, è possibile utilizzare i comandi Type Editor, Model Explorer o MATLAB®. Non è possibile memorizzare oggetti Simulink.Bus nei workspace dei modelli.

Per utilizzare gli oggetti Simulink.Bus in un modello, vedere Specify Bus Properties with Bus Objects.

Creazione

È possibile creare un oggetto Simulink.Bus in diversi modi.

  • Per creare un oggetto Simulink.Bus in modo interattivo, utilizzare Type Editor o Model Explorer.

  • Per creare un oggetto Simulink.Bus in modo programmatico con proprietà predefinite, utilizzare la funzione Simulink.Bus descritta di seguito.

  • Per creare oggetti Simulink.Bus in modo programmatico dai blocchi di un modello, dai dati di MATLAB e dal codice C esterno, vedere Creazione di oggetti bus Simulink in modo programmatico.

Descrizione

name = Simulink.Bus restituisce un oggetto Simulink.Bus con valori delle proprietà predefiniti. Il nome dell'oggetto è il nome della variabile di MATLAB a cui si assegna l'oggetto.

esempio

Proprietà

espandi tutto

Descrizione del bus, specificata come vettore di caratteri o scalare di stringa. Utilizzare la descrizione per documentare le informazioni relative all'oggetto, come il tipo di segnale a cui si applica o dove viene utilizzato. Queste informazioni non influiscono sull'elaborazione di Simulink®.

Tipi di dati: char | string

Elementi bus, specificati come array di oggetti Simulink.BusElement. Ogni oggetto elemento bus definisce il nome, il tipo di dato, le dimensioni e altre proprietà di un segnale all'interno del bus. Per ulteriori informazioni, vedere Simulink.BusElement.

Modalità di definizione del tipo di dato nel codice generato, specificata come 'Auto', 'Exported' o 'Imported'. Questa proprietà specifica se durante la generazione di codice la definizione del tipo di dato viene importata dal file di intestazione specificato con la proprietà HeaderFile o esportata in esso.

ValoreAzione
'Auto' (impostazione predefinita)

Importare la definizione del tipo di dato dal file di intestazione specificato. Se non si specifica il file di intestazione, esportare la definizione del tipo di dato nel file di intestazione predefinito.

'Exported'Esportare la definizione del tipo di dato nel file di intestazione specificato o nel file di intestazione predefinito.
'Imported'Importare la definizione del tipo di dato dal file di intestazione specificato o dal file di intestazione predefinito.

Per evitare inclusioni di file di intestazione malformati nel codice generato, un oggetto Simulink.Bus deve specificare DataScope come 'Exported' e HeaderFile come file di intestazione C quando l'oggetto Simulink.Bus ha almeno un oggetto Simulink.Bus annidato che specifica DataScope come 'Exported' e HeaderFile come file di intestazione C.

Nota

Per importare il tipo enum o il tipo struct che non sono enunciati con una dichiarazione typedef:

  • Includere (#include) il file di intestazione contenente la dichiarazione nei parametri di configurazione Simulation Target.

  • Assicurarsi che Import custom code nei parametri di configurazione Simulation Target sia selezionato. Questo parametro è selezionato per impostazione predefinita.

Per evitare potenziali violazioni MISRA C:2012, impostare l'ambito dei dati su Imported o Exported.

Tipi di dati: char | string

File di intestazione C utilizzato con la definizione del tipo di dato, specificato come vettore di caratteri o scalare di stringa. In base al valore della proprietà DataScope, importare la definizione del tipo di dato dal file di intestazione o esportarla in esso. Il software Simulink Coder™ utilizza questa proprietà per la generazione di codice. Il software Simulink ignora questa proprietà.

Per impostazione predefinita, la direttiva #include generata utilizza il delimitatore del preprocessore " invece di < e >. Per generare la direttiva #include <myTypes.h>, specificare HeaderFile come <myTypes.h>.

Tipi di dati: char | string

Confine di allineamento dei dati, specificato come numero intero, in numeri di byte. -1 specifica che non si verifica alcun allineamento dei dati. Il software Simulink Coder utilizza questa proprietà per la generazione di codice. Il software Simulink ignora questa proprietà. Per ulteriori informazioni, vedere Optimize Performance of Memory Access by Using Data Alignment (Embedded Coder).

L'indirizzo di memoria iniziale per i dati allocati per il bus è un multiplo dell'impostazione Alignment. Se l'oggetto si trova in un contesto che richiede l'allineamento, è necessario specificare un valore Alignment con un numero intero positivo che sia una potenza di 2.

Prima di R2024a: Specificare un valore non superiore a 128.

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

Specifiche per il generatore di codice per preservare le dimensioni degli elementi bus multidimensionali nel codice generato, specificate come 'false' o 'true'. Per ulteriori informazioni, vedere Preserve Dimensions of Bus Elements in Generated Code (Embedded Coder).

Tipi di dati: logical

Funzioni oggetto

getNumLeafBusElementsNumber of leaf elements in Simulink.Bus object
getLeafBusElementsLeaf elements in Simulink.Bus object

Esempi

comprimi tutto

Creare una gerarchia di oggetti Simulink.Bus utilizzando array di oggetti Simulink.BusElement.

Creare un array che contenga due oggetti BusElement denominati Chirp e Sine nel workspace di base.

elems(1) = Simulink.BusElement;
elems(1).Name = 'Chirp';

elems(2) = Simulink.BusElement;
elems(2).Name = 'Sine';

L'indicizzazione degli array consente di creare e accedere agli elementi dell'array. La notazione a punti consente di accedere ai valori delle proprietà degli elementi.

Creare un oggetto Bus denominato Sinusoidal che contenga gli elementi definiti nell'array elems.

Sinusoidal = Simulink.Bus;
Sinusoidal.Elements = elems;

Per creare una gerarchia di oggetti Bus creare un altro oggetto Bus che faccia riferimento all'oggetto Bus denominato Sinusoidal.

Creare un array che contenga due oggetti BusElement denominati NestedBus e Step. Specificare l'oggetto Bus denominato Sinusoidal come tipo di dati dell'elemento NestedBus.

clear elems

elems(1) = Simulink.BusElement;
elems(1).Name = 'NestedBus';
elems(1).DataType = 'Bus: Sinusoidal';

elems(2) = Simulink.BusElement;
elems(2).Name = 'Step';

Creare un oggetto Bus denominato TopBus che contenga gli elementi definiti nell'array elems.

TopBus = Simulink.Bus;
TopBus.Elements = elems;

È possibile visualizzare la gerarchia degli oggetti creati nell'Editor dei tipi.

typeeditor

Mentre Type Editor consente di esaminare una gerarchia di oggetti Simulink.Bus in modo interattivo, è anche possibile esaminare gli oggetti in modo programmatico.

Aprire l'esempio. Quindi, caricare gli oggetti bus eseguendo la funzione denominata busObjectDefinition.

busObjectDefinition

Due oggetti bus vengono visualizzati nel workspace di base.

Esame dell'oggetto bus di livello superiore

Esaminare l'oggetto bus di livello superiore, denominato TopBus.

TopBus
TopBus = 
  Bus with properties:

                  Description: ''
                    DataScope: 'Auto'
                   HeaderFile: ''
                    Alignment: -1
    PreserveElementDimensions: 0
                     Elements: [2×1 Simulink.BusElement]

In base al valore della proprietà Elements, TopBus contiene due oggetti Simulink.BusElement.

Esaminare gli elementi di TopBus.

TopBus.Elements(1)
ans = 
  BusElement with properties:

              Name: 'NestedBus'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'Bus: Sinusoidal'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

In base al valore della proprietà DataType, il primo elemento rappresenta un oggetto bus annidato denominato Sinusoidal.

TopBus.Elements(2)
ans = 
  BusElement with properties:

              Name: 'Step'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

In base al valore delle proprietà Name e DataType, il secondo elemento rappresenta un segnale denominato Step.

Esame dell'oggetto bus annidato

Esaminare gli elementi dell'oggetto annidato Simulink.Bus denominato Sinusoidal.

Sinusoidal
Sinusoidal = 
  Bus with properties:

                  Description: ''
                    DataScope: 'Auto'
                   HeaderFile: ''
                    Alignment: -1
    PreserveElementDimensions: 0
                     Elements: [2×1 Simulink.BusElement]

In base al valore della proprietà Elements, Sinusoidal contiene due oggetti Simulink.BusElement.

Esaminare gli elementi di Sinusoidal.

Sinusoidal.Elements(1)
ans = 
  BusElement with properties:

              Name: 'Chirp'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

Sinusoidal.Elements(2)
ans = 
  BusElement with properties:

              Name: 'Sine'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

In base al valore delle proprietà Name e DataType, gli elementi rappresentano due segnali: Chirp e Sine.

Esame degli elementi foglia degli oggetti bus

Per esaminare direttamente gli elementi foglia di un oggetto bus, utilizzare le funzioni oggetto getNumLeafBusElements e getLeafBusElements.

Per ottenere il numero di elementi foglia in TopBus, utilizzare la funzione oggetto getNumLeafBusElements.

num = getNumLeafBusElements(TopBus)
num = 
3

Per ottenere informazioni sugli elementi foglia in TopBus, utilizzare la funzione oggetto getLeafBusElements. Ad esempio, esaminare il primo elemento di TopBus.

leaf = getLeafBusElements(TopBus);
leaf(1)
ans = 
  BusElement with properties:

              Name: 'Chirp'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

Cronologia versioni

Introduzione prima di R2006a

espandi tutto