Hi Elco,
I thought I had everything set up appropriately. (NOT using the beta), but now I’m wondering, and possibly confused more than I was before.
I’d like to figure out how to read the graphs well enough to understand your comments in the other post. Primarily: Why is my heater on for 30-60 minutes every couple of hours. The chill/heat cycle seems a bit excessive. I’m not a math guy.
With a beer-to-fridge Kp of 2, I see the cooler turn on when fridge temp is 2 deg. below beer temp. I admit I don’t understand the “proportional” part of the equation at all and what happens during what I think you call “integrator windup” occurring after Ti if some condition isn’t met. With the beer temp very close to the beer setpoint, certainly close or within error tolerance for the sensor, why the 2-3 degree chill, reheat cycle?
Heating cycle seems to overshoot the fridge setpoint by a couple of degrees and it oscillates with very little/no appreciable change in beer temp.
Does this mean the Td for beer-to-fridge needs to be increased significantly?
In the other post, you observe/calculate that it takes 5-6 hours to effect beer temp. What exactly in the graph data provided you that insight? Please teach (pref. in context of my data so I can play along).
A potential concern:
When I look at my controller state JSON outptut, I see that all of the sensor details are disconnected with null values. The post you referred me to definitely shows connected sensors where mine do not. all of my p,i,d values are also zeros, so something seems off…
How are people posting their controller state JSON all pretty-printed?
Here’s what I see, just cut-n-pasted…
{
"kind": "Control",
"pids": [
{
"kind": "Pid",
"name": "heater1",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"value": null
},
"inputSensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
"inputError": 0,
"Kp": 10,
"Ti": 600,
"Td": 60,
"p": 0,
"i": 0,
"d": 0,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 0,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"lastActiveTime": 4293167296
},
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
},
{
"kind": "Pid",
"name": "heater2",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"value": null
},
"inputSensor": {
"kind": "TempSensor",
"name": "beer2",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
"inputError": 0,
"Kp": 10,
"Ti": 600,
"Td": 60,
"p": 0,
"i": 0,
"d": 0,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 0,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"lastActiveTime": 4293167296
},
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
},
{
"kind": "Pid",
"name": "cooler",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"value": null
},
"inputSensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
"inputError": 0,
"Kp": 10,
"Ti": 1800,
"Td": 200,
"p": 0,
"i": 0,
"d": 0,
"actuatorIsNegative": true,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 0,
"period": 1200,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"lastActiveTime": 4293167296
},
"target": {
"kind": "ActuatorTimeLimited",
"minOnTime": 120,
"minOffTime": 180,
"maxOnTime": 65535,
"active": false,
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
}
},
{
"kind": "Pid",
"name": "beer2fridge",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"value": null
},
"inputSensor": {
"kind": "TempSensor",
"name": "beer1",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
"inputError": 0,
"Kp": 2,
"Ti": 7200,
"Td": 1200,
"p": 0,
"i": 0,
"d": 0,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorSetPoint",
"targetSetPoint": {
"kind": "SetPointSimple",
"value": null
},
"targetSensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
"referenceSetPoint": {
"kind": "SetPointSimple",
"value": null
},
"output": 0,
"achieved": -0.0039,
"minimum": -10,
"maximum": 10
}
}
],
"sensors": [
{
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
{
"kind": "TempSensor",
"name": "beer1",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
{
"kind": "TempSensor",
"name": "beer2",
"sensor": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
}
],
"actuators": [
{
"kind": "ActuatorPwm",
"value": 0,
"period": 1200,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"lastActiveTime": 4293167296
},
"target": {
"kind": "ActuatorTimeLimited",
"minOnTime": 120,
"minOffTime": 180,
"maxOnTime": 65535,
"active": false,
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
},
{
"kind": "ActuatorPwm",
"value": 0,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"lastActiveTime": 4293167296
},
"target": {
"kind": "ActuatorNop",
"state": false
}
}
},
{
"kind": "ActuatorPwm",
"value": 0,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"lastActiveTime": 4293167296
},
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
],
"setpoints": [
{
"kind": "SetPointNamed",
"name": "beer1set",
"setPoint": {
"kind": "SetPointSimple",
"value": null
}
},
{
"kind": "SetPointNamed",
"name": "beer2set",
"setPoint": {
"kind": "SetPointSimple",
"value": null
}
},
{
"kind": "SetPointNamed",
"name": "fridgeset",
"setPoint": {
"kind": "SetPointSimple",
"value": null
}
}
]
}
There are a lot of debug messages about the controller receiving new settings twice a second…
Apr 26 2016 13:31:00 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:00 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:01 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:01 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:02 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:02 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:03 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:03 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:04 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:04 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:05 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:06 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.53
Apr 26 2016 13:31:06 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.52
Apr 26 2016 13:59:54 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.51
Apr 26 2016 14:28:41 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.5
Apr 26 2016 14:57:30 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.49
Apr 26 2016 15:26:17 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.48
Apr 26 2016 15:55:05 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.47
Apr 26 2016 16:23:54 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.46
Apr 26 2016 16:52:41 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.45
Apr 26 2016 17:21:29 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.44
Apr 26 2016 17:50:18 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.43
Apr 26 2016 18:19:05 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.42
Apr 26 2016 18:47:55 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.41
Apr 26 2016 19:16:42 controller debug message: INFO MESSAGE 12: Received new setting: beerSet = 64.4
And my installed/available devices:
Apr 26 2016 19:30:58 Installed devices received: [{"a": "28FF7E5E9015012F", "c": 1, "b": 0, "d": 0, "f": 6, "i": 0, "h": 2, "j": 0.0, "p": 0, "t": 1, "v": 64.398}, {"a": "28FF451C90150380", "c": 1, "b": 1, "d": 0, "f": 9, "i": 1, "h": 2, "j": 0.0, "p": 0, "t": 1, "v": 64.398}, {"a": "28FF1F8590150166", "c": 1, "b": 0, "d": 0, "f": 5, "i": 2, "h": 2, "j": 0.0, "p": 0, "t": 1, "v": 62.375}, {"c": 1, "b": 0, "d": 0, "f": 3, "i": 3, "h": 1, "p": 17, "t": 4, "v": 10.0, "x": 0}, {"c": 1, "b": 0, "d": 0, "f": 2, "i": 4, "h": 1, "p": 16, "t": 4, "v": 0.0, "x": 0}]
Apr 26 2016 19:30:59 Available devices received: [{"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 11, "t": 0, "x": 0}, {"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 10, "t": 0, "x": 0}]
Thanks for your patience and assistance!!!
-Fabrizio