CNN TürkSiber saldırganların yeni hedefi: Marketler | Bir tuşla tonlarca gıda çöpe gidebilir!The Jerusalem Post'They have too much to lose': Trump says he does not think China, Russia are helping Iran 'at all'PunchHow to check your name, home address on Nigeria’s new postcode systemESPNTransfer rumors, news: Barcelona, Real Madrid scout Erling Haaland at AnfieldRTP DesportoSporting defronta Lens na ChampionsInquirerMarcos: Pax Silica won’t displace indigenous communities, burial sitesInquirer EntertainmentWowie de Guzman figures in Batangas car accident, assures he’s OKCollider‘The Boys’ Star’s 100% RT Hidden Gem Officially Gets a Second Chance on NetflixSouth China Morning PostBritish Council to resume IELTS exams after 4 days of cancellations across ChinaWirtualna PolskaMieli monitoring, świadków i podejrzaną. I co? I nicThe RegisterUK Cabinet Office takes £7.8M hit to kill off recruitment systemRapplerFACT CHECK: Quezon City disputes claims of DILG fire truck, ambulance turnover
The Daily Newsstand · Free, Always
Tuesday, October 13, 2026

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

Translate

Передвинул DIN-рейку — поправь провода. Заменил модуль — переподключи их. Закончил чертеж — составь спецификацию и подготовь маркировку для сборщика. Я проектирую щиты автоматики и устал повторять эти операции вручную, поэтому начал писать свой редактор — Slate Tech. Теперь он перестраивает трассы вслед за аппаратами, формирует кабельный журнал и считает расходники вплоть до наконечников проводов. Расскажу, как все это работает, какие операции программа выполняет автоматически и какие задачи пока остаются за проектировщиком.

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

В марте 2026 года я познакомился с ИИ-агентами и начал разрабатывать инструменты, чтобы автоматизировать свои задачи. Я уже знал JavaScript. Знакомый программист помог с архитектурой и серверной частью, в команде появился дизайнер. Я писал программу после основной работы и переносил в нее реальные проекты из Visio — так сразу становилось понятно, каких инструментов не хватает.

Сначала я хотел избавиться от ручной трассировки проводов. Затем добавил в редактор инструменты, которые автоматически готовят маркировку, спецификации и кабельные журналы. Так появился Slate Tech.

Мы провели два этапа закрытого альфа-тестирования с интеграторами. За это время исправили более 30 ошибок и добавили около 50 функций. 31 августа 2026 года открыли регистрацию.

Редактор щита и соединений

Редактор работает в браузере. Интерфейс использует React, состоянием фигур и модулей управляет Zustand, за отрисовку отвечает PixiJS. Редактор рисует холст на видеокарте через WebGL и выполняет основные вычисления на стороне клиента. Там же программа формирует спецификацию. Поэтому скорость работы зависит от компьютера проектировщика.

Самый крупный проект, с которым мы работали, насчитывал 800 модулей. Скорость работы оставалась приемлемой.

Работа начинается с аппаратов. У каждого аппарата в редакторе есть изображение, технические параметры, сведения о производителе, артикул, обозначения контактов и маркировка. Значительную часть библиотеки мы перенесли из наборов TimVisio по договоренности с автором. Для этого написали инструмент, который обрабатывает фигуры из файлов VSSX и выгружает изображения и расположение контактов. После импорта фигуры нужно проверить, распределить по категориям и подписать контакты.

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

Импорт SVG и конструктор собственных аппаратов уже работают. Они нужны, когда подходящего оборудования еще нет в каталоге. Инструкцию по этим возможностям мы пока дополняем.

Аппараты в готовом проекте можно обновить из библиотеки. Например, если мы поправили положение контакта, пользователю не нужно заново расставлять модули. При обновлении редактор сам скорректирует связанные с ними соединения и подписи.

Для корпуса щита есть параметрический инструмент. В нем задают длину DIN-рейки или число модулей, количество рядов, расстояния между ними, раму, двери и пластроны. Можно собрать изображение щита целиком или работать только с рамой. Способ учета тоже настраивается: готовый щит попадает в спецификацию одной позицией, а при учете по компонентам программа считает раму и рейки отдельно.

