Сетевые регуляторы
Сетевые регуляторы давления, расхода и перепада: где стоят, что регулируют, задание и Kv — всё, что нужно расчёту.
Возможности
- Вкладки «Установленные» и «Каталог» (в скобках — число записей). В одном списке — регуляторы давления, расхода и перепада.
- Плитки качества данных: «Готовы», «Нет линии», «Удалённая линия», «Нет узла», «Нет задания», «Нет Kv». Нажатие на плитку — отбор, повторное — снять.
- Поиск по коду и наименованию узлов линии и регулируемого узла, фрагменту, а также по точному ID регулятора или линии. Фильтры «Тип регулятора», «Качество данных», «Состояние», «Фрагмент», «Режим работы».
- Карточка: «Сетевая привязка» (линия, узлы, регулируемый узел), «Задание регулятора», «Параметры клапана», «Расчётный режим».
- «Редактировать свойства»: заданная величина, допустимое отклонение, пропускная способность Kv, состояние, режим работы, сопротивления клапана, утечка; у регулятора давления — трубопровод регулируемого узла.
- Переход к регулятору на карте, если у его линии есть геометрия.
- Каталог: модель, серия, DN, Kv, диапазон, среда, привод, изготовитель; фильтры «Тип каталога» и «Полнота паспорта».
- Из протокола расчёта кнопка «Исправить: Журнал регуляторов» открывает карточку регулятора; если поле можно поправить здесь, карточка сразу открывается в правке.
Как это работает
Где хранятся данные. Регулятор в базе ТГИД — линия сети (linesobj) с карточкой в таблице своего вида (связь по lineid):
| Вид | Таблица | Задание | Kv |
|---|---|---|---|
| Регулятор давления | pressregulators |
напор в регулируемом узле, м (h) |
regvalverelcap |
| Регулятор расхода | consumptregulators |
расход, т/ч (regconsmean) |
regvalvecap |
| Регулятор перепада | pressdropregulators |
перепад, м (pressdropmean) |
regvalverelcap |
Виды нумеруются независимо, поэтому ID может совпасть. Регулируемый узел — nodeid, у регулятора давления ещё признак трубопровода узла (подающий или обратный). Справочники: состояние (regulatorstates: открыт, закрыт, неактивен), режим работы (workattributes: отопительный, летний, круглогодичный). Каталоги моделей — standardpressregulators, standardconsregulators, standardpressdropregulators; ссылки установленного регулятора на модель каталога в базе нет. Регулируемый узел в этом окне не меняется.
Качество данных определяется по порядку:
| Статус | Условие |
|---|---|
| «Нет линии» | линии с таким id нет |
| «Удалённая линия» | линия помечена удалённой |
| «Нет узла» | у регулятора давления или перепада не задан регулируемый узел |
| «Нет задания» | заданная величина пуста или не больше 0 |
| «Нет Kv» | пропускная способность пуста или не больше 0 |
| «Готовы» | всё есть |
Модель каталога «Неполный паспорт», если не заполнены название, тип, DN или Kv (у регуляторов перепада — тип, DN или Kv).
Что берёт расчёт. Регулятор давления меняет сопротивление клапана от минимального r1 до максимального r2, чтобы удержать в регулируемом узле напор «задание + отметка верха трубы узла» в пределах допустимого отклонения:
- r1 — «Сопротивление, открыт», а если оно 0 — 10 / Kv²;
- r2 — «Сопротивление, закрыт», а если оно 0 — 10⁵ / (Kv² · утечка²);
- без Kv берётся r1 = 10⁻⁸, без утечки — r2 = 10⁸ · r1; в протоколе расчёта — предупреждение «… регулятора […] Значение берется по умолчанию»;
- регулируемый узел не задан или не найден — предупреждение «не задан узел с регулируемым напором», регулирования нет;
- «неактивен» — сопротивление постоянное, r1; «закрыт» — линия в расчётную схему не входит.
Регулятор расхода держит заданный расход тем же способом. Если Kv меньше заданного расхода — предупреждение в протоколе; если задание 0 — регулятор считается закрытым. Регулятор перепада расчёт учитывает только состоянием: заданный перепад и Kv не используются.
Результат расчёта. «Расчётный режим» — последняя по дате строка rs_out по линии: заданная и полученная величины, отклонение, положение клапана, расход, сопротивление, напоры на входе и выходе, источник.
Правка. Сохраняются только изменённые поля, с проверкой версии строки; изменение пишется в журнал правок.
Что нужно для работы
- Смотреть — любой вошедший.
- Править — право «Оборудование» → «Свойства» (при охвате «свои» — только регуляторы на участках, созданных этим пользователем) и включённая запись (
MUTATIONS_ENABLED=true). Без этого кнопки «Редактировать свойства» нет. Пользователю-роли PostgreSQL это право даёт предметное право «Правка гидравлической сети (режимы)». - Для «Расчётного режима» — сохранённый расчёт сети.
Шаги
Откройте «Инструменты» и наберите в поиске «Сетевые регуляторы» — пункт выделен рамкой.

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

Плашки над списком — качество данных: сколько записей готовы к расчёту, а у скольких чего-то не хватает (нет линии, линия удалена, нет регулируемого узла, нет задания, нет Kv). Красные — критично (расчёт их не учтёт), оранжевые — требуют внимания. Нажмите плашку — список сузится до таких записей.

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

Кнопка с карточкой в строке открывает регулятор: тип, линия, регулируемый узел, задание и режим. Без Kv расчёт берёт сопротивления по умолчанию и предупреждает в протоколе; регулятор расхода с нулевым заданием считается закрытым.

Вкладка «Каталог» — модели регуляторов: DN, диапазон, среда, привод, изготовитель.

Примеры
Копия Алматы: что в журнале. 673 регулятора: давления — 653, расхода — 7, перепада — 13. «Готовы» — 555, «Нет линии» — 2, «Удалённая линия» — 55, «Нет узла» — 48, «Нет задания» — 2, «Нет Kv» — 11. Открыто 636, закрыто 12, неактивно 25. Координаты есть у 473. В каталоге 271 модель (давления — 51, расхода — 8, перепада — 212), неполный паспорт у одной: регулятор расхода РК-1, DN 700, без Kv.
Регулятор давления №552 (там же). Линия 321695 между узлами нсо-10 и НС-10*, фрагмент «CЗЭР». Регулирует напор в узле НС-10* (РС1-4) на подающем трубопроводе: задание 85 м, отклонение 2 м, Kv 2000, сопротивления и утечка не заданы. Расчёт возьмёт r1 = 10 / 2000² = 2,5·10⁻⁶ и r2 = 10⁸ · r1 = 250 и выведет предупреждение «Не задана относительная протечка или макс. сопр.».
Регулятор давления №560 (там же), плитка «Нет Kv». Задание 55 м в узле «РД Кер вых» на обратном трубопроводе, Kv не задан. Расчёт возьмёт r1 = 10⁻⁸ и r2 = 10⁸ и выведет оба предупреждения о значениях по умолчанию. Чтобы исправить, задайте «Пропускная способность Kv» в правке.
Если не получается
- «Результатов расчёта по регуляторам ещё нет: задания видны уже сейчас, расход, напоры, сопротивление и положение клапана появятся после сохранения расчёта сети.» — в базе нет сохранённых расчётов.
- «Не удалось загрузить регуляторы», «Не удалось загрузить каталог регуляторов», «Не удалось открыть карточку регулятора», «Не удалось открыть паспорт регулятора» — нет связи с сервером; повторите.
- «Для регулятора давления или перепада не выбран узел, в котором поддерживается заданная величина.» — регулируемый узел задаётся в десктопе ТГИД.
- «Заданная величина равна нулю или отсутствует.», «Пропускная способность клапана Kv равна нулю или отсутствует.» — заполните поля в правке.
- «В таблицах установленных регуляторов отсутствует ссылка на типовую модель каталога.» в карточке модели — так устроена база; число установленных регуляторов модели не показывается. Эту пояснительную строку сервер отдаёт только на русском — в казахском и английском интерфейсе она остаётся русской.
- «Объект изменён другим пользователем — перезагрузите карточку и повторите правку.» — запись изменили после того, как вы открыли правку.
- «Нет права «Свойства: оборудование (свои)»» — у роли нет права на правку оборудования.
Для администратора
- Запись:
MUTATIONS_ENABLED=true, право «Оборудование» → «Свойства»; приAUTH_BACKEND=pgокончательно права проверяет база. - Таблицы десктопные (
pressregulators,consumptregulators,pressdropregulators,regulatorstates,workattributes,pipelinesigns, каталогиstandard*regulators,rs_out); веб их не создаёт. - Правка пишется в
audit_log(UPDATE, старые и новые значения).
Для разработчика
- Чтение:
GET /api/network-regulators/lookups,GET /api/network-regulators/items(page,page_sizeдо 200,regulator_type:pressure|flow|differential,quality_status:ready|line_missing|line_removed|control_node_missing|setpoint_missing|capacity_missing,state_id,fragment_id,work_attribute_id,line_id,search),GET /api/network-regulators/items/{regulator_type}/{id},GET /api/network-regulators/catalog(catalog_type,quality_status:ready|incomplete,search),GET /api/network-regulators/catalog/{catalog_type}/{id}—routers/equipment.py,database/network_regulators.py. Пояснение каталогаlink_noteAPI формирует только по-русски. - Правка:
GET|PUT /api/v1/equipment-edit/{pressregulators|consumptregulators|pressdropregulators}/{id}—routers/equipment_edit.py(у регулятора перепада дополнительные поляregvalvehydrores,consthroughregvalve,thrustdropmean),database/typed_edit.py. - Расчёт:
heatnet/io/reader.py(_pressure_regulator,_flow_regulator),heatnet/solve/hydraulic.py. - Веб:
components/NetworkRegulatorJournalDialog.vue(ключnetworkRegulator), переход из протокола —utils/calcProtocol.ts,components/CalculationProtocol.vue. - Тесты: API —
tests/test_equipment_router.py,tests/test_equipment_edit_router.py; веб —tests/utils/equipmentEdit.spec.ts,tests/utils/calcProtocol.spec.ts; e2e —e2e/functions/equipment-registries.spec.ts.
