Автоматизировать автоматизацию: зачем я написал свой редактор щитов

Передвинул DIN-рейку — поправь провода. Заменил модуль — переподключи их. Закончил чертеж — составь спецификацию и подготовь маркировку для сборщика. Я проектирую щиты автоматики и устал повторять эти операции вручную, поэтому начал писать свой редактор — Slate Tech. Теперь он перестраивает трассы вслед за аппаратами, формирует кабельный журнал и считает расходники вплоть до наконечников проводов. Расскажу, как все это работает, какие операции программа выполняет автоматически и какие задачи пока остаются за проектировщиком.
Меня зовут Сейран, я проектирую электрические щиты, в том числе с автоматикой. Ручные операции, о которых я рассказал выше, повторялись в каждом проекте. Даже перемещение одной DIN-рейки могло обернуться часами правок.
В марте 2026 года я познакомился с ИИ-агентами и начал разрабатывать инструменты, чтобы автоматизировать свои задачи. Я уже знал JavaScript. Знакомый программист помог с архитектурой и серверной частью, в команде появился дизайнер. Я писал программу после основной работы и переносил в нее реальные проекты из Visio — так сразу становилось понятно, каких инструментов не хватает.
Сначала я хотел избавиться от ручной трассировки проводов. Затем добавил в редактор инструменты, которые автоматически готовят маркировку, спецификации и кабельные журналы. Так появился Slate Tech.
Мы провели два этапа закрытого альфа-тестирования с интеграторами. За это время исправили более 30 ошибок и добавили около 50 функций. 31 августа 2026 года открыли регистрацию.
Редактор щита и соединений
Редактор работает в браузере. Интерфейс использует React, состоянием фигур и модулей управляет Zustand, за отрисовку отвечает PixiJS. Редактор рисует холст на видеокарте через WebGL и выполняет основные вычисления на стороне клиента. Там же программа формирует спецификацию. Поэтому скорость работы зависит от компьютера проектировщика.
Самый крупный проект, с которым мы работали, насчитывал 800 модулей. Скорость работы оставалась приемлемой.
Работа начинается с аппаратов. У каждого аппарата в редакторе есть изображение, технические параметры, сведения о производителе, артикул, обозначения контактов и маркировка. Значительную часть библиотеки мы перенесли из наборов TimVisio по договоренности с автором. Для этого написали инструмент, который обрабатывает фигуры из файлов VSSX и выгружает изображения и расположение контактов. После импорта фигуры нужно проверить, распределить по категориям и подписать контакты.
Пользователь может менять обозначения контактов, расположение наклеек и другие параметры под свои задачи. Правка аппарата в конкретном проекте не затрагивает общую библиотеку. Если одно и то же изменение нужно во всех следующих проектах, его можно сохранить через редактор модулей в настройках библиотеки.
Импорт SVG и конструктор собственных аппаратов уже работают. Они нужны, когда подходящего оборудования еще нет в каталоге. Инструкцию по этим возможностям мы пока дополняем.
Аппараты в готовом проекте можно обновить из библиотеки. Например, если мы поправили положение контакта, пользователю не нужно заново расставлять модули. При обновлении редактор сам скорректирует связанные с ними соединения и подписи.
Для корпуса щита есть параметрический инструмент. В нем задают длину DIN-рейки или число модулей, количество рядов, расстояния между ними, раму, двери и пластроны. Можно собрать изображение щита целиком или работать только с рамой. Способ учета тоже настраивается: готовый щит попадает в спецификацию одной позицией, а при учете по компонентам программа считает раму и рейки отдельно.

Повторяющиеся элементы удобно расставлять инструментом дублирования. На скриншоте мы добавили один диммер WB-MDM3 и получаем из него ряд из семи устройств: указываем число копий, направление, откуда отсчитывать расстояние и какой зазор оставить между краями. Тем же инструментом можно расставлять клеммы или DIN-рейки.

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