Окно инструмента «Щит»: длина DIN-рейки, число модулей и рядов, расстояния между рейками и рамами, пластрон, дверь и способ учета в спецификации

Окно инструмента «Щит»: длина DIN-рейки, число модулей и рядов, расстояния между рейками и рамами, пластрон, дверь и способ учета в спецификации

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

Из одного диммера WB-MDM3 получаем ряд из семи: шесть копий слева направо, край к краю, без зазора

Из одного диммера WB-MDM3 получаем ряд из семи: шесть копий слева направо, край к краю, без зазора

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

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

Слои проекта. «Пластроны» и «Рама» скрыты, чтобы не загораживать аппараты

Слои проекта. «Пластроны» и «Рама» скрыты, чтобы не загораживать аппараты


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

У подслоя есть собственные настройки, но настройки родительского слоя имеют приоритет. Через слой можно выделить все автоматы или переместить группу элементов.

У слоя «Автоматы» справа значки видимости, блокировки, учета в Excel и привязки. Внизу слева — мини-карта

У слоя «Автоматы» справа значки видимости, блокировки, учета в Excel и привязки. Внизу слева — мини-карта

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

Провода от верхнего ряда автоматов к нижнему идут по направляющим — тонким красным линиям

Провода от верхнего ряда автоматов к нижнему идут по направляющим — тонким красным линиям

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

Провода от клеммника к автоматам собраны в жгуты со стяжками и расходятся у контактов. Цвета проводов сохраняются

Провода от клеммника к автоматам собраны в жгуты со стяжками и расходятся у контактов. Цвета проводов сохраняются

Витая пара между контроллером Wiren Board 8 и диммером WB-MDM3

Витая пара между контроллером Wiren Board 8 и диммером WB-MDM3

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

Ручная трассировка тоже есть. Если направляющих нет, при рисовании проводов редактор старается обойти видимые модули и учесть существующие линии.

Ручная трассировка: провода между двумя рядами автоматов обходят модули и идут параллельно

Ручная трассировка: провода между двумя рядами автоматов обходят модули и идут параллельно

Несколько выделенных проводов можно двигать как один объект, сохраняя расстояния между ними. Сегменты перемещаются с шагом сетки: при сетке 1 мм шаг тоже составляет 1 мм.

Еще одна функция — «Упорядочить провода». Она перестраивает выделенные линии в параллельные трассы с равными отступами. Пока это экспериментальный инструмент: он не охватывает все возможные схемы.

Перемещаться по большому проекту помогает мини-карта — на ней можно выбрать нужную часть щита.

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

Замена диммера WB-MDM3 на релейный модуль WB-MR3LV/K: каждому контакту старого модуля назначаем контакт нового

Замена диммера WB-MDM3 на релейный модуль WB-MR3LV/K: каждому контакту старого модуля назначаем контакт нового

У нового модуля должно быть не меньше контактов, чем у старого. Иначе программа покажет конфликт и не завершит замену. Если контактов достаточно и пользователь задал соответствия, редактор заменяет модуль. Программа не запрещает заменять устройства разных типов — допустимость такой замены определяет проектировщик.

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

Настройки автоподбора сечения: отдельные таблицы для автоматов с характеристиками C, B и D

Настройки автоподбора сечения: отдельные таблицы для автоматов с характеристиками C, B и D

Для устройств без такой характеристики программа учитывает номинал и уже подключенные провода. Если к УЗО приходит провод сечением 10 мм², следующие провода, которые пользователь подключит к нему, тоже получат 10 мм². Падение напряжения программа пока не рассчитывает.

При автоподборе сечения программа применяет правила в следующем порядке: сначала учитывает устройство с время-токовой характеристикой (ВТХ), затем — устройство с указанным номинальным током, например УЗО, и в последнюю очередь использует сечение, которое пользователь задал вручную. Направление рисования провода и порядок выбора его концов не влияют на результат. При замене аппарата программа не пересчитывает сечения. Автоподбор можно отключить.

