Frage:
Was ist der richtige Weg, um PID zu implementieren?
tuskiomi
2016-07-13 01:29:56 UTC
view on stackexchange narkive permalink

Ich habe einige Probleme bei der Konzeption der Implementierung von PID in meiner Drohne. Ich denke über einige Möglichkeiten nach, die Pipeline zu implementieren:

  • Ein PID-Objekt für jeden der sechs Motoren.
  • Ein PID-Objekt für jede Achse.

Wie würde ich PIDs pro Motor implementieren?

enter image description here

Wie würde ich PIDs pro Achse implementieren?

enter image description here

Ich vermute, dass die zweite die beste Vorgehensweise sein wird Alles kann in eine eigene Schleife gestellt werden, in der die PID-Daten bei Bedarf verfügbar sind, anstatt sie vor Ort zu berechnen. Es ist objektorientiert und läuft im Hintergrund.

Das erste hat auch seine Anziehungskraft. Einige der Berechnungen, die erforderlich sind, um den tatsächlichen Wert zu ermitteln, entfallen. Es ist prozedural und sehr unkompliziert und funktioniert vor Ort.

Was meint ihr?

Zwei antworten:
BrettAM
2016-07-13 04:40:33 UTC
view on stackexchange narkive permalink

Jede eindeutige Variable, über die Sie die Kontrolle haben möchten, sollte eine einzelne PID-Schleife haben, und jede Schleife sollte sich immer nur über eine "Zeitreihenfolge" erstrecken.

Um beispielsweise die Rollrate des Fahrzeugs zu steuern, sollten Sie eine PID-Schleife haben, die die Zielrollrate nimmt und den Wert des kontrollierten Rolldrehmoments ausgibt, der irgendwie in Motorbeschleunigungen umgewandelt wird. Die Triggergewichte für dieses Teil können vorberechnet werden, damit dies nicht zur Laufzeit erfolgen muss.

Um die Rolldrehposition des Fahrzeugs zu steuern, benötigen Sie eine PID-Schleife, die die Zielrollposition einnimmt und die ausgibt Zielrollgeschwindigkeit, diese Zielrollgeschwindigkeit wird dann zum Sollwert für die Rollgeschwindigkeits-PID-Schleife.

Ich verstehe nicht, warum jeder Motor eine eigene PID-Schleife benötigt, es sei denn, Sie messen den tatsächlichen Schub jedes Motors produziert. Wenn Sie den Schub jedes Motors messen würden, würden ihre PID-Schleifen immer noch kommen, nachdem der Solldrehmomentwert berechnet wurde. Die PID-Berechnungen des Zieldrehmoments müssen nicht wissen, welche Motoren vorhanden sind oder wo sie sich befinden.

Ich verstehe möglicherweise nicht die Absicht Ihrer Diagramme oder die "Reihenfolge" der PID-Schleifen Fühlen Sie sich frei, mit Klarstellungen zu kommentieren. Dies ist kompliziert.

Es ist auch erwähnenswert, dass die tatsächliche Implementierungs-PID häufig einige Funktionen aufweist, die in theoretischen PID-Schleifen nicht vorkommen, wie z. B. die integrierte Windup-Verhinderung. Sie müssen auch eine Möglichkeit haben, sie entweder jedes Mal in genau demselben Intervall aufzurufen oder das Zeitdelta seit der letzten Aktualisierung genau zu verfolgen. Möglicherweise möchten Sie nur die Ableitung der Prozessvariablen und nicht den Fehler verwenden, damit Sie keine Sollwertänderungen im D-Term beobachten. Sie können den abgeleiteten Begriff auch "auslagern", wenn Ihre IMU eine bessere Berechnung hat (wie die rohen Gyroskopwerte).

dannyf
2017-02-08 20:46:00 UTC
view on stackexchange narkive permalink

Ich werde eine generische C-Antwort darauf geben:

1) herausfinden, welche Parameter / Variablen an einem PID-Regelkreis beteiligt sind; 2) diese Parameter / Variablen in eine Struktur strukturieren; 3) übergeben Diese Struktur wird auf einen gemeinsamen Satz von PID-Algorithmen angewendet.4).

Bei diesem Ansatz wird der Algorithmus nur einmal implementiert und kann so oft verwendet / wiederverwendet werden, wie Sie möchten.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...