Main Content

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

Progettare un sistema in Simulink

Il paradigma della progettazione Model-Based è incentrato su modelli di componenti fisici e sistemi su cui basarsi per attività di progettazione, test e implementazione. Questo tutorial aggiunge un componente progettato a un modello di sistema esistente.

Modello a sistema aperto

Il modello è un robot piatto che può muoversi o ruotare con l'aiuto di due ruote, simile a un robot aspirapolvere domestico. Aprire il modello entrando nella riga di comando di MATLAB®:

open_system('system_model.slx')

Questo tutorial analizza il presente sistema e vi aggiunge funzionalità.

Identificare i componenti progettati e gli obiettivi di progettazione

Specificare l'obiettivo di progettazione è il primo passo fondamentale di un lavoro di progettazione. Anche in un sistema semplice potrebbero essere presenti più obiettivi di progettazione, persino concorrenti. Si considerino gli obiettivi del modello dell'esempio:

  • Progettare un controller che modifichi l'input di forza in modo che le ruote girino alla velocità desiderata.

  • Progettare input che facciano muovere il dispositivo su un percorso predeterminato.

  • Progettare un sensore e un controller in modo che il dispositivo si muova seguendo una linea.

  • Progettare un algoritmo di pianificazione in modo che il dispositivo raggiunga un determinato punto usando il percorso più breve possibile ed evitando gli ostacoli.

  • Progettare un algoritmo di pianificazione in modo che il dispositivo raggiunga un determinato punto ed evitando gli ostacoli.

Questo tutorial progetta un sistema di allarme. Determinare i parametri per un sensore che misuri la distanza da un ostacolo. Un sensore perfetto misura con precisione la distanza da un ostacolo. Un sistema di allarme campiona queste misurazioni a intervalli fissi in modo che l'output sia sempre entro 0,05 m dalla misurazione. Il sistema genera un allarme in tempo, così da permettere al robot di fermarsi prima di colpire l'ostacolo.

Analizzare il comportamento del sistema usando la simulazione

La progettazione del nuovo componente richiede l'analisi del movimento lineare del robot per determinare:

  • Quanto può percorrere il robot alla massima velocità dopo l'interruzione dell'alimentazione alle ruote

  • La velocità massima del robot

Simulare il modello con un segnale di input di forza che avvia il movimento, attendere che il robot raggiunga una velocità costante, quindi impostare la forza su zero:

  1. Nel modello, fare doppio clic sul sottosistema denominato Inputs.

  2. Eliminare l'input del passaggio esistente e aggiungere un blocco Pulse Generator.

  3. Impostare questi parametri per il blocco Pulse Generator:

    • Ampiezza: 1

    • Periodo: 20

    • Larghezza d'impulso: 15

    Questi parametri sono progettati per garantire il raggiungimento della velocità massima. È possibile modificare i parametri per verificarne l'effetto.

  4. Simulare il modello per 20 secondi.

    Per analizzare i risultati della simulazione, visualizzare i segnali collegati agli scope flottanti nel modello.

    Il primo scope mostra che la velocità del robot diminuisce rapidamente dopo che l'impulso che rappresenta la forza di input scende a zero a un tempo di simulazione di 3 secondi. La velocità si avvicina asintoticamente a zero, ma non raggiunge mai completamente. Una modellazione accurata della dinamica a bassa velocità senza forze esterne richiede una rappresentazione molto più complessa del sistema. Per l'obiettivo in questione, questa rappresentazione approssimativa del sistema è comunque sufficiente.

    The scope shows the speed of the robot over the 20 second simulation.

    Il secondo scope mostra la posizione del robot nel corso della simulazione. All'avvio, la posizione cambia più rapidamente. Ad un tempo di simulazione di circa 3 secondi, la posizione cambia più lentamente al diminuire della velocità del robot.

    The scope shows the position of the robot over the 20 second simulation.

Ingrandire il grafico dello scope che mostra la posizione del robot. Al tempo 3, la posizione del robot è a circa 0.55 m. Al termine della simulazione, la posizione del robot è a circa 0.7 m. Poiché la velocità del robot è molto vicina allo zero al termine della simulazione, i risultati mostrano che il robot si muove meno di 0.16 m dopo che la forza esterna si è azzerata.

The scope shows a closer view of the robot position over the 20 second simulation. The maximum value on the y-axis is 0.7.

Per trovare la velocità massima:

  1. Ingrandire l'area piatta del segnale di velocità nel tempo, da 1 s a 3 s.

  2. Uscire dalla modalità zoom facendo nuovamente clic sul pulsante dello zoom.

  3. Fare clic sulle misurazioni del cursore .

  4. Posizionare il secondo cursore nell'area in cui la curva di velocità è piatta.

    The scope shows a closely zoomed view of the robot speed in the part of the simulation where the pulse signal is high. The cursor measurements panel is shown in the Scope window to the right of the plot.

