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:
Usare le equazioni del sistema per creare un modello Simulink.
Aggiungere e collegare i blocchi Simulink nell'editor di Simulink. I blocchi rappresentano i coefficienti e le variabili delle equazioni.
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.
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:
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:
Le equazioni senza derivate sono equazioni algebriche. Ad esempio, un'equazione algebrica fornisce la corrente totale in un circuito parallelo con due componenti:
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à.
L'accelerazione è proporzionale alla somma di queste forze:
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:
Nel modello
system_layout
, fare doppio clic sul sottosistema denominatoRight Wheel
per visualizzare il sottosistema vuoto.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.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.
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);
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.
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)
.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.
La dinamica delle due ruote è la stessa. Creare una copia del sottosistema
Right Wheel
appena creato e incollarlo nel sottosistemaLeft Wheel
.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:
Costruire il modello di dinamica rotazionale:
Nel livello superiore del modello
system_layout
, fare doppio clic sul sottosistema denominatoRotation
per visualizzare il sottosistema vuoto. Eliminare il collegamento tra i blocchi Inport e Outport.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.Calcolare la velocità angolare dalla velocità tangenziale. Aggiungere un blocco Gain e impostare il parametro Gain del blocco su
1/(2*r)
.Collegare i blocchi.
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:
Costruire il modello di trasformazione delle coordinate:
Nel livello superiore del modello
system_layout
, fare doppio clic sul sottosistema denominatoCoordinate Transform
per visualizzare il sottosistema vuoto.Per modellare le funzioni trigonometriche, aggiungere un blocco SinCos della libreria Operazioni matematiche.
Per modellare la moltiplicazione, aggiungere due blocchi Product dalla libreria Operazioni matematiche.
Collegare i blocchi.
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:
Parametro | Simbolo | Valore |
---|---|---|
Massa | m | 2,5 kg |
Resistenza all'avanzamento | k_drag | 30 Ns2/m |
Raggio del robot | r | 0,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:
Creare un nuovo modello. Nella scheda Simulation, fare clic su New . Copiare il blocco Subsystem denominato
Right Wheel
nel nuovo modello.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 su1
.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.Simulare il modello. Nella scheda Simulation, fare clic su Run .
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:
Per creare un nuovo modello, fare clic su New (Nuovo) . Copiare il blocco del sottosistema denominato
Rotation
nel nuovo modello.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 denominatoRotation
. Questo input rappresenta la differenza delle velocità delle ruote quando girano in direzioni opposte.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.Simulare il modello. Nella scheda Simulation, fare clic su Run .
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.
Nel modello
system_layout
, fare doppio clic sul sottosistema denominatoInputs
per visualizzare il sottosistema vuoto.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.Al livello superiore del modello, collegare entrambi i segnali di output allo stesso strumento di visualizzazione dello scope.
Simulare il modello.
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.
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
.Aggiungere uno strumento di visualizzazione dello scope all'output dell'angolo.
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.
Lo strumento di visualizzazione dello scope collegato al segnale angolare mostra un movimento angolare costante.
È 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?