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).