- improved timer

git-svn-id: http://moon:8086/svn/projects/HendiControl@120 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-03-21 19:58:03 +00:00
parent 8f3e76fa8e
commit d477d64312
+19 -10
View File
@@ -21,6 +21,7 @@ class Controller():
self.dt = params['dt'] self.dt = params['dt']
self.params = params self.params = params
self.pid = Pid() self.pid = Pid()
self.timer_ist = 0
self.theta_ist = 0 self.theta_ist = 0
self.heatrate_ist = 0 self.heatrate_ist = 0
self.theta_v = np.empty(0) self.theta_v = np.empty(0)
@@ -29,7 +30,7 @@ class Controller():
self.power_v = np.empty(0) self.power_v = np.empty(0)
self.error_v = np.empty(0) self.error_v = np.empty(0)
self.time = 0 self.time = 0
self.sim_warp_factor = 10 self.sim_warp_factor = 100
self.report_interval = 1.0 self.report_interval = 1.0
self.report_last_time = 0 self.report_last_time = 0
@@ -41,10 +42,13 @@ class Controller():
now = time.time() now = time.time()
if (now - self.report_last_time) >= self.report_interval: if (now - self.report_last_time) >= self.report_interval:
self.log("Temp IST = {:0.2f} °C".format(self.theta_ist)) self.log("Temp IST = {:0.1f} °C".format(self.theta_ist))
self.log("Heatrate IST = {:0.2f} °C/min.".format(self.heatrate_ist)) self.log("Heatrate IST = {:0.1f} °C/min.".format(self.heatrate_ist))
self.log("Power = {:0.2f} W".format(self.plant.getPower())) self.log("Power = {:0.0f} W".format(self.plant.getPower()))
# self.log("theta_err = {:0.2f} °C".format(theta_err)) if self.timer_ist > 0:
self.log("Rast remaining : {:0.2f} min.".format(self.timer_ist/60))
# self.log("theta_err = {:0.1f} °C".format(theta_err))
self.report_last_time = now self.report_last_time = now
def start(self, recipe): def start(self, recipe):
@@ -99,8 +103,8 @@ class Controller():
self.log("Target temperature {} °C".format(theta_soll)) self.log("Target temperature {} °C".format(theta_soll))
# Timer # Timer
timer_ist = 0 self.timer_ist = 0
timer_soll = 60*rast['time']/self.dt timer_soll = 60*rast['time']
# ------------------------------ # ------------------------------
# The loop # The loop
@@ -140,7 +144,8 @@ class Controller():
pid_thresh_track = 0.5 pid_thresh_track = 0.5
if (theta_ist + 1.0) >= theta_soll: if (theta_ist + 1.0) >= theta_soll:
ovenStateNext = ovenStates.HOLD ovenStateNext = ovenStates.HOLD
timer_ist = 0 self.log("Enter rast of {} min.".format(timer_soll))
self.timer_ist = timer_soll
if self.ovenState == ovenStates.HOLD: if self.ovenState == ovenStates.HOLD:
pid_err = theta_err_sm.get_y() pid_err = theta_err_sm.get_y()
@@ -148,8 +153,7 @@ class Controller():
pid_params_track = self.params['Hold']['Track']['Pid'] pid_params_track = self.params['Hold']['Track']['Pid']
pid_thresh_acqu = 0.2 pid_thresh_acqu = 0.2
pid_thresh_track = 0.5 pid_thresh_track = 0.5
timer_ist += self.dt if self.timer_ist == 0:
if timer_ist >= timer_soll:
ovenStateNext = ovenStates.NOP ovenStateNext = ovenStates.NOP
doLoop = False doLoop = False
@@ -205,6 +209,11 @@ class Controller():
self.theta_ist = theta_ist self.theta_ist = theta_ist
self.heatrate_ist = heatrate_ist self.heatrate_ist = heatrate_ist
if self.timer_ist > 0:
self.timer_ist -= self.dt
else:
self.timer_ist = 0
self.report() self.report()
time.sleep(time_to_sleep) time.sleep(time_to_sleep)