Industry 4.0 · цифровые двойники станков и промышленной автоматики · отечественная R&D-разработка +7 925 353-56-35 info@synctwin.ru
Документация / Панель у станка

Панель у станка: работа без облака

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

Идея

Четвёртое окно

На одну и ту же возможность станка платформа смотрит из четырёх окон, и панель — последнее из них:

ОкноКто там работаетНужен ли интернет
Двойник (cncai)технолог: паспорт станка, программада
Стенд (LinuxCNC)конфигурация, сгенерённая из двойниканет
Наладка (cncctl)наладчик приводовнет
Панель у станкаоператор и наладчик, стоящие у оборудованиянет

Почему руки живут здесь, а не в браузере за тысячу километров

Через границу с облаком проходит только самодостаточное: пакет программы, команда «выполняй» или «стоп», результат прогона. Жест — толчок оси, сырая команда приводу, строка MDI руками — не проходит через облако никогда. Не потому, что канал узкий, а потому что жест не переживает задержки и обрыва: рука должна быть там, где глаза, а глаза — у станка.

Отсюда разделение, которое повторяется на каждой вкладке ниже: боксу отданы наблюдение, останов и приведение станка в известное состояние; загрузка новой программы осталась облаку — она несёт планирование, которого у бокса нет и не должно быть.

01–02

Вход

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

03–04

Хозяйство

Состояние бокса, виртуальные станки, связь с агентом.

05–07

Работа

Координаты, автоматика, экран оператора, проект-цепочка.

08–09

Осторожно

Сеть и порты, канал удалённой поддержки.

Шаг 1

Открыть панель

Панель поднимается службой synctwin-panel на самом боксе и слушает обычный веб-порт (80). Установщик печатает в конце установки две двери — обе нужны, ни одна не работает везде:

Панель бокса:
  1) http://имя-бокса.local/   — по имени, не зависит от смены адреса
  2) http://192.168.1.25/      — по адресу, если имя не открылось
                                 (строгая корпоративная сеть, VPN, домен .local)
  • Имя переживает смену адреса по DHCP, но требует, чтобы в сети работал mDNS;
  • Адрес открывается всегда, но меняется, если его никто не закрепил.

Адрес «пропал» — закрепите его. Установщик печатает всё, что нужно сетевому администратору для брони DHCP: имя бокса, порт, MAC и текущий адрес. Это одна строка вместо звонка в поддержку.

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

Шаг 2

Войти

Панель спрашивает пароль — окно «Вход в панель бокса». Пароль генерится установщиком и печатается один раз, в конце установки; хранится он на самом боксе, в файле настроек (PANEL_PASS). В облаке его нет — панель это офлайн-дверь, и облако тут помочь не может.

Забыли пароль

Сброс живёт на самом боксе и защищён физическим доступом к нему:

synctwin-ctl panel-pass --show     # показать текущий
synctwin-ctl panel-pass --reset    # выдать новый и напечатать его

Сброс перезапускает службу панели, поэтому все открытые сессии закрываются — утёкший пароль умирает вместе с ним. Вход держится 30 дней; перезапуск панели просто попросит пароль заново.

Пустой пароль = вход выключен, панель пускает любого. Так живут боксы, установленные до появления входа, — до ближайшего самообновления. Увидели панель, которая открылась без вопроса, — задайте пароль (panel-pass --reset), не откладывая: с этого экрана останавливают и двигают железо.

Шаг 3

Что на экране

Шапка: имя платформы, идентификатор бокса, значок связи и кнопка обновления. Ниже — шесть вкладок:

ВкладкаЧто тамКому
Статусбокс, привязка к платформе, удалённая поддержканаладчик
Станки (VM)виртуальные станки: пуск, стоп, автозапуск, диагностиканаладчик
Стендкоординаты в реальном времени и PLC-слой автоматикиоба
Операторкрупный экран у линии: что идёт, Пуск / Пауза / Стопоператор
Проектпакет проекта-цепочки и его шагиоба
Сетькарта физических портов боксаналадчик

Вкладка «Статус»

  • Бокс — хост, версия, ядра, сколько ядер отдано реальному времени (RT-изолир.), память, загрузка, сколько VM запущено;
  • Привязка к платформе — привязан ли бокс к аккаунту, адрес платформы, когда был последний heartbeat. Это ответ на вопрос «видит ли нас облако», и он честно отличает «связи нет» от «связь есть, но бокс не привязан»;
  • Удалённая поддержка — шаг 9.

Сразу после установки сверху висит баннер «Стенд разворачивается»: установщик поднимает первый станок фоном, это 5–15 минут. Делать ничего не нужно, страница обновляется сама.

Шаг 4

Виртуальные станки (VM)

Вкладка «Станки (VM)» — таблица: имя, состояние, автозапуск, отданный порт, IP, действия. Каждый станок живёт в своей виртуальной машине, и это она поднимает LinuxCNC.

КнопкаЧто делаетКогда жать
Пускподнять остановленную VMстанок не отвечает после выключения бокса
Стопштатно погасить VMперед работами с железом и портами
Сбросжёсткая перезагрузка гостя без сохранениятолько если гость завис и не гасится
Перезапустить агентаподнять заново службу связи внутри VMстанок «на связи», но команды не доходят
Поднять LinuxCNCзапустить систему ЧПУ внутри уже поднятой VMVM идёт, а координат нет
Автозапуск: вкл / выклподниматься ли станку вместе с боксомна постоянно работающем стенде — вкл
Проверить связьразбор по звеньям (до минуты)«почему станка не видно в браузере»

«Проверить связь» — ответ вместо догадок

Кнопка проверяет цепочку по звеньям и печатает их списком: VM · ssh · агент · прописка · облако · канал · LinuxCNC · наладка · дирижёр. Первой строкой стоит вывод «Оборвалось: …» — куда идти, а не девять галочек, которые надо сверять глазами. Если звенья целы, а ЧПУ не поднято, панель прямо предлагает кнопку «Поднять LinuxCNC» — сама она этого не делает.

«Сброс» — не «перезапуск». Гость перезагружается без сохранения: всё, что не записано на диск станка, теряется, а идущий рез обрывается посреди кадра. Панель спрашивает подтверждение — это единственный вопрос, который стоит читать до конца.

Опасные действия панель принимает только с явным подтверждением, поэтому случайный запрос не может погасить бокс. Разворачивание и удаление станков с экрана не делается — это работа установщика и synctwin-ctl.

Шаг 5

Вкладка «Стенд»: координаты и автоматика

Выбираете станок в списке — и видите его живые координаты (DRO), обновляемые раз в секунду: плитка на каждую ось станка и подпись со строкой интерпретатора и именем загруженного файла.

Рядом значок состояния, и он различает четыре разных вещи: E-STOP · E-stop снят · выключен · включён. Интерпретатор отдельной строкой: простой · выполнение · пауза · чтение · ожидание.

Карточка «Автоматика» — PLC-слой

Это real-time-логика внутри HAL: пуск и стоп прямо с бокса, без облака. Панель показывает, какая программа загружена, какой шаг активен и сколько он держится, и говорит «шаг задержался», когда он идёт дольше, чем ему положено по паспорту шага.

  • Стоп — доступен всегда, пока слой загружен;
  • Пуск — доступен, пока программа не идёт;
  • «сбой схемы» — одновременно активны несколько шагов; это неисправность логики, а не панели;
  • «не загружена» — программу автоматики на стенд приносит облако, здесь её не загрузить.

Вердикт о «залипании» целиком считает облако, панель его не повторяет: две трактовки одних и тех же снимков разошлись бы, и спорить пришлось бы двум экранам. Панель говорит только то, что видит своими глазами.

Шаг 6

Вкладка «Оператор»: экран у линии

Крупный экран для человека в перчатках. Один выбор узла вверху — две карточки под ним: «Линия» (программа автоматики) и «Станок» (рез).

Линия — плеер автоматики

Что видно: имя программы, состояние (идёт · пауза · остановлена · авария программы · нет программы), полоса выполнения, круг по счёту, время, и плитки осей узла.

Кнопки — Пуск · Пауза · Стоп. «Пуск» здесь означает продолжить уже загруженную: новую программу бокс не пускает.

ИМИТАЦИЯ — виртуальные серво, не станок (sim:limit3)

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

Станок — рез

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

Ряд кнопокКнопки
питаниеСнять E-STOP · Включить · В ноль
транспортПуск реза · Пауза · Продолжить · Стоп станка
подача25% · 50% · 100% · 150% и потолок этого станка
авария⛔ АВАРИЯ

Ряд питания читается слева направо, как на стойке: снять аварию → включить → привязать нули. Потолок коррекции подачи панель не выдумывает: он приезжает кадром от самого станка (его объявляет активная конфигурация). Не приехал — так и написано: «потолок не объявлен». Ступень выше потолка помечается, но не блокируется: отказ станка словами объясняет больше, чем серая кнопка.

⛔ Стоп не блокируется никогда и ничем. Кнопки «Стоп», «Стоп станка» и «АВАРИЯ» активны всегда — даже если не выбран узел, даже если панель считает, что программа не идёт, даже если связь моргает. Лишнее нажатие безвредно; недоступная кнопка останова — нет. Команда останова уходит первой, до любых проверок, и ждёт освобождения канала, если тот занят опросом.

Момента и ошибки слежения здесь нет — и это намеренно

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

⚠ Там, где момент всё же виден — в колонке «Условие» шагов проекта (шаг 7), — помните: на виртуальных осях момента не существует. Число, посчитанное моделью, замером не является; станок без заполненного паспорта привода сравнивать его не с чем.

Шаг 7

Проект-цепочка

Проект — это работа, разложенная на шаги, которые идут на разных станках: отрезать здесь, переложить туда, обработать там. Дирижёр этой цепочки живёт на боксе, а не в облаке, и весь G-code с планами автоматики лежит внутри пакета — пуск шага в облако не ходит.

Что видно

  • Проект на боксе — что загружено, откуда пришло, предупреждения пакета;
  • Шаги — таблица: № · шаг · узел · после какого шага · готово по · условие · статус · прогресс · время · действие;
  • Узлы (VM ↔ агент)кто сейчас держит стенд: связь, поднятый двойник, версия агента и метка «занят»;
  • Отказы — отдельный список внизу: только реально отказавшие и просроченные шаги, причиной словами.

Кнопки: «Пуск проекта» (по порядку, до первого отказа), «Стоп» и «Пуск шага» в строке каждого шага. Пакет можно принести файлом — кнопка «Загрузить пакет».

Отказ называет себя

Панель не прячет отказ за успехом. Каждый — со своей формулировкой:

прогон уже идёт — дождитесь конца или остановите
на части узлов агент старее, чем требует пакет — обновите агент
в пакете есть шаги, которые дирижёр не умеет исполнять
прогон продолжается на узле без активного потока панели — эта кнопка его не достаёт

«Готово по» — поле шага, а не догадка. Шаг заканчивается тем, что назвал автор: конец программы (M30) · сделано · таймаут · вход № · позиция · скорость · момент · ошибка слежения · авария. Таймаут без названного исхода — ложный успех: «деталь не приехала» и «приехала ровно к сроку» обязаны выглядеть по-разному. Подробнее — Автоматика.

Статус «продолжается без панели» значит ровно то, что написано: шаг идёт на узле, а поток панели его больше не ведёт (панель перезапускали). Кнопка «Стоп» такой шаг не достаёт — останавливайте станок напрямую на вкладке «Оператор».

Шаг 8

Сеть и порты — осторожно

Вкладка «Сеть» — карта физических портов бокса: порт, тип, роль, драйвер, MAC, годен ли под EtherCAT. Роли называются прямо:

РольЧто значит
mgmtесть IP — управление и интернет
ethercat-candidateсвободен под EtherCAT
assignedотдан в виртуальный станок
unboundбез драйвера

Два действия: «Освободить под EtherCAT» (порт теряет IP на хосте и отдаётся станку) и «Вернуть в сеть».

⚠ Этой кнопкой можно отрезать себе связь. Освобождённый порт перестаёт быть сетевым — если это был порт управления, панель закроется вместе с ним, и вернуть всё придётся с клавиатурой у бокса. Защита есть: бокс откажется освобождать порт, по которому идёт маршрут по умолчанию или ваше же соединение, и скажет об этом словами. Обходить эту защиту с веб-кнопки нельзя — намеренно.

Переезд управления на другой порт или на Wi-Fi выполняется командой synctwin-ctl mgmt-move у бокса. Кнопки на панели у него нет: действие рвёт ту самую связь, по которой на кнопку нажали.

Шаг 9

Канал поддержки

Карточка «Удалённая поддержка» на вкладке «Статус». Одна кнопка — «Подключиться к поддержке» — и вторая, «Отключить».

Что при этом происходит

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

Дверь открыта ровно столько, сколько вы её держите. Нажали «Отключить» — доступ закрылся в ту же секунду. Постоянно открытой этой двери не бывает: именно так в 2026 году на стенд приехал чужой майнер, и урок оплачен.

Что видно на экране

Две подписи, которые панель не выдумывает

Обе живут на вкладке «Оператор» и обе показывают чужое знание дословно: панель их не вычисляет и своего мнения о них не имеет.

Ось подписана именем шарнира, а не номером канала

Плитка оси подписывается тем, чем её зовёт принесённый механизм. Экран разводит четыре разных ответа и ни одним не подменяет другой:

  • имя шарнира — перевод состоялся, плитка названа так же, как в механизме;
  • номер канала — карты имён нет, канал сам себе имя. Это не поломка: так выглядит узел, к которому механизм ещё не привязан;
  • «нет в механизме» — программа адресует шарнир, которого в файле механизма нет. Разошлись программа и механизм: сверять надо их, а не панель;
  • «имя не доехало» — перевод не пришёл со стенда. Панель честно говорит «не знаю» вместо правдоподобной подстановки.

Причина, по которой перевода нет, пишется строкой под плитками — а не прячется в пустое поле. Если осей не называет сам плеер, вместо плиток стоит плеер не называет осей.

«Чего ждём и сколько уже ждём»

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

ждёт: вход DI3 (rising) — уже 12 с, предел через 8 с
ждёт: условия перехода — уже 47 с, предел не назван

Как это читать. Первая часть — чего ждём: конкретный вход с фронтом, авария, или обобщённое «условия перехода», когда условие не сводится к одному входу. Вторая — сколько уже ждём. Третья — предел через N с, если у ожидания назван предел, и предел не назван, если не назван. Второе стоит читать буквально: ожидание без предела не закончится само никогда — оно будет висеть, пока условие не выполнится или человек не остановит прогон.

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

Шаг 10

Чего панель не делает

Нельзя с панелиПочемуГде это делают
Написать или загрузить программу резапрограмма несёт планирование — у бокса его нетСтанки
Загрузить программу автоматикито же самое: приносит облако, бокс ею управляетАвтоматика
Ввести строку MDI рукаминужен эхо-разбор строки и подтверждение по кадру — это отдельная работа
Крутить параметры привода, SDO, контурыэто работа наладчика, у неё своё окноНаладка
Править конфигурацию станкаконфиг всегда генерится из двойника; правка на стенде — вторая правда, она исчезнет при следующем пускеСтанки
Развернуть или удалить станокработа установщикаsynctwin-ctl

ssh — дорога поддержки, а не дорога алгоритмов

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

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

Готовится

Чего на боксах пока нет

Ниже — то, что уже сделано в платформе, но на установленные боксы ещё не приехало. Сроков не называем.

Готовится

Толчок оси (джог) прямо с бокса

Канал уже есть и уже держит границы: шаг толчка — до 50 мм, подача — до 3000 мм/мин (это защита от опечатки в поле, а не замена мягким пределам станка), а отказ считается по живому кадру стенда, а не по памяти панели: между двумя нажатиями человек мог нажать грибок на самом станке. Отказы названы словами:

LinuxCNC на этом стенде не запущен — двигать нечем
взведён аварийный стоп (E-STOP) — снимите его, затем толкайте ось
идёт программа — ручное движение подралось бы с ней за те же оси
станок выключен (machine off) — включите питание приводов

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

Готовится

Кнопки, которых на экране ещё нет

У проекта-цепочки уже работают пауза между шагами, продолжение с отказавшего шага, «стоп всё» по всем узлам пакета, журнал команд дирижёра и отзыв загруженного пакета. На экране панели этих кнопок пока нет — сегодня они доступны только программно. Там же: перезагрузка бокса и переезд управления на другой порт.

Памятка

Если что-то пошло не так

Что видноЧто сделать
Станок движется не туда«Стоп станка» или «⛔ АВАРИЯ» — они активны всегда, спрашивать панель не нужно
Панель не открывается по имениоткройте по адресу; адрес не известен — спросите его у сетевого администратора по MAC бокса
Панель просит пароль, которого нетsynctwin-ctl panel-pass --show у бокса; забыт совсем — --reset
«стенд не запущен», координат нетвкладка «Станки (VM)» → «Проверить связь», затем по строке «Оборвалось: …»
Станок на связи, команды не доходят«Перезапустить агента»; не помогло — «Поднять LinuxCNC»
«шаг задержался» в автоматикесмотрите, чего ждёт шаг; условие перехода задаёт программа, а не панель
Нужна помощь инженера«Статус» → «Подключиться к поддержке», после разбора — «Отключить»

Дальше: Станки · Автоматика · Наладка · Установка бокса · Понятия