ООО «СинкТвин Технологии» +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

Что на экране

С версии 1.2.170 у бокса две страницы: корень http://бокс/ — это экран оператора (шаг 6), а прежняя панель наладчика открывается по http://бокс/admin (ссылка «Бокс» в шапке экрана оператора). Вход общий. Шапка админки: имя платформы, идентификатор бокса, значок связи и кнопка обновления. Ниже — пять вкладок:

ВкладкаЧто тамКому
Статусбокс, привязка к платформе, удалённая поддержканаладчик
Станки (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

Экран оператора: http://бокс/

Одна карточка станка на весь экран, для человека в перчатках и на планшете. Стенд она знает сама (чипы «vm · этот стенд» и режим sim / servo по маркеру стенда), станок и список программ берёт из облака при открытии и по кнопке «обновить». Облака нет — экран живёт последней синхронизацией и говорит об этом чипом «облако недоступно · программы с …».

Одно следующее действие

Слева — лесенка из пяти ступеней, справа в шапке — одна главная кнопка, подпись которой и есть следующий шаг. Ступень считается по кадру станка, а не по памяти экрана:

КнопкаЧто делаетКогда показана
Включитьподнимает LinuxCNC в выбранном режиме (диалог sim / servo, предвыбор из маркера)контроллер не запущен
Питаниеснимает E-STOP и включает приводы — одной кнопкойE-STOP или приводы без питания
Домойвыезд в базу всех осейне все оси в базе
Пускзаливает выбранную программу и пускает еёготов, программа выбрана
Пауза / Продолжить · Стоптранспорт идущей программыво время прогона

⛔ E-STOP — отдельная красная кнопка и она на экране всегда, в любом состоянии. Пока агент стенда поднимается после «Включить», главная кнопка недоступна с подписью «агент стенда поднимается» — E-STOP при этом остаётся.

Что видно

  • Позиция — по буквам осей станка с единицами по роду оси (мм / °) и флагом «в базе» на каждой;
  • Скорость — текущая, предел оси из паспорта станка, коррекция подачи;
  • Программа — выбор из назначенных этому станку (во время прогона выбор заблокирован), строка N / всего, инструмент T, обороты S; текст программы с бегущей строкой;
  • в прогоне — ползунки коррекции подачи и ускоренных: потолок ползунка объявляет активная конфигурация станка (приезжает кадром); не объявлен — ползунок живёт до 100 %, и это названо в подсказке;
  • отказ станка — словами: последняя запись канала ошибок LinuxCNC показывается строкой с временем (например, «Linear move on line 5 would exceed Z's positive limit», когда у станка не задан ноль детали). Экран ничего не выдумывает: нет числа в кадре — «—» и подсказка «в кадре нет».

Джог, шпиндель, вкладки «Оси / Навесное / Установка / Механизм / Журнал» и карточка узла автоматики на этом экране — Готовится; толчок оси и линия автоматики пока на вкладке «Стенд» админки (/admin).

Шаг 7

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

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

Что видно

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

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

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

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

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

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

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

Шаг 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»
«шаг задержался» в автоматикесмотрите, чего ждёт шаг; условие перехода задаёт программа, а не панель
Нужна помощь инженера«Статус» → «Подключиться к поддержке», после разбора — «Отключить»

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