PI bzw. PID-Regler implementieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Hallo liebe Community,

ich wollte fragen, ob mir jemand helfen kann ein PI bzw. PID-Regler in Python zu implementieren.
Ich habe einen Ultraschallsensor der Abstände misst und mein "Roboter" soll sozusagen einen bestimmten vorgegebenen Abstand immer halten.

Die Steuerung usw. erfolgt alles mit einem RaspberryPI.

Würde mich freuen, wenn ihr mir behilflich sein könnt.

Vielen Dank schonmal
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Wo liegt denn dein Problem? Literatur zum PID-Regler gibt es wie Sand am Meer und die Gleichungen sind jetzt nicht unbedingt wahnsinnig kompliziert. Die musst du einfach nur in Python-Code umsetzen und das war es dann.
Das Leben ist wie ein Tennisball.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@ga69jot: Bitte stelle eine konkrete Frage. Wenn du ein potenziell Helfender wärst und deinen eigenen Beitrag lesen würdest, dann wäre dir vermutlich auch unklar, worauf genau du jetzt antworten könntest. Suchst du spezielle Literatur, Tutorials, Beispiele? Oder vielleicht einen persönlichen Mentor, der dich per PN berät? Letzteres wäre übrigens nicht die feine Art, da Support in Foren normalerweise öffentlich ist, damit auch spätere Mitlesende etwas von der Lösung haben.
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Hallo,

ich habe leider überhaupt keine Ahnung von Python und soll da einen PID Regler implementieren und weiß gar nicht wie ich das machen soll.
Die Gleichungen kenne ich natürlich, jedoch habe ich keine Ahnung wie man das mit einem Code umsetzt.
Bin ein richtiger Laie, was das Programmieren betrifft.
BlackJack

@ga69jot: Dann lern erst einmal unabhängig von dem konkreten Problem die Grundlagen vom Programmieren und Python. Das ist ja irgendwie Voraussetzung wenn man etwas programmieren will. Für absolute Anfänger wird oft Learn Python The Hard Way empfohlen. In der Python-Dokumentation ist auch ein Tutorial was man mal durchgearbeitet haben sollte.
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Die Grundlagen von Programmieren habe ich schon :) habe C in der Uni lernen müssen...nur danach habe ich mich mit dem Programmieren nie befasst
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

ga69jot hat geschrieben:Die Grundlagen von Programmieren habe ich schon :) habe C in der Uni lernen müssen...nur danach habe ich mich mit dem Programmieren nie befasst
Ohne Wissen um das Programmieren mit Python wirst du kein Python-Programm schreiben können.
BlackJack

@ga69jot: Dann musst Du Dich jetzt damit befassen. Nur falls der Punkt von /me noch nicht ganz so deutlich rübergekommen sein sollte: Um Python-Programme schreiben zu können, muss man in Python programmieren können. Klingt vielleicht komisch, ist aber so. :-)

Und programmieren lernt man zu einem nicht unbeträchtlichen Teil in dem man es einfach tut — also programmieren. Übung, Meister, und so. :-)
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Alles klar :) Ich werde dann mal versuchen PID-Regler zu implementieren und wenn dann konkrete Fragen auftreten stelle ich sie :) bzw. wenn ich Probleme habe :)
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Hallo Community,

hab jetzt einen Code geschrieben, würde ihn euch zeigen, hoffentlich ist der auch richtig :)

Der lautet wie folgt:

error = ist - soll
p_anteil = error * p_gain
error_integral = error_integral + error
i_anteil = error_integral * i_gain

Jetzt ist meine frage, wie Kriege ich denn meine Sensordaten? Ich hab ein eigenes Skript womit ich eine abstandsmessung mit einem ultraschallsensor mache.

Danke schonmal :)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Indem du das Script aufrufst? Vermutlich ist http://docs.python.org/2/library/subpro ... eck_output ein guter Anfang…
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Wie meinst du das mit Skript aufrufen ? Hab mir den Link angesehen aber das war mir zu viel Info auf einmal, wurde nicht schlau wie genau das funktionieren soll.
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Mag mir denn keiner helfen?!

Ist der Regler überhaupt so richtig ?!
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wahrscheinlich kann Dir niemand helfen, weil niemand weiß, wo Dein Problem liegt. Ein Programm liest Daten ein, verarbeitet Daten und gibt Daten wieder aus. Natürlich um irgendeinen Zweck zu erfüllen. Wenn man bei 0 anfängt, dann nimmt man sich am besten ein Beispiel-Programm, zum Beispiel um Sensordaten zu lesen, und wenn Du das soweit verstanden hast, kannst Du das Programm dann so erweitern, dass es das tut, was Du möchtest. Was Du bisher schon gemacht hast und wo Du jetzt gerade steckst, hat aber keine Kristallkugel bisher verraten.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

ga69jot hat geschrieben:Ist der Regler überhaupt so richtig ?!
Nein. Ich kann dir nur noch einmal raten, dass du dich vernünftig in die Theorie dahniter einarbeitest. Dein Ansatz sieht viel halb gelesen und halb geraten aus. Material gibt es zu dem Thema ausreichend und auch Beispielcode ist in Mengen vorhanden.
Das Leben ist wie ein Tennisball.
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Ich hab mir die Theorie angesehen, und versucht die Gleichungen umzusetzen, ich denke
die theorie sollte ich schon verstanden haben.

Ich hab mir auch viele Codes in C oder C++ angesehen.

Könntest du mir vllt sagen was an dem Code verbessert werden muss bzw was
Fehlt?
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

ga69jot hat geschrieben:Könntest du mir vllt sagen was an dem Code verbessert werden muss bzw was Fehlt?
Vielleicht um mal ganz grundlegend anzufangen: Weißt du überhaupt, wie man die Daten des Sensors ausliest? Wenn nein, welche Dokumentation hat denn der Hersteller dazu?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

ga69jot hat geschrieben:Ich hab mir die Theorie angesehen, und versucht die Gleichungen umzusetzen, ich denke
die theorie sollte ich schon verstanden haben.
Dein Regler hat zum Beispiel nicht einmal ein Ergebnis. Mich würde so etwas stutzig machen ;-)
Das Leben ist wie ein Tennisball.
ga69jot
User
Beiträge: 9
Registriert: Mittwoch 18. Dezember 2013, 13:12

Ich sehe gerade auf meinem PC habe ich noch
Eine Zeile stehen und zwar: y= i_anteil + p_anteil

Ist es dann mit dieser Zeile vollständig ?


Zu meinem Sensor ich habe einen ultrasonic ultraschallsensor, einen python Code zum messen habe ich auch, aber wie ich diese gemessenen Daten dann an den Regler weiter gebe weiß ich nicht.
Antworten