Definizione e layout del sistema
Il layout di livello superiore del sistema di un modello Simulink® è un contesto comune utilizzabile da molti team di ingegneri ed è alla base di numerose attività nel paradigma della progettazione Model-Based: analisi, progettazione, test e implementazione. Si definisce un sistema di livello superiore identificandone la struttura e i singoli componenti. Si organizza quindi il modello in un sistema gerarchico che corrisponde ai componenti. Successivamente si definiscono le interfacce di ciascun componente e i collegamenti tra i componenti.
Il modello presentato in questo tutorial è un robot piatto che può muoversi o ruotare con l'aiuto di due ruote, simile a un robot aspirapolvere domestico. Questo modello presuppone che il robot si muova in uno dei due modi seguenti:
Rettilineo: entrambe le ruote girano nella stessa direzione alla stessa velocità e il robot si muove di moto rettilineo.
Circolare: le ruote girano in direzioni opposte alla stessa velocità e il robot ruota sul posto.
Ciascun tipo di movimento parte da uno stato a riposo, ovvero sia il moto circolare che quello rettilineo sono pari a zero. Con questi presupposti, i componenti del moto circolare e rettilineo possono essere modellati separatamente.
Determinare gli obiettivi di modellazione
Prima di progettare un modello, prendere in considerazione gli obiettivi e i requisiti. Gli obiettivi dettano sia la struttura che il livello di dettaglio del modello. Se l'obiettivo è semplicemente comprendere la velocità che il robot può raggiungere, la modellazione del solo moto rettilineo è sufficiente. Se l'obiettivo è quello di progettare un insieme di input affinché il dispositivo segua un determinato percorso, allora è coinvolta la componente rotazionale. Se l'obiettivo è evitare gli ostacoli, allora il sistema necessita di un sensore. Questo tutorial costruisce un modello con l'obiettivo di progettare i parametri dei sensori in modo che il robot si fermi in tempo quando rileva un ostacolo nel suo percorso. Per raggiungere questo obiettivo, il modello deve:
Determinare la velocità con cui il robot si ferma quando i motori si fermano
Fornire una serie di comandi per il moto rettilineo e circolare in modo che il robot possa muoversi in uno spazio bidimensionale
Il primo obiettivo di modellazione permette di analizzare il movimento per poter progettare il sensore. Il secondo obiettivo consente di testare il proprio progetto.
Identificare i componenti e le interfacce del sistema
Una volta compresi i requisiti per la modellazione, è possibile iniziare a identificare i componenti del sistema. Identificare i singoli componenti e le loro relazioni all'interno di una struttura di livello superiore aiuta a costruire sistematicamente un modello potenzialmente complesso. Eseguire questi passaggi all'esterno di Simulink prima di iniziare a costruire il modello.
Questa attività consiste nel rispondere alle seguenti domande:
Quali sono i componenti strutturali e funzionali del sistema? Quando un layout riflette la struttura fisica e funzionale, aiuta a comprendere, costruire, trasmettere e testare il sistema. Questo aspetto è ancora più importante quando parti del sistema devono essere implementate in fasi diverse del procedimento di progettazione.
Quali sono gli input e gli output di ciascun componente? Disegnare un'immagine che mostri i collegamenti tra i componenti. L'immagine aiuta a visualizzare il flusso del segnale all'interno del modello, a identificare la sorgente e il sink di ciascun segnale e a determinare se sono presenti tutti i componenti necessari.
Quale livello di dettaglio è necessario? Includere nel sistema del proprio diagramma i principali parametri del sistema. Creare un'immagine del sistema può contribuire a identificare e modellare le parti che sono essenziali per i comportamenti che si vogliono osservare. Ciascun componente e parametro che contribuisce all'obiettivo di modellazione deve avere una rappresentazione nel modello. Tuttavia, è necessario mantenere un equilibrio tra complessità e leggibilità. La modellazione può essere un procedimento iterativo. È possibile iniziare con un modello di livello superiore che abbia pochi dettagli e poi aumentare gradualmente la complessità dove richiesto.
Spesso è utile considerare quanto segue:
Quali parti del sistema devono essere testate?
Quali sono i dati dei test e i criteri di successo?
Quali output sono necessari per le attività di analisi e progettazione?
Identificare i componenti del movimento del robot
Il sistema di questo tutorial definisce un robot che si muove con due ruote elettriche in due dimensioni. Esso comprende:
Caratteristiche del moto rettilineo
Caratteristiche del moto circolare
Trasformazioni per determinare la posizione del sistema in due dimensioni
Un sensore per misurare la distanza del robot da un ostacolo
Il modello di questo sistema include due ruote identiche, forze di input applicate alle ruote, dinamica rotazionale, trasformazione delle coordinate e un sensore. Il modella usa Subsystem per rappresentare ciascun componente:
Aprire un nuovo modello Simulink. Vedere Aprire un nuovo modello.
Aprire il browser delle librerie. Vedere Aprire il browser delle librerie di Simulink.
Aggiungere i blocchi Subsystem. Trascinare cinque blocchi Subsystem della libreria Ports & Subsystems al nuovo modello.
Fare clic su un sottosistema. Nella scheda Format, fare clic sull'elenco a discesa Auto. Deselezionare la casella Hide Automatic Block Names.
Disporre e rinominare i blocchi Subsystem come illustrato. Per cambiare i nomi dei blocchi, fare doppio clic sul nome del blocco e modificare il testo.
Definire le interfacce tra i componenti
Identificare le connessioni di input e output tra i sottosistemi. I valori di input e output cambiano dinamicamente durante una simulazione. Le linee che collegano i blocchi rappresentano il trasferimento dei dati. Questa tabella mostra gli input e gli output di ciascun componente.
Blocco | Input | Output | Informazioni correlate |
---|---|---|---|
Input | Nessuno | Forza alla ruota destra Forza alla ruota sinistra | Non applicabile |
Ruota destra | Forza alla ruota destra | Velocità della ruota destra | Direzionale, negativo significa direzione inversa |
Ruota sinistra | Forza alla ruota sinistra | Velocità della ruota sinistra | Direzionale, negativo significa direzione inversa |
Rotazione | Differenza di velocità tra le ruote destra e sinistra | Angolo di rotazione | Misurato in senso antiorario |
Trasformazione delle coordinate | Velocità normale Angolo di rotazione | Velocità in X Velocità in Y | Non applicabile |
Sensore | Coordinata X Coordinata Y | Nessuno | Nessun blocco necessario per la modellazione |
Alcuni input dei blocchi non corrispondono esattamente agli output dei blocchi. Pertanto, oltre alla dinamica dei singoli componenti, il modello deve calcolare quanto segue:
Input per il calcolo della rotazione: sottrarre le velocità delle due ruote e dividere per due.
Input per la trasformazione delle coordinate: media delle velocità delle due ruote.
Input per il sensore: integrare gli output della trasformazione delle coordinate.
Le velocità delle ruote sono sempre uguali in grandezza e i calcoli all'interno di questo presupposto sono accurati.
Aggiungere i componenti necessari e finalizzare i collegamenti:
Aggiungere le porte di input e di output necessarie a ogni sottosistema. Fare doppio clic su un blocco Subsystem.
Ciascun nuovo blocco Subsystem contiene un blocco Inport (In1) e un blocco Outport (Out1). Tali blocchi definiscono l'interfaccia del segnale con il livello superiore successivo in una gerarchia di modelli.
Ciascun blocco Inport crea una porta di input sul blocco Subsystem e ciascun blocco Outport crea una porta di output. Il modello rispecchia i nomi di questi blocchi come i nomi delle porte di input/output. Aggiungere altri blocchi per ulteriori segnali di input e output. Sulla barra degli strumenti dell'editor Simulink, fare clic sul pulsante Navigate Up To Parent per tornare al livello superiore.
Per ciascun blocco, aggiungere e rinominare i blocchi Inport e Outport.
Quando si copia un blocco Inport per crearne uno nuovo, usare il comando Paste (Ctrl+V).
Calcolare gli input richiesti ai sottosistemi Coordinate Transform e Rotation dalle velocità della ruota sinistra e della ruota destra.
Calcolare l'input di velocità del moto rettilineo al sottosistema Coordinate Transform. Aggiungere un blocco Add della libreria Operazioni matematiche e collegare gli output dei componenti delle due ruote. Aggiungere un blocco Gain e impostare il parametro gain su
1/2
. Collegare l'output del blocco Add a questo blocco Gain.Calcolare la differenza di velocità in input al sottosistema Rotation. Aggiungere un blocco Subtract della libreria Operazioni matematiche. Collegare la velocità della ruota destra all'input + e la velocità della ruota sinistra all'input -. Collegare gli output dei due componenti della ruota. Aggiungere un blocco Gain e impostare il parametro gain su
1/2
. Collegare l'output del blocco Subtract a questo blocco Gain.
Calcolare le coordinate X e Y dalle velocità X e Y. Aggiungere due blocchi Integrator della libreria Continui e collegare gli output del blocco Coordinate Transform. Lasciare le condizioni iniziali dei blocchi Integrator impostate su
0
.Completare i collegamenti del sistema.
Parametri e dati
Determinare i parametri che fanno parte del modello e i loro valori. Usare gli obiettivi di modellazione per determinare se questi valori sono sempre fissi o cambiano da simulazione a simulazione. I parametri che contribuiscono all'obiettivo della modellazione richiedono una rappresentazione esplicita nel modello. La tabella seguente aiuta a determinare il livello di dettaglio nella modellazione di ciascun componente.
Parametro | Blocco | Simbolo | Valore | Tipo |
---|---|---|---|---|
Massa | Ruota sinistra Ruota destra | m | 2,5 kg | Variabile |
Resistenza all'avanzamento | Ruota sinistra Ruota destra | k_drag | 30 Ns2/m | Variabile |
Raggio del robot | Rotazione | r | 0,15 m | Variabile |
Angolo iniziale | Rotazione | Nessuno | 0 rad | Fisso |
Velocità iniziali | Ruota sinistra Ruota destra | Nessuno | 0 m/s 0 m/s | Fisso |
Coordinate iniziali (X, Y) | Integratori | Nessuno | (0, 0) m | Fisso |
Simulink usa il workspace MATLAB® per valutare i parametri. Impostare i suddetti parametri nella finestra di comando MATLAB:
m = 2.5; k_drag = 30; r = 0.15;