Δυναμική Μηχανών I 5 6 Αριθμητική Επίλυση Δυναμικών Συστημάτων στο Περιβάλλον MATLAB και Simulink
2015 Δημήτριος Τζεράνης, Ph.D Τμήμα Μηχανολόγων Μηχανικών Ε.Μ.Π. tzeranis@gmail.com Απαγορεύεται οποιαδήποτε αναπαραγωγή χωρίς άδεια
Περιεχόμενα Προσομοίωση απόκρισης συστήματος στο MATLAB μέσω της συνάρτησης ode45 (Runge-Kutta) Προσομοίωση απόκρισης γραμμικού συστήματος στο MATLAB μέσω των συναρτήσεων ss, lsim, step Προσομοίωση απόκρισης δυναμικών συστημάτων στο Simulink 3
Μέθοδος Runge-Kutta Προσομοίωση απόκρισης συστήματος στο MATLAB μέσω της συνάρτησης ode45
Προσομοίωση σε Η/Υ Πριν την αριθμητική ολοκλήρωση, οι δυναμικές εξισώσεις πρέπει να εκραστούν ως προς τις μεταβλητές κατάστασης Γενική περίπτωση: Δυναμικές εξισώσεις ως προς τους Βαθμούς Ελευθερίας q : Μ q = h q q, q, f(t) Δυναμικές εξισώσεις ως προς τις μεταβλητές κατάστασης x : x = d dt q q = q M 1 h q q, q, f(t) = h x x, f(t) Μια επιλογή για μεταβλητές κατάστασης 5
Παράδειγμα: κίνηση εκκρεμούς Οι δυναμικές εξισώσεις για την κίνηση εκκρεμούς μάζας m που κινείται μέσω αβαρούς ράβδου μήκους L γύρω από άρθρωση (γραμμική περιστροφική απόσβεση c T ) στην οποία ασκείται ροπή τ(t) είναι: m L 2 θ + c T θ + m g L sin θ = τ(t) Οι μεταβλητές κατάστασης είναι x = θ θ Οι αντίστοιχες εξισώσεις μεταβλητών κατάστασης είναι: d dt θ θ = 1 m L 2 (τ(t) c T θ θ m g L sin θ ) = h x θ, c T θ L θ,τ(t) τ(t) m g 6
Αριθμητική Επίλυση στο MATLAB μέσω Runge-Kutta Η συνάρτηση ode45 χρησιμοποιεί μέθοδο Runge-Kutta για την αριθμητική επίλυση του προβλήματος αρχικών τιμών Όπου το διάνυσμα M.K. έχει n στοιχεία Σύνταξη εντολής στο MATLAB: x = h x x, f(t) x 0 = x 0 Res = ode45(@(t,x) gfun(t,x), Tspan, x0) Συνάρτηση matlab που παρέχει το n 1 διάνυσμα h x x, f(t) Διάνυσμα [0 tmax]. Παρέχει τα χρονικά όρια 0, t max μέσα στα οποία θα υπολογιστεί η απόκριση n 1 διάνυσμα. Παρέχει διάνυσμα της αρχικής κατάστασης x 0 7
Αριθμητική Επίλυση στο MATLAB μέσω Runge-Kutta 1. Δημιουργία μιας συνάρτησης MATLAB, η οποία υπολογίζει το n 1 διάνυσμα της παραγώγου του διανύσματος κατάστασης x = h x x, f(t) 8
Αριθμητική Επίλυση στο MATLAB μέσω Runge-Kutta 2. Δημιουργία του διανύσματος X0 της αρχικής συνθήκης 3. Δημιουργία του διανύσματος Tspan των χρονικών ορίων προσομοίωσης 4. Κάλεσμα της συνάρτησης ode45 με τις κατάλληλες εισόδους. Τα αποτελέσματα αποθηκεύονται στην δομή δεδομένων Res 9
Αριθμητική Επίλυση στο MATLAB μέσω Runge-Kutta 5. Το πεδίο x της Res περιέχει τον χρόνο t. Το πεδίο y της Res περιέχει την απόκριση των μεταβλητών κατάστασης x. Η εντολή plot(t,x) δημιουργεί την γραφική παράσταση x(t) 0.2 0.15 0.1 [rad] 0.05 0-0.05-0.1-0.15 0 20 40 60 80 100 time [sec] 10
Παραλλαγή 1: Απόκριση μόνο σε αρχικές συνθήκες θ 0 = π 3 θ 0 = 1 τ(t) = 0 1.5 1 [rad] 0.5 0-0.5-1 0 10 20 30 40 50 time [sec] 11
Παραλλαγή 2: Απόκριση σε βηματική & αρχικές συνθήκες θ 0 = π 3 θ 0 = 1 τ(t) = u s 1.5 1 [rad] 0.5 0-0.5 0 10 20 30 40 50 time [sec] 12
Παρατηρήσεις Η ode45 μπορεί να χρησιμοποιηθεί για να προσομοιώσει ένα μεγάλο εύρος εξίσώσεων κίνησης (γραμμικής ή μη, μικρής ή μεγάλης τάξης n) εκφρασμένων στην μορφή: x = h x x, f(t) Οι παράμετροι της αριθμητικής λύσης της ode45 μπορούν να επιλεγούν μέσω της συνάρτησης odeset Παρόμοιες συναρτήσεις: ode23, ode15s και ode23s Διαφορετικές μορφές της Runge-Kutta Η ode45 είναι συνάρτηση γενικής χρήσης. Πρώτη επιλογή! Οι συναρτήσεις ode15s και ode23s χρησιμοποιούνται σε «δύσκαμπτα» προβλήματα (το μέτρο των ιδιοτημών τους διαφέρει αρκετές τάξεις μεγέθους) 13
Ανάλυση γραμμικών συστημάτων Προσομοίωση απόκρισης γραμμικού συστήματος στο MATLAB μέσω των συναρτήσεων ss,lsim, step
Γραμμικά Δυναμικά Συστήματα Γραμμικές δυναμικές εξισώσεις ως προς τους βαθμούς ελευθερίας q: Μ q + C q + K q = f t Γραμμικές δυναμικές εξισώσεις ως προς τις μεταβλητές κατάστασης x = A x + Β f t y = C x + D f t A = O M 1 K I M 1 C Β = O M 1 x = q q y Μεταβλητές κατάστασης Μεταβλητές ενδιαφέροντος 15
Γραμμικά Δυναμικά Συστήματα Παράδειγμα: Εξισώσεις κίνησης εκρεμμούς Όταν η γωνία θ είναι μικρή, τότε sin θ θ οπότε οι εξισώσεις κίνησης είναι γραμμικές: m L 2 θ + c T θ + m g L θ = τ(t) Οι δυναμικές εξισώσεις ως προς τις μεταβλητές κατάστασης x = θ θ είναι: d dt θ θ = O 1 g L c T m L 2 θ θ + O 1 m L 2 τ(t) A B 16
Γραμμικά Δυναμικά Συστήματα Παράδειγμα: Εξισώσεις κίνησης εκρεμμούς Έστω ότι μας ενδιαφέρει η γωνία του εκκρεμούς y = θ = 1 0 θ θ + 0 τ(t) Το σύστημα εξισώσεων κατάστασης που περιγράφει την απόκριση της εξόδου y = θ είναι: x = A x + Β τ(t) y = C x + D τ(t) A = O 1 g L c T m L 2 B = O 1 m L 2 C = 1 0 D = 0 17
Ορίζοντας το Μοντέλο ενός Γραμμικού Δυναμικού Συστήματος στο MATLAB (συνάρτηση ss) 1. Ορίζουμε τις παραμέτρους του προβλήματος 2. Ορίζουμε τα μητρώα A, B, C και D 3. Η εντολή ss δημιουργεί το «μοντέλο» (είδος κλάσης) sys που αντιστοιχεί στο δυναμικό σύστημα x = A x + Β f(t) y = C x + D f(t) 18
Προσομοίωση Απόκρισης ΓραμμικούΔυναμικού Συστήματος σε Βηματική Διέγερση στο MATLAB (συνάρτηση step) 1. Υπολογίσμός της απόκριση του μοντέλου sys σε βηματική είσοδο για διάρκεια 10 sec μέσω της συνάρτησης step 2. Δημιουργία της γραφικής παράστασης y(t) μέσω της συνάρτηση plot 0.2 0.15 [rad] 0.1 0.05 0 0 2 4 6 8 10 time [sec] 19
Προσομοίωση Απόκρισης ΓραμμικούΔυναμικού Συστήματος σε Τυχαία Διέγερση στο MATLAB (συνάρτηση lsim) 1. Δημιουργία διανύσματος χρόνου t 2. Δημιουργία διανύσματος εισόδου u(t) 3. Υπολογισμός απόκρισης y του μοντέλου sys στην είσοδο u(t) μέσω της συνάρτησης lsim 4. Δημιουργία της γραφικής παράστασης υ(t) και y(t) μέσω της συνάρτηση plot 2 0.12 0.1 (t) [Nm] 1.5 1 0.5 [rad] 0.08 0.06 0.04 0.02 0 0 0 5 10 15 20 25 30 time [sec] -0.02 0 10 20 30 time [sec] 20
Υπολογισμός Απόκρισης Συχνότητας ΓραμμικούΔυναμικού Συστήματος στο MATLAB (συνάρτηση bode) Bode Diagram 0-10 -20 Magnitude (db) -30-40 -50-60 -70-80 0-45 Phase (deg) -90-135 -180 10-1 10 0 10 1 10 2 Frequency (rad/s) 21
Παρατηρήσεις To MATLAB παρέχει πολλές συναρτήσεις για την ανάλυση γραμμικών δυναμικών συστημάτων παράσταση (π.χ. tf, series, parallel, feedback, ss2tf) ανάλυση (π.χ. pole, zero) Περισσότερες πληροφορίες στις συναρτήσεις του control systems toolbox 22
Modular ανάλυση πολύπλοκων συστημάτων Προσομοίωση απόκρισης δυναμικών συστημάτων στο Simulink
Simulink Γραφικό περιβάλλον για μοντελοποίηση δυναμικών συστημάτων 24
Εργαλειοθήκες Simulink Ένα δυναμικό σύστημα περιγράφεται γραφικά χρησιμοποιώντας διάφορα «στοιχεία» 25
Βασικά Εργαλεία Simulink Κάθε στοιχείο περιγράφει μια σχέση εισόδου-εξόδου y = f(x) Κέρδος (gain): y = Kx Ολοκληρωτής (integrator): y = x τ dτ + y(0) 0 t Άθροισμα (sum): z = x + y 26
Βασικά Εργαλεία Simulink Κάθε στοιχείο περιέχει ιδιότητες. Κάνοντας διπλό κλικ ανοίγει παράθυρο όπου καταγράφονται οι ιδιότητες Κέρδος (gain): Ολοκληρωτής (integrator): Άθροισμα (sum): 27
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink Παράδειγμα: Κατάστρωση των εξισώσεων κίνησης εκκρεμούς σε simulink c T τ(t) L θ m g m L 2 θ + c T θ + m g L sin θ = τ(t) d dt θ θ = 1 m L 2 (τ(t) c T θ θ m g L sin θ ) 28
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 1. Προσθήκη n ολοκληρωτών (n: είναι τάξη συστήματος) Με drag n drop από την εργαλειοθήκη commonly used blocks Εδώ n=2 Διπλο κλικ στην επιφάνεια: προσθήκη σχολίου Κλικ στην έξοδο στοιχείου: δημιουργία βέλους Κλικ στο όνομα: Αλλαγή ονόματος 29
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 1. Προσθήκη n ολοκληρωτών (n: είναι τάξη συστήματος) Διπλό κλικ στο block γράφω x0 στο πεδίο initial condition Διπλό κλικ στο block γράφω u0 στο πεδίο initial condition 30
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 2. Προσθήκη βηματικής εισόδου (διέγερσης) Μεταφoρά (drag n drop ) ενός εικονιδίου step Αντιστοιχεί σε μια βηματική (σταθερά) είσοδο t(τ) Διπλό κλικ στο block γράφω 0 στο πεδίο step time 31
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 3. Πρώτη εξίσωση κατάστασης d dt θ = θ θ t = 0 t θ τ dτ + θ 0 θ t = [ 1 s ]{ θ τ } 32
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 4. Δεύτερη εξίσωση κατάστασης θ t = d dt θ = 1 m L 2 τ t c T 0 t 1 m L 2 τ t c T θ t = 1 s { 1 m L 2 τ t c T θ m g L sin θ θ m g L sin θ dτ + θ m g L sin θ } θ 0 33
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink θ t = 1 s { 1 m L 2 τ t c T θ m g L sin θ } Δεξί κλικ>flip block block κοιτάζει αριστερά Κλίκ στην είσοδο κέρδους ξεκινά βέλος. Σύνδεση στο dθ/dt Διπλό κλικ στο block γράφω ct στο πεδίο gain 34
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink θ t = 1 s { 1 m L 2 τ t c T θ m g L sin θ } Drag n drop trigonometric function από εργαλειοθήκη math operations Σύνδεση στο θ flip block 35
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink θ t = 1 s { 1 m L 2 τ t c T θ m g L sin θ } Διπλό κλικ στο block γράφω m*g*l στο πεδίο gain 36
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink θ t = 1 s { 1 m L 2 τ t c T θ m g L sin θ } Drag n drop sum από εργαλειοθήκη common used blocks Διπλό κλικ στο block γράφω -+- στο πεδίο list of signs 37
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink θ t = 1 s { 1 m L 2 τ t c T θ m g L sin θ } Σύνδεση των εξόδων των gains και της εξόδου του block step με τις κατάλληλες είσόδους του sum 38
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink θ t = 1 s { 1 m L 2 τ t c T Σύνδεση εξόδου του sum στην είσοδο gain 3. θ m g L sin θ } Σύνδεση της εξόδου του gain2 στην είσοδο integrator 1. Διπλό κλικ στο block γράφω 1/(m*L^2) στο πεδίο gain 39
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 5. Προσθήκη παρατηρητή (scope) Μεταφoρά (drag n drop ) ενός εικονιδίου scope από την εργαλειοθήκη «commonly used blocks Σύνδεση της εξόδου του integrator 2 με το scope: μετρά το θ(t) 40
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 6. Προσομοίωση 1. Ορισμός τιμών παραμέτρων στο MATLAB 2. Εκτέλεση μοντέλου simulink Κουμπί «run 41
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 7. Παρουσίαση αποτελεσμάτων Διπλό κλικ στο scope Δεξί κλικ>autoscale 42
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 8. Προσθήκη ενός εικονιδίου scope για την γωνιακή ταχύτητα 43
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 9. Δημιουργία ενός υπο-μοντέλου Επιλογή με ποντίκι όλων των blocks εκτός της πηγής constant και των δύο scope Δεξί κλικ>create sub-system 44
Παράδειγμα: Κατάστρωση εξισώσεων κίνησης στο Simulink 10.Αποτέλεσμα: ένα υποσύστημα που περιγράφει την δυναμική του εκκρεμούς Διπλό κλικ 45
Δημιουργία Υβριδικών Μοντέλων στο Simulink Παράδειγμα: Ηλεκτρομηχανικό σύστημα κινητήρα-εκκρεμούς Μηχανικό υποσύστημα (εκκρεμές) m L 2 θ + c T θ + m g L sin θ = τ m (t) 46
Δημιουργία Υβριδικών Μοντέλων στο Simulink Παράδειγμα: Ηλεκτρομηχανικό σύστημα κινητήρα-εκκρεμούς Ηλεκτρικό υποσύστημα κινητήρα: di dt = 1 L e (V in R i V e ) 47
Δημιουργία Υβριδικών Μοντέλων στο Simulink Παράδειγμα: Ηλεκτρομηχανικό σύστημα κινητήρα-εκκρεμούς Ηλεκτρικο-μηχανική μετατροπή τ m t = k Τ i V e = k Τ θ 48
Δημιουργία Υβριδικών Μοντέλων στο Simulink Παράδειγμα: Ηλεκτρομηχανικό σύστημα κινητήρα-εκκρεμούς Απόκριση σε βηματική είσοδο για L e = k Τ = R = L = m = c T = 1 49
Modular Δημιουργία Πολύπλοκλων Μοντέλων στο Simulink Μοντέλα που περιγράφουν πολύπλοκα συστήματα μπορούν να δημιουργηθούν συνδυάζοντας μοντέλα των υποσυστημάτων τους μέσω κατάλληλων συνδέσεων (ενισχυτών/αναστροφέων) Μοντελοποιώντας θόρυβο και ατέλειες στα υποσυστήματα Μοντελοποιώντας διάφορα είδη μη-γραμμικοτήτων 50