matlab - Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγή στον Αυτόματο Έλεγχο (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