started implementing turbine and controller code
This commit is contained in:
35
Regler/Regler_class_file.py
Normal file
35
Regler/Regler_class_file.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import numpy as np
|
||||
#based on https://en.wikipedia.org/wiki/PID_controller#Discrete_implementation
|
||||
|
||||
|
||||
class P_controller_class:
|
||||
def __init__(self,setpoint,proportionality_constant):
|
||||
self.SP = setpoint
|
||||
self.Kp = proportionality_constant
|
||||
self.error_history = []
|
||||
self.control_variable = 0.1
|
||||
self.lower_limit = -0.1 # default
|
||||
self.upper_limit = +0.1 # default
|
||||
|
||||
def set_control_variable_limits(self,lower_limit,upper_limit):
|
||||
self.lower_limit = lower_limit
|
||||
self.upper_limit = upper_limit
|
||||
|
||||
def calculate_error(self,process_variable):
|
||||
self.error = self.SP-process_variable
|
||||
self.error_history.append(self.error)
|
||||
|
||||
def get_control_variable(self):
|
||||
new_control = self.control_variable+self.Kp*(self.error_history[-1]-self.error_history[-2])
|
||||
if new_control < self.lower_limit:
|
||||
new_control = self.lower_limit
|
||||
|
||||
if new_control > self.upper_limit:
|
||||
new_control = self.upper_limit
|
||||
|
||||
self.control_variable = new_control
|
||||
# print(new_control)
|
||||
return new_control
|
||||
|
||||
|
||||
|
||||
148
Regler/regler_test.ipynb
Normal file
148
Regler/regler_test.ipynb
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user