Es gibt mehrere Gründe, warum die Z-Transformationsform eine höhere Nützlichkeit hat.
Fragen Sie jeden, der für den zeitbasierten / einfachen / PHD-freien Ansatz wirbt, wie der Kd-Begriff lautet. Sie antworten wahrscheinlich mit "Null" und sie sagen wahrscheinlich, dass D instabil ist (ohne Tiefpassfilter). Bevor ich erfuhr, wie das alles zusammenkommt, hätte ich solche Dinge gesagt und getan.
Das Einstellen von Kd ist im Zeitbereich schwierig. Wenn Sie die Übertragungsfunktion (die Z-Transformation des PID-Teilsystems) sehen, können Sie leicht erkennen, wie stabil sie ist. Sie können auch leicht sehen, wie sich der D-Term auf den Regler im Verhältnis zu den anderen Parametern auswirkt. Wenn Ihr Kd-Parameter 0,00001 zu den Z-Polynom-Koeffizienten beiträgt, Ihr Ki-Term jedoch 10,5 einfügt, ist Ihr D-Term zu klein, um eine echte Auswirkung auf das System zu haben. Sie können auch das Gleichgewicht zwischen den Begriffen Kp und Ki anzeigen.
DSPs dienen zur Berechnung von Finite-Differenzen-Gleichungen (FDE). Sie haben Op-Codes, die einen Koeffizienten multiplizieren, zu einem Akkumulator summieren und einen Wert in einem Puffer in einem Befehlszyklus verschieben. Dies nutzt die Parallelität der FDE aus. Wenn der Maschine dieser Op-Code fehlt ... ist es kein DSP. Embedded PowerPCs (MPC) verfügen über ein Peripheriegerät zur Berechnung von FDEs (sie nennen es die Dezimationseinheit). DSPs sind so konzipiert, dass sie FDEs berechnen, da es trivial ist, eine Transferfunktion in eine FDE umzuwandeln. 16 Bit reichen nicht aus, um die Koeffizienten leicht zu quantisieren. Viele frühe DSPs hatten aus diesem Grund tatsächlich 24-Bit-Wörter (ich glaube, 32-Bit-Wörter sind heutzutage üblich).
IIRC, die sogenannte bilineare Transformation, übernimmt eine Übertragungsfunktion (eine z-Transformation eines Zeitbereichs-Controllers) und wandelt sie in eine FDE um. Es ist trivial, zu beweisen, dass es schwierig ist, daraus ein Ergebnis zu erhalten - Sie brauchen nur die erweiterte Form (multiplizieren Sie alles aus) und die Polynomkoeffizienten sind die FDE-Koeffizienten.
Ein PI-Regler ist kein guter Ansatz - ein besserer Ansatz besteht darin, ein Modell für das Verhalten Ihres Systems zu erstellen und PID zur Fehlerkorrektur zu verwenden. Das Modell sollte einfach sein und auf der Grundphysik Ihrer Arbeit basieren. Dies ist die Vorwärtskopplung in den Steuerblock. Ein PID-Block korrigiert dann den Fehler anhand der Rückmeldung des gesteuerten Systems.
Wenn Sie normalisierte Werte [-1 .. 1] oder [0 ... 1] für den Sollwert (Referenz), die Rückkopplung und die Vorwärtskopplung verwenden, können Sie einen 2-poligen 2-Null-Algorithmus in implementieren optimierte DSP-Baugruppe und Sie können damit jeden Filter 2. Ordnung implementieren, der PID und den grundlegendsten Tiefpass- (oder Hochpass-) Filter enthält. Aus diesem Grund haben DSPs Op-Codes, die normalisierte Werte annehmen, z. B. einen, der eine Schätzung der Quadratwurzel für den Bereich ausgibt (0..1]. Sie können zwei 2p2z-Filter in Reihe schalten und einen 4p4z-Filter erstellen Sie können Ihren 2p2z-DSP-Code nutzen, um beispielsweise einen 4-Tap-Tiefpass-Butterworth-Filter zu implementieren.
Bei den meisten Implementierungen im Zeitbereich wird der dt-Term in die PID-Parameter (Kp / Ki / Kd) eingebrannt. Bei den meisten Implementierungen von Z-Domains ist dies nicht der Fall. dt wird in die Gleichungen aufgenommen, die Kp, Ki und Kd nehmen und in einen [] & b [] -Koeffizienten umwandeln, sodass Ihre Kalibrierung (Abstimmung) des PID-Reglers jetzt unabhängig von der Regelrate ist. Sie können es zehnmal schneller laufen lassen, die a [] & b [] -Mathematik herausdrehen und der PID-Regler wird eine konsistente Leistung haben.
Ein natürliches Ergebnis der Verwendung von FDE ist, dass der Algorithmus implizit "störungsfrei" ist. Sie können die Zuwächse (Kp / Ki / Kd) im laufenden Betrieb ändern, und das Verhalten ist gut - abhängig von der Implementierung im Zeitbereich kann dies schlecht sein.
In der Regel wird viel Aufwand für PID-Regler im Zeitbereich aufgewendet, um ein integrales Aufziehen zu verhindern. Mit dem FDE-Formular gibt es einen einfachen Trick, mit dem sich die PID gut verhält. Sie können ihren Wert im Verlaufspuffer festhalten. Ich habe nicht nachgerechnet, wie sich dies auf das Verhalten des Filters auswirkt (in Bezug auf Kp / Ki / Kd-Parameter), aber das empirische Ergebnis ist, dass es "glatt" ist. Dies nutzt die „Störungsfreiheit“ des FDE-Formulars aus. Ein Feed-Forward-Modell trägt dazu bei, ein integrales Aufziehen zu verhindern, und die Verwendung des D-Terms hilft, den I-Term auszugleichen. PID funktioniert wirklich nicht wie beabsichtigt mit einer D-Verstärkung. (Drehsollwerte sind ein weiteres wichtiges Merkmal, um übermäßiges Aufziehen zu verhindern.)
Schließlich sind Z-Transformationen ein untergeordnetes Thema, nicht "Ph.D." Sie sollten alles über sie in Complex Analysis gelernt haben. Hier können die Universität, der Dozent und die Mühen, die Sie in die Mathematik und den Umgang mit den verfügbaren Werkzeugen gesteckt haben, Ihre Leistungsfähigkeit in der Industrie erheblich verbessern. (Meine Klasse für komplexe Analysen war schrecklich.)
Das defacto-Industrie-Tool ist Simulink (dem ein Computer-Algebra-System, CAS, fehlt, sodass Sie ein anderes Tool benötigen, um allgemeine Gleichungen aufzustellen). MathCAD oder wxMaxima sind symbolische Löser, die Sie auf einem PC verwenden können, und ich habe gelernt, wie man sie mit einem TI-92-Rechner ausführt. Ich denke, der TI-89 hat auch ein CAS-System.
Sie können Z-Domain- oder Laplace-Domain-Gleichungen auf Wikipedia nachschlagen, um PID- und Tiefpassfilter zu finden. Es gibt hier einen Schritt, den ich nicht befürchte. Ich glaube, Sie benötigen die zeitdiskrete Domänenform des PID-Reglers und müssen dann die Z-Transformation durchführen. Die Laplace-Transformation sollte der z-Transformation sehr ähnlich sein und wird als PID {s} = Kp + Ki / s + Kd · s angegeben. Ich denke, die z-Transformation würde die Dt in den folgenden Gleichungen besser erklären. Dt ist delta-t [ime], ich verwende Dt, um diese Konstante nicht mit einer Ableitung 'dt' zu verwechseln.
b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt
a[1] = -1
a[2] = 0
Und das ist die 2p2z FDE:
y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]
DSPs hatten normalerweise nur ein Multiplizieren & Addieren (kein Multiplizieren & Subtrahieren), so dass Sie die Negation in die a [] -Koeffizienten gerollt sehen können. Fügen Sie mehr B für mehr Pole hinzu, fügen Sie mehr A für mehr Nullen hinzu.