Εισαγωγή στον Αυτόματο Έλεγχο (8.3.01.5) Σημειώσεις Μαθήματος 2011-2012 Γεώργιος Παπαλάμπρου 2 Δρ. Γεώργιος Παπαλάμπρου Λέκτορας ΕΜΠ Εργαστήριο Ναυτικής Μηχανολογίας Σχολή Ναυπηγών Μηχανολόγων Μηχανικών Εθνικό Μετσόβιο Πολυτεχνείο email: [email protected] http://www.lme.ntua.gr ενημέρωση: 3/11/2011 ΓΠ XELATEX Περιεχόμενα 1 Χρήση MATLAB/Simulink 1.1 Εισαγωγή . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Εισαγωγή . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Χρήση βοήθειας/Επιδείξεις . . . . . . . . . . . . . . 1.2.3 Σύστημα . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4 Χειρισμός μητρών, διανυσμάτων . . . . . . . . . . . 1.2.5 Δημιουργία Διαγράμματος . . . . . . . . . . . . . . 1.2.6 Δημιουργία Πολλαπλών Διαγραμμάτων . . . . . . . 1.2.7 Ρουτίνες, Ροή προγράμματος . . . . . . . . . . . . . 1.2.8 Προσομοίωση . . . . . . . . . . . . . . . . . . . . . 1.2.9 Control Toolbox: σχεδιασμός στο πεδίο χρόνου . . . 1.2.10 Control Toolbox: σχεδιασμός στο πεδίο συχνότητας 1.3 Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Εισαγωγή . . . . . . . . . . . . . . . . . . . . . . . 1.4 Συμβολικός προγραμματισμός . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 6 6 7 7 7 8 9 10 12 12 16 17 20 4 ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 Χρήση MATLAB/Simulink 1.1 Εισαγωγή Στα πλαίσια των μαθημάτων «Εισαγωγή στον Αυτόματο Έλεγχο» και ”Ειδικά Συστηματα Ελέγχου Πλοίου” καθώς και των σχετικών εργαστηριακών ασκήσεων, γίνεται ευρύτατη χρήση MATLAB/Simulink/Control System Toolbox για τους υπολογισμούς, τα γραφικά και το έλεγχο σε πραγματικό χρόνο. Στο παρόν κεφάλαιο παρουσιάζεται συνοπτικά το MATLAB/Simulink, αρχικά με γενικές εντολές και κατόπιν με έμφαση στις εφαρμογές ελέγχου με το Control System Toolbox. Τέλος, παρουσιάζεται σε συντομία το Symbolic Toolbox, που επιτρέπει επίλυση εξισώσεων με συμβολικό προγραμματισμό. Έχει γίνει προσπάθεια να υπάρχει ο σχετικός κώδικας σε κάθε λυμμένο παράδειγμα των σημείωσεων, δίνοντας έτσι την δυνατότητα στο σπουδαστή να επαληθεύσει τα αποτελέσματα. Εξοικίωση με το Simulink για τον έλεγχο διατάξεων παρέχεται μέσω της άσκησης του ανεστραμμένου εκκρεμούς στα πλαίσια του μαθήματος. Για περισσότερες πληροφορίες για το MATLAB/Simulink γενικά προτείνονται οι αναφορές [3],[6],[7]. Για εφαρμογές ελέγχου και το Control System Toolbox προτείνονται οι αναφορές [1], [2] και οι [4], [5]. Το MATLAB/Simulink δημιουργήθηκε το 1984, στοχεύοντας στη δημιουργία υπολογιστικής πλατφόρμας για επιστήμονες και μηχανικούς πέραν των καθιερωμένων Fortran και C, συνδιάζοντας μαθηματικούς υπολογισμούς με βάση τους πίνακες αλλά και χρήση γραφικών. Έχει επίσης την δυνατότητα συνεργασίας με συμβατό hardware με τη μορφή βιβλιοθηκών ή λειτουργικού συστήματος πραγματικού χρόνου, το XPC Target. Εναλλακτικά με το MATLAB/Simulink, μπορεί κάποιος να χρησιμοποιήσει τις εφαρμογές Octave ή Scicos με άδεια χρήσης ελεύθερου λογισμικού (GNU). Η εφαρμογή Octave δημιουργήθηκε το 1988 προκειμένου να επιλύσει προβλήματα χημικής κινητικής (chemical reactor design). Η εφαρμογή Scicos δημιουργήθηκε το 1982 και έχει τη δυνατότητα επέκτασης στο Scicos-RTAI, για επίλυση προβλημάτων ελέγχου σε πραγματικό χρόνο με συμβατό hardware σε περιβάλλον Linux. Εναλλακτικά με το Simulink επίσης μπορεί κάποιος να χρησιμοποιήσει την εφαρμογή Labview της National Instruments. 5 6 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK 1.2 MATLAB 1.2.1 Εισαγωγή Στα πλαίσια των συστημάτων ελέγχου, ο μηχανικός είναι χρήσιμο να γνωρίζει τις παρακάτω έννοιες στο περιβάλλον MATLAB/Simulink. • Workspace • Χειρισμός μητρών, διανυσμάτων • Διαγράμματα • Προγραμματισμός (scripts), ρουτίνες (functions), βρόχοι επαναλήψεων • Προσομοίωση, υπολογισμοί • Control Toolbox για ”μοντέρνο έλεγχο” (πεδίο χρόνου): Χώρος κατάστασης, τοποθέτηση πόλων, βέλτιστος έλεγχος • Control Toolbox για ”κλασσικό έλεγχο” (πεδίο συχνότητας): διαγράμματα πόλων, τόπου ριζών (root locus), συχνότητας (Bode), πολικά (Nyquist), σχεδιασμός ελεγκτών • Συνεργασία τμημάτων προγράμματος με hardware (εκτελέσιμος κώδικας-executable), αυτόματη δημιουργία κώδικα σε γλώσσα C (code generation) 1.2.2 Χρήση βοήθειας/Επιδείξεις Το MATLAB διαθέτει εγκατεστημένο σύστημα βοήθειας (Help) και επίδειξης (Demos). Ο χρήστης για να καλέσει βοήθεια (Help) μπορεί από τη γραμμή εντολών να δώσει τη λέξη help και την αντίστοιχη εντολή (αν είναι γνωστή). Έτσι για παράδειγμα έχουμε τη βοήθεια της εντολής αποθήκευσης σε αρχείο (save). >> help save SAVE Save workspace variables to file. SAVE(FILENAME) stores all variables from the current workspace in a MATLAB formatted binary file (MAT-file) called FILENAME. Επίσης διαθέσιμα είναι πολλά παραδείγματα με μορφή επίδειξης (Demos). Στη γραμμή εργαλείων του MATLAB ο χρήστης δίνει Help|Demos και στη συνέχεια επιλέγει κάποιο παράδειγμα. 1.2. MATLAB 7 1.2.3 Σύστημα s=’hello world’ a ̸= A help plot clear clear var1 who save le save le var1 load le33 string s case sensitive Βοήθεια για την εντολή plot Διαγραφή όλων των μεταβλητών Διαγραφή μεταβλητής var1 Εμφάνιση όλων των ονομάτων μεταβλητών Αποθήκευση όλων των μεταβλητών σε αρχείο le Αποθήκευση μεταβλητής var1 Φορτώνεται το αρχείο le33, mat/txt 1.2.4 Χειρισμός μητρών, διανυσμάτων a = [1 2 3;21 43 9] a = 1:3 a*b a.*b a’ Στοιχεία πίνακα a Στοιχεία από 1 ως 3 Πολλαπλασιασμός Πολλαπλασιασμός στοιχείων Ανάστροφος (transpose) 1.2.5 Δημιουργία Διαγράμματος t = 0:0.1:7 y = sin(t) plot(t,y) plot(t,y,’r+’,t,y*0.7,’g–’) title(’Response’) xlabel(’Time(s)’) ylabel(’Distance (m)’) legend(’speed’,’acceleration’) axis([1 5 -3 5]) grid on hold on Ορισμός διανύσματος χρόνου Υπολογισμός ημιτόνου Διάγραμμα y σε συνάρτηση χρόνου t Διάγραμμα y, κόκκινη γραμμή με +, y*0.7, πράσινη γραμμή διακεκομένη Τίτλος διαγράμματος Τίτλος x άξονα Τίτλος y άξονα Υπόμνημα Καθορισμός ορίων αξόνων Εμφάνιση πλέγματος Διατήρηση τρέχοντος διαγράμματος και των ιδιοτήτων του, ώστε επόμενα διαγράμματα να τυπωθούν πάνω στο τρέχον πχ με εντολή plot(t,y*0.3) MATLAB 1.2.1 % make plot t = 0:0.1:7; y = sin(t); plot(t,y); plot(t,y,'r+',t,y*0.7,'g--'); title('Response'); xlabel('Time(s)'); ylabel('Distance (m)'); legend('speed','acceleration'); 8 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK axis([1 5 -3 5]) ; grid on ; hold on Το αποτέλεσμα φαίνεται στην εικόνα 1.1. Το γράφημα μπορεί να αποθηκευτεί ως εικόνα σε μορφή jpg, pdf, png,... όταν στο παράθυρο του γραφήματος επιλεγεί File|Save as|Save as type...jpg/pdf/png/.... Σχήμα 1.1: Διάγραμμα 1.2.6 Δημιουργία Πολλαπλών Διαγραμμάτων subplot(2,1,1) plot(t,y) xlabel(’Time(s)’) ylabel(’Variable 1’) subplot(2,1,2) plot(t,y*0.3) xlabel(’Time(s)’) ylabel(’variable 2’) grid on/off plot 2 γραμμών Χ 1 στήλης, στοιχείο (1,1) Διάγραμμα y1 σε συνάρτηση χρόνο t Τίτλος x άξονα Τίτλος y άξονα plot 2 γραμμών Χ 1 στήλης, στοιχείο (2,1) Διάγραμμα y2 σε συνάρτηση χρόνο t Τίτλος x άξονα Τίτλος y άξονα Εμφάνιση πλέγματος MATLAB 1.2.2 % use of subplot subplot(2,1,1) plot(t,y) xlabel('Time(s)') ylabel('Variable 1'); grid on subplot(2,1,2) plot(t,y*0.3) 1.2. MATLAB 9 xlabel('Time(s)') ylabel('variable 2') grid on Το αποτέλεσμα φαίνεται στην εικόνα 1.2. Το γράφημα μπορεί να αποθηκευτεί και πάλι όπως στο προηγούμενο παράδειγμα ως εικόνα σε μορφή jpg, pdf, png,.... Σχήμα 1.2: Πολλαπλά διαγράμματα 1.2.7 Ρουτίνες, Ροή προγράμματος Ακολουθεί MATLAB: m- les (scripts) για Ρουτίνες (functions). MATLAB 1.2.3 % filename: myfile.m % calculate mean value % revision: 25/12/2008, g. papalambrou %------- comment ------------a=12; b=23; cc=(a+b)/2 function y=meanx(x) % mean average or mean value. [m,n]=size(x) if m ==1 m=n; end 10 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK y = sum(x)/m; Αν θέσουμε z = 1 : 99, η μέση τιμή (mean value) βρίσκεται δίνοντας mean(z), με αποτέλεσμα στη γραμμή εντολών το ans = 50. Ακολουθεί MATLAB: Προγραμματισμός με βρόχους (επαναλήψεις). MATLAB 1.2.4 %------- for loop ------------for i=1:m for j=1:n H(i,j) = 1/(i+j); end end %------- if loop ------------if ((attendance >= 0.90) & (grade >= 60)) pass = 1; end %------- while loop ------------while (b = 0) & (a/b > 18.5) var1 = 123455 1.2.8 Προσομοίωση Κατά την προσομοίωση (simulation) ενός δυναμικού συστήματος, επιλύεται η διαφορική εξίσωση (ΔΕ), λαμβάνοντας υπόψη τις αρχικές συνθήκες. ode45(odefun, t0,tf) επίλυση διαφορικής εξίσωσης Συνήθως υπάρχουν δύο προγράμματα σε MATLAB, όπου το πρώτο καλεί την εντολή επίλυσης της ΔΕ (ode) ενώ το δεύτερο περιέχει την ΔΕ. Παράδειγμα 1.2.5 Σκοπός: Προσομοίωση συστήματος με επίλυση της διαφορικής εξίσωσης. Η διαφορική εξίσωση συστήματος δεξαμενής με υγρό είναι √ H + k2 Q1 √ A2 2g k1 = − A1 H˙ = k1 k2 = 1 ρA1 (1.1) (1.2) (1.3) όπου H είναι το ύψος του υγρού στη δεξαμενή, k1 ,k2 είναι σταθερές, Q1 είναι η παροχή, Q1 είναι η επιφάνεια της δεξαμενής, A2 είναι η διατομή του αγωγού εξόδου, ρ είναι η πυκνότητα του υγρού. 1.2. MATLAB 11 Γίνεται χρήση του προγράμματος m1.m, όπως φαίνεται παρακάτω. Η ρουτίνα ode45 χρησιμοποιεί ως είσοδο τη ρουτίνα Hdot, που ακολουθεί ως ένα ξεχωριστό πρόγραμμα, hdot.m. Το αποτέλεσμα φαίνεται στην εικόνα 1.3. Σχήμα 1.3: Η στάθμη του υγρού στη δεξαμενή που παρουσιάζει την μεταβολή της στάθμης της δεξαμενής. MATLAB 1.2.6 % usage: solve the differential equation of liquid level % requires input file: hdot.m % % filename: m1.m % modified: 20/11/2008, g. papalambrou %-------------------------------------------------------% Constants global RHO G RHO=1000; G=9.8; A1=pi/4; A2=pi/400; Hstar=1; Qstar=34.78; A1 A2 Hstar Qstar % kg/m3 % m/s2 % m2 % m2 % m % kg/s % Integrate the nonlinear equation of motion t0=0; % Initial time, s tf=300; % Final time, s H0=0.5; % Height, m [t,H] = ode45('Hdot',t0, tf, H0); % solver plot(t,H); grid % plot results xlabel('Time (s)'), ylabel('H (m)') % labels 12 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK Το πρόγραμμα, hdot.m περιέχει τη διαφορική εξίσωση και τις μεταβλητές. Το όνομα του αρχείου πρέπει να είναι ίδιο με το όνομα της ρουτίνας. MATLAB 1.2.7 % usage: differential equation of liquid level % used in m1.m % % filename: hdot.m % modified: 20/11/2008, g. papalambrou %-------------------------------------------------------function Hdot=hdot(t,H) global RHO G A1 A2 Hstar Qstar Q=34.77; % kg/s k1=-A2*sqrt(2*G)/A1; k2=1/RHO/A1; Hdot=k1*sqrt(H)+k2*Q; 1.2.9 Control Toolbox: σχεδιασμός στο πεδίο χρόνου place(A, B, p) lqr(A, B, Q, R) kalman(sys, Q, R) Ελεγκτής με μέθοδο τοποθέτησης πόλων Βέλτιστος ελεγκτής Υπολογισμός παρατηρητή 1.2.10 Control Toolbox: σχεδιασμός στο πεδίο συχνότητας ss(A,B,C,D) tf(num,den) zpk(zero, pole, gain) ss2tf(system1) tf2ss(system2) series(sys1,sys2) feedback(sys1,sys2) zero(sys1) pole(sys1) step(sys11) impulse(sys21) rlocus(sys24) bode(sys22) nyquist(sys23) Ορισμός συστήματος state space Ορισμός συστήματος transfer function Ορισμός συστήματος zero, pole, gain Μετατροπή από state space σε transfer function Μετατροπή από transfer function σε state space Σύνδεση συστημάτων σε σειρά Εύρεση συστήματος κλειστού βρόχου Εύρεση μηδενιστών Εύρεση πόλων Δίεγερση με είσοδο βαθμίδας Δίεγερση με κρουστική είσοδο Γράφημα τόπου ριζών Γράφημα bode Γράφημα nyquist Παράδειγμα 1.2.8 Διαγράμματα απόκρισης, πόλων, συχνότητας (Bode). Ακολουθούν τυπικά βήματα κατά τον σχεδιασμό και ανάλυση ενός συστήματος ελέγχου για μία εγκατάσταση. Πρώτα αναλύεται η εγκατάσταση χωρίς το σύστημα ελέγχου, με τα γραφήματα χρονικής απόκρισης σε βηματική είσοδο (αλλαγή διέγερσης 1.2. MATLAB 13 από 0 σε 1), πόλων-μηδενιστών (ρίζες παρονομαστή-αριθμητή της συνάρτησης μεταφοράς) και απόκρισης συχνότητας (διέγερση με ημιτονοειδές σήμα). Κατόπιν εισάγεται ο ελεγκτής και υπολογίζεται το σύστημα κλειστού βρόχου (τελικό σύστημα με μοναδιαία ανατροφοδότηση), με την βοήθεια της εντολής series. Στο τέλος αναλύεται η επίδοση για το σύστημα κλειστού βρόχου. Η συνάρτηση μεταφοράς της εγκατάστασης είναι G(s) = s2 1 + 10s + 1 (1.4) Η συνάρτηση μεταφοράς του ελεγκτή υπολογίστηκε ως Gc (s) = K(s2 + 5.14s + 20.68) , K = 891.69 s + 56.46 (1.5) Η απόκριση σε βηματική είσοδο, οι θέσεις των πόλων και η απόκριση συχνότητας φαίνονται στις εικόνες 1.4, 1.5, 1.6 αντίστοιχα. Παρουσιάζεται για το κάθε χαρακτηριστικό αριστερά ο ανοικτός βρόχος (το σύστημα χωρίς ελεγκτη) και δεξιά ο κλειστός βρόχος (σύστημα και ελεγκτης με ανατροφοδότηση). Σχήμα 1.4: Απόκριση σε βηματική είσοδο Στο τελευταίο τμήμα του προγράμματος, για ένα σύστημα δεύτερης τάξης, χρησιμοποιείται βρόχος προγράμματος που αλλάζει την απόσβεση και κάθε φορά τυπώνει το διάγραμμα Bode. Η εντολή hold on εξασφαλίζει ότι κάθε φορά το νέο γράφημα τυπώνεται επάνω στο προηγούμενο. Με την εντολή pause, το πρόγραμμα περιμένει από τον χρήστη να πατήσει κάποιο πλήκτρο ώστε να συνεχίσει την εκτέλεσή του. Το αποτέλεσμα φαίνεται στην εικόνα 1.7. 14 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK Σχήμα 1.5: Οι θέσεις των πόλων MATLAB 1.2.9 % usage: use transfer functions, plots for poles, bode % filename: mc1.m % modified: 2/11/2011, g. papalambrou %-------------------------------------------------------- % system -----------------------------ng=[1]; dg=[1 10 1]; ss_ol=tf([ng],[dg]) % get response for step unit input, for the open loop system step(ss_ol), grid % zero, pole diagram, for pzmap(ss_ol) % Bode diagram, bode(ss_ol) for the open loop system the open loop system % controller -------------------------% controller constants K=891.69; a= 5.14; b=20.68; c=56.46; nc=K*[1 a b]; dc=[0 1 c]; 1.2. MATLAB 15 Σχήμα 1.6: Απόκριση συχνότητας % closed loop system ------------------[num,den]=series(nc,dc,ng,dg); ss_cl=tf([num],[den]) % create closed loop system, with unity (=1) cloop=feedback(ss_cl,1); feedback % get response for step unit input, for the closed loop system step(cloop), grid % zero, pole diagram, for pzmap(cloop) % Bode diagram, bode(cloop) for the closed loop system the closed loop system %---------------------------------------% use a loop, for various system parameters omega=16; 16 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK Σχήμα 1.7: Απόκριση συχνότητας, για διάφορες τιμές απόσβεσης zeta0=0.1; zetaf=1; for zeta=zeta0:0.2:zetaf ng1=[1]; dg1=[1 2*zeta*omega omega^2]; ss_ol_second=tf([ng1],[dg1]) % Bode diagram, for the open loop system bode(ss_ol_second); grid; hold on pause % press a button to continue end 1.3 Simulink Το περιβάλλον του Simulink επιτρέπει τη δημιουργία μοντέλων συστημάτων με γραφικό τρόπο καθώς και την προσομοίωσή τους. Όπως και με το MATLAB, στα πλαίσια των συστημάτων ελέγχου, ο μηχανικός είναι χρήσιμο να γνωρίζει τις παρακάτω έννοιες στο Simulink. • Simulink: Γραφικός προγραμματισμός (χρήση blocks) 1.3. SIMULINK 17 • Προσομοίωση (simulation), τρόποι αριθμητικής ολοκλήρωσης • Σήματα εισόδου, απεικόνηση αποτελεσμάτων • Σχεδιασμός συστήματος ελέγχου • Σχεδιασμός βιβλιοθηκών για συνεργασία με hardware • Για εμβάθυνση, προτείνεται η χρήση ρουτίνων σε μορφή MATLAB (S-functions), που είναι δομημένος κώδικας m les που ενσωματώνεται στο Simulink. 1.3.1 Εισαγωγή Το Simulink υπάρχει ήδη στο σύστημα μετά την εγκατάσταση του MATLAB. Οι τρόποι εκκίνησης του Simulink είναι δύο: • Χτυπώντας το σχετικό εικονίδιο, όπως φαίνεται στην εικόνα 1.8 Σχήμα 1.8: Το εικονίδιο εκκίνησης του Simulink • Δίνοντας την εντολή simulink στο παράθυρο εντολών (command line) Το Simulink ξεκινά όπως φαίνεται στο πάνω μέρος της εικόνας 1.9, με το άνοιγμα των βιβλιοθηκών (Libraries). Οι βιβλιοθήκες είναι τα διαθέσιμα στοιχεία, με μορφή blocks. Ανάλογα με την εγκατεστημένη έκδοση του Simulink, blocks μπορεί να είναι Sources, Sinks, Continuous, Discrete, Math Operations, Signal Routing, Signal Attributes κλπ. Στην ίδια εικόνα φαίνονται ανοιχτές οι βιβλιοθήκες για τα στοιχεία Continuous και Sources. Ο χρήστης ανοίγει ένα νέο αρχείο για να δημιουργήσει τη δική του εφαρμογή. Στη φόρμα Library: Simulink επιλέγουμε File/New/Model. Ένα νέο αρχείο φαίνεται στην εικόνα 1.9, ως New File. Για την αποθήκευση του αρχείου, ο χρήστης επιλέγει File/Save As... Το αρχείο θα αποθηκευτεί ως untitled.mdl. Τα διάφορα στοιχεία απο τις βιβλιοθήκες εισάγονται με την μέθοδο drag and drop, δηλαδή επιλέγεται το στοιχείο, κρατιέται επιλεγμένο με το ποντίκι και σύρεται στο αρχείο με τη δική μας εφαρμογή. Στο τέλος τα διάφορα στοιχεία συνδέονται κατάλληλα μεταξύ τους τις εισόδους και τις εξόδους με το ποντίκι. 18 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK Σχήμα 1.9: Οι διαθέσιμες βιβλιοθήκες του Simulink Παράδειγμα 1.3.1 Σκοπός: Δημιουργία εφαρμογής προσομοίωσης συστήματος. Ως σύστημα θεωρούμε γραμμικό ταλαντωτή, με διαφορική εξίσωση m¨ x + cx˙ + kx = f (t) (1.6) Η δεύτερη παράγωγος θα παρασταθεί ώς (δύο) διαδοχικές ολοκληρώσεις (στο Simulink οι ολοκληρωτές είναι blocks 1s ). Ο χρήστης ανοίγει ένα νέο αρχείο για να δημιουργήσει την εφαρμογή. Το αρχείο θα αποθηκευτεί ως αρχείο Simulink, ως s1.mdl. Τα διάφορα στοιχεία απο τις βιβλιοθήκες εισάγονται με τη μέθοδο drag and drop. Από τις διαθέσιμες βιβλιοθήκες λαμβανουμε τα εξής στοιχεία. • Sources → Step (Σήμα εισόδου) • Sinks → Scope (Παλμογράφος) • Continuous → Transfer Fcn (Συνάρτηση μεταφοράς συστήματος) • Sinks → To Workspace (Μεταβλητή προς το workspace) • Signal Routing → Mux (Πολυπλέκτης που λαμβάνει 2 σήματα και δημιουργεί δίαυλο με 1 σήμα) Στο τέλος ενώνουμε τα διάφορα στοιχεία με το ποντίκι. Για να κάνουμε την προσομοίωση, επιλέγουμε τις παραμέτρους της. Στη γραμμή εργαλείων επιλέγουμε Simulation|Configuration Parameters. Στη φόρμα που άνοιξε, δίνουμε Stop time 20, Solver Options|Type|Fixed-step, Solver: ode4 (Runge-kutta) και πατάμε ΟΚ. Για ξεκινήσουμε την προσομοίωση, στη γραμμή εργαλείων επιλέγουμε Simulation|Start. Κάνοντας διπλό κλικ με το ποντίκι στο στοιχείο Scope, φαίνεται το περιεχόμενο του παλμογράφου με την απόκριση 1.3. SIMULINK 19 και το σήμα αναφοράς του συστήματος. Στο Workspace έχουν αποθηκευτεί οι μεταβλητές ref,y που μπορούν να τυπωθούν σε διάγραμμα. Το αρχείο με τα διάφορα στοιχεία συνδεμένα μεταξύ τους φαίνεται στην εικόνα 1.10. Σχήμα 1.10: Eφαρμογή προσομοίωσης συστήματος Το σήμα αναφοράς και η απόκριση του συστήματος φαίνεται στην εικόνα 1.11. 20 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK Σχήμα 1.11: Το περιεχόμενο του παλμογράφου με την απόκριση και το σήμα αναφοράς του συστήματος 1.4 Συμβολικός προγραμματισμός Στο περιβάλλον του MATLAB συμβολικός προγραμματισμός γίνεται με το Symbolic Math Toolbox . Είναι έτσι δυνατό να γίνουν πράξεις όπως διαφόριση, ολοκλήρωση, πράξεις γραμμικής άλγεβρας και επίλυση αλγεβρικών εξισώσεων χωρίς να υπολογίζονται αριθμητικές παραστάσεις. Η βασική χρήση συμβολικού προγραμματισμού σε εφαρμογές ελέγχου είναι στα μηγραμμικά συστήματα, σε περιπτώσεις που υπολογίζεται με αναλυτικό τρόπο ο ελεγκτής απο τις συναρτήσεις Lyapunov (π.χ. στη μέθοδο backstepping) . Η εντολή sym δηλώνει συμβολικές μεταβλητές και συμβολικές εκφράσεις. x = sym('x'); a = sym('alpha'); Παράδειγμα 1.4.1 Το παρακάτω πρόγραμμα επιλύει ένα πολυώνυμο δευτέρου βαθμού ax2 + bx + c. MATLAB 1.4.2 syms a b c x S = a*x^2 + b*x + c; % quadratic formula solve(S) >> ans = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a) Παράδειγμα 1.4.3 Το παρακάτω πρόγραμμα επιλύει τη διαφορική εξίσωση εξαρτημένη μεταβλητή είναι y και t η ανεξάρτητη. Η λύση είναι Ce t2 2 dy dt = ty. Η , με C σταθερά. Τα προγράμματα Maple, Mathematica μπορούν επίσης να χρησιμοποιηθούν για συμβολικό προγραμματισμό Οι συναρτήσεις Lyapunov, V , επιτρέπουν τη μελέτη της ευστάθειας ενός δυναμικού συστήματος. Επιλέγονται σε κατάλληλες μορφές από το μηχανικό και στην συνέχεια πρέπει να αποδειχτεί ότι η V˙ ≤ 0 για να είναι το σύστημα ευσταθές 1.4. ΣΥΜΒΟΛΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 21 MATLAB 1.4.4 dsolve('Dy = t*y') >>ans = C2*exp(t^2/2) y = dsolve('Dy = t*y', 'y(0) = 2') % to specify initial condition >>y = 2*exp(t^2/2) 2 +x−1 Παράδειγμα 1.4.5 Το παρακάτω πρόγραμμα επιλύει την εξίσωση f = 3x x2 +x−3 . Λάμβανεται η παράγωγος (εντολή diff) και υπολογίζονται τα ακρότατα (εντολή solve). Η εντολή simplify κάνει ενδιάμεσες πράξεις και η εντολή pretty παρουσιάζει το τελικό αποτέλεσμα σε απλή μορφή. MATLAB 1.4.6 >> syms x num = 3*x^2 + 6*x -1; denom = x^2 + x - 3; f = num/denom f = (3*x^2 + 6*x - 1)/(x^2 + x - 3) >> f1 = diff(f) f1 =(6*x + 6)/(x^2 + x - 3) - ((2*x + 1)*(3*x^2 + 6*x - 1))/(x^2 + x - 3)^2 >> f1 = simplify(f1) f1 = -(3*x^2 + 16*x + 17)/(x^2 + x - 3)^2 >> pretty(f1) 2 3 x + 16 x + 17 - ---------------2 2 (x + x - 3) >> crit_pts = solve(f1) crit_pts = - 13^(1/2)/3 - 8/3 13^(1/2)/3 - 8/3 22 ΚΕΦΑΛΑΙΟ 1. ΧΡΗΣΗ MATLAB/SIMULINK Βιβλιογραφία [1] Dorf, R., Bishop, R., Modern Control Systems, Prentice-Hall, 2001. [2] Franklin, G., Powell, J., E-Naeini, A., Feedback Control of Dynamic Systems, Addison, 1991. [3] e Mathworks Inc., ΜATLAB 7 Getting Started Guide, 2008. [4] e Mathworks Inc., Control System Toolbox 8 User’s Guide, 2008. [5] Control Tutorials for MATLAB, http://www.engin.umich.edu/group/ctm. [6] Hanselman, D. and Little eld, B., Mastering MATLAB 7: A Comprehensive Tutorial and Reference, Upper Saddle River, NJ, Pearson Education , 2005. [7] Dabney, J.B. and Harman, T.L., Mastering Simulink, Upper Saddle River, NJ, Pearson Education , 2004. 23
© Copyright 2024 Paperzz