PDA

Επιστροφή στο Forum : Αναζήτηση PID



tenelec
08-12-07, 23:03
Καλησπέρα σε όλους.
Υπάρχει κάποιος που μπορεί να με βοηθήσει στην αναζήτησή μου για ρουτίνα PID ;
Ψάψνω να βρω μία ρουτίνα, γραμμένη με απλές αριθμητικές πράξεις.
ΔΕΝ είμαι τόσο καλός στα μαθηματικά.
Φτοιάχνω μία κατασκευή για έλεγχο θερμοκρασίας και θέλω να προσθέσω PID.
Αν μπορεί κάποιος να με βοηθήσει.
Ευχαριστώ

GeorgeK
09-12-07, 00:01
Αν με τον όρο PID εννοείς τον γνωστό ελεγκτή που ξέρουμε από τα συστήματα
αυτομάτου ελέγχου , θα βρείς αρκετά πράγματα ψάχνοντας για το Matlab .

tenelec
09-12-07, 00:28
GeorgeK σε ευχαριστώ για την απάντησή σου.
Όμως ψάχνω να βρω ή να μου δώσει κάποιος απλοποιημένες τις πράξεις υπολογισμού.
Έχω ψάξει πολύ στο διαδίκτυο χωρίς να έχω βρει ακριβώς αυτό που θέλω.

GeorgeK
09-12-07, 18:01
Πρώτα πες μας λιγο περισσότερα γιαυτό που θέλεις .

Θέλεις απλά να βρείς τη συνάρτηση μεταφοράς του ελεγκτή ?
Από το πεδίο συχνότητας θέλεις να πάς στο πεδίο του χρόνου ?
Έχεις τη συνάρτηση μεταφοράς και θές τον κώδικα ?
Σε τι θα τον γράψεις τον κώδικα ?
Περί γραμμικοποίησης τι σκέφτεσαι να κάνεις ?

Αυτό που λες για πράξεις υπολογισμού , μήπως εννοείς θεωρητικά πως θα το κάνεις ?

tenelec
09-12-07, 22:04
Θέλω να υλοποιήσω τον αλγόριθμο που φαίνεται στην εξής διεύθυνση :

http://en.wikipedia.org/wiki/PID_controller#Ideal_vs_Standard_PID_form

Ασχολούμαι με τους AVR και έχω φτοιάξει μερικές κατασκευές με μέτρηση θερμοκρασίας.
Κάποιες φορές μου χρειάσθηκε να κάνω έλεγχο στην θερμοκρασία και ήθελα να χρησιμοποιήσω έλεγχο με PID.
Δουλεύω με αυτοματισμούς και όργανα ελέγχου σε διάφορες εφαρμογές. Προσπαθώντας να βρω τον PID πέτυχα μόνο τον αλγόριθμο. Όμως η γνώση μου στα μαθηματικά δεν μου επιτρέπει να υλοποιήσω τον προηγούμενο αλγόριθμο. Έτσι, είμαι στην αναζήτηση της λύσης με αριθμητικές πράξεις (+, -, /, *).

Σε αυτά που με ρωτάς τα έχω υπ΄ όψιν μου, όμως σε πρώτη φάση θέλω να μάθω την υλοποίηση του αλγόριθμου και μετά να ασχοληθώ με τους άλλους παράγοντες.

Μπορώ να γράψω τον κώδικα σε ASSEMBLY, σε BASCOM, ή σε C.

Σε ευχαριστώ για ότι μου απαντήσεις και την βοήθειά σου,
Δημήτρης

GeorgeK
10-12-07, 04:24
Ολίγα θεωρητικά
Θα πρέπει να θεωρήσεις ότι η είσοδος του PID είναι διακριτή και μάλιστα
μετά από βαθμίδα ZOH . Βέβαια θα πρέπει να ξέρεις ότι με ελεγκτή μπορείς
να δημιουργήσεις μόνον αιτιατά σήματα . Άρα άν θέλεις ο έλεγχός σου να
είναι πραγματικού χρόνου θα πρέπει να θεωρήσεις ότι η παράγωγος θα
βγαίνει μόνο από παρελθοντικές μετρήσεις , εκτός αν λειτουργήσεις με
κάποια καθυστέρηση .

Οπότε μάλλον ζητάς απλώς έναν κώδικα που θα του δίνεις τα Κp , Ki , Kd
και θα δίνει ως έξοδο την είσοδο που θα βάλεις στη βαθμίδα που ελέγχεις .
Για C υπάρχει έτοιμο από την Atmel και θα το βρείς εδώ :
http://www.atmel.com/dyn/resources/prod_documents/AVR221.zip

Τα Κp , Ki , Kd με ποιον τρόπο θα τα βρείς ? Σου προτείνω με Ziegler-Nichols

tenelec
11-12-07, 19:06
GeorgeK συμφωνώ με ότι γράφεις, όμως θέλω μόνο την αριθμητική εκτέλεση του αλγόριθμου.

Δεν ξέρω πως να υλοποιήσω αυτόν τον αλγόριθμο.

Πάντως για να σου δώσω μία ιδέα το τι θέλω να κατασκευάσω, θα ήθελα να δεις την εξής διεύθυνση :

http://web5.automationdirect.com/static/manuals/d2user/ch8.pdf

Όπου στην σελίδα 8-32 παράγραφος "Position Algorithm"και 8-33 "Velocity Algorithm" θα βρεις τον αλγόριθμο που χρησιμοποιεί η εταιρία αυτή που κατασκευάζει το PLC.
Όμως δεν είμαι σίγουρος κατά πόσο είναι σωστή και είναι πραγματική όπως φαίνεται στο βιβλίο αυτό.

Σε πολλές αναφορές έχω δει ότι όλοι αναφέρονται στον αλγόριθμο όπως αυτός είναι γραμμένος στην διεύθυνση :

http://en.wikipedia.org/wiki/PID_controller#Ideal_vs_Standard_PID_form .

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

Σε ευχαριστώ

GeorgeK
12-12-07, 19:07
Μάλλον κάτι δεν έχω καταλάβει καλά .
Ο αλγόριθμος αυτός
http://en.wikipedia.org/wiki/PID_controller#Ideal_vs_Standard_PID_form
είναι ο ίδιος με τον αλγόριθμο αυτό
http://web5.automationdirect.com/static/manuals/d2user/ch8.pdf
και μάλιστα η υλοποίησή του σε κώδικα C είναι αυτή
http://www.atmel.com/dyn/resources/prod_documents/AVR221.zip

Απλώς στο πρώτο είναι για συνεχούς χρόνου σήματα και στο δεύτερου για
διακριτού . Εσύ που θα βάλεις μικροελεγκτή θα πάς με του διακριτού .

Όσο για το λάθος που λές με μια ματιά που του έριξα δε νομιζω να είναι λάθος .
Μήπως έχεις μπερδευτεί από τις αλλαγές στην ονομασία και τον ορισμό των παραμέτρων ?

tenelec
12-12-07, 21:38
Τώρα νομίζω ότι κατάλαβα τι εννοείς, με την "το πρώτο είναι για συνεχούς χρόνου σήματα και στο δεύτερου για
διακριτού" εξήγηση.

Το μπέρδεμά μου είναι στο ότι δεν ξέρω μαθηματικά.

Θα αρχίσω να μελετάω τον αλγόριθμο από το PLC, για να τον υλοποιήσω και να τον δοκιμάσω.

Σε ευχαριστώ για την βοήθειά σου.

Δημήτρης