Appendice B
Introduzione al tool SimMechanic
di Matlab-Simulink ™
Il SimMechanic è una piattaforma di sviluppo ad oggetti atta a simulare la dinamica rigida di cinematismi e sistemi in moto. Esso è un tool interno di Matlab Simulink e permette di creare cinematismi complessi sia nel piano sia nello spazio e di analizzarli estraendo direttamente dal modello tutti i parametri che possono interessare ad un progettista.
La filosofia di funzionamento del tool prevede che il cinematismo venga diviso in tutti i corpi che lo compongono, ognuno dei corpi è poi collegato agli altri mediante l’uso di giunti di varia natura.
Come tutti i tool del pacchetto simulink esso è basato sull’uso di blocchi precompilati a cui vanno settati dei parametri interni, i blocchi sono divisi in 7 diverse famiglie:
• Bodies - Corpi • Joints - Giunti
• Constraint and Driver - Vincoli e Attuatori • Force elements - Elementi di Forza
• Interface Elements - Elementi di Interfaccia • Sensors and Actuators - Sensori ed attuatori • Utilities - Utilità
Bodies - Corpi
Figura B.1: Famiglia Bodies
• Body • Ground
• Machine Environment • Shared Environment
Figura B.2: Blocco Body
Figura B.3: Parametri interni del bocco Body
I Body sono gli elementi che costituiscono il cinematismo (ad esempio in un pendolo il Body sarebbe la massa oscillante) essi sono dotati di diverse proprietà in figura B.3 è possibile vedere quali sono i parametri fondamentali e necessari editabili del body.
Innanzitutto è possibile impostare la massa del corpo (Indicato con Mass) e la sua relativa unità di misura.
Poi è necessario introdurre la matrice di inerzia del corpo con la sua relativa unità di misura.
In Figura B.2 sono rappresentate poi 2 porte, una a destra una a sinistra indicate rispettivamente con CS1 CS2. Alle porte possono essere collegati dei giunti, dei sensori o degli attuatori. Il numero di porte non è fisso e può essere modificato mediante la schermata riportata in figura B.3 indicata con Porte, il numero di porte non può scendere sotto le 2 (baricentro e un’altra porta) e inoltre ogni porta ha solidale a se un
• Show port: Se la porta è visualizzata o meno sul blocco Simulink
• Port side: La posizione della porta nel blocco simulink (se a destra o sinistra) • Name: Il nome della porta (Assegnato automaticamente e non editabile)
• Origin Position Vector: La posizione della porta all’istante 0 nello spazio della simulazione: esso è un vettore di coordinate che identificano la posizione che ha la porta nel momento di inizio della simulazione, è anche possibile definire rispetto a quale sistema di riferimento è riferita mediante i menù a tendina Translated origin from e Components in Axes of.
• Units: L’unità di misura in cui è espresso il vettore posizione.
• Translated origin from: come già detto è l’origine a cui il vettore posizione della porta fa riferimento, alcune possibili opzioni sono:
– World: Ovvero il vettore ha come sistema di riferimento il sistema di riferimento principale del cinematsimo
– Adjoining: Ovvero il vettore ha come sistema di riferimento il sistema di riferimento solidale ad uno dei giunti collegati al Body
– CS1 - CS2 - CS3 - ... - CSn: Ovvero il vettore ha come sistema di riferimento il sistema una delle altre porte dello stesso Body.
• Component in axes of: come già detto è l’orientamento all’istante 0 della terna di riferimento solidale alla porta, come nel caso del Translated origin from si ha – World Ovvero la terna solidale alla porta ha come orientamento
l’orienta-mento del sistema di riferil’orienta-mento principale del cinematsimo
– Adjoining Ovvero la terna solidale alla porta ha come orientamento l’orien-tamento del sistema di riferimento solidale ad uno dei giunti collegati al Body
– CS1 - CS2 - CS3 - ... - CSn Ovvero la terna solidale alla porta ha come orientamento l’orientamento del sistema di una delle altre porte dello stesso Body.
Ovviamente tali settaggi valgono solo per l’istante iniziale, una volta che il moto è in atto e il Body si sposta traslando e ruotando, la porta viene trascinata rigidamente nel movimento, di conseguenza il sistema di riferimento, rimanendo solidale alla porta, muta il proprio orientamento e la propria posizione rispetto ai valori settati all’interno della finestra di dialogo.
Un’altra importante blocco della categoria dei Bodies è il blocco Ground(Figura B.1 ), tale blocco permette di collegare un giunto al telaio e attraverso di esso un body, permette quindi di avere sostanzialmente il punto in cui si caricano / scaricano tutte le forze del sistema.
Joint - Giunti
Già citata in precedenza la famiglia dei Giunti costituisce il mezzo di interfaccia tra un body e un’altro o tra un body e il telaio. Ve ne sono di diversi tipi che offrono diversi modi di interfaccia tra Body e Body (Figura B.4) , per motivi di sintesi non verranno spiegati tutti nel dettaglio e verranno presi in considerazione solo quelli che verranno effettivamente utilizzati per la creazione del modello cinematico. Di base un giunto può accettare minimo 2 corpi, un corpo viene definito Base e l’altro Follower (Indicati con B e F in figura B.5 e in Rosso e Blu in Figura B.6 nel caso di un giunto di cerniera), in sostanza tutte le gli spostamenti del Follower sono fatte rispetto al Base e non viceversa, tale distinzione è necessaria per definire un verso positivo alle rotazioni e agli spostamenti e sopratutto una gerarchia tra i diversi body. Ad esempio una rotazione antioraria del Follower rispetto al Base (Il base è fermo mentre il Follower ruota) definisce una rotazione positiva, viceversa una rotazione Antioraria del Base rispetto al Follower (Il follower è fermo mentre il base ruota) definisce una rotazione negativa del Body Base.
Figura B.4: Famiglia dei Giunti
Per la creazione del modello cinematico sono stati usati: • Giunto di Rivoluzione - Revolute
• Giunto sferico - Spherical
Figura B.5: Tipologia di giunti utilizzati nel modello cinematico
Come già detto il giunto di Rivoluzione altro non è che una cerniera tra due Body, esso è dotato delle canoniche due porta (Base e Follower) e possono essere aggiunte altre porte per l’utilizzo di sensori e attuatori.
In Figura B.7 si possono vedere quali sono i parametri fondamentali del blocco Revolute:
Figura B.6: Rotazione del Follower (in blu) relativamente al Base (in rosa)
Figura B.7: Parametri del giunto revolute
Figura B.8: Modello base di connessione tra body
• Current Follower: Indica il Body che è collegato al giunto mediante la porta Follower
attuatori che vengono visualizzate sul giunto.
• Menu a cartella Axes, esso ha 4 voci e non ve ne possono essere aggiunte o tolte nessuna, le quattro voci sono:
– Name:Indica il nome del giunto che verrà utilizzato dal risolutore (Viene settato dal programma e non può essere modificato)
– Primitive: Indica il tipo di giunto
– Axis of rotation: indica la direzione dell’asse di rotazione che il giunto ha all’istante iniziale della simulazione, esso è definito mediante il versore di un vettore, il programma però accetta anche un vettore vero e proprio, tramite le sue componenti e ne calcola il versore in maniera autonoma.
– Reference CS: è il sistema di riferimento a cui è riferito il vettore che definisce l’asse di rotazione, esso può essere riferito al sistema di riferimento generale del sistema (World).
Oppure al sistema di riferimento solidale alla porta del Body collegata al giunto mediante la porta Base (Figura B.8 a destra del giunto, il Body si collega mediante la porta CS2 alla porta Base del giunto).
Oppure il sistema di riferimento solidale alla porta del body collegata al giunto mediante la porta Follower (Figura B.8 a sinistra del giunto, il giunto, mediante la porta Follower, è collegato alla porta CS1 del Body1).
Ultima classe di oggetti analizzata sono i Sensor and Anctuators, ovvero i sensori e gli attuatori. Essi, come dice già il nome, hanno il compito di misurare (sensori) o di applicare (attuatori), spostamenti velocità o forze. Le classi di oggetti sono in totale due divise a loro volta in due sottoclassi
• Sensori: i sensori hanno la necessità di essere collegati ad una porta del body che si vuole sia misurato e restituiscono un in output un vettore di dati indicizzato con il tempo di simulazione in cui sono riportate tutte le grandezze misurabili scelte dall’utente, essi si dividono in due categorie:
– Body Sensor: Sensori applicabili ad un corpo. – Joint sensor: Sensori applicabili ad un giunto.
• Attuatori: gli attuatori hanno la medesima necessità dei sensori di essere collegati ad una porta del body al quale si vuole sia applicata una fora, uno spostamento, o una velocità, è possibile settare il giunto in maniera tale che applichi un valore costante, oppure può avere in ingresso un segnale simulink variabile.Anche essi si dividono in due categorie:
– Body Actuator: Attuatori applicabili ad un corpo. – Joint Actuator: Attuatori applicabili ad un giunto.
I body actuator sono ottimi per simulare forze applicate sul corpo, mentre i Joint actuator sono ottimi per simulare attuatori che mettono in movimento il cinematismo.