Панель — веб-страница, которую отдаёт сам бокс, стоящий рядом со станком. Она открывается в цеховой сети и работает, когда интернета нет вовсе. Ниже — что с неё можно сделать, чего нельзя и почему. Незнакомые слова — в Понятиях.
На одну и ту же возможность станка платформа смотрит из четырёх окон, и панель — последнее из них:
| Окно | Кто там работает | Нужен ли интернет |
|---|---|---|
| Двойник (cncai) | технолог: паспорт станка, программа | да |
| Стенд (LinuxCNC) | конфигурация, сгенерённая из двойника | нет |
| Наладка (cncctl) | наладчик приводов | нет |
| Панель у станка | оператор и наладчик, стоящие у оборудования | нет |
Через границу с облаком проходит только самодостаточное: пакет программы, команда «выполняй» или «стоп», результат прогона. Жест — толчок оси, сырая команда приводу, строка MDI руками — не проходит через облако никогда. Не потому, что канал узкий, а потому что жест не переживает задержки и обрыва: рука должна быть там, где глаза, а глаза — у станка.
Отсюда разделение, которое повторяется на каждой вкладке ниже: боксу отданы наблюдение, останов и приведение станка в известное состояние; загрузка новой программы осталась облаку — она несёт планирование, которого у бокса нет и не должно быть.
Открыть панель по адресу бокса, войти паролем.
Состояние бокса, виртуальные станки, связь с агентом.
Координаты, автоматика, экран оператора, проект-цепочка.
Сеть и порты, канал удалённой поддержки.
Панель поднимается службой synctwin-panel на самом боксе и слушает обычный
веб-порт (80). Установщик печатает в конце установки две двери — обе нужны,
ни одна не работает везде:
Панель бокса:
1) http://имя-бокса.local/ — по имени, не зависит от смены адреса
2) http://192.168.1.25/ — по адресу, если имя не открылось
(строгая корпоративная сеть, VPN, домен .local) Адрес «пропал» — закрепите его. Установщик печатает всё, что нужно сетевому администратору для брони DHCP: имя бокса, порт, MAC и текущий адрес. Это одна строка вместо звонка в поддержку.
Панель рассчитана на доверенную цеховую сеть: соединение обычное, без шифрования, и слушает она все сетевые порты бокса. Единственное, что держит её внутри цеха, — сама сеть: бокс стоит за цеховым шлюзом, и входящих соединений из интернета к нему нет. Выставлять панель наружу нельзя.
Панель спрашивает пароль — окно «Вход в панель бокса». Пароль генерится установщиком
и печатается один раз, в конце установки; хранится он на самом боксе, в файле настроек
(PANEL_PASS). В облаке его нет — панель это офлайн-дверь, и облако тут помочь не может.
Сброс живёт на самом боксе и защищён физическим доступом к нему:
synctwin-ctl panel-pass --show # показать текущий synctwin-ctl panel-pass --reset # выдать новый и напечатать его
Сброс перезапускает службу панели, поэтому все открытые сессии закрываются — утёкший пароль умирает вместе с ним. Вход держится 30 дней; перезапуск панели просто попросит пароль заново.
Пустой пароль = вход выключен, панель пускает любого.
Так живут боксы, установленные до появления входа, — до ближайшего самообновления.
Увидели панель, которая открылась без вопроса, — задайте пароль
(panel-pass --reset), не откладывая: с этого экрана останавливают и двигают железо.
Шапка: имя платформы, идентификатор бокса, значок связи и кнопка обновления. Ниже — шесть вкладок:
| Вкладка | Что там | Кому |
|---|---|---|
| Статус | бокс, привязка к платформе, удалённая поддержка | наладчик |
| Станки (VM) | виртуальные станки: пуск, стоп, автозапуск, диагностика | наладчик |
| Стенд | координаты в реальном времени и PLC-слой автоматики | оба |
| Оператор | крупный экран у линии: что идёт, Пуск / Пауза / Стоп | оператор |
| Проект | пакет проекта-цепочки и его шаги | оба |
| Сеть | карта физических портов бокса | наладчик |
Сразу после установки сверху висит баннер «Стенд разворачивается»: установщик поднимает первый станок фоном, это 5–15 минут. Делать ничего не нужно, страница обновляется сама.
Вкладка «Станки (VM)» — таблица: имя, состояние, автозапуск, отданный порт, IP, действия. Каждый станок живёт в своей виртуальной машине, и это она поднимает LinuxCNC.
| Кнопка | Что делает | Когда жать |
|---|---|---|
| Пуск | поднять остановленную VM | станок не отвечает после выключения бокса |
| Стоп | штатно погасить VM | перед работами с железом и портами |
| Сброс | жёсткая перезагрузка гостя без сохранения | только если гость завис и не гасится |
| Перезапустить агента | поднять заново службу связи внутри VM | станок «на связи», но команды не доходят |
| Поднять LinuxCNC | запустить систему ЧПУ внутри уже поднятой VM | VM идёт, а координат нет |
| Автозапуск: вкл / выкл | подниматься ли станку вместе с боксом | на постоянно работающем стенде — вкл |
| Проверить связь | разбор по звеньям (до минуты) | «почему станка не видно в браузере» |
Кнопка проверяет цепочку по звеньям и печатает их списком: VM · ssh · агент · прописка · облако · канал · LinuxCNC · наладка · дирижёр. Первой строкой стоит вывод «Оборвалось: …» — куда идти, а не девять галочек, которые надо сверять глазами. Если звенья целы, а ЧПУ не поднято, панель прямо предлагает кнопку «Поднять LinuxCNC» — сама она этого не делает.
«Сброс» — не «перезапуск». Гость перезагружается без сохранения: всё, что не записано на диск станка, теряется, а идущий рез обрывается посреди кадра. Панель спрашивает подтверждение — это единственный вопрос, который стоит читать до конца.
Опасные действия панель принимает только с явным подтверждением, поэтому случайный
запрос не может погасить бокс. Разворачивание и удаление станков с экрана не делается —
это работа установщика и synctwin-ctl.
Выбираете станок в списке — и видите его живые координаты (DRO), обновляемые раз в секунду: плитка на каждую ось станка и подпись со строкой интерпретатора и именем загруженного файла.
Рядом значок состояния, и он различает четыре разных вещи: E-STOP · E-stop снят · выключен · включён. Интерпретатор отдельной строкой: простой · выполнение · пауза · чтение · ожидание.
Это real-time-логика внутри HAL: пуск и стоп прямо с бокса, без облака. Панель показывает, какая программа загружена, какой шаг активен и сколько он держится, и говорит «шаг задержался», когда он идёт дольше, чем ему положено по паспорту шага.
Вердикт о «залипании» целиком считает облако, панель его не повторяет: две трактовки одних и тех же снимков разошлись бы, и спорить пришлось бы двум экранам. Панель говорит только то, что видит своими глазами.
Крупный экран для человека в перчатках. Один выбор узла вверху — две карточки под ним: «Линия» (программа автоматики) и «Станок» (рез).
Что видно: имя программы, состояние (идёт · пауза · остановлена · авария программы · нет программы), полоса выполнения, круг по счёту, время, и плитки осей узла.
Кнопки — Пуск · Пауза · Стоп. «Пуск» здесь означает продолжить уже загруженную: новую программу бокс не пускает.
ИМИТАЦИЯ — виртуальные серво, не станок (sim:limit3)
Красная плашка появляется, когда узел идёт на виртуальных серво. Прогон на имитации помечается всегда, и источник называется — чтобы «поехало» на экране не выдавали за движение железа.
Та же схема, вторая карточка: координаты, номер строки, скорость и траектория программы, нарисованная прямо в браузере планшета — с поворотом, сдвигом, масштабом и кнопкой «⤢ В центр». Текст программы отдаёт бокс, рисует планшет.
| Ряд кнопок | Кнопки |
|---|---|
| питание | Снять E-STOP · Включить · В ноль |
| транспорт | Пуск реза · Пауза · Продолжить · Стоп станка |
| подача | 25% · 50% · 100% · 150% и потолок этого станка |
| авария | ⛔ АВАРИЯ |
Ряд питания читается слева направо, как на стойке: снять аварию → включить → привязать нули. Потолок коррекции подачи панель не выдумывает: он приезжает кадром от самого станка (его объявляет активная конфигурация). Не приехал — так и написано: «потолок не объявлен». Ступень выше потолка помечается, но не блокируется: отказ станка словами объясняет больше, чем серая кнопка.
⛔ Стоп не блокируется никогда и ничем. Кнопки «Стоп», «Стоп станка» и «АВАРИЯ» активны всегда — даже если не выбран узел, даже если панель считает, что программа не идёт, даже если связь моргает. Лишнее нажатие безвредно; недоступная кнопка останова — нет. Команда останова уходит первой, до любых проверок, и ждёт освобождения канала, если тот занят опросом.
Плитка оси показывает положение и скорость. Момент на валу, ошибка слежения и флаги привода на панель не выводятся: это величины наладчика, и у них своё окно — наладка (cncctl). На экране оператора им место не отведено сознательно, чтобы у станка не читали цифру, по которой всё равно нечего решать.
⚠ Там, где момент всё же виден — в колонке «Условие» шагов проекта (шаг 7), — помните: на виртуальных осях момента не существует. Число, посчитанное моделью, замером не является; станок без заполненного паспорта привода сравнивать его не с чем.
Проект — это работа, разложенная на шаги, которые идут на разных станках: отрезать здесь, переложить туда, обработать там. Дирижёр этой цепочки живёт на боксе, а не в облаке, и весь G-code с планами автоматики лежит внутри пакета — пуск шага в облако не ходит.
Кнопки: «Пуск проекта» (по порядку, до первого отказа), «Стоп» и «Пуск шага» в строке каждого шага. Пакет можно принести файлом — кнопка «Загрузить пакет».
Панель не прячет отказ за успехом. Каждый — со своей формулировкой:
прогон уже идёт — дождитесь конца или остановите на части узлов агент старее, чем требует пакет — обновите агент в пакете есть шаги, которые дирижёр не умеет исполнять прогон продолжается на узле без активного потока панели — эта кнопка его не достаёт
«Готово по» — поле шага, а не догадка. Шаг заканчивается тем, что назвал автор: конец программы (M30) · сделано · таймаут · вход № · позиция · скорость · момент · ошибка слежения · авария. Таймаут без названного исхода — ложный успех: «деталь не приехала» и «приехала ровно к сроку» обязаны выглядеть по-разному. Подробнее — Автоматика.
Статус «продолжается без панели» значит ровно то, что написано: шаг идёт на узле, а поток панели его больше не ведёт (панель перезапускали). Кнопка «Стоп» такой шаг не достаёт — останавливайте станок напрямую на вкладке «Оператор».
Вкладка «Сеть» — карта физических портов бокса: порт, тип, роль, драйвер, MAC, годен ли под EtherCAT. Роли называются прямо:
| Роль | Что значит |
|---|---|
| mgmt | есть IP — управление и интернет |
| ethercat-candidate | свободен под EtherCAT |
| assigned | отдан в виртуальный станок |
| unbound | без драйвера |
Два действия: «Освободить под EtherCAT» (порт теряет IP на хосте и отдаётся станку) и «Вернуть в сеть».
⚠ Этой кнопкой можно отрезать себе связь. Освобождённый порт перестаёт быть сетевым — если это был порт управления, панель закроется вместе с ним, и вернуть всё придётся с клавиатурой у бокса. Защита есть: бокс откажется освобождать порт, по которому идёт маршрут по умолчанию или ваше же соединение, и скажет об этом словами. Обходить эту защиту с веб-кнопки нельзя — намеренно.
Переезд управления на другой порт или на Wi-Fi выполняется командой
synctwin-ctl mgmt-move у бокса. Кнопки на панели у него нет: действие рвёт ту самую связь,
по которой на кнопку нажали.
Карточка «Удалённая поддержка» на вкладке «Статус». Одна кнопка — «Подключиться к поддержке» — и вторая, «Отключить».
Дверь открыта ровно столько, сколько вы её держите. Нажали «Отключить» — доступ закрылся в ту же секунду. Постоянно открытой этой двери не бывает: именно так в 2026 году на стенд приехал чужой майнер, и урок оплачен.
Обе живут на вкладке «Оператор» и обе показывают чужое знание дословно: панель их не вычисляет и своего мнения о них не имеет.
Плитка оси подписывается тем, чем её зовёт принесённый механизм. Экран разводит четыре разных ответа и ни одним не подменяет другой:
Причина, по которой перевода нет, пишется строкой под плитками — а не прячется в пустое поле.
Если осей не называет сам плеер, вместо плиток стоит плеер не называет осей.
Шаг, доигравший свои дорожки, выходит только по внешнему условию — и без слов это неотличимо от зависания: полоса стоит, прогресс не растёт. Поэтому ожидание называется в каждом кадре:
ждёт: вход DI3 (rising) — уже 12 с, предел через 8 с ждёт: условия перехода — уже 47 с, предел не назван
Как это читать. Первая часть — чего ждём: конкретный вход с фронтом, авария,
или обобщённое «условия перехода», когда условие не сводится к одному входу. Вторая —
сколько уже ждём. Третья — предел через N с, если у ожидания назван предел, и
предел не назван, если не назван. Второе стоит читать буквально:
ожидание без предела не закончится само никогда — оно будет висеть, пока
условие не выполнится или человек не остановит прогон.
Слова кладёт плеер — он один знает граф программы. Панель показывает присланное и своего суждения о том, чего ждёт программа, не имеет: иначе на боксе появилась бы вторая правда о ходе программы.
| Нельзя с панели | Почему | Где это делают |
|---|---|---|
| Написать или загрузить программу реза | программа несёт планирование — у бокса его нет | Станки |
| Загрузить программу автоматики | то же самое: приносит облако, бокс ею управляет | Автоматика |
| Ввести строку MDI руками | нужен эхо-разбор строки и подтверждение по кадру — это отдельная работа | — |
| Крутить параметры привода, SDO, контуры | это работа наладчика, у неё своё окно | Наладка |
| Править конфигурацию станка | конфиг всегда генерится из двойника; правка на стенде — вторая правда, она исчезнет при следующем пуске | Станки |
| Развернуть или удалить станок | работа установщика | synctwin-ctl |
Команды станку панель отдаёт через агента — единственного, кто пишет в систему ЧПУ. Прямой вход в гостя по ssh остался названной запаской: он пробуется, только когда агент молчит, и ответ всегда говорит, какая дорога сработала. Набор глаголов у запаски заморожен и не догоняет агента — иначе вместо одного владельца записи появилось бы двое.
То же и с кадром автоматики: панель берёт его у агента, а имена шарниров механизма переводит один-единственный читатель карты имён — внутри станка. Второго переводчика на боксе не заводится: он был бы второй правдой о том, какая ось поехала.
Ниже — то, что уже сделано в платформе, но на установленные боксы ещё не приехало. Сроков не называем.
Канал уже есть и уже держит границы: шаг толчка — до 50 мм, подача — до 3000 мм/мин (это защита от опечатки в поле, а не замена мягким пределам станка), а отказ считается по живому кадру стенда, а не по памяти панели: между двумя нажатиями человек мог нажать грибок на самом станке. Отказы названы словами:
LinuxCNC на этом стенде не запущен — двигать нечем взведён аварийный стоп (E-STOP) — снимите его, затем толкайте ось идёт программа — ручное движение подралось бы с ней за те же оси станок выключен (machine off) — включите питание приводов
Незабазированный станок отказом не считается: толчок — ровно тот инструмент, которым ось и подводят к базе. Кнопок джога на экране панели пока нет — сегодня толкать ось с бокса нечем, и до их появления это делается в наладке, рядом со станком.
У проекта-цепочки уже работают пауза между шагами, продолжение с отказавшего шага, «стоп всё» по всем узлам пакета, журнал команд дирижёра и отзыв загруженного пакета. На экране панели этих кнопок пока нет — сегодня они доступны только программно. Там же: перезагрузка бокса и переезд управления на другой порт.
| Что видно | Что сделать |
|---|---|
| Станок движется не туда | «Стоп станка» или «⛔ АВАРИЯ» — они активны всегда, спрашивать панель не нужно |
| Панель не открывается по имени | откройте по адресу; адрес не известен — спросите его у сетевого администратора по MAC бокса |
| Панель просит пароль, которого нет | synctwin-ctl panel-pass --show у бокса; забыт совсем — --reset |
| «стенд не запущен», координат нет | вкладка «Станки (VM)» → «Проверить связь», затем по строке «Оборвалось: …» |
| Станок на связи, команды не доходят | «Перезапустить агента»; не помогло — «Поднять LinuxCNC» |
| «шаг задержался» в автоматике | смотрите, чего ждёт шаг; условие перехода задаёт программа, а не панель |
| Нужна помощь инженера | «Статус» → «Подключиться к поддержке», после разбора — «Отключить» |
Дальше: Станки · Автоматика · Наладка · Установка бокса · Понятия