Hi,
ich habe den Regelkreis jetzt doch mal als ganz simples Modell in Matlab nachgebaut. Falls jemand Interesse hat, hier der Code. Das ist ausdrücklich kein guter Matlab-Code!
Code:
clear
if 1
% sprünge
soll = [zeros(1, 100) ...
ones(1, 200)*20 ...
zeros(1, 100) ...
ones(1, 200)*-40 ...
zeros(1, 100) ...
ones(1, 200)*60 ...
zeros(1, 100) ...
ones(1, 200)*80 ...
zeros(1, 100)];
else
% rampen
soll = [-80:2:80 ...
-80:1:80 ...
-80:0.5:80 ...
-80:0.25:80];
end
% streckeneigenschaften
v = 0.38;
T1 = 13;
% PID parameter
Kp = 6;
Ki = 0.35;
Kd = 0;
Ta = 1; % entspr. 2.048 ms
% init
y = 0;
eSum = 0;
eOld = 0;
yOld = 0;
for i = 1:length(soll)
w = soll(i);
%% PID
e = w - y;
eSum = eSum + e;
P = Kp*e;
I = Ki * Ta * eSum;
D = Kd/Ta*(e - eOld);
u = P+I+D;
eOld = e;
u(u>208) = 208; % max. stellwert
u(u<-208) = -208;
%% PT1 strecke
y = yOld + 1/T1 * (v * u - yOld);
yOld = y;
%% doku
y_(i) = y;
u_(i) = u;
w_(i) = w;
e_(i) = e;
P_(i) = P;
I_(i) = I;
D_(i) = D;
end
% darstellung
disp(['Summenfehler: ' num2str(eSum)])
subplot(2, 1, 1)
plot(soll, 'LineWidth', 2)
hold on
plot(y_, 'r', 'LineWidth', 2)
set(gca, 'XLim', [0 length(y_)])
xlabel('Zeit [Ticks]')
ylabel('Drehzahl')
legend('soll', 'ist')
subplot(2, 1, 2)
plot(P_, 'LineWidth', 2)
hold on
plot(I_, 'g', 'LineWidth', 2)
plot(u_, 'r', 'LineWidth', 2)
set(gca, 'XLim', [0 length(y_)])
xlabel('Zeit [Ticks]')
ylabel('Wert')
legend('P', 'I', 'Stellwert')
Die Abhängigkeit der Drehzahl von der PWM wurde wie oben gesagt als PT1 angenommen, für Zeitkonstante und Streckenverstärkung wurden die empirisch ermittelten Werte verwendet. Um die Nichtlinearität durch die Schwelle wegzubekommen habe ich den PWM Wert einfach verschoben, die tatsächliche Aktivierung von 47 bis 255 sieht der Regler als 0 bis 208. Ich habe dann per Hand mit den Parametern gespielt, bis das Regelverhalten gut aussah. Es stellte sich schnell heraus, dass der D-Anteil keine wesentliche Verbesserung des Regelverhaltens bringt, ich habe ihn dann rausgeschmissen. Es war wohl nicht anders zu erwarten als dass der PID sehr gut mit einer perfekt linearen Regelstrecke funktioniert, die Frage ist also, wie gut das Ganze dann noch am realen Objekt funktioniert. Auch den Vergleich mit dem Modell finde ich dann nochmal spannend. Hier mal zwei Bilder des Regelverhaltens, einmal Sollwertsprünge, einmal Rampen:

Fortsetzung folgt ... 
Gruß
Malte
Lesezeichen