Температурные графики
Температурные графики источников: кривые t1/t2/t3.
Возможности
- Реестр источников с состоянием графика; плитки «Готовы», «Нет графика», «Дубли», «Неполный диапазон» — фильтры.
- Фильтры: поиск (номер источника или узла, название, фрагмент, тип графика), состояние, летний режим (задан или нет), тип графика, фрагмент.
- В строке: тип графика, диапазон tн, число точек против ожидаемого, расчётный режим t1/t2, летний режим.
- Карточка источника: исходные параметры, развёрнутый график t1, t2, t3 и tv по температуре наружного воздуха (масштаб, выгрузка картинки) и таблица точек.
- «Рассчитать график» выбранного вида: отопительный (О), повышенный (П), скорректированный повышенный (СВ) или пониженный (СН).
- «Стационарный» — одинаковые t1/t2/t3/tv во всех точках, как в десктопе.
- «Редактировать» — правка исходных параметров источника.
- Окно открывается и из карточки источника на карте — значок «Температурный график источника».
Как это работает
Точки графика хранятся в deployedtempgraphs: на каждую температуру наружного воздуха tн с шагом 1 °C — температуры подающей t1, обратной t2 воды, после смешения t3, t1 с поправкой на ветер tv, внутреннего воздуха tбн и относительная нагрузка Qотн. График нужен расчёту расходов потребителей «по температурному графику», тепловому расчёту и условиям работы для теплопотерь.
Состояние графика:
- «нет графика» — у источника нет ни одной точки;
- «дубли» — есть повторы одной tн; на графике и в таблице — запись с наибольшим номером;
- «неполный диапазон» — пустые температуры, t1 ниже t2 или число точек не равно (tн конца сезона − расчётная tн) + 1;
- «готов» — всё остальное.
Отопительный график (О) — перенос CTempGraph десктопа gid8. Для каждой tн от расчётной до конца отопительного периода:
- относительная нагрузка Q = (tвн.треб − tн) / (tвн.р − tн.р);
- t1 = tн + Q · (tвн.р − tн.р) + (0,5 + u)/(1 + u) · Δτ · Q + Δt · Q^0,8, где Δτ = t1р − t2р, Δt = (t3р + t2р)/2 − tвн.р, u — «Поправка смешения» из карточки как есть (подстановки нет: для 130/70 со смешением до 95 °C задайте 1,4);
- t2 = t1 − Δτ · Q, t3 = t2 + (t3р − t2р) · Q;
- нижняя срезка: t1 не опускается ниже «Нижней срезки по подаче», верхняя — не выше «Верхней срезки»; при срезке пересчитываются нагрузка и температура в помещении tбн (перетоп). Срезка обратной воды поднимает t1 шагами по 0,05 °C;
- ветер: при скорости больше 3 м/с tv = t1 + (t1 − tвн) · v/100.
Повышенный (П) и скорректированный (СВ, СН) графики учитывают нагрузку ГВС и способ водоразбора; перед расчётом исходные данные проверяются, ошибки — с кодами десктопа 501–530.
«Рассчитать график» заменяет все точки источника одной операцией; при ошибке прежний график остаётся. «Стационарный» только переписывает t1/t2/t3/tv в существующих точках — у источника без графика он ничего не изменит.
Что нужно для работы
- В карточке источника: расчётная tн, tн конца отопительного периода, расчётная и требуемая температура внутреннего воздуха, расчётные t1/t2/t3; для П, СВ, СН — ещё нагрузки отопления и ГВС.
- «Рассчитать график», «Стационарный», «Редактировать» — включённая на сервере правка данных и право «Источники и насосные станции» → «Свойства».
Шаги
Откройте «Инструменты» и наберите в поиске «Температурные графики» — пункт выделен рамкой.

Нажмите пункт — откроется окно.

Нажмите плитку состояния, например «Готовы»: в реестре останутся только источники с готовым графиком. Плитки — те же фильтры, что «Состояние графика».

Нажмите стрелку «Открыть график источника» в конце строки: слева — параметры источника, справа — развёрнутый температурный график. «На карте» покажет источник, «Редактировать» — правка исходных параметров.

Примеры
Реестр копии Алматы: 134 источника — готовы 91, нет графика 39, дубли 1, неполный диапазон 3. Фактических графиков в базе нет — сверху справка, что показаны нормативные точки.
АТЭЦ1, фрагмент 74 (источник № 176, отопительный график): 34 точки от −25 до +8 °C. Расчётная точка −25 °C: t1 132, t2 70, t3 95 °C; ветер 5 м/с даёт tv 137,6 °C. При 0 °C — 74,8 / 47,1 °C, Qотн 0,444. При +8 °C срабатывает нижняя срезка: t1 = 60 °C, t2 = 41,5 °C, а внутренний воздух поднимается до 21,46 °C.
Дубли. Источник «ТЭЦ» № 193 (фрагмент 1): 64 строки на 35 температур, 29 повторов — красная плашка в карточке.
Ошибка исходных данных. У того же АТЭЦ1 не заданы нагрузки, поэтому повышенный график не строится: «Код ошибки 512 Значение 'Расчетная тепловая нагрузка на отопление' не задано.; Код ошибки 513 … на горячее водоснабжение' не задано.»
Если не получается
- Красная плашка «повторные строки температуры» — в базе дубли точек графика; на графике показана последняя запись для каждой температуры.
- «Нет графика» — у источника нет точек: откройте его и нажмите «Рассчитать график».
- «Не удалось пересчитать температурный график» с текстом причины — исходные данные не прошли проверку: например, «tn_1 (конец сезона) должен быть выше tn_5 (расчётная наружная)», «t1_r должна быть выше t2_r и t3_r», «Нижняя срезка t1_2r должна быть ниже t1_r», «Диапазон tn_5…tn_1 должен быть 2–200 точек»; для П, СВ, СН — «Код ошибки 5xx …».
- «Стационарный: обновлено 0 точек» — у источника нет точек; сначала «Рассчитать график».
- «Заполните все четыре температуры числами» — в окне «Стационарный» пустое поле.
- «Записано, но данные не обновились — нажмите «Обновить»» — график сохранён, но список не перечитался.
- Кнопок пересчёта и правки нет — на сервере выключена правка данных или нет права «Источники и насосные станции» → «Свойства».
Для администратора
- Запись — только при
MUTATIONS_ENABLED. - Таблицы:
heatsources(исходные параметры,graphtypeid— тип графика),deployedtempgraphs(точки), справочникgraphtypes. - В журнал действий: пересчёт (
RECALC) и стационарный график (UPDATE) по таблицеdeployedTempGraphs.
Для разработчика
- API:
GET /api/temperature-graphs/lookups,GET /api/temperature-graphs/sources(graph_status,summer_status,graph_type_id,fragment_id,search),GET /api/temperature-graphs/sources/{id},POST /api/temperature-graphs/sources/{id}/recalculate?mode=auto|otop|pov|skk_pov|skk_pon,POST /api/temperature-graphs/sources/{id}/stationary({t1, t2, t3, tv}),GET /api/temperature-graphs/sources/{id}/preview?mode=— расчёт без записи с кодами ошибок. - Код:
routers/heat.py, журнал —database/temperature_graphs.py, ОТОП —database/tg_otop.py, П/СВ/СН —database/tg_pov_skk.py, запись —database/temperature_graph_write.py. - Веб:
components/TemperatureGraphJournalDialog.vue; сохранение параметров — общийupdateObjectAttributes('heatsources', …). - Тесты: API —
tests/test_tg_otop.py,tests/golden/test_tg_pov_skk.py.
