PID controller parameter
Verfasst: Freitag 8. Mai 2020, 01:06
Moin zusammen,
ich programmiere ein Tool für die implementierung eines PID-Reglers in meine Strömungssimulationen.
Ich habe das simple-pid modul entdeckt, allerdings kann ich keine Reglereinstellungen finden um meinen Zielwert zu treffen.
die bspfunction ist ein ähnliches Polynom was die Lösung meiner Strömungspoblems annähert. Mit Hilfe der Funktion möchte ich meine Reglerparameter einstellen um möglichst wenig Iterationen in der tatsächlichen Simulation benötigen.
Hat jemand eine Idee?
Viele Grüße
ich programmiere ein Tool für die implementierung eines PID-Reglers in meine Strömungssimulationen.
Ich habe das simple-pid modul entdeckt, allerdings kann ich keine Reglereinstellungen finden um meinen Zielwert zu treffen.
Code: Alles auswählen
#!/usr/bin/python3.7
import sys
import pandas as pd
import numpy as np
import pickle
import matplotlib
import matplotlib.pyplot as plt
import pandas_bokeh
from bokeh.plotting import figure, output_file, show
from simple_pid import PID
def bspfunction(x):
y = -0,0478*x^2 + 0,0071*x + 0,0433
return y
setpoint=0.05
pid=PID(28,0,0,setpoint)
pid.sample_time = 0.000000001
start=0.4
v=bspfunction(start)
#write to file
outputfile = open('PID.csv','w')
outputfile.write('J,kQ\n'+str(0)+','+str(v)+' \n')
outputfile.close()
iterations=0
residual=1
while iterations<100:
#compute new output
control = pid(v)
#PID output
v=bspfunction(control)
iterations+=1
#write to file
outputfile = open('PID.csv','a')
outputfile.write(str(iterations)+','+str(v)+' \n')
outputfile.close()
print('iterations= '+str(iterations)+' Kq= '+str(v))
residual=abs(v-setpoint)
#if iterations%50000==0:
colorIndex=0
p = figure(toolbar_location="above",plot_width=800,title='PID',tools="hover,wheel_zoom,box_zoom,reset,save,pan")
p.toolbar.logo=None
p.xaxis.axis_label='J / -'
#p.xaxis.ticker.max_interval=10
p.yaxis.axis_label='kT,kTN,10KQ,eta0 / -'
p.xgrid.grid_line_color="grey"
p.xgrid.grid_line_width=1
p.ygrid.grid_line_color="grey"
p.ygrid.grid_line_width=1
#p.ygrid.minor_grid_line_color="grey"
#p.ygrid.minor_grid_line_width=0.1
#p.xgrid.minor_grid_line_color="grey"
#p.xgrid.minor_grid_line_width=0.1
df=pd.read_csv("PID.csv")
p.line(df['J'],df["kQ"],legend_label='kQ develop',color="navy",line_width=2,line_dash=str(colorIndex)+" "+str(colorIndex))
show(p)
print("pid controll finished")
Hat jemand eine Idee?
Viele Grüße