PI Regler - PT2

Mit PT\(_2\) Glieder können viele reale Systeme gut approximiert werden. Dazu zählen Anwendungen in Bereich der Temperatur, Elektrotechnik als auch Mechanische Streken.

PI Regler - Masse Feder Dämpfersystem

System

Ein mechanischer Antrieb kann mit der Differentialgleichung

\[ J \ddot{\varphi}(t) + d \dot{\varphi}(t) + c \varphi(t) = V M(t) \]

beschrieben werden, wobei \(\varphi\) ein Rotationswinkel ist. Mit dem Übergang in den Laplacebereich

\[ J s^2 \varphi(s) + d s \varphi(s) + c \varphi(s) = V M(s) \]

gewinnen wir die Übertragungsfunktion

\[ G(s) = \frac{V}{J s^2 + d s + c} = \frac{\omega(s)}{M(s)} \]

welche wir elegant in control verwenden können. Diese Übertragungsfunktion lässt sich auch in der Form

\[ G(s) = \frac{V}{(Ts)^2+2\xi T s + 1} \]

ausdrücken.

PI - Regler

Für einen Positionsregler wollen wir einen PI der Form

\[ G_r(s) = \frac{V_I(1+T_Is)}{s} \]

verwenden. Für die Einstellung des Reglers stehen nun die zwei Parameter \(V_I\) und \(T_I\) zur Verfügung.

Reglerentwurf in control

import control
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
s = control.TransferFunction.s
# system
V = 5
xi = 1/np.sqrt(2)
T = 1
Gp = V / ((T*s)**2 + 2*xi*T*s+1)
Gp
\[\frac{5}{s^2 + 1.414 s + 1}\]
# controller
Vi = 1
Ti = 1
Gr = Vi*(1+Ti*s)/s
Gr
\[\frac{s + 1}{s}\]
# closed loop system
Tyr = Gp*Gr/(1+Gp*Gr)
Tyr
\[\frac{5 s^4 + 12.07 s^3 + 12.07 s^2 + 5 s}{s^6 + 2.828 s^5 + 9 s^4 + 14.9 s^3 + 13.07 s^2 + 5 s}\]
def sim(Vi = 1, Ti = 1, Tend=25):
    """simulate closed loop system"""
    Gr = Vi*(1+Ti*s)/s
    
    Tyr = Gp*Gr/(1+Gp*Gr)
    
    t = np.linspace(0,Tend,1000)

    plt.figure(figsize=(12,6))
    tout, yout = control.step_response(Tyr,T=t)
    plt.plot(tout,yout)

In einem aktiven Jupyter Notebook kann ein Regler elegant ausgelegt werden.

Warnung

ipywidgets funktionieren nur in einem Jupyter Notebook mit aktiven Python Kernel. Im Jupyter Book (Html) werden ipywidgets darum nicht angezeigt.

# does not work in html sites, you need a running Python kernel.
import ipywidgets as widgets
widgets.interact(sim,Vi = (0.0,5,0.01),Ti=(0.0,5,0.05));
sim(Vi=0.3,Ti=2)
../../_images/pi_pt2_13_0.png