PDA

Επιστροφή στο Forum : PID έλεγχος απο τη θεωρία στη πράξη



picdev
20-08-11, 18:44
Γενικά γνωρίζω κάποια θεωρητικά πράγματα για τους pid και pi ελεγκτές, πχ παίρνουμε το error το παραγωγίζουμε το ολοκληρώνουμε, το πολλαπλασιάζουμε , τα προσθέτουμε και στο τέλος έχουμε την διορθωμένη έξοδο, άλλο κεφάλαιο είναι η ρύθμιση με διάφορες μεθόδους,έχω τρέξει και πρόγραμμα εξομείωσης, όλα ωραία ως εδώ



το πρόβλημα μου είναι οτι δεν ξέρω πως εφαρμόζεται στη πραγματικότητα , σε ενα δικό μου σύστημα με mE,
Είχα φτιάξει μια περσίδα μια φορά με ένα μοτέρ και ένα ποντεσιόμετρο στον ίδιο άξονα,
που κάθε φορά πήγαινε και στεκότανε σε μία συγκεκριμέμη θέση,
υπολόγιζα το error(που ήταν η τάση του ποντεσιομέτρου) και έλεγα στο μοτέρ να κουνηθεί μέχρι να μηδενιστεί το error
Σε ένα τέτοιο σύστημα πως μπορώ να εφαρμόσω pid έλεγχο? παιρνω το error που είναι η τάση του ποντεσιμέτρου, το παραγωγίζω, το ολοκληρώνω, το πολλαπλασιάζω ,τα προσθαίτω όλα αυτά και
αυτό το νούμερο που το στέλνω?

κάτι αντίστοιχο γίνεται με τη ταχύτητα μίας ρόδας, η είσοδος μου είναι παλμοί-ταχύτητα, η έξοδος μου pwm,
πως γίνεται η σύνδεση του error με την έξοδο μου?
δηλαδή μπορώ να ξέρω τη ταχύτητα που θέλω,
ξέρω το error, υπολογίζω τη ΣΜ του PID, αλλά στο pwm τι παλμούς στέλνω?

Ελπίζω να καταλάβατε τι ενοώ:001_rolleyes: καθηγητή που ρώτησα ήταν της παλιάς σχολής δεν ήξερε απο mE,μετά ότι έχω διαβάσει στο νετ είναι τα θεωρητικά που έκανα και στη σχολή

spiroscfu
20-08-11, 19:04
Για κοίτα στα παρακάτω post μήπως σε βοηθήσουν.
http://www.hlektronika.gr/forum/showthread.php?t=57570
http://www.hlektronika.gr/forum/showthread.php?t=55372


καλύτερα θα ήταν να το έβαζες στην κατηγορία "ψηφιακά"

picdev
20-08-11, 19:13
στο δευτερό ποστ έχω ρωτήσει πάλι εγώ, αλλά βλέπω οτι ο herctrap πρόσθαισε κάποια πράγματα στην απάντηση του που δεν είχα δει.
Σε κάποιο σημείο λέει

οποτε τωρα εχω εναν αριθμο στην μεταβλητη PID απο το 0 μεχρι το 1000
το καθε δευτερολεπτο εχει 1000ms
οποτε δημιουργουμε ενα PWM με περιοδο 1sec
πx αν το PID ειναι ισο με 333 τοτε η εξοδος ειναι HIGH για τα 333 πρωτα ms και LOW για τα υπολοιπα 667ms

ότι h μεταβλητή pid είναι απο το 0-1000 εξαρτάται απο το οτι ο A/D είναι απο το 0-1024?

μετά γράφει
βεβαια υπαρχουν και αλλοι τροποι υπολογισμου της εξοδου
καθως και αλλοι τροποι οδηγησης της εξοδου

θα του στειλω pm να δει τη συζήτηση, μάλλον εκεί είναι το πρόβλημα μου η οδήγηση της εξόδου

Mihos
20-08-11, 19:50
Όπως ανέφερες ήδη ένας pid ελεγκτής σε πρώτη φάση αυτό που κάνει είναι να υπολογίζει το σφάλμα, τη παράγωγο του σφάλματος και το ολοκλήρωμα του σφάλματος. Στη πράξη τα διάφορα συστήματα μικροελενκτών που κάνουν έλεγχο PID δεν κάνουν ούτε παραγώγιση ούτε ολοκλήρωση.

Αυτά τα συστήματα είναι διακριτού χρόνου (δουλέυουν με κάποιο ρολόι) και σε πρώτη φάση αυτό που μπορούν να κάνουν είναι να παίρνουν διαδοχικές μετρήσεις του σφάλματος. Ας ονομάσουμε αυτά τα σφάλματα pi όπου i είναι ο άυξων αριθμός της μέτρησης. Μετά από κάθε μέτρηση θα πρέπει να υπολογίσουν τον "διαφορικό παράγοντα" di. Ο διαφορικός παράγοντας προκείπτει απλά από τη διαφορά di=pi - pi-1. Δηλαδή αντί να γίνει παραγώγηση απλά αφαιρούμε το τρέχον σφάλμα από το αμέσως προηγούμενο. Τέλος υπολογίζει τον "ολοκληρωτικό παράγοντα" ii ο οποίος είναι το άθροισμα όλων των προηγούμενων σφαλμάτων και του τρέχοντως ii = p0+p1+...+pi = ii-1+ii.

Ο ολοκληρωτικός παράγοντας συχνά δημιουργεί προβλήματα υποερχήλησης λόγω της συνεχούς άυξησής του. Για τον λόγο αυτό, τις περισσότερες φορές αντί να υπολογίζεται το άθροισμα όλων των προηγούμενων σφαλμάτων υπολογίζεται το άθροισμα των Ν προηγούμενων σφαλμάτων όπου το Ν το καθορίζει ο σχεδιαστής ανάλογα με τις συνθήκες.

Αφού έχουν υπολογιστεί τα pi,ii και di το κάθε ένα από αυτά πολλαπλασιάζεται με έναν συντελεστή (Κp, Ki και Kd αντίστοιχα) και σχηματίζεται το άθροισμα PID = Κp*pi + Ki*ii + Kd*di. Με αυτή τη τιμή θα οδηγήσουμε διάταξη ελέγχου. Αν π.χ. η διάταξη ελένχου είναι ένα μοτερ που ανεβάζει μία περσίδα το εκάστοτε pi είναι η απόσταση της περσίδας από την επιθυμιτή θέση και η τιμή PID είναι η τάση που θα δόσουμε στο μοτερ. Η όλη διαδικασία επαναλαμβάνεται μέχρι η περσίδα να σταθεροποιηθεί στη θέση που θέλουμε.

Τώρα όλη η ιστορία του PID ελέγχου είναι το ποιές τιμές θα έχουν οι συντελεστές Κp, Ki και Kd. Οι τιμές αυτών των συντελεστών εξαρτόνται από τα χαρακτηριστικά του φορτίου που ελέγχεται και της διάταξης που το ελέγχει. Αν λοιπόν κάποιος δεν έχει κάνει Phd στο PID ο καλύτερος τρόπος να ορίσει αυτές τις τιμές είναι με δοκιμές (trial & error). Δοκίμάζουμε δηλαδή διάφορες τιμές στους συντελεστές μέχρι να παρατηρήσουμε ότι η περσίδα πηγαίνει στη θέση της ικανοποιητικά γρήγορα και χωρίς έντονες ταλαντώσεις.

Mihos
20-08-11, 20:08
Το PWM θα πρέπει φυσικά να δημιουργεί παλμούς με Duty Cycle = PID/Vp όπου Vp είναι το πλάτος των παλμών του pwm και PID η τάση που έχει υπολογιστεί ότι πρέπει να πάει στο μοτερ. Τέλος για να είμαστε σωστοί το μοτερ θα πρέπει να μπορεί να κινείται και προς τις δύο κατευθύνσεις καθώς πολλές φορές η τιμή του PID μπορεί να είναι αρνητική... Επίσης πολύ σημαντικό ρόλο παίζει η συχνότητα με την οποία παίρνουμε μετρήσεις του σφάλματος η οποία δεν πρέπει να είναι ούτε πολύ μικρή ούτε πολύ μεγάλη...

picdev
20-08-11, 20:40
Miho πολυ καλός αξίζεις συγχαρητήρια για το ποστ σου :thumbup: θα το διαβάσω πιο αναλυτικά και θα κάνω και άλλες ερωτήσεις :wiink:

οι υπολογισμοί δεν μπορούν να γίνουν στο πεδίο του Ζ? όταν μιλάμε για διακριτό έλεγχο? άρα να γίνουν απλές αλγεβρικές πράξεις?
Μπορείς πχ να υπολογιστεί η ΣΜ με ZOH αφού έχουμε ψηφιακό σύστημα? Γενικά η ΣΜ μπαίνει μέσα σε mE? ή όλη η δουλεία γίνεται με τον υπολογισμό του σφάλματος μέσω αισθητήρων, το ZOH πχ είναι το pwm? ο A/D υπάρχει ενσωματομένος , άρα όλα τα θεωρητικά γίνονται απο τον mE?
γενικά είμαι μπερδεμένος ανάμεσα στη θεωρία και στη πράξη
Εδώ βλέπω οτι υπολογίζεται η παράγωγος και το ολοκλήρωμα σύμφνωμα με το ορισμό