Для каждого слоя пользователь настраивает видимость на холсте, учет в Excel, блокировку перемещения и выделения. Также можно разрешить или запретить привязку других фигур к аппаратам этого слоя.
У подслоя есть собственные настройки, но настройки родительского слоя имеют приоритет. Через слой можно выделить все автоматы или переместить группу элементов.

Для привязки проводов к трассам мы используем направляющие. Проектировщик обозначает трассы, по которым должны идти соединения, и задает расстояние, на котором провод ищет направляющую. Редактор ищет кратчайший допустимый маршрут между выбранными контактами и перестраивает его в ходе работы. При перемещении модуля или DIN-рейки подключенные провода следуют за ними и сохраняют привязку к направляющим.

Провода можно объединять в жгуты. На общем участке они идут вместе, а возле контактов расходятся. Редактор сохраняет цвета проводов, подстраивает изображение стяжек и учитывает направляющие.


Витая пара в редакторе — самостоятельный объект. Соединения разных подсистем можно разнести по слоям: шины умного дома, кнопки, датчики, кондиционирование и другие.
Ручная трассировка тоже есть. Если направляющих нет, при рисовании проводов редактор старается обойти видимые модули и учесть существующие линии.

Несколько выделенных проводов можно двигать как один объект, сохраняя расстояния между ними. Сегменты перемещаются с шагом сетки: при сетке 1 мм шаг тоже составляет 1 мм.
Еще одна функция — «Упорядочить провода». Она перестраивает выделенные линии в параллельные трассы с равными отступами. Пока это экспериментальный инструмент: он не охватывает все возможные схемы.
Перемещаться по большому проекту помогает мини-карта — на ней можно выбрать нужную часть щита.
При замене оборудования важно сохранить уже созданные соединения. Пользователь выделяет модули, которые нужно заменить, и перетаскивает замену из библиотеки с зажатой клавишей Ctrl. Редактор показывает старое и новое устройства, после чего пользователь сопоставляет их контакты.

У нового модуля должно быть не меньше контактов, чем у старого. Иначе программа покажет конфликт и не завершит замену. Если контактов достаточно и пользователь задал соответствия, редактор заменяет модуль. Программа не запрещает заменять устройства разных типов — допустимость такой замены определяет проектировщик.
Чтобы не задавать сечение каждого провода вручную, мы добавили автоподбор. Пользователь задает правила на отдельной странице настроек. Для автоматов и дифавтоматов с характеристиками B, C и D программа выбирает сечение по характеристике и номиналу. Например, можно задать правило для C16, по которому соответствующие провода получат сечение 2,5 мм².

Для устройств без такой характеристики программа учитывает номинал и уже подключенные провода. Если к УЗО приходит провод сечением 10 мм², следующие провода, которые пользователь подключит к нему, тоже получат 10 мм². Падение напряжения программа пока не рассчитывает.
При автоподборе сечения программа применяет правила в следующем порядке: сначала учитывает устройство с время-токовой характеристикой (ВТХ), затем — устройство с указанным номинальным током, например УЗО, и в последнюю очередь использует сечение, которое пользователь задал вручную. Направление рисования провода и порядок выбора его концов не влияют на результат. При замене аппарата программа не пересчитывает сечения. Автоподбор можно отключить.
Документы, маркировка и сборка
В проекте у устройства есть два текстовых поля: буквенно-цифровое обозначение (БЦО) и описание. БЦО — например, QF1 или X1. Описание указывает назначение аппарата: «Розетки — гостиная». На холсте можно переключаться между ними.


