Hallo Leute Wer kann mir von Euch unverbindlich eine "Pi mal Daumen"-Gatterabschätzung für einen digitalen PID-Regler geben, der in VHDL realisiert werden soll? Ich kann's nicht abschätzen, weil ich hier Null Erfahrung habe. Welche Parameter muss ich euch dazu geben, oder könnt ihr mir bereits so eine Angabe machen? 1000 Gatteräquivalente? 2000 Gatteräquivalente? 5000 Gatteräquivalente? Bitte schreibt mir. Danke. Max
Hallo Experten (VHDL-User) Kann mir Niemand wenigstens Pi-Mal-Daumen weiterhelfen? Bitte! Danke... Max
Hi... also ich habe in der Hinsicht noch nichts gemacht, aber das sit doch eine aufgabe für einen DSP. Wenn ich richtig informiert bin dann sollen Virtexbausteine soetwas am besten lösen können oder? Also schnapp dir doch mal das Webpack und entwickle den VHDL Code. Vorher gibst du an das du einen Virtex (bei Xilinx) xy nutzt. Machst du das für dein Studium? Wenn ja dann habt ihr bestimmt Matlab zur verfügung. Da kannst du dann auch nen PID Regler ersellen nud den dann mit dem passenden interface in Modelsim exportieren. Soll sehr gut funktionieren. evtl bringt dich mein halbwissen ja auf den richtigen weg. Axel
Hi, wir haben im Rahmen unserer Technikerausbildung (Fach Regelungstechnik) einen mathematischen Algorithmus für einen PID-Regler erstellt. Doktor Siefker(Namen merken ! bringt ein Buch zum Thema digitale Regelungstechnik raus) hat den PID Regelalgorihmus in eine Summenformel gebracht. Ich bin gerade dabei die PI-Regler-Formel an meinem Atmel anzupassen. Später soll die Temperatur einer Kafferöstmaschine geregelt werden. WICHTIG: To = Zykluszeit des Kontroller = Zeitraum zwischen den Berechnungen wenn du das Programm Regelmässig mit einem Timer aufrufst ist das diese Zeit ! Tv = Vorhaltezeit, Tn = Nachstellzeit Kp = P-Anteil des Regler, e = rückgeführte Grösse: e = w-r wobei w = Sollwert und r der Istwert von der Messwerterfassung ist. Um eine Aufnahme der Sprungantwort wirst du nicht herumkommen (Ermittlung von Kp, Tv, Tn). Viel Spass dabei....
Auf einen FPGA könnte man es mal mit einem Fuzzy-Regler probieren. Ein Fuzzy-Regler kann man auch als PID-Regler programmieren. Das Stellsignal wird aus Teilmengen gebildet. Matlab hilft da auch weiter. Also ich denke das müßte super funktioniern. Werde ich mal auf meine TODO-Liste setzen. Gruß, Sebastian
Oder du machst einfach das, was ein Regler tut: Addieren, multiplizieren,.... also parallele Struktur. Wird superschnell! Hab mal einen PI-Regler so gebastelt und mehr als zufrieden mit dem Ergebnis
hi winni kannst du den code für deinen pi regler mal ins forum stellen. das wäre echt net.
hi christian! Nun, den kompletten Code, das bringt dir nix, weil er zu speziell ist, aber das Prinzip kann ich dir erklären. Neue Sollwerte kommen zyklisch (muss so sein) Immer wenn ein neuer Sollwert kommt, dann stösst du den Regelagorithmus an, generierst dir also nen Trigger, den die Berechnung startet. Und so geht´s dannn los: if trigger = '1' then -- Berechnung der Regelabweichung Regelabweichung := Sollwert - Istwert; -- Integrieren der Regelabweichungen Regelabweichung_Summe := Regelabweichung_Summe + Regelabweichung; -- stellen der Stellgröße Stellgröße := Regelabweichung_Summe * ki + Regelabweichung * kp; end if; Das war´s im Prinzip schon. Die werte ki und kp sind die Regelparameter und müssen abhängig von dem verhalten deiner Regelstrecke ermittelt werden (Probieren, oder Sprungantwort aufnehmen und berechnen). Selbstredend, dass du natürlich mit Reset deine Variablen und Register sinnvoll vorbelegst. Ausserdem würde ich die werte für Regelabweichung, Regelabweichung_Summe und Stellgröße sinnvoll kappen, wenn sie einen bestimmten Wert über oder unterschreiten: if Regelabweichung > 1000 then Regelabweichung := 1000; if Regelabweichung < -1000 then Regelabweichung := -1000; sonst kann bei zu großen Abweichungen beim Anschwingen dein Regler verrücktspielen (klaro, wenn dein Register überläuft und das Ergebnis auf einmal negativ wird, da das MSB springt. Ich hoff, dass dir das hilft. Wie gesagt, um die richtigen Werte zu finden, muss man einfach ein bisschen "Spielen" oder eben Messen udn rechnen. Tipp: der Regler wird super präzise, wenn du mehr Bits für deine Stellgrößen etc spendierst, als du eigentlich benötigst und dann auf diesen "Nachkommstellen" regelst. Ausgegeben werden dann aber nur die benötigten Bits.
Hallo Max Wie das Leben so spielt. Bin gerade selbst dabei, einen PID-Regler in VHDL zu entwickeln. Also sooo einfach wie Du Dir das vorstellt, ist es nun doch nicht, wenn Du einen richtigen professionellen Regler schreiben willst. Dinge die da zu klären sind: -Berechnung der Faktoren: Aus den Eingaben von P,I,D müssen die entsprechenden Faktoren berechnet werden. Soll der FPGA das machen oder macht das ein Bedienkomputer? In den Faktorberechnungen geht die Abtastzeit mit ein. Der Regler soll ja unabhängig von der Abtastzeit immer das gleiche machen -Moment des Einschaltens und des Ausschaltens des Regelkreises (wenn Du nur Temperatur damit regeln willst, sicher kein Problem, bei einer Maschine schon) - Genauigkeit; 16 Bit sollten es schon sein. Willst Du mit Gleitkomma oder Festkomma arbeiten? Bei Festkomma kommst Du ohne Bitschieberei nicht aus, um eine hinreichend große interne Genauigkeit (auf jeden Fall wesentlich größer wie 16 Bit)zu bekommen, sonst könnte es sein, daß der Regler schwingt (sog. Grenzschwingungen, durch das nicht zu umgehende Abschneiden/Runden) - und da gibt es noch einige andere Dinge zu beachten wie Begrenzung des I-Anteils, der Stellgröße etc. Der PID-Regler war einmal Thema meiner Dipl.Arbeit, damals(vor 20 Jahren) allerdings auf einem Einplatinenkomputer. Ich habe den Algorithmus auch schon in Assembler auf anderen Prozessoren geschrieben, da ist es natürlich leichter als auf einem FPGA. Was ich machen werde steht schon fest. Ich werde den Regler in Gleitkomma schreiben, die entsprechenden Routinen für Mult, Add, Umwandlung Gleitkomma <> Festkomma habe ich schon (aus einem sehr guten Buch von Günter Jorke "Rechnergestützter Entwurf dig. Schaltungen", kann ich nur empfehlen). Der Algorithmus liegt auch schon fest (wenn Du einen brauchst, kann ich ihn Dir zumailen). Ich bin kein FPGA-Experte (sondern ein "Newbe"), aber nach meiner Einschätzung wird das Ding wegen der vielen Multiplikationen und Divisionen schon einiges an Resourcen brauchen, bei Gleitkomma wesentlich mehr wie bei Festkomma. Gruß Peter
Hallo, wir haben in unserem Projekt einen VHDL PID-Regler im einsatz, ist Teil eines FPGA basierten Motorcontrollers. Die Implementation des Reglers ist recht trivial (fixpunkt), die wesentlichen Teile der PID entity sind in VHDL nicht mal 100 LOCs. Die Schwierigkeit ist wohl in der Anwendung und Verstaendniss. Synthetisiert bringts unsere Implementation auf etwa 450 StratixII ALUTs mit einer Handvoll DSP elements. Und da ist IMHO beim PID-Regler auch der groesste Resourcenverbrauch -> im Multiplizierer. Ohne Hardware Multiplizierer brachte es der Regler auf ueber 2500 4-LUTs. Wiviel das nun in Gatter sind ist relativ schwer abzuschaetzen, aber das ist vermutlich auch nicht mehr so aktuell. Cheers, Roger
Hallo Roger habe leider zu spät aufs Datum gesehen und gemerkt, daß die Nachricht über ein halbes Jahr alt ist. In dem Board wird wohl nicht aufgeräumt?? Vielen Dank noch einmal zu Deiner Antwort. Noch eine kurze Bemerkung von mir zum PID-Regler: Die Schwierigkeit liegt nicht so sehr in der Implementation des Algorithmus (wenn es auch da Feinheiten zu beachten gibt), sondern in dem Verhältnis der P,I,D Parameter untereinander (richtige Größenordnung!). Glaubt man zudem, man könnte sich auch die Berechnung der Faktoren sparen (weil man meint diese direkt vorgeben zu können und weil es Aufwand erspart), dann hast du alles mögliche, aber keinen PID-Regler. Das Ding mag zwar irgendwie regeln, nur fehlt dann eben das typische PID Verhalten. Um das beurteilen zu können, sollte man doch ein wenig was von Regelungstechnik verstehen.... Ich will meinen Regler wie gesagt in Gleitkomma realisieren(um auf 16 Bit echte Genauigkeit zu kommen)und auf einem Xilinx unterbringen. Mal sehen, wieviel Resourcen ich da verbrauche. gruß Peter
Hallo Sebastian Dein Fuzzy PID-Regler würde mich schon interessieren. Kennst Du Dich da näher aus? Habe auch mal drüber nachgedacht. Müßte mich aber erst mal in die Thematik einarbeiten. Bis dato werde ich es wohl erst mal mit dem klassischen PID-Regler versuchen, den kenne ich nämlich bestens. Gruß Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.