Ich habe die Übertragungsfunktion meines Systems berechnet, um eine PID darauf anzuwenden. Mit MATLAB und dem PID-Tuner-Tool habe ich die Kp
, Ki
und Kd
Parameter meines PID-Reglers bekommen. In meinem Fall sind sie beispielsweise 0,175, 371,22 bzw. 0.
Jetzt muss ich diese Werte in meinem DSP verwenden, aber der PID-Algorithmus verwendet das Q15-Bruchformat für alles. Ich weiß, wie ich die Eingangs- und Ausgangswerte meiner PID skalieren soll:
Wenn der maximale Eingabewert ist x
, teilen Sie ihn durch, x
wenn er von -x
bis geht x
, oder tun Sie , wenn er von bis (x/2)-1
geht , und konvertieren Sie ihn dann in Q15-Bruchzahlen0
x
Für den Ausgabewert skalieren Sie ihn einfach nach Ihren Bedürfnissen
Aber wie konvertiere ich meine PID-Parameter und Kp
Q15 richtig? Wenn ich einen Faktor auf sie anwende, wie ich es für die Eingangs- und Ausgangswerte tue, ändere ich tatsächlich die Schleifenantwort, also wie wird das gemacht? Ich denke, dies sollte beim Entwerfen digitaler PIDs eine ziemlich häufige Vorgehensweise sein.Ki
Kd
Zunächst einmal sind die maximal darstellbaren Werte des Q15-Formats -1 und 0,9999. Sie könnten also ein Problem mit Ihrem Ki haben.
Die gebräuchlichste Lösung, um ein Double in ein Q15 umzuwandeln, besteht darin, es mit 2^15 zu multiplizieren.
Normalerweise verwende ich dieses Makro:
#define Q15(x)(s16) ((x<0.0) ? (s16)(32768*(x) - 0.5):(s16)(32768*(x) + 0.5))
Da Ihr Ki aber nicht mit dem Q15-Format arbeitet, sollten Sie ein anderes Q-Format verwenden. zB: Q6 oder Q7.
Weitere Informationen finden Sie auf Wikipedia .
Sie können die interne Matlab-Funktion: fi(v) verwenden, um ein numerisches Festkommaobjekt zu konstruieren: https://de.mathworks.com/help/fixedpoint/ref/fi.html
Andreas
Benutzer118405
Andreas
Benutzer118405