Main Content

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.

A flat circular robot is shown from the top. The center of the circular robot perimeter is the origin of the polar coordinate system. The direction of motion is indicated by the angle theta, which is marked as about 30 degrees above the horizontal axis pointing right. The wheel axis is perpendicular to the direction of motion. The wheels are lined up parallel to the direction of motion.

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

The block diagram lists these components from left to right: force inputs, left wheel, right wheel, rotation computation, coordinate transformation, sensor.

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:

  1. Aprire un nuovo modello Simulink. Vedere Aprire un nuovo modello.

  2. Aprire il browser delle librerie. Vedere Aprire il browser delle librerie di Simulink.

  3. Aggiungere i blocchi Subsystem. Trascinare cinque blocchi Subsystem della libreria Ports & Subsystems al nuovo modello.

  4. Fare clic su un sottosistema. Nella scheda Format, fare clic sull'elenco a discesa Auto. Deselezionare la casella Hide Automatic Block Names.

    The Auto drop-down list is expanded. The Hide Automatic Block Names check box is cleared.

  5. 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.

    Five Subsystem blocks have the names: Inputs, Left Wheel, Right Wheel, Rotation, and Coordinate Transformation.

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.

BloccoInputOutputInformazioni correlate
InputNessuno

Forza alla ruota destra

Forza alla ruota sinistra

Non applicabile
Ruota destraForza alla ruota destraVelocità della ruota destraDirezionale, negativo significa direzione inversa
Ruota sinistraForza alla ruota sinistraVelocità della ruota sinistraDirezionale, negativo significa direzione inversa
Rotazione Differenza di velocità tra le ruote destra e sinistraAngolo di rotazioneMisurato in senso antiorario
Trasformazione delle coordinate

Velocità normale

Angolo di rotazione

Velocità in X

Velocità in Y

Non applicabile
Sensore

Coordinata X

Coordinata Y

NessunoNessun 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:

  1. Aggiungere le porte di input e di output necessarie a ogni sottosistema. Fare doppio clic su un blocco Subsystem.

    An Inport block named In1 connects to an Outport block named Out1.

    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.

    The five Subsystem blocks are shown with previews of the subsystem contents visible. In the Subsystem block named Inputs, Outport blocks named Left force and Right force are visible.

    Quando si copia un blocco Inport per crearne uno nuovo, usare il comando Paste (Ctrl+V).

  2. Calcolare gli input richiesti ai sottosistemi Coordinate Transform e Rotation dalle velocità della ruota sinistra e della ruota destra.

    1. 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.

    2. 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.

      The Subsystem block named Left Wheel is above the Subsystem block named Right Wheel. The input port of both blocks is named Force, and the output port is naemd Speed. Both output port connect to an Add block that connects to a Gain block with the value of 1/2. Both output ports also connect to a Subtract block that subtracts the speed of the left wheel from the speed of the right wheel and then connects to a Gain block with a value of 1/2.

  3. 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.

    The Subsystem named Coordinate Transform has two input ports, named Linear speed and Angle, and two output ports named X speed and Y speed. Both output ports connect to an Integrator block.

  4. Completare i collegamenti del sistema.

    In the completed model, the Subsystem block named Subsystem connects to the Subsystem blocks named Left Wheel and Right Wheel. The wheel subsystems connect to an Add block that connects to a Gain block with the value of ½ that connects to the Subsystem block named Coordinate Transform. The wheel subsystems also connect to a Subtract block that subtracts the left wheel speed from the right wheel speed and connects to a Gain block with the value of ½. The Gain block connects to the Subsystem block named Rotation that connects to the Subsystem block named Coordinate Transform. Both of the output ports of the Coordinate Transform subsystem connect to an integrator block.

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.

ParametroBloccoSimboloValoreTipo
Massa

Ruota sinistra

Ruota destra

m2,5 kg Variabile
Resistenza all'avanzamento

Ruota sinistra

Ruota destra

k_drag30 Ns2/mVariabile
Raggio del robotRotazioner0,15 mVariabile
Angolo inizialeRotazioneNessuno0 radFisso
Velocità iniziali

Ruota sinistra

Ruota destra

Nessuno

0 m/s

0 m/s

Fisso
Coordinate iniziali (X, Y)IntegratoriNessuno(0, 0) mFisso

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;

Argomenti complementari