Это удобно при конструировании щита. Когда перед глазами автомат с описанием «Холодильник» и клемма с таким же описанием, не нужно искать расшифровку в отдельной таблице. Оба варианта можно использовать в документах и при печати наклеек.
Для каждого аппарата мы заранее задаем место наклейки и размер шрифта. Пользователю остается ввести текст или запустить автоматическую нумерацию: выбрать префикс, начальное число и направление обхода. Так можно подписать весь ряд модулей или все устройства выбранного слоя.
Для проводов доступны последовательная нумерация, ручной текст и адресная маркировка. Последнюю мы построили по пункту 3.4.1 ГОСТ Р 50509-93: надпись на одном конце провода указывает аппарат и его зажим, к которому подключен другой конец.
Например, контакт 2 автомата QF1 соединен с контактом L диммера WB-MDM3, который в проекте обозначен WB1:
Где находится маркировка | Надпись | Что она обозначает |
У клеммы 2 аппарата QF1 | WB1:Լ | Другой конец подключен к контакту L устройства WB1 |
У клеммы L аппарата WB1 | QF1:2 | Другой конец подключен к контакту 2 устройства QF1 |
Между обозначением устройства и контакта мы ставим двоеточие, чтобы сократить длину надписи на термоусадке. Пункт 7.1 стандарта предусматривает разные способы разделить элементы маркировки; дефис в нем приведен как пример.
Перед печатью чертежей можно включить инструмент «Контакты» и проверить их маркировку.

Из проекта программа формирует Excel-файл, который содержит:
спецификацию;
расшифровку маркировки;
кабельный журнал;
сводку по расходным материалам;
данные для печати.

При подсчете оборудования программа учитывает разные варианты комплектации изделий. Например, крышку кросс-модуля можно показать на чертеже, но исключить из спецификации, если она входит в комплект самого кросс-модуля. Для этого достаточно отключить учет соответствующего слоя в Excel.
Для гребенчатых шин и обрезаемых перемычек программа считает, сколько целых изделий потребуется на все показанные отрезки. Из одной шины на 12 полюсов можно получить отрезки на 5, 4 и 3 полюса — в спецификации будет одна шина. Для двух отрезков по 8 полюсов нужны две шины: каждый участок должен оставаться цельным, соединять обрезки между собой нельзя.
Если доступны готовые изделия нужного размера — например, на 5, 4 и 3 полюса, — программа включает их в спецификацию, а не рассчитывает раскрой более длинной шины.
В сводке расходных материалов программа учитывает провода, термоусадку и наконечники. Если к одному контакту подключены два провода, по умолчанию редактор показывает у каждого отдельный наконечник и располагает их слева и справа от оси контакта. Это соответствует варианту, когда под один зажим заводят два провода, каждый со своим наконечником. Чтобы объединить два провода одинакового сечения в двойной наконечник НШВИ-2, нужно явно включить это свойство у обоих проводов. Тогда редактор объединит их в один наконечник и учтет в сводке один НШВИ-2 на пару.

Длину провода редактор сейчас измеряет по плоскому чертежу, без учета глубины щита. При экспорте в Excel программа добавляет 15% запаса и показывает его в отдельной графе. Мы планируем дать пользователю возможность менять этот процент и задавать дополнительную длину на каждом конце — например, по 10 см.
Программа группирует маркировку для печати по диапазонам сечений термоусадки и располагает метки в порядке обхода щита сверху вниз. Сборщик последовательно берет нужные метки, вместо того чтобы искать каждую среди сотен надписей на бобине. У себя мы наматываем отпечатанную термоусадку на катушки, которые изготовили на 3D-принтере, и используем ее по мере сборки.

Кабельный журнал занимает два листа Excel-файла. На листе «КЖ» соединения идут общим списком в формате «модуль:контакт», а на листе «Маркировки» программа группирует их по DIN-рейкам. Если провод соединяет устройства на разных рейках, он появляется в соответствующих частях журнала. Сборщик ставит галочку «Готово» у одного конца провода, а таблица автоматически зачеркивает связанную строку второго конца. Она также показывает число выполненных соединений и процент готовности.

