Main Content

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

Modellare e convalidare un sistema

Si modella ciascun componente nella struttura del sistema per rappresentarne il comportamento fisico o funzionale. Si verifica il comportamento dei componenti di base eseguendo simulazioni con dati di prova.

Aprire il layout del sistema

Quando si modellano i singoli componenti, è utile avere una visione d'insieme del layout dell'intero sistema. Per iniziare, caricare il modello del layout. Alla riga di comando MATLAB®, inserire:

open_system('system_layout.slx')

Modellare i componenti

Il modello Simulink® di un componente si basa su diversi punti di partenza:

  • Una relazione matematica esplicita tra l'output e l'input di un componente fisico. È possibile calcolare gli output del componente a partire dagli input, direttamente o indirettamente, attraverso calcoli algebrici e l'integrazione di equazioni differenziali. Ad esempio, il calcolo del livello dell'acqua in un serbatoio data la portata di afflusso costituisce una relazione esplicita. Ciascun blocco Simulink viene eseguito in base alla definizione delle computazioni dai suoi input ai suoi output.

  • Una relazione matematica implicita tra le variabili del modello di un componente fisico. Dal momento che le variabili sono interdipendenti, assegnare un input e un output al componente non è semplice. Ad esempio, la tensione elettrica all'estremità + di un motore collegato in un circuito e la tensione elettrica all'estremità - hanno una relazione implicita. Per modellare una tale relazione in Simulink, è possibile utilizzare strumenti di modellazione fisica come Simscape™ o modellare queste variabili come parte di un componente più grande che permette la definizione di input/output. A volte, un esame più attento degli obiettivi di modellazione e delle definizioni dei componenti aiuta a definire le relazioni input/output.

  • Dati ottenuti da un sistema reale. I dati di input/output sono stati misurati dal componente reale, ma non esiste una relazione matematica completamente definita. Molti dispositivi dispongono di componenti non modellati che si adattano a questa descrizione. Ad esempio, il calore dissipato da un televisore. È possibile utilizzare il System Identification Toolbox™ per definire la relazione di input/output di un tale sistema.

  • Una definizione funzionale esplicita. Gli output di un componente funzionale vengono definiti a partire dagli input attraverso calcoli algebrici e logici. Ad esempio, la logica di commutazione di un termostato. È possibile modellare la maggior parte delle relazioni funzionali come blocchi e sottosistemi Simulink.

Questo tutorial modella i componenti fisici e funzionali con relazioni esplicite di input/output. In questo tutorial, sarà possibile:

  1. Usare le equazioni del sistema per creare un modello Simulink.

  2. Aggiungere e collegare i blocchi Simulink nell'editor di Simulink. I blocchi rappresentano i coefficienti e le variabili delle equazioni.

  3. Costruire il modello per ciascun componente in modo distinto. Il modo più efficace per costruire il modello di un sistema è quello di considerare innanzitutto i componenti in modo indipendente.

  4. Per iniziare, costruire dei modelli semplici usando delle approssimazioni del sistema. Identificare le ipotesi che possono influenzare l'accuratezza del proprio modello. Aggiungere in modo iterativo i dettagli fino a quando il livello di complessità soddisfa i requisiti di modellazione e di accuratezza.

Modellare i componenti fisici

Descrivere le relazioni tra i componenti, ad esempio, dati, energia e trasferimento di forze. Usare le equazioni del sistema per costruire un modello grafico del sistema in Simulink.

Alcune domande da porsi prima di iniziare a modellare un componente:

  • Quali sono le costanti di ciascun componente? Quali valori sono immutabili, se non vengono cambiati?

  • Quali sono le variabili di ciascun componente? Quali valori cambiano nel tempo?

  • Quante variabili di stato possiede un componente?

Ricavare le equazioni di ciascun componente usando principi scientifici. Molte equazioni di sistema rientrano in tre categorie:

  • Per i sistemi continui, le equazioni differenziali descrivono il tasso di cambiamento delle variabili con le equazioni definite per tutti i valori di tempo. Ad esempio, un'equazione differenziale del primo ordine indica la velocità di un'automobile:

    dv(t)dt=bmv(t)+u(t)

  • Per i sistemi discreti, le equazioni alle differenze descrivono il tasso di cambiamento delle variabili, ma le equazioni sono definite solo in momenti specifici. Ad esempio, il segnale di controllo di un controller proporzionale-derivativo discreto:

    pd[n]=(e[n]e[n1])Kd+e[n]Kp

  • Le equazioni senza derivate sono equazioni algebriche. Ad esempio, un'equazione algebrica fornisce la corrente totale in un circuito parallelo con due componenti:

    It=Ia+Ib

Ruote e moto rettilineo.  Le forze che agiscono su una ruota sono due:

  • Forza applicata dal motore. La forza F agisce nella direzione del cambio di velocità ed è un input per i sottosistemi della ruota.

  • Forza di resistenza. La forza Fdrag agisce contro la direzione del cambio di velocità ed è una funzione della velocità.

    Fdrag=kdragV|V|

L'accelerazione è proporzionale alla somma di queste forze:

(m/2)V˙=FFdrag(m/2)V˙=FkdragV|V|V˙=FkdragV|V|(m/2)

Dove kdrag è il coefficiente di resistenza e m è la massa del robot. Ciascuna ruota trasporta la metà di questa massa.

Costruire il modello della ruota:

  1. Nel modello system_layout, fare doppio clic sul sottosistema denominato Right Wheel per visualizzare il sottosistema vuoto.

  2. Per modellare la velocità e l'accelerazione, aggiungere un blocco Integrator. Lasciare la condizione iniziale impostata su 0. L'input di questo blocco è l'accelerazione Vdot e l'output è la velocità V.

    The Integrator block has an unconnected input signal named Vdot and an output signal labeled V that is connected to an Outport block named Speed. An unconnected Inport block named Force is to the left of the unconnected signal line for the signal Vdot.

  3. Per modellare la forza di resistenza, aggiungere un blocco MATLAB Function dalla libreria Funzioni definite dall'utente. Il blocco MATLAB Function fornisce un modo rapido per implementare espressioni matematiche nel proprio modello. Per modificare la funzione, fare doppio clic sul blocco per aprire l'Editor del blocco MATLAB function.

  4. Nell'Editor del blocco MATLAB function, inserire il codice de MATLAB® per calcolare la forza di resistenza.

    function Fdrag=get_fdrag(V,k_drag)
    
    Fdrag=k_drag*V*abs(V);

    The MATLAB Function Block Editor shows the code for a MATLAB function named Fdrag that calculates the drag force.

  5. Definire gli argomenti per il blocco MATLAB Function. Nell'Editor del blocco MATLAB function, fare clic su Edit Data (Modifica dati) . Fare clic su k_drag, impostare Scope su Parameter e fare clic su Apply.

  6. Sottrarre la forza di resistenza dalla forza del motore utilizzando il blocco Subtract. Completare l'equazione forza-accelerazione utilizzando un blocco Gain con il parametro Gain specificato come 1/(m/2).

  7. Per invertire la direzione del blocco MATLAB Function, selezionare il blocco. Quindi, sulla barra degli strumenti di Simulink, nella scheda Format, fare clic su Flip left-right (Capovolgi da sinistra a destra) . Collegare i blocchi.

    In the wheel model, the MATLAB Function block is in a feedback loop between the speed output signal. The Subtract block subtracts the drag force calculated by the MATLAB Function block from the force input to the subsystem. The Subtract block and Gain block are between the force input and the input to the Integrator block.

  8. La dinamica delle due ruote è la stessa. Creare una copia del sottosistema Right Wheel appena creato e incollarlo nel sottosistema Left Wheel.

  9. Per visualizzare il livello superiore del modello, fare clic su Navigate Up To Parent (Spostarsi verso il principale) .

Moto rotatorio.   Quando le due ruote girano in direzioni opposte, si muovono in un cerchio di raggio r, causando il moto rotatorio del robot. Quando le ruote girano nella stessa direzione, la rotazione non avviene. Supponendo che le velocità delle ruote siano sempre della stessa magnitudine, è possibile modellare il moto rotatorio come dipendente dalla differenza delle due velocità delle ruote VR e VL:

θ˙=VRVL2r

Costruire il modello di dinamica rotazionale:

  1. Nel livello superiore del modello system_layout, fare doppio clic sul sottosistema denominato Rotation per visualizzare il sottosistema vuoto. Eliminare il collegamento tra i blocchi Inport e Outport.

  2. Per modellare la velocità e la posizione angolare, aggiungere un blocco Integrator. Lasciare la condizione iniziale impostata su 0. L'output di questo blocco è la posizione di rotazione theta e l'input è la velocità angolare theta_dot.

  3. Calcolare la velocità angolare dalla velocità tangenziale. Aggiungere un blocco Gain e impostare il parametro Gain del blocco su 1/(2*r).

  4. Collegare i blocchi.

    An Inport block named Speed difference connects to the Gain block, which connects to an Integrator block, which connects to an Outport block named Angle

  5. Per visualizzare il livello superiore del modello, fare clic su Navigate Up To Parent (Spostarsi verso il principale) .

Modellamento dei componenti funzionali

Descrivere la funzione dall'input di una funzione al suo output. La descrizione può includere equazioni algebriche e costrutti logici, che si possono usare per costruire un modello grafico del sistema in Simulink.

Trasformazione delle coordinate.  La velocità del robot nelle coordinate x e y, VX e VY, è correlata alla velocità lineare VN e all'angolo theta:

VX=VNcos(θ)VY=VNsin(θ)

Costruire il modello di trasformazione delle coordinate:

  1. Nel livello superiore del modello system_layout, fare doppio clic sul sottosistema denominato Coordinate Transform per visualizzare il sottosistema vuoto.

  2. Per modellare le funzioni trigonometriche, aggiungere un blocco SinCos della libreria Operazioni matematiche.

  3. Per modellare la moltiplicazione, aggiungere due blocchi Product dalla libreria Operazioni matematiche.

  4. Collegare i blocchi.

    The coordinate transformation model has two inputs named Linear speed and Angle and two outputs named Y speed and X speed. The X and Y speeds are calculated by multiplying the sine and cosine of the angular position by the linear speed input.

  5. Per visualizzare il livello superiore del modello, fare clic su Navigate Up To Parent (Spostarsi verso il principale) .

Impostazione dei parametri del modello

È possibile determinare i valori appropriati per i parametri del modello utilizzando diverse sorgenti, tra cui:

  • Specifiche scritte come le tabelle delle proprietà standard o le schede tecniche del produttore

  • Misure dirette di un sistema esistente

  • Stime con input/output di sistema

Questo modello utilizza i seguenti parametri:

ParametroSimboloValore
Massam2,5 kg
Resistenza all'avanzamentok_drag30 Ns2/m
Raggio del robotr0,15 m

Un modello di Simulink può accedere ai valori dei parametri definiti utilizzando le variabili nel workspace di MATLAB. Definire queste variabili inserendo i comandi nella finestra di comando di MATLAB.

m = 2.5;
k_drag = 30;
r = 0.15;

Convalida dei componenti usando la simulazione

Convalidare i componenti fornendo un input e osservando l'output. Anche una convalida così semplice può evidenziare modi immediati per migliorare il modello. Questo esempio convalida i comportamenti seguenti:

  • Quando una forza viene applicata continuamente a una ruota, la velocità aumenta fino a raggiungere una velocità costante.

  • Quando le ruote girano in direzioni opposte, l'angolo di rotazione aumenta a una velocità costante.

Convalida dei componente della ruota

Creare ed eseguire un modello di prova per il componente della ruota:

  1. Creare un nuovo modello. Nella scheda Simulation, fare clic su New . Copiare il blocco Subsystem denominato Right Wheel nel nuovo modello.

  2. Per creare un input di prova, aggiungere un blocco Step dalla libreria Sorgenti e collegarlo all'input del sottosistema denominato Right Wheel. Lasciare il parametro Step time impostato su 1.

  3. Aggiungere uno strumento di visualizzazione dello scope all'output. Fare clic con il pulsante destro del mouse sulla porta di output del blocco del sottosistema denominato Right Wheel e selezionare Create & Connect Viewer > Simulink > Scope.

    A Step block connects to the input of a Subsystem block named Right Wheel. The input port of the subsystem is named Force, and the output port of the subsystem is named Speed. A scope icon next to the subsystem output port indicates that the output port is connected to a scope viewer..

  4. Simulare il modello. Nella scheda Simulation, fare clic su Run .

    The scope viewer plots the output signal of the subsystem named Right Wheel.

I risultati della simulazione mostrano che il modello presenta il comportamento generale previsto. Non si verifica alcun movimento finché non viene applicata una forza al tempo di avanzamento. Quando la forza viene applicata, la velocità inizia ad aumentare e poi si assesta su una costante quando la forza applicata e la forza di resistenza raggiungono un equilibrio. Oltre alla convalida, questa simulazione mostra inoltre informazioni sulla velocità massima della ruota per una data forza.

Convalida dei componente di rotazione

Creare ed eseguire un modello di prova per il modello di rotazione:

  1. Per creare un nuovo modello, fare clic su New (Nuovo) . Copiare il blocco del sottosistema denominato Rotation nel nuovo modello.

  2. Per creare un input di prova nel nuovo modello, aggiungere un blocco Step dalla libreria Sorgenti. Lasciare il parametro Step time impostato su 1. Collegare l'output del blocco Step all'input del sottosistema denominato Rotation. Questo input rappresenta la differenza delle velocità delle ruote quando girano in direzioni opposte.

  3. Aggiungere uno strumento di visualizzazione dello scope all'output del sottosistema denominato Rotation. Fare clic con il pulsante destro del mouse sulla porta di output del sottosistema e selezionare Create & Connect Viewer > Simulink > Scope.

    A Step block connects to the input of a Subsystem block named Rotation. The input port of the subsystem is named Speed difference, and the output port of the subsystem is named Angle. A scope icon next to the subsystem output port indicates that the output port is connected to a scope viewer.

  4. Simulare il modello. Nella scheda Simulation, fare clic su Run .

    The scope viewer plots the output signal of the subsystem named Rotation.

Questa simulazione dimostra che l'angolo aumenta costantemente quando le ruote girano con la stessa velocità in direzioni opposte. Si migliora il modello per rendere l'output dell'angolo più semplice da interpretare. Ad esempio, è possibile:

  • Convertire le unità del segnale di output da radianti a gradi aggiungendo un blocco Gain con un gain di 180/pi.

  • Visualizzare il valore di output in cicli di 360 gradi aggiungendo un blocco Math Function con funzione mod.

Le funzioni trigonometriche di MATLAB prendono input in radianti.

Convalida del modello

Dopo aver convalidato i singoli componenti, è possibile eseguire una convalida simile sul modello completo. Questo esempio convalida i comportamenti seguenti:

  • Quando la stessa forza viene applicata a entrambe le ruote nella stessa direzione, il robot si muove seguendo una linea.

  • Quando la stessa forza viene applicata a entrambe le ruote in direzioni opposte, il robot ruota sul posto.

  1. Nel modello system_layout, fare doppio clic sul sottosistema denominato Inputs per visualizzare il sottosistema vuoto.

  2. Creare un input di prova aggiungendo un blocco Step. Lasciare il parametro Step time impostato su 1. Collegare l'output del blocco Step a entrambi i blocchi Outport.

    A Step block connects to two Outport blocks, one named Left force and one named Right force

  3. Al livello superiore del modello, collegare entrambi i segnali di output allo stesso strumento di visualizzazione dello scope.

    The Coordinate Transform subsystem has two output ports named X speed and Y speed. Each output port connects to an Integrator block, and the outport of each Integrator block connects to a scope viewer.

  4. Simulare il modello.

    The scope viewer plots the two output signals on the same graph, one in yellow and one in blue.

    La linea gialla nello strumento di visualizzazione dello scope rappresenta la direzione X, mentre la linea blu rappresenta la direzione Y. Poiché l'angolo è zero e non cambia, il veicolo si muove solo nella direzione X, come previsto.

  5. Fare doppio clic sul sottosistema denominato Inputs. Per invertire la direzione della ruota sinistra, aggiungere un blocco Gain tra la sorgente e il secondo output e impostare il parametro Gain su -1.

    The Step block connects directly to the Outport block named Right Force. The Gain block with a gain of -1 inverts the Step block output. The output from the Gain block connects to the Outport block named Left force.

  6. Aggiungere uno strumento di visualizzazione dello scope all'output dell'angolo.

  7. Simulare il modello.

Lo strumento di visualizzazione dello scope collegato ai segnali di velocità x e y mostra che non si verifica alcun movimento nel piano X-Y.

The scope viewer plots the X and Y speed signals on the same graph.

Lo strumento di visualizzazione dello scope collegato al segnale angolare mostra un movimento angolare costante.

The scope viewer plots the angle output.

È possibile usare questo modello finale per rispondere a molte domande sul modello modificando l'input.

  • Cosa accade quando l'angolo iniziale non è zero?

  • Quanto tempo impiega il movimento a fermarsi quando la forza scende a zero?

  • Cosa succede se il robot è più pesante?

  • Cosa accade quando il robot si muove su una superficie più liscia con un coefficiente di resistenza minore?

Argomenti complementari