DmitrMakeev commited on
Commit
95a95fd
·
verified ·
1 Parent(s): 3eae11a

Update calculate.html

Browse files
Files changed (1) hide show
  1. calculate.html +60 -22
calculate.html CHANGED
@@ -79,56 +79,93 @@
79
  });
80
 
81
  function calculate() {
82
- // ... (оставляем ввод данных без изменений)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
 
84
- // 1. KH₂PO₄ от P
85
  let kh2po4 = p / kh2po4ContentP;
86
  let kFromKH2PO4 = kh2po4 * kh2po4ContentK;
87
 
88
- // 2. MgSO₄ от S
89
- let mgso4 = s / mgso4ContentS;
90
- let mgFromMgSO4 = mgso4 * mgso4ContentMg;
91
- let sFromMgSO4 = mgso4 * mgso4ContentS;
92
 
93
- // 3. NH₄NO₃ от nRatio
94
  let nFromNH4NO3 = nitrogen * nRatio;
95
  let nh4no3 = nFromNH4NO3 / nh4no3ContentN;
96
 
97
- // 4. Ca(NO₃)₂ от Ca
98
- let caNO3FromCa = ca / caContentCa;
99
- let nFromCaNO3Min = caNO3FromCa * caContentN;
100
 
101
- // 5. KNO₃ от остатка K
102
- let kRemaining = k - kFromKH2PO4;
 
 
 
103
  let kno3 = kRemaining > 0 ? kRemaining / kno3ContentK : 0;
104
  let nFromKNO3 = kno3 * kno3ContentN;
105
 
106
- // 6. Корректировка N
107
- let totalN = nFromNH4NO3 + nFromCaNO3Min + nFromKNO3;
108
  let nDelta = nitrogen - totalN;
109
  let caNO3Extra = 0;
110
- if (nDelta < 0) {
 
 
111
  let nExcess = -nDelta;
112
  let kno3Reduction = nExcess / kno3ContentN;
113
  kno3 = Math.max(0, kno3 - kno3Reduction);
114
  nFromKNO3 = kno3 * kno3ContentN;
115
- kRemaining = k - kFromKH2PO4 - kno3 * kno3ContentK;
 
 
 
116
  }
117
  let caNO3Total = caNO3FromCa + caNO3Extra;
118
 
119
- // 7. K₂SO₄ для остатка K (если есть)
120
- let k2so4 = kRemaining > 0 ? kRemaining / k2so4ContentK : 0;
121
- let kFromK2SO4 = k2so4 * k2so4ContentK;
 
 
 
122
 
123
- // Пересчёт итоговых концентраций
124
  totalN = (caNO3Total * caContentN + nh4no3 * nh4no3ContentN + kno3 * kno3ContentN).toFixed(2);
125
  let totalP = (kh2po4 * kh2po4ContentP).toFixed(2);
126
  let totalK = (kh2po4 * kh2po4ContentK + kno3 * kno3ContentK + k2so4 * k2so4ContentK).toFixed(2);
127
  let totalCa = (caNO3Total * caContentCa).toFixed(2);
128
- let totalMg = (mgso4 * mgso4ContentMg).toFixed(2);
129
  let totalS = (mgso4 * mgso4ContentS + k2so4 * k2so4ContentS).toFixed(2);
130
 
131
- // Отображение результатов
132
  const result = `
133
  <h3>Результат расчёта (г/1000 л):</h3>
134
  <p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${totalMg}, S: ${sFromMgSO4.toFixed(2)})</p>
@@ -142,6 +179,7 @@ function calculate() {
142
  `;
143
  document.getElementById("result").innerHTML = result;
144
  }
 
145
  </script>
146
  </body>
147
  </html>
 
79
  });
80
 