La colonna Value nel pannello Cursor Measurements indica che la velocità massima del robot è di 0.183 m/s. Per calcolare il tempo necessario al robot per percorrere 0,05 m, dividere 0,05 m per 0,183 m/s per ottenere il risultato di 0,27 sec.

Progettare i componenti e verificare il progetto

Il progetto del sensore consiste in questi componenti:

  • La misurazione della distanza tra il robot e l'ostacolo. In questo esempio si suppone che la misurazione sia perfetta.

  • Intervallo di tempo tra ciascuna misurazione della distanza effettuata dal sistema di allarme: per mantenere l'errore di misurazione al di sotto di 0,05 m, l'intervallo di campionamento deve essere inferiore a 0,27 sec. Usare 0,25 secondi.

  • Distanza alla quale il sensore produce un allarme: l'analisi mostra che il rallentamento deve iniziare nel momento in cui il robot si trova a circa 0,16 m dall'ostacolo. La distanza di allarme effettiva deve anche tenere conto dell'errore delle misurazioni discrete, pari a 0,05 m.

Aggiungere un componente progettato

Costruire il sensore:

  1. Creare un sottosistema con quattro porte di input e una di output. Il sottosistema riceve gli input per le coordinate x e y del robot e per le coordinate x e y dell'ostacolo. Il segnale di allarme prodotto dal sensore si collega alla porta di output.

    The view of the sensor subsystem in the parent diagram shows the input and output ports.

  2. Costruire il sottosistema di misurazione della distanza. Nel sottosistema denominato Sensor model, utilizzare il blocco Subtract, il blocco Math Function con la funzione magnitude^2, il blocco Sum e il blocco Sqrt per implementare il calcolo della distanza. Si noti che all'interno del sottosistema, la disposizione delle porte di input non deve necessariamente corrispondere alla disposizione delle porte sull'interfaccia del blocco Subsystem.

    Blocks inside the subsystem that represents the sensor implement the distance calculation.

  3. Per modellare il campionamento, aggiungere un blocco Zero-Order Hold al sottosistema della libreria Discrete e impostare il parametro Sample time del blocco su 0.25.

  4. Collegare il risultato del calcolo della distanza all'input del blocco Zero-Order Hold.

  5. Per modellare la logica di allarme, aggiungere un blocco Compare to Constant dalla libreria Operazioni logiche e di bit e impostare questi parametri del blocco:

    • Operator: <=

    • Constant Value: 0.21

    • Output data type: boolean

    Con questi valori dei parametri, il valore di output del blocco è 1 quando il valore di input è inferiore o uguale a 0.21.

  6. Collegare l'output del blocco Zero-Order Hold all'input del blocco Compare to Constant.

  7. Infine, collegare l'output del blocco Compare to Constant al blocco Outport denominato Alert.

    The block diagram shows the contents of the subsystem that models the sensor.

Verificare il progetto

Testare il progetto con una posizione dell'ostacolo di X = 0.65, Y = 0 usando i blocchi Constant come input al sottosistema del modello del sensore. Questo test verifica la funzionalità del progetto nella direzione X. È possibile creare test simili per diversi percorsi. Questo modello genera solo un allarme. Non esercita alcun controllo sul robot.

  1. Impostare la posizione dell'ostacolo. Aggiungere due blocchi Constant dalla libreria Sorgenti per impostare i valori costanti su 0.65 e 0. Collegare gli output di posizione del robot agli input del sensore.

  2. Aggiungere uno scope all'output dell'allarme.

    The view of the top model shows the floating scope added to the Alert output of the subsystem that represents the sensor.

  3. Simulare il modello.

Il grafico della posizione del robot nello scope è uguale a quello dell'esecuzione precedente.

The scope shows the position of the robot over the 20 second simulation.

Lo scope collegato al segnale di allarme mostra che il valore del segnale di allarme diventa 1 quando il robot si trova entro 0.21 m dalla posizione dell'ostacolo, soddisfacendo il requisito di progettazione di questo componente.

The scope shows the value of the alert signal over the 20 second simulation.

Per i sistemi reali con componenti complessi e requisiti formali, la serie di prodotti Simulink® include strumenti aggiuntivi per perfezionare e automatizzare il processo di progettazione. Requirements Toolbox™ fornisce strumenti per definire formalmente i requisiti e collegarli ai componenti del modello. Simulink Control Design™ può semplificare la progettazione se si vuole costruire un controller per questo robot. Simulink I prodotti Verification and Validation™ stabiliscono un quadro formale per testare componenti e sistemi.

Argomenti complementari