1318 pv = unit->air_temperature / 1000.0; |
1318 pv = unit->air_temperature / 1000.0; |
1319 } else if (unit->mode == UNITMODE_PROFILE) { |
1319 } else if (unit->mode == UNITMODE_PROFILE) { |
1320 sp = unit->prof_target; |
1320 sp = unit->prof_target; |
1321 } |
1321 } |
1322 |
1322 |
1323 unit->PID_err_old = err; |
1323 // unit->PID_err_old = err; |
1324 err = sp - pv; |
1324 err = sp - pv; |
1325 if (err < unit->idle_rangeH && err > unit->idle_rangeL) { |
1325 if (err < unit->idle_rangeH && err > unit->idle_rangeL) { |
1326 err = 0; |
1326 err = 0; |
1327 unit->PID_I_err -= unit->PID_err_old; |
1327 unit->PID_I_err -= unit->PID_err_old; |
1328 } else { |
1328 } else { |
1333 unit->PID_I_err = -10.0; |
1333 unit->PID_I_err = -10.0; |
1334 if (unit->PID_I_err > 10.0) |
1334 if (unit->PID_I_err > 10.0) |
1335 unit->PID_I_err = 10.0; |
1335 unit->PID_I_err = 10.0; |
1336 P_err = err; |
1336 P_err = err; |
1337 D_err = err - unit->PID_err_old; |
1337 D_err = err - unit->PID_err_old; |
|
1338 unit->PID_err_old = err; |
1338 |
1339 |
1339 /* |
1340 /* |
1340 * A postive value means heating, a negative value cooling. |
1341 * A postive value means heating, a negative value cooling. |
1341 */ |
1342 */ |
1342 Out = (10.0*P_err) + (0.1*unit->PID_I_err) + (5*D_err); |
1343 Out = (10.0*P_err) + (0.1*unit->PID_I_err) + (5*D_err); |