Οι γνώσεις απο που προέρχονται αν επιτρέπεται και πάλι ευχαριστώ,
γενικά δεν είχα βρεί πληροφορίες για την εφαρμογή του pid με mE ,πραγματικά απορώ γιατί δεν γινόταν πουθενά μια τέτοια επεξήγηση, ούτε καθηγητές δεν ήξεραν...:confused1: μού είχαν πει για simulink που φτιάχνεις σύστημα και μετά σου παράγει κώδικα με dspic αλλα μόνο και μόνο να φτιάξεις μία διαφορική εξίσωση απο πραγματικό σύστημα θέλει αρκετές γνώσεις που δυστηχώς δεν έχω.
αν πάμε σε DSP επεξεργαστές εκεί αλλάζουν τα πράγματα?

QED
20-08-11, 21:59
Φίλε μου ρίξε και εδώ μια ματιά

http://www.mechatronics.gr/en/rd/12-pid-controller.html

spiroscfu
21-08-11, 14:52
Μιχάλη είσαι ωραίος αλλά και το link του φίλου Βασίλη είναι εξίσου καλό.

picdev
21-08-11, 18:33
Γενικά η Συνάρτη μεταφοράς στο πεδίο του s ή στο Ζ μπαίνει ποτέ μέσα στον Me? η δεν χρειάζεται?
Η ΣΜ αντιπροσωπεύει αυτό που κάνει ο A/D και οι εντολές που δίνουμε στα μοτερ κτλ?

Mihos
21-08-11, 19:08
Η ίδια η συνάρτηση μεταφοράς της διάταξης δεν υπάρχει κανένας λόγος να είναι γνωστή στον ελεγκτή. Ο ελεγκτής το μόνο που θέλει να ξέρει από εμάς είναι οι τρεις συντελεστές Kp, Ki και Kd. Θεωρητικά αυτοί οι συντελεστές μπορούν να υπολογιστούν με βάση τη συνάρτηση μεταφοράς. Ο υπολογισμός αυτός όμως είναι πολύ δύσκολη υπόθεση και θέλει εξιδεικευμένες γνώσεις (που φυσικά δεν έχω) ενώ τις περισσότερες φορές είναι δύσκολο να ξέρουμε και την ίδια τη συνάρτηση μεταφοράς (πχ. δεν αρκεί να ξέρουμε τη ΣΜ του κινητήρα μας μόνο. Ο κινητήρας θα είναι συνδεδεμένος σε ένα φορτίο με κάποια διάταξη και η συνολική ΣΜ του συστήματος δεν είναι αυτή του κινητήρα.). Επομένως για εμάς τους κοινούς θνητούς ο καλύτερος τρόπος είναι οι δοκιμές. Σκοπός μας πάντα είναι η γρήγορη απόκριση και η αποφυγή ταλαντώσεων.

Τώρα για να μην πηγαίνει κανείς τελειώς στα τυφλά, υπάρχουν κάποιες βασικές παραδοχές που μπορεί να ακολουθεί. Αυτό το PDF (http://www.google.gr/url?sa=t&source=web&cd=1&ved=0CBcQFjAA&url=http%3A%2F%2Figor.chudov.com%2Fmanuals%2FServo-Tuning%2FPID-without-a-PhD.pdf&rct=j&q=pid without phd&ei=XSlRTtyhDemj4gTxw5XrBw&usg=AFQjCNFWS6tbKLEO6qRCncHB2m6ZBbqtuw&cad=rja) κάνει μία πολύ ωραία, απλή και κατανοητή περιγραφή. Αν βαριέσται να το διαβάσετε όλο πηγαίνετε κατυθείαν στη παράγραφο Tunning που περιγράφει πως μπορούμε να μαντέψουμε τις τιμές των συντελεστών Kp, Ki και Kd και στη παράγραφο Sampling Rate που περιγράφεί ποια πρέπει να είναι η σωστή συχνότητα δειγματοληψείας του σφάλματος. Τα δύο βασικότερα που πρέπει να καθορίσουμε σε έναν PID controller...

k_palios
23-08-11, 02:05
Αν δε βαριεσαι το διαβασμα ριξε και δω μια ματια, θα μπεις στο πνευμα στο πως υπολογιζεις τα Kp Ki Kd και τι κανει το καθενα, εγω μεχρι εκει ξερω, στην πραξη για να τα υλοποιησουμε εμεις οι χημικοι μηχανικοι ολα αυτα, παιρνεις εναν μετατροπεα analog to digital για το pc, βαζεις και το labview και φτιαχναμε απο κει τον pid, ελπιζω να βοηθησα! http://lpre.cperi.certh.gr/auth/files/Ry8misi07-08_ALLwithKey.pdf

picdev
01-09-11, 17:23
ευχαριστώ για το PDF,πολύ καλό, πολλά απο αυτά τα έχω κάνει στη σχολή σε αντίστοιχα μαθήματα