81
  function calculate() {
82
+ // Функция для безопасного получения числового значения
83
+ function getValue(id) {
84
+ const value = parseFloat(document.getElementById(id).value);
85
+ return isNaN(value) ? 0 : value;
86
+ }
87
+
88
+ // Состав удобрений (% → доли)
89
+ const caContentCa = getValue("ca_content_ca") / 100;
90
+ const caContentN = getValue("ca_content_n") / 100;
91
+ const kh2po4ContentP = getValue("kh2po4_content_p") / 100;
92
+ const kh2po4ContentK = getValue("kh2po4_content_k") / 100;
93
+ const kno3ContentK = getValue("kno3_content_k") / 100;
94
+ const kno3ContentN = getValue("kno3_content_n") / 100;
95
+ const mgso4ContentMg = getValue("mgso4_content_mg") / 100;
96
+ const mgso4ContentS = getValue("mgso4_content_s") / 100;
97
+ const k2so4ContentK = getValue("k2so4_content_k") / 100;
98
+ const k2so4ContentS = getValue("k2so4_content_s") / 100;
99
+ const nh4no3ContentN = getValue("nh4no3_content_n") / 100;
100
+
101
+ // Требуемые концентрации (мг/л)
102
+ const ca = getValue("ca");
103
+ const p = getValue("p");
104
+ const k = getValue("k");
105
+ const mg = getValue("mg");
106
+ const s = getValue("s");
107
+ const nitrogen = getValue("nitrogen");
108
+ const nRatio = getValue("n_ratio") / 10;
109
+
110
+ // Проверка ввода
111
+ if ([ca, p, k, mg, s, nitrogen].some(v => isNaN(v))) {
112
+ document.getElementById("result").innerHTML = "Введите все значения!";
113
+ return;
114
+ }
115
 
116
+ // Расчёт
117
  let kh2po4 = p / kh2po4ContentP;
118
  let kFromKH2PO4 = kh2po4 * kh2po4ContentK;
119
 
120
+ let caNO3FromCa = ca / caContentCa;
121
+ let nFromCaNO3Min = caNO3FromCa * caContentN;
 
 
122
 
 
123
  let nFromNH4NO3 = nitrogen * nRatio;
124
  let nh4no3 = nFromNH4NO3 / nh4no3ContentN;
125
 
126
+ let mgso4 = s / mgso4ContentS;
127
+ let mgFromMgSO4 = mgso4 * mgso4ContentMg;
128
+ let sFromMgSO4 = mgso4 * mgso4ContentS;
129
 
130
+ let sRemaining = s - sFromMgSO4;
131
+ let k2so4 = sRemaining > 0 ? sRemaining / k2so4ContentS : 0;
132
+ let kFromK2SO4 = k2so4 * k2so4ContentK;
133
+
134
+ let kRemaining = k - kFromKH2PO4 - kFromK2SO4;
135
  let kno3 = kRemaining > 0 ? kRemaining / kno3ContentK : 0;
136
  let nFromKNO3 = kno3 * kno3ContentN;
137
 
138
+ let totalN = nFromCaNO3Min + nFromNH4NO3 + nFromKNO3;
 
139
  let nDelta = nitrogen - totalN;
140
  let caNO3Extra = 0;
141
+ if (nDelta > 0) {
142
+ caNO3Extra = nDelta / caContentN;
143
+ } else if (nDelta < 0) {
144
  let nExcess = -nDelta;
145
  let kno3Reduction = nExcess / kno3ContentN;
146
  kno3 = Math.max(0, kno3 - kno3Reduction);
147
  nFromKNO3 = kno3 * kno3ContentN;
148
+ nExcess = nitrogen - (nFromNH4NO3 + nFromKNO3 + nFromCaNO3Min);
149
+ if (nExcess > 0) {
150
+ caNO3Extra = nExcess / caContentN;
151
+ }
152
  }
153
  let caNO3Total = caNO3FromCa + caNO3Extra;
154
 
155
+ let totalMg = mgso4 * mgso4ContentMg;
156
+ let mgDelta = mg - totalMg;
157
+ if (mgDelta > 0) {
158
+ mgso4 += mgDelta / mgso4ContentMg;
159
+ sFromMgSO4 = mgso4 * mgso4ContentS;
160
+ }
161
 
 
162
  totalN = (caNO3Total * caContentN + nh4no3 * nh4no3ContentN + kno3 * kno3ContentN).toFixed(2);
163
  let totalP = (kh2po4 * kh2po4ContentP).toFixed(2);
164
  let totalK = (kh2po4 * kh2po4ContentK + kno3 * kno3ContentK + k2so4 * k2so4ContentK).toFixed(2);
165
  let totalCa = (caNO3Total * caContentCa).toFixed(2);
166
+ totalMg = (mgso4 * mgso4ContentMg).toFixed(2);
167
  let totalS = (mgso4 * mgso4ContentS + k2so4 * k2so4ContentS).toFixed(2);
168
 
 
169
  const result = `
170
  <h3>Результат расчёта (г/1000 л):</h3>
171
  <p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${totalMg}, S: ${sFromMgSO4.toFixed(2)})</p>
 
179
  `;
180
  document.getElementById("result").innerHTML = result;
181
  }
182
+
183
  </script>
184
  </body>
185
  </html>