Отмечать готовность пока можно только в Excel. В дальнейшем мы хотим перенести часть этих функций в сервис, чтобы отслеживать этапы сборки и время работы над ними. Сейчас сборщик может пользоваться таблицей и интерактивным просмотром схемы по ссылке.
Чертежи можно экспортировать в векторный PDF с масштабом 1:1. Пользователь выделяет нужную область инструментом «Рамка», задает название и получает лист с рамкой и штампом. Программа использует название рамки как название листа. С помощью слоев из одного чертежа можно подготовить отдельные листы с компоновкой, пластронами, силовой коммутацией, шиной автоматики, выключателями и датчиками.
Экспорт всего проекта в SVG сейчас недоступен, поскольку в проектах используются авторские фигуры. При этом пользователь может импортировать свои SVG в библиотеку.
Хранение проектов и работа команды
Серверная часть Slate Tech работает на Node.js. Проекты и данные библиотеки мы храним в PostgreSQL. Для компаний мы добавили рабочие пространства. Один пользователь может состоять в нескольких компаниях и работать с их проектами.
Права зависят от роли. Проектировщики создают и редактируют проекты — эта роль платная. Менеджеры просматривают проекты, экспортируют документацию и отправляют ссылки заказчикам — эта роль бесплатная. Каждый, кому нужно редактировать схемы, должен получить роль проектировщика.
Редактор автоматически сохраняет проект после каждого изменения. При доступном сервере между действием пользователя и сохранением проходит около 2–4 секунд. Если браузер аварийно закроется, изменения, которые редактор уже успел передать на сервер, останутся в проекте.
Если сервер недоступен, например из-за потери интернет-соединения, редактор показывает ошибку сохранения. В этом случае вкладку необходимо держать открытой до восстановления связи и успешного сохранения.
Если один проект редактируют два человека или один пользователь открыл его в двух вкладках, сервис предупреждает о конфликте и показывает, какая версия новее. Пользователь может открыть свежую версию или сохранить свои правки как отдельную копию.
Мы создаем резервные копии каждый час и храним их в трех дата-центрах. Сейчас восстановить проект на более раннюю дату можно через поддержку. Позже мы планируем открыть пользователям доступ к истории снимков. Обычные команды «Отменить» и «Повторить» работают в текущей сессии до обновления страницы.
Заказчику или сборщику можно дать доступ к проекту по ссылке. Регистрация для просмотра не нужна, ссылку можно открыть в том числе на телефоне или планшете. Человек может приблизить нужную часть схемы, выбрать модуль или провод, посмотреть параметры и соединения, включить или скрыть слои. Редактировать рабочий проект через такой просмотр нельзя. По этой ссылке можно посмотреть пример проекта.
Публичная версия — это снимок проекта на определенный момент. Она не обновляется вслед за рабочим проектом. Мы выбрали такой порядок, чтобы правки проектировщика не появились у сборщика в процессе работы. Когда новая версия готова, владелец нажимает «Обновить», и по той же ссылке становится доступен свежий снимок.
Обычная ссылка действует 90 дней; также предусмотрены постоянные ссылки. Постоянную ссылку можно включить в документацию или передать заказчику в виде QR-кода. Снимок хранится отдельно от рабочего проекта и остается доступным в пределах срока действия ссылки, даже если владелец удалит оригинал
Если другому проектировщику нужен редактируемый проект, владелец может разрешить копирование. Получатель создает собственную копию в сервисе и работает с ней дальше. Выгрузить редактируемый проект в отдельный файл пока нельзя.
Мы планируем перенести сервис в приложение на Electron и добавить возможность некоторое время работать без связи с сервером. После подключения приложение будет передавать накопленную историю изменений на сервер и сохранять проект в облаке. Пока этот режим не реализован.
Следующий этап разработки — конфигураторы. Уже есть пилот, в котором можно описать этажи, помещения, группы освещения, розетки, датчики и другие конечные устройства. Эти сведения должны стать основой для подбора модулей и подготовки коммерческого предложения.
Дальше я планирую:
связать конфигуратор с планами помещений и трассами кабелей;
добавить расчет падения напряжения и подбор сечения с учетом длины линии;
внедрить ИИ-помощника, который сможет вызывать конкретные функции конфигуратора и редактора.
Сейчас мы дорабатываем редактор щитов, поддерживаем пользователей и дополняем инструкции к уже готовым инструментам.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.