Contenuto principale

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Implementazione delle funzioni di MATLAB in Simulink con i blocchi MATLAB Function

I blocchi MATLAB Function consentono di definire funzioni personalizzate nei modelli di Simulink® utilizzando il codice MATLAB®. Utilizzare questi blocchi quando:

  • Si dispone di una funzione di MATLAB esistente che modella una funzionalità personalizzata oppure quando risulta facile creare una funzione di questo tipo.

  • Il modello richiede una funzionalità personalizzata che non è o non può essere catturata nel linguaggio grafico di Simulink.

  • Risulta più facile modellare una funzionalità personalizzata utilizzando una funzione di MATLAB piuttosto che un diagramma del blocco Simulink.

  • La funzionalità personalizzata che si desidera modellare non include stati dinamici continui o discreti. Per modellare gli stati dinamici, utilizzare le S-function. Vedere Scrittura dei blocchi utilizzando le S-function di MATLAB.

Calcolo della media e della deviazione standard con un blocco MATLAB Function

Questo esempio parte da un modello che include un blocco MATLAB Function e guida alla personalizzazione del blocco per calcolare la media e la deviazione standard di un vettore di valori. Aprire il modello call_stats_block1 per visualizzare i blocchi di partenza. Il modello include un blocco MATLAB Function vuoto e i blocchi necessari per l'esempio.

The starting model. The model contains a MATLAB Function block in the center, a Constant block that has a vector with four values to the left, and two Display blocks to the right. The blocks are not connected.

Programmazione del blocco MATLAB Function

Programmare il blocco per calcolare la media e la deviazione standard di un vettore di valori. Per aprire MATLAB Function Block Editor, fare doppio clic sul blocco MATLAB Function. Viene visualizzata una funzione predefinita nell'Editor del blocco MATLAB function con due variabili: un argomento di input e uno di output.

This image shows the MATLAB Function Block Editor after it has been opened from the call_stats_block1 model. It includes a default function.

Definire gli input e gli output della funzione modificando la dichiarazione della funzione:

function [mean, stdev] = stats(vals)

Questa dichiarazione definisce una funzione chiamata stats con tre variabili. La dichiarazione definisce un argomento di input vals e due argomenti di output mean e stdev.

In una nuova riga, dopo la dichiarazione della funzione, cancellare il codice esistente e aggiungere il seguente codice:

% Calculates a statistical mean and a standard
% deviation for the values in vals.

len = length(vals);
mean = avg(vals,len);
stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
plot(vals,"-+");

function mean = avg(array,size)
mean = sum(array)/size;

Il codice finale si presenta così:

The MATLAB Function Block Editor showing the final version of the code. It includes the code from the previous steps.

Uscire dal blocco. Il blocco aggiorna i nomi delle porte. La funzione genera mean e stdev che corrispondono alle porte di output mean e stdev del blocco e la funzione di input vals che corrisponde alla porta di input vals del blocco.

This shows the outline of the block without connections between the blocks.

Completare i collegamenti al blocco MATLAB Function.

This shows the connected signals between the blocks established in the previous image.

Salvare il modello. Per visualizzare una versione completa di questo modello, aprire il modello call_stats_block2.

Controllo delle proprietà delle variabili del blocco MATLAB Function

È possibile controllare e gestire le proprietà delle variabili nei blocchi MATLAB Function. In questo esempio, verificare che l'argomento di input vals erediti le sue proprietà di tipo e di grandezza. Fare doppio clic sul blocco MATLAB Function. Aprire il pannello Symbols (Simboli) e il Property Inspector. Nella scheda Function (Funzione), fare clic su Edit data (Modifica dati).

The Function tab in the Simulink Editor while the MATLAB Function block Editor is open. The Edit Data button on the left is enclosed in a red box.

Il pannello Symbols (Simboli) visualizza i nomi delle variabili nella colonna Name (Nome). La colonna Type (Tipo) determina l'assegnazione della porta dell'argomento della funzione e la sua posizione nella dichiarazione della funzione. In questo esempio, vals è assegnato a una porta di input. mean e stdev sono assegnati alle porte di output. Se si modifica la voce Type (Tipo) per una delle due variabili, cambia anche la dichiarazione della funzione.

Controllare le proprietà per vals. Nel pannello Symbols (Simboli), fare clic sulla riga vals. Il Property Inspector si aggiorna per mostrare le proprietà di vals. La proprietà Scope (Scope) corrisponde alla colonna Type (Tipo).

The Property Inspector and the Symbols pane. The vals input variable is selected, and the Property Inspector displays the variable properties.

Per ulteriori informazioni sulla creazione di variabili nel blocco MATLAB Function e sull'impostazione delle proprietà, vedere Create and Define MATLAB Function Block Variables.

Simulazione del modello

In Simulink, fare clic su Run (Esegui) per simulare il modello. Il modello genera i dati della funzione nei due blocchi Display.

The Display blocks show the simulation results of the model. The first Display block shows 3.5 and the second shows 1.118.

Il blocco traccia inoltre i dati di input in una finestra separata.

A plot of the input values and a line drawn through the values. The line is blue.

Vedi anche

| |

Argomenti

Siti web esterni