Считаем категорию помещения В1–В4 в коде: пожарная нагрузка и проверка по высоте
Категория помещения по пожарной опасности — входные данные для проекта склада или производства: от неё зависят требования к пожаротушению, огнестойкости и пожарным отсекам. Для категорий В1–В4 расчёт по СП 12.13130.2009 сводится к арифметике, и его удобно один раз записать кодом. Ниже — упрощённая версия с одной ловушкой, на которой спотыкаются чаще всего.
Формула
Пожарная нагрузка участка — сумма теплоты сгорания всех горючих материалов:
Q = Σ Gᵢ · Qᵢ (МДж) где Gᵢ — масса материала, кг, а Qᵢ — его низшая теплота сгорания, МДж/кг. Удельная пожарная нагрузка — это Q, делённая на площадь размещения нагрузки S, причём S берётся не меньше 10 м²:
g = Q / S (МДж/м²) По g выбирается подкатегория: В1 — больше 2200, В2 — 1401–2200, В3 — 181–1400, В4 — 1–180 МДж/м².
Ловушка: проверка по высоте
Многие на этом останавливаются, но в методике есть ещё одно условие. Если при определении В2 или В3 выполняется неравенство
Q ≥ 0,64 · gт · H² то помещение переходит в категорию выше: В2 → В1, В3 → В2. Здесь gт = 2200 МДж/м² для диапазона В2 и 1400 МДж/м² для В3, а H — расстояние от верха пожарной нагрузки до перекрытия. Смысл понятный: высокий штабель под самым потолком опаснее, чем та же нагрузка с запасом по высоте.
Код
// Низшая теплота сгорания, МДж/кг. Значения ориентировочные: // для реального расчёта берите их из справочника, на который ссылается проект const HEAT = { paper: 13.4, wood: 13.8, polyethylene: 47.1 }; function fireLoad(items) { return items.reduce((q, { material, kg }) => q + kg * HEAT[material], 0); } function categoryV(items, areaM2, heightM) { const Q = fireLoad(items); const S = Math.max(areaM2, 10); // площадь размещения — не менее 10 м² const g = Q / S; let cat = null; if (g > 2200) cat = 'В1'; else if (g >= 1401) cat = 'В2'; else if (g >= 181) cat = 'В3'; else if (g >= 1) cat = 'В4'; // для В4 есть ещё условия размещения участков — здесь не проверяем // Проверка по высоте: В2 → В1, В3 → В2 const gT = { 'В2': 2200, 'В3': 1400 }[cat]; if (gT && Q >= 0.64 * gT * heightM ** 2) cat = cat === 'В2' ? 'В1' : 'В2'; return { Q: Math.round(Q), g: Math.round(g), cat }; } Пример: склад бумажной продукции
const stock = [ { material: 'paper', kg: 3000 }, // продукция в картоне { material: 'wood', kg: 600 }, // 40 поддонов по 15 кг { material: 'polyethylene', kg: 100 }, // стрейч-плёнка ]; categoryV(stock, 50, 4); // { Q: 53190, g: 1064, cat: 'В2' } categoryV(stock, 50, 8); // { Q: 53190, g: 1064, cat: 'В3' } По удельной нагрузке 1064 МДж/м² это В3. Но при расстоянии 4 м до перекрытия порог 0,64 · 1400 · 4² = 14 336 МДж, а нагрузка 53 190 МДж его превышает — получается В2. При 8 м порог уже 57 344 МДж, и помещение остаётся В3. Тот же склад с тем же товаром получает разные категории в зависимости от высоты складирования.
Вторая частая ошибка видна прямо в примере: упаковка и поддоны дают почти четверть нагрузки, и если их забыть, расчёт занижен.
Чего в этом коде нет
- Проверки на категории А и Б: их исключают раньше, по веществам и избыточному давлению взрыва.
- Деления помещения на пожароопасные участки — в методике g определяется для участков.
- Условий размещения для В4.
Это иллюстрация логики, а не замена расчёта: для проектной документации его выполняет и подписывает специалист. Если нужно быстро прикинуть категорию без кода, есть бесплатный онлайн-расчёт категории помещения с пояснением, какой пункт СП 12.13130 применён.