Документы, маркировка и сборка

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

Режим «Описание»: на аппаратах подписано их назначение — «Свет кухня», «Диммер кухня», «Кухня бра»

Режим «Описание»: на аппаратах подписано их назначение — «Свет кухня», «Диммер кухня», «Кухня бра»

Тот же фрагмент в режиме «Обозначение»: QF1, WB1, X1–X3. На проводах адресная маркировка, например WB1:L и QF1:2

Тот же фрагмент в режиме «Обозначение»: QF1, WB1, X1–X3. На проводах адресная маркировка, например WB1:L и QF1:2

Это удобно при конструировании щита. Когда перед глазами автомат с описанием «Холодильник» и клемма с таким же описанием, не нужно искать расшифровку в отдельной таблице. Оба варианта можно использовать в документах и при печати наклеек.

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

Для проводов доступны последовательная нумерация, ручной текст и адресная маркировка. Последнюю мы построили по пункту 3.4.1 ГОСТ Р 50509-93: надпись на одном конце провода указывает аппарат и его зажим, к которому подключен другой конец.

Например, контакт 2 автомата QF1 соединен с контактом L диммера WB-MDM3, который в проекте обозначен WB1:

Где находится маркировка

Надпись

Что она обозначает

У клеммы 2 аппарата QF1

WB1:Լ

Другой конец подключен к контакту L устройства WB1

У клеммы L аппарата WB1

QF1:2

Другой конец подключен к контакту 2 устройства QF1

Между обозначением устройства и контакта мы ставим двоеточие, чтобы сократить длину надписи на термоусадке. Пункт 7.1 стандарта предусматривает разные способы разделить элементы маркировки; дефис в нем приведен как пример.

Перед печатью чертежей можно включить инструмент «Контакты» и проверить их маркировку.

Инструмент «Контакты» показывает маркировку контактов: 1 и 2 у автомата QF1, L, N, O1–O3 у диммера WB1

Инструмент «Контакты» показывает маркировку контактов: 1 и 2 у автомата QF1, L, N, O1–O3 у диммера WB1

Из проекта программа формирует Excel-файл, который содержит:

  • спецификацию;

  • расшифровку маркировки;

  • кабельный журнал;

  • сводку по расходным материалам;

  • данные для печати.

Лист «Спецификация»: оборудование сгруппировано по типам — АВДТ, автоматы, блоки питания, гребенчатые шины, клеммы и другие

Лист «Спецификация»: оборудование сгруппировано по типам — АВДТ, автоматы, блоки питания, гребенчатые шины, клеммы и другие

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

Для гребенчатых шин и обрезаемых перемычек программа считает, сколько целых изделий потребуется на все показанные отрезки. Из одной шины на 12 полюсов можно получить отрезки на 5, 4 и 3 полюса — в спецификации будет одна шина. Для двух отрезков по 8 полюсов нужны две шины: каждый участок должен оставаться цельным, соединять обрезки между собой нельзя.

Если доступны готовые изделия нужного размера — например, на 5, 4 и 3 полюса, — программа включает их в спецификацию, а не рассчитывает раскрой более длинной шины.

В сводке расходных материалов программа учитывает провода, термоусадку и наконечники. Если к одному контакту подключены два провода, по умолчанию редактор показывает у каждого отдельный наконечник и располагает их слева и справа от оси контакта. Это соответствует варианту, когда под один зажим заводят два провода, каждый со своим наконечником. Чтобы объединить два провода одинакового сечения в двойной наконечник НШВИ-2, нужно явно включить это свойство у обоих проводов. Тогда редактор объединит их в один наконечник и учтет в сводке один НШВИ-2 на пару.

Лист «Сводка КЖ»: термоусадка по диапазонам сечений, длина провода по сечению и цвету, витая пара, НШВИ и НШВИ-2. Запас 15% — в отдельной графе

Лист «Сводка КЖ»: термоусадка по диапазонам сечений, длина провода по сечению и цвету, витая пара, НШВИ и НШВИ-2. Запас 15% — в отдельной графе

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

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

Лист «Термоусадки»: метки для печати разложены по диапазонам сечений

Лист «Термоусадки»: метки для печати разложены по диапазонам сечений

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

Лист «Маркировки»: соединения сгруппированы по DIN-рейкам. У каждого провода цвет, сечение, откуда и куда он идет, и флажок «Готово»

Лист «Маркировки»: соединения сгруппированы по DIN-рейкам. У каждого провода цвет, сечение, откуда и куда он идет, и флажок «Готово»

Отмечать готовность пока можно только в Excel. В дальнейшем мы хотим перенести часть этих функций в сервис, чтобы отслеживать этапы сборки и время работы над ними. Сейчас сборщик может пользоваться таблицей и интерактивным просмотром схемы по ссылке.

Чертежи можно экспортировать в векторный PDF с масштабом 1:1. Пользователь выделяет нужную область инструментом «Рамка», задает название и получает лист с рамкой и штампом. Программа использует название рамки как название листа. С помощью слоев из одного чертежа можно подготовить отдельные листы с компоновкой, пластронами, силовой коммутацией, шиной автоматики, выключателями и датчиками.

Экспорт всего проекта в SVG сейчас недоступен, поскольку в проектах используются авторские фигуры. При этом пользователь может импортировать свои SVG в библиотеку.

Хранение проектов и работа команды

Серверная часть Slate Tech работает на Node.js. Проекты и данные библиотеки мы храним в PostgreSQL. Для компаний мы добавили рабочие пространства. Один пользователь может состоять в нескольких компаниях и работать с их проектами.

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

Редактор автоматически сохраняет проект после каждого изменения. При доступном сервере между действием пользователя и сохранением проходит около 2–4 секунд. Если браузер аварийно закроется, изменения, которые редактор уже успел передать на сервер, останутся в проекте.

Если сервер недоступен, например из-за потери интернет-соединения, редактор показывает ошибку сохранения. В этом случае вкладку необходимо держать открытой до восстановления связи и успешного сохранения.

Если один проект редактируют два человека или один пользователь открыл его в двух вкладках, сервис предупреждает о конфликте и показывает, какая версия новее. Пользователь может открыть свежую версию или сохранить свои правки как отдельную копию.

Мы создаем резервные копии каждый час и храним их в трех дата-центрах. Сейчас восстановить проект на более раннюю дату можно через поддержку. Позже мы планируем открыть пользователям доступ к истории снимков. Обычные команды «Отменить» и «Повторить» работают в текущей сессии до обновления страницы.

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

Публичная версия — это снимок проекта на определенный момент. Она не обновляется вслед за рабочим проектом. Мы выбрали такой порядок, чтобы правки проектировщика не появились у сборщика в процессе работы. Когда новая версия готова, владелец нажимает «Обновить», и по той же ссылке становится доступен свежий снимок.

Обычная ссылка действует 90 дней; также предусмотрены постоянные ссылки. Постоянную ссылку можно включить в документацию или передать заказчику в виде QR-кода. Снимок хранится отдельно от рабочего проекта и остается доступным в пределах срока действия ссылки, даже если владелец удалит оригинал

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

Мы планируем перенести сервис в приложение на Electron и добавить возможность некоторое время работать без связи с сервером. После подключения приложение будет передавать накопленную историю изменений на сервер и сохранять проект в облаке. Пока этот режим не реализован.

Следующий этап разработки — конфигураторы. Уже есть пилот, в котором можно описать этажи, помещения, группы освещения, розетки, датчики и другие конечные устройства. Эти сведения должны стать основой для подбора модулей и подготовки коммерческого предложения.

Дальше я планирую:

  • связать конфигуратор с планами помещений и трассами кабелей;

  • добавить расчет падения напряжения и подбор сечения с учетом длины линии;

  • внедрить ИИ-помощника, который сможет вызывать конкретные функции конфигуратора и редактора.

Сейчас мы дорабатываем редактор щитов, поддерживаем пользователей и дополняем инструкции к уже готовым инструментам.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.