[PYTHON] [Regelungstechnik] Visualisierung und Analyse der PID-Regelung und der Sprungantwort

1. Zuallererst

Im vorherigen Artikel (https://qiita.com/sato235/items/5e006ebbf2949cf59463) wurde empfohlen, die Stufeneingabe und die Sprungantwort in der Schaltung mit der Steuerung zu visualisieren. Daher habe ich diesen Artikel erstellt. Schließlich möchte ich es zum Entwerfen des Steuerungssystems des Roboters verwenden.

2 Referenzen

2.1 Bücher

[1] Hiroki Minami, Ohm, "Einführung in die Steuerungstechnik mit Python"

2.2 Webseite

[a] Kontrollblockdiagramm: https://tajimarobotics.com/pid-block-diagram-transfer-function/ [b] [Steuerungstechnik] Grafische Darstellung der Übertragungsfunktionen von Python: https://qiita.com/sato235/items/5e006ebbf2949cf59463 [c] [Control Engineering] Berechnung von Übertragungsfunktionen und Zustandsraummodellen durch Python: https://qiita.com/sato235/items/f991411074c578d1640c

3 Implementierungsdetails

3.1 Blockschaltbild der PID-Regelung

ブロック線図.png Quelle: [a]

Das obige "C" entspricht der Steuerung. Die obige Rückkopplungssteuerschaltung wird als Übertragungsfunktion verwendet, um die Stufeneingabe / -antwort zu visualisieren.

3.2 Übertragungsfunktion

Ursprünglicher Wert


K=1
Kd=1
Wn=1
Ki=1
ita=1
Kp=1

Erstellen Sie eine Übertragungsfunktion

C=matlab.tf([Kd, Kp, Ki],[1,0])
G=matlab.tf([K*Wn**2],[1,2*ita*Wn, Wn**2])
H=1
print("H")
print(H)
print("------------")
print("C")
print(C)
print("------------")

print("G")
print(G)
print("------------")


CG=matlab.series(C,G)
print("C*G")
print(CG)
print("------------")

CGH= matlab.feedback(CG,H,-1)
print("C*G/(1+C*G*H)")
print(CGH)
print("------------")

Die Ausgabe ist wie folgt.

H
1
------------
C

s^2 + s + 1
-----------
     s

------------
G

      1
-------------
s^2 + 2 s + 1

------------
C*G

  s^2 + s + 1
---------------
s^3 + 2 s^2 + s

------------
C*G/(1+C*G*H)

     s^2 + s + 1
---------------------
s^3 + 3 s^2 + 2 s + 1

------------

3.3 Schritt Eingabe / Antwort

Visualisieren Sie die Schritteingabe und -antwort mithilfe der oben erstellten Übertragungsfunktion.

t = np.linspace(0, 3, 1000)
yout, T = matlab.step(P, t)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(T,yout, label="step response")
ax.plot(T,[1]*1000, linestyle="--", label="step input")
ax.set_xlabel("time[s]")
plt.legend(bbox_to_anchor=(1, 0.25), loc='upper right', borderaxespad=0, fontsize=11)

Die Figur ist wie folgt.

step_input_response.png

4 Zusammenfassung

・ Ich konnte die Sprungantwort in der Rückkopplungsschaltung mit der Steuerung visualisieren. ・ Als nächstes möchte ich die Stabilität betrachten und das Verhalten vergleichen, wenn die Koeffizienten der C-, G- und H-Funktionen geändert werden.

Recommended Posts

[Regelungstechnik] Visualisierung und Analyse der PID-Regelung und der Sprungantwort
Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)
Die Welt der Bücher der Steuerungstechnik
Aggregation und Visualisierung akkumulierter Zahlen
[Steuerungstechnik] Berechnung von Übertragungsfunktionen und Zustandsraummodellen durch Python
Visualisierung und Analyse von Stava Twitter-Datenstandortinformationen
Korrelationsvisualisierung der Merkmalsmenge und der Zielvariablen
Visualisierung von CNN-Feature-Maps und -Filtern (Tensorflow 2.0)
Ich habe versucht, morphologische Analyse und Wortvektorisierung
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen