ME 405 Romi
Loading...
Searching...
No Matches
controller.py
Go to the documentation of this file.
15
16
20
21# The arguments the gains and saturation points of the classical controller.
22# @param K_p : K_p is the proportional gain.
23# @param K_i : K_i is the integral gain.
24# @param K_d: K_d is the derivative gain, but it is not implemented as it was not used in the project.
25# @param err_sat : err_sat is the saturation point for the integral of the error to stop I control from becoming unstable.
26# @param eff_sat : eff_sat is the saturation point for the output effort.
28 def __init__(self, K_p, K_i, K_d, err_sat, eff_sat):
29 self.K_p = K_p
30 self.K_i = K_i
31 self.K_d = K_d
32 self.summed_errors = 0
33 self.reference = 0
34 self.err_sat=err_sat
35 self.effort_saturation=eff_sat
36
37
39
40 def change_Ref(self, reference):
41 self.reference = reference
42 # print("Reference set")
43 # print(self.reference)
44
45
47 def get_Ref(self):
48 return self.reference
49
51 def get_Error(self):
52 return self.summed_errors
53
56 def proportional_Control(self, measure):
57 error = self.reference - measure
58 cntrl_val = error * self.K_p
59
60 if cntrl_val > 100:
61 return 100
62 elif cntrl_val < -100:
63 return -100
64 else:
65 return cntrl_val
66
72 def pi_Control(self, measure, dt):
73 #print(f"Measure : {measure}")
74 #print(f"Reference : {self.reference}")
75 error = self.reference - measure
76 #print(f"error : {error}")
77 self.summed_errors += error * (dt/1000000)
78 self.summed_errors = self.error_sat(self.summed_errors)
79 cntrl_val = ((error * self.K_p)+(self.summed_errors * self.K_i))
80 return self.effort_sat(cntrl_val)
81
84 def error_sat(self, err):
85 if err >= self.err_sat:
86 return self.err_sat
87 elif err <= -self.err_sat:
88 return -self.err_sat
89 else:
90 return err
91
94 def effort_sat(self, eff):
95 if eff >= self.effort_saturation:
96 return self.effort_saturation
97 elif eff <= -self.effort_saturation:
98 return -self.effort_saturation
99 else:
100 return eff
101
106 def change_Gains(self, k_p, k_i, k_d):
107 self.K_p = k_p
108 self.K_i = k_i
109 self.K_d = k_d
This file contains a class to create a PID Controller object.
Definition controller.py:19
__init__(self, K_p, K_i, K_d, err_sat, eff_sat)
Definition controller.py:21
effort_sat(self, eff)
effort_sat is a function which returns the saturated effort of the controller based on this instance ...
Definition controller.py:94
change_Ref(self, reference)
change_Ref changes the set point of the controller.
Definition controller.py:40
error_sat(self, err)
error_sat is a function which returns the saturated integral of the error based on this instance of t...
Definition controller.py:84
proportional_Control(self, measure)
proportional_Control returns a saturated effort value based on the error of the system from the set p...
Definition controller.py:56
pi_Control(self, measure, dt)
pi_Control returns a saturated effort value based on the error of the system from the set point using...
Definition controller.py:72
change_Gains(self, k_p, k_i, k_d)
change_Gains changes this instance's gain values.
get_Ref(self)
get_Ref returns the current set point of the controller.
Definition controller.py:47
get_Error(self)
get_Error returns the current Riemann Sum integral of the errors of the controller.
Definition controller.py:51