4 Commits

Author SHA1 Message Date
P43YM
a2ffdb93a5 Merge 7c2059d7c6 into 4457e16a8f 2025-02-28 15:30:18 +00:00
P43YM
7c2059d7c6 ouch! 2025-02-28 18:29:47 +03:00
P43YM
66ced5f8d0 Oops, I forgot. 2025-02-28 18:25:01 +03:00
P43YM
ba255c1bd1 Cleaning of equitherm function and onChange listener for chart 2025-02-28 17:53:01 +03:00
2 changed files with 19 additions and 26 deletions

View File

@@ -44,30 +44,16 @@ public:
private: private:
unsigned short _minOut = 20, _maxOut = 90; unsigned short _minOut = 20, _maxOut = 90;
// температура контура отопления в зависимости от наружной температуры datatype getResultN()
// datatype getResultN() { {
// Kntemp = Kn*3.3; //Подгонка под типовые кривые float tempDelta = targetTemp - outdoorTemp,
// float tempDiff = targetTemp - outdoorTemp; maxPoint = targetTemp - (_maxOut - targetTemp) / Kn,
// if (tempDiff < 0) tempDiff = 0; sf = (_maxOut - targetTemp) / pow(targetTemp - maxPoint, 1.0 / Ke),
// float T_rad = targetTemp + pow(Kntemp * tempDiff, 1.0 / Ke); T_rad = targetTemp + sf * (tempDelta >= 0 ? pow(tempDelta, 1.0 / Ke) : -pow(-tempDelta, 1.0 / Ke));
// return T_rad; return T_rad > _maxOut ? _maxOut : T_rad;
// } }
datatype getResultN() {
float tempDiff = targetTemp - outdoorTemp;
if (tempDiff < 0) {
tempDiff = 0;
}
float minOutside = targetTemp - (_maxOut - targetTemp) / Kn;
float c1 = (_maxOut - targetTemp) / pow(targetTemp - minOutside, 1.0 / Ke);
float T_rad = targetTemp + c1 * pow(tempDiff, 1.0 / Ke) ;
if (T_rad > _maxOut) {
T_rad = _maxOut;
}
return T_rad; // Реакция на разницу с целевой температурой
}
// Расчет поправки (ошибки) термостата
datatype getResultT() { datatype getResultT() {
return constrain((targetTemp - indoorTemp), -3, 3) * Kt; return constrain((targetTemp - indoorTemp), -3, 3) * Kt;
} }

View File

@@ -1143,10 +1143,17 @@
updateChart(formData); updateChart(formData);
}); });
// инициализируем //Следим за изменениями в полях
document.querySelectorAll('#equitherm-settings input').forEach(input => {
input.addEventListener('change', () => {
const form = document.getElementById('equitherm-settings');
const formData = new FormData(form);
updateChart(formData);
});
});
// инициализируем график
initChart(); initChart();
}); });
</script> </script>
</body> </body>