Насосное оборудование

Насосное оборудование: установленные агрегаты насосных станций, их модели и характеристики H(Q), N(Q), КПД(Q) для гидравлического расчёта.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Оборудование сети → «Насосное оборудование». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
доступно всем, кто вошёл.
Читаю как

Возможности

  • Две вкладки: «Установленные агрегаты» и «Каталог моделей» (в скобках — число записей).
  • Плитки готовности агрегатов: «Настроены», «Без модели», «Без коэффициентов», «Нет линии». Нажатие на плитку — отбор, повторное — снять. В каталоге плитки качества характеристики: «Готовы», «Порядок Q», «Неполные».
  • Поиск по номеру агрегата, станции, модели и её типу, фрагменту, а также по точному ID агрегата или линии. Фильтры «Готовность характеристики», «Состояние», «Фрагмент»; в каталоге — «Качество характеристики», «Тип насоса».
  • Карточка агрегата: «Установленный агрегат», «Паспорт модели», «Последняя рабочая точка», таблица коэффициентов y = a₀ + a₁Q + a₂Q², график H(Q), N(Q), КПД(Q) и паспортные точки модели.
  • «Редактировать свойства»: модель (тип насоса), заданный напор, номер, станция, состояние, число параллельных агрегатов, привод, рабочее колесо, заданные частота и диаметр колеса.
  • «На карте» и значок прицела в строке — переход к насосу, если у его линии есть геометрия.
  • Карточка модели каталога: паспорт, график, точки и список агрегатов с этой моделью (переход в карточку агрегата).

Как это работает

Где хранятся данные. Насос в базе ТГИД — линия сети (linesobj) с карточкой в таблице pumps (связь по lineid). Модель — ссылка standardpumpid на каталог standardpumps. Справочники: состояние (states), привод (drivetypes), рабочее колесо (rotordiametertypes), электродвигатель (standardems). Станция — текстовое поле агрегата; карточка насосной станции (pumpstations) ищется по совпадению названия. Фрагмент агрегата — фрагмент его линии.

Готовность агрегата определяется по порядку:

Статус Условие
«Нет линии» линии с таким id нет в linesobj
«Без модели» модель не выбрана или её нет в каталоге
«Без коэффициентов» хоть одна из шести тройок коэффициентов агрегата (H, N, КПД — номинальные и приведённые) вся нулевая
«Настроены» всё есть

Список сортируется так же: сначала «Нет линии», в конце — настроенные.

Качество модели в каталоге. «Неполные» — заполнено меньше 10 паспортных точек (в точке нужны Q, H, N и КПД) или нет рабочей зоны (Q мин. < Q макс.). «Порядок Q» — расход в точках идёт не строго по возрастанию. Остальные — «Готовы».

Что берёт расчёт. Движок расчёта читает из pumps заданный напор (thrust), приведённые коэффициенты H(G) (r0_z, r1_z, r2_z) и состояние:

  • заданный напор не ноль — насос даёт постоянный напор, характеристика не используется;
  • заданный напор ноль — напор по кривой H = a₀ + a₁G + a₂G² с приведёнными коэффициентами;
  • состояние «закрыт» — линия насоса в расчётную схему не входит.

Номинальные коэффициенты и коэффициенты N(Q), КПД(Q), паспортные точки модели на напор в расчёте не влияют. Поэтому агрегат с плиткой «Без модели», но с заданным напором в расчёте участвует.

График. Сплошные линии — паспортные точки модели (H, N, КПД на трёх осях), оранжевая полоса — рабочая зона. Пунктир — приведённые кривые агрегата по его коэффициентам, 41 точка от Q мин. до Q макс. Красная точка — рабочая точка из последнего расчёта (ns_out: расход и напор). Пока расчёт не сохранён, вверху — плашка, а в карточке «рабочая точка пока не рассчитана».

Правка. Сохраняются только изменённые поля таблицы pumps с проверкой версии строки: если запись успели изменить, сохранение отклоняется. При смене модели в вебе коэффициенты агрегата не пересчитываются — меняется только ссылка на модель. Каждое изменение пишется в журнал правок со старыми и новыми значениями.

Что нужно для работы

  • Смотреть — любой вошедший.
  • Править — право «Оборудование» → «Свойства» (при охвате «свои» — только оборудование на участках, созданных этим пользователем) и включённая запись (MUTATIONS_ENABLED=true). Без этого кнопки «Редактировать свойства» нет. Пользователю-роли PostgreSQL это право даёт предметное право «Правка гидравлической сети (режимы)».
  • Для рабочей точки — сохранённый расчёт сети.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Насосное оборудование» — пункт выделен рамкой.

    Пункт «Насосное оборудование» в панели «Инструменты»

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

    Окно «Насосное оборудование»

  3. Плашки над списком — качество данных: сколько агрегатов настроены, у скольких не выбрана модель, нет коэффициентов кривой или нет линии. Красные — критично, оранжевые — требуют внимания. Нажмите плашку — список сузится до таких записей.

    Насосное оборудование: шаг 3

  4. В списке остались только записи с этой проблемой. Поиск (насос, модель, станция, линия или ID) и фильтры «Готовность характеристики», «Состояние», «Фрагмент» работают вместе с отбором; «Сбросить» снимает всё, «Обновить» перечитывает журнал.

    Насосное оборудование: шаг 4

  5. Кнопка с карточкой в строке открывает агрегат: модель, рабочая зона, номинальные Q и H, характеристики H(Q), N(Q), КПД(Q). Если задан напор насоса, расчёт берёт его постоянным и кривую не использует; коэффициенты кривой хранятся у агрегата.

    Насосное оборудование: шаг 5

  6. Вкладка «Каталог моделей» — модели насосов с паспортными точками; из неё модель назначается агрегатам.

    Насосное оборудование: шаг 6

Примеры

Копия Алматы: состояние журнала. 368 агрегатов: «Настроены» — 1, «Без модели» — 365, «Без коэффициентов» — 0, «Нет линии» — 2. Открыто 339, закрыто 29. При этом у 343 агрегатов задан рабочий напор (от 8,7 до 140 м), из них 342 — среди «Без модели»: в расчёте они работают с постоянным напором. В каталоге 80 моделей: 74 «Готовы», 6 «Порядок Q», используется одна.

Там же: единственный настроенный агрегат. ID 405, линия 388549, фрагмент «Маг. сети для расчета НС», модель СЭ1250-140 (центробежный спиральный), 2 агрегата параллельно, колесо 470 мм, 1500 об/мин. Рабочая зона модели — 850…1330 т/ч, номинал 1250 т/ч при 140 м. Модель помечена «Порядок Q»: девятая и десятая точки обе при 1330 т/ч. Заданный напор агрегата — 89 м, поэтому расчёт возьмёт 89 м, а не кривую.

Копия Астаны для сравнения. 1661 агрегат: «Настроены» — 520, «Нет линии» — 479, «Без модели» — 395, «Без коэффициентов» — 267. Заданный напор есть у 1175.

Если не получается

  • «Результатов расчёта по насосам ещё нет: рабочая точка появится после выполнения и сохранения расчёта сети, паспортные характеристики видны уже сейчас.» — в базе нет сохранённых расчётов.
  • «Для агрегата не выбрана паспортная модель — график H(Q) не строится…» — назначьте модель: «Редактировать» → «Модель (тип насоса)». Коэффициенты кривой при этом не пересчитываются — их по-прежнему задают в десктопе («Тип насоса → Характеристики»).
  • «Не удалось загрузить насосы» или «Не удалось загрузить каталог моделей насосов» (при входе в правку) — нет связи с сервером; повторите.
  • «Справочники не загрузились — плитки и фильтры могут быть неполными» — список работает, но плитки и списки фильтров пустые.
  • «Объект изменён другим пользователем — перезагрузите карточку и повторите правку.» — запись изменили после того, как вы открыли правку.
  • «Нет права «Свойства: оборудование (свои)»» — у роли нет права на правку оборудования.
  • Нет значка прицела и кнопки «На карте» — у линии насоса нет геометрии (линии расчётной схемы без координат).

Для администратора

  • Запись: MUTATIONS_ENABLED=true, право «Оборудование» → «Свойства»; при AUTH_BACKEND=pg окончательно права проверяет база.
  • Таблицы десктопные (pumps, standardpumps, states, drivetypes, rotordiametertypes, standardems, pumpstations, ns_out); веб их не создаёт.
  • Правка пишется в audit_log (UPDATE, старые и новые значения); после неё сбрасывается кеш графа для локализации отключений.

Для разработчика

  • Чтение: GET /api/pump-equipment/lookups, GET /api/pump-equipment/pumps (page, page_size до 200, configuration_status: configured | missing_model | coefficients_missing | line_missing, fragment_id, state_id, line_id, search), GET /api/pump-equipment/pumps/{id}, GET /api/pump-equipment/catalog (quality_status: ready | non_monotonic | incomplete, pump_type, search), GET /api/pump-equipment/catalog/{id} — routers/equipment.py, database/pump_equipment.py. В lookups фрагменты агрегатов без пустого пункта: строки с fragment_id IS NULL исключены.
  • Правка: GET /api/v1/equipment-edit/pumps/fields, GET|PUT /api/v1/equipment-edit/pumps/{id} (поля карточки десктопа, version → 409) — routers/equipment_edit.py, database/typed_edit.py.
  • Расчёт: heatnet/io/reader.py (насос: h, r0_z…r2_z), heatnet/solve/hydraulic.py (Pump).
  • Веб: components/PumpEquipmentJournalDialog.vue (ключ pumpEquipment), services/equipmentEditService.ts, composables/useJournalEdit, composables/useEquipmentSaveError.ts, utils/pumpModels.ts.
  • Тесты: API — tests/test_equipment_router.py, tests/test_equipment_edit_router.py; веб — tests/utils/pumpModels.spec.ts, tests/utils/equipmentEdit.spec.ts, tests/composables/useEquipmentSaveError.spec.ts; e2e — e2e/functions/equipment-registries.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо