Skip to content

Commit

Permalink
Update PythonPID_Simulator.pyw
Browse files Browse the repository at this point in the history
  • Loading branch information
Destination2Unknown committed Jun 24, 2022
1 parent 350d175 commit f3f6433
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions PythonPID_Simulator.pyw
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,14 @@ class PID(object):

class FOPDTModel(object):
def __init__(self, PlantParams, ModelData):
self.t,self.CV = PlantParams
self.CV = PlantParams
self.Gain, self.TimeConstant, self.DeadTime, self.Bias = ModelData

def calc(self,PV,ts):
if (ts-self.DeadTime) <= 0:
um=0
elif int(ts-self.DeadTime)>=len(self.CV):
um=self.CV[-1]
else:
um=self.CV[int(ts-self.DeadTime)]
dydt = (-(PV-self.Bias) + self.Gain * um)/self.TimeConstant
Expand Down Expand Up @@ -162,15 +164,14 @@ def refresh():
#Packup data
PIDGains=(ikp,iki,ikd)
ModelData=(igain,itau,ideadtime,ibias)
PlantParams=(t, CV)

#PID Instantiation
pid = PID(ikp, iki, ikd, SP[0])
pid.output_limits = (0, 100)
pid.tunings=(PIDGains)

#plant Instantiation
plant=FOPDTModel(PlantParams, ModelData)
plant=FOPDTModel(CV, ModelData)

#Start Value
PV[0]=ibias+noise[0]
Expand All @@ -188,7 +189,7 @@ def refresh():
CV[i]=pid(PV[i], SP[i])
ts = [t[i],t[i+1]]
#Send step data
plant.t,plant.CV=i,CV
plant.CV=CV
#Find calculated PV
PV[i+1] = plant.update(PV[i],ts)
PV[i+1]+=noise[i]
Expand Down

0 comments on commit f3f6433

Please sign in to comment.