- new template, changed dt to 3 for rast and sensor
- added plant timer git-svn-id: http://moon:8086/svn/projects/HendiControl@267 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
"Controller" :
|
"Controller" :
|
||||||
{
|
{
|
||||||
"dt" : 1.0,
|
"dt" : 3.0,
|
||||||
"P_min" : 0,
|
"P_min" : 0,
|
||||||
"P_max" : 3500,
|
"P_max" : 3500,
|
||||||
"sim_warp_factor" : 1000.0,
|
"sim_warp_factor" : 1000.0,
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"plant_name" : "Mass",
|
"plant_name" : "Mass",
|
||||||
"useKalman" : true,
|
"useKalman" : true,
|
||||||
"kalman" : {
|
"kalman" : {
|
||||||
"dt" : 1.0,
|
"dt" : 3.0,
|
||||||
"var_P" : 0,
|
"var_P" : 0,
|
||||||
"var_Q" : 0.000001,
|
"var_Q" : 0.000001,
|
||||||
"var_R" : 1,
|
"var_R" : 1,
|
||||||
@@ -18,18 +18,18 @@
|
|||||||
},
|
},
|
||||||
"Hold" : {
|
"Hold" : {
|
||||||
"Pid" : {
|
"Pid" : {
|
||||||
"kp" : 0.2,
|
"kp" : 0.1,
|
||||||
"ki" : 0.0005,
|
"ki" : 0.00004,
|
||||||
"kd" : 0.05,
|
"kd" : 0.0,
|
||||||
"rho" : 0.99999
|
"rho" : 0.9999
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Heat" : {
|
"Heat" : {
|
||||||
"Pid" : {
|
"Pid" : {
|
||||||
"kp" : 0.1,
|
"kp" : 0.1,
|
||||||
"ki" : 0.004,
|
"ki" : 0.002,
|
||||||
"kd" : 0.05,
|
"kd" : 0.0,
|
||||||
"rho" : 0.99999
|
"rho" : 0.9999
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -58,8 +58,10 @@ class Controller(TimerListener):
|
|||||||
|
|
||||||
self.rastTimer = Timer("Rast", self)
|
self.rastTimer = Timer("Rast", self)
|
||||||
self.sensorTimer = Timer("Sensor", self)
|
self.sensorTimer = Timer("Sensor", self)
|
||||||
|
self.plantTimer = Timer("Plant", self)
|
||||||
self.reportTimer = Timer("Report", self)
|
self.reportTimer = Timer("Report", self)
|
||||||
self.timerMgr.registerTimer(self.sensorTimer)
|
self.timerMgr.registerTimer(self.sensorTimer)
|
||||||
|
self.timerMgr.registerTimer(self.plantTimer)
|
||||||
self.timerMgr.registerTimer(self.reportTimer)
|
self.timerMgr.registerTimer(self.reportTimer)
|
||||||
self.rast_running = False
|
self.rast_running = False
|
||||||
|
|
||||||
@@ -67,9 +69,6 @@ class Controller(TimerListener):
|
|||||||
if timer == self.sensorTimer:
|
if timer == self.sensorTimer:
|
||||||
self.sensorTime_v = np.append(self.sensorTime_v, timer.count*self.sensor_dt / 60)
|
self.sensorTime_v = np.append(self.sensorTime_v, timer.count*self.sensor_dt / 60)
|
||||||
|
|
||||||
# Process plant
|
|
||||||
self.plant.process()
|
|
||||||
|
|
||||||
# Temperature
|
# Temperature
|
||||||
self.theta_raw = self.plant.getTemperature()
|
self.theta_raw = self.plant.getTemperature()
|
||||||
|
|
||||||
@@ -84,10 +83,14 @@ class Controller(TimerListener):
|
|||||||
Z = self.kalman.process_measurement((self.theta_raw, 0))
|
Z = self.kalman.process_measurement((self.theta_raw, 0))
|
||||||
xp = self.kalman.process(Z)
|
xp = self.kalman.process(Z)
|
||||||
self.theta_ist_k = xp[0, 0]
|
self.theta_ist_k = xp[0, 0]
|
||||||
self.heatrate_ist_k = xp[1, 0] * 60 / self.sensor_dt
|
self.heatrate_ist_k = xp[1, 0] * 60
|
||||||
self.theta_k_v = np.append(self.theta_k_v, self.theta_ist_k)
|
self.theta_k_v = np.append(self.theta_k_v, self.theta_ist_k)
|
||||||
self.heatrate_k_v = np.append(self.heatrate_k_v, self.heatrate_ist_k)
|
self.heatrate_k_v = np.append(self.heatrate_k_v, self.heatrate_ist_k)
|
||||||
|
|
||||||
|
if timer == self.plantTimer:
|
||||||
|
# Process plant
|
||||||
|
self.plant.process()
|
||||||
|
|
||||||
if timer == self.reportTimer:
|
if timer == self.reportTimer:
|
||||||
self.report()
|
self.report()
|
||||||
|
|
||||||
@@ -112,6 +115,7 @@ class Controller(TimerListener):
|
|||||||
print(json.dumps({recipe['Name'] : recipe}, indent=4, sort_keys=True))
|
print(json.dumps({recipe['Name'] : recipe}, indent=4, sort_keys=True))
|
||||||
|
|
||||||
self.sensorTimer.start(self.sensor_dt/self.sim_warp_factor)
|
self.sensorTimer.start(self.sensor_dt/self.sim_warp_factor)
|
||||||
|
self.plantTimer.start(1/self.sim_warp_factor)
|
||||||
self.reportTimer.start(self.report_interval)
|
self.reportTimer.start(self.report_interval)
|
||||||
self.rastTimer.start(self.dt/self.sim_warp_factor)
|
self.rastTimer.start(self.dt/self.sim_warp_factor)
|
||||||
|
|
||||||
@@ -257,7 +261,7 @@ class Controller(TimerListener):
|
|||||||
self.stirrer.setDutyCycle(1.0)
|
self.stirrer.setDutyCycle(1.0)
|
||||||
|
|
||||||
if ovenStateNext == ovenStates.HOLD:
|
if ovenStateNext == ovenStates.HOLD:
|
||||||
self.pid_hold.reset()
|
# self.pid_hold.reset()
|
||||||
self.stirrer.setSpeed(self.stirrSpeedRast)
|
self.stirrer.setSpeed(self.stirrSpeedRast)
|
||||||
self.stirrer.setDutyCycle(self.stirrDutyRast)
|
self.stirrer.setDutyCycle(self.stirrDutyRast)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user