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:
Nel modello, fare doppio clic sul sottosistema denominato
Inputs
.Eliminare l'input del passaggio esistente e aggiungere un blocco Pulse Generator.
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.
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.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.
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.
Per trovare la velocità massima:
Ingrandire l'area piatta del segnale di velocità nel tempo, da 1 s a 3 s.
Uscire dalla modalità zoom facendo nuovamente clic sul pulsante dello zoom.
Fare clic sulle misurazioni del cursore .
Posizionare il secondo cursore nell'area in cui la curva di velocità è piatta.
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:
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.
Costruire il sottosistema di misurazione della distanza. Nel sottosistema denominato
Sensor model
, utilizzare il blocco Subtract, il blocco Math Function con la funzionemagnitude^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.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
.Collegare il risultato del calcolo della distanza all'input del blocco Zero-Order Hold.
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 a0.21
.Collegare l'output del blocco Zero-Order Hold all'input del blocco Compare to Constant.
Infine, collegare l'output del blocco Compare to Constant al blocco Outport denominato
Alert
.
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.
Impostare la posizione dell'ostacolo. Aggiungere due blocchi Constant dalla libreria Sorgenti per impostare i valori costanti su
0.65
e0
. Collegare gli output di posizione del robot agli input del sensore.Aggiungere uno scope all'output dell'allarme.
Simulare il modello.
Il grafico della posizione del robot nello scope è uguale a quello dell'esecuzione precedente.
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.
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.