Nachfolgend sind Python-Programme aufgeführt, die einen PI-Regler mit der Sprungantwort sowie dem Bode-Diagramm beschreiben und die Sprungantwort eines PID-T1-Reglers zeigen
web501
PI-Regler
Listing 5.1: Sprungantwort und Bode-Diagramm PI-Regler
# -*- coding: utf-8 -*- """ PI-Regler H(t) und Bode Created on 10.11. 2018, mod. 20.8.24 @author: philippsen """ import numpy as np import control as ct import matplotlib.pyplot as plt reg = ct.tf([6.0, 2.0],[3, 0.0]) t = np.linspace(0, 6, 200) e = np.ones(200) e[0]=0.0 t, y = ct.forced_response(reg,t,e) plt.plot(t,y) plt.title('PI-Regler') plt.xlabel('t [s]'); plt.ylabel(' y') plt.grid(True) plt.figure() ct.bode_plot(reg,title='Bode-Plot PI-Rgeler')
web502
PID-T1-Regler
Listing 5.2: Mit Python wird die Sprungantwort eines PID-T1-Reglers simuliert, wobei der D-Anteil ebenfalls geplottet wird.
# -*- coding: utf-8 -*- """ PI plus D-T1 Regler Created on 15.4. 2019, mod. 20.8.24 @author: philippsen """ import numpy as np import control as ct import matplotlib.pyplot as plt Kp= 2.0 # Reglerverstärkung Tn = 1.5 # Nachstellzeit Tv = 0.5 # Vorhaltzeit VV = 5 # Vorhaltverstärkung Zpi = np.array([Kp*Tn , Kp ]) Npi = np.array([ Tn, 0]) Zdt1 = np.array([Kp*Tv , 0]) Ndt1 = np.array([Tv/VV , 1]) t = np.arange(0,5,0.05) Gpi = ct.tf(Zpi,Npi) t, ypi = ct.step_response(Gpi,t) Gdt1 = ct.tf(Zdt1,Ndt1) tt, ydt = ct.step_response(Gdt1,t) fig, ax1 = plt.subplots() ax1.plot(tt, ypi+ydt, "b") ax1.set_ylabel('Stellgröße', color="blue", fontsize=14) plt.grid() ax2 = ax1.twinx() ax2.plot(tt, ydt, "r") ax2.set_ylabel('D-Anteil', color="red", fontsize=14) ax1.set_xlabel('t [s]', fontsize=12) ax1.set_title('PID-T1 - Regler', fontsize=12)