1.1 Архитектура и владельцы записи
Вертикаль одна: браузер → двойник → конструктор породы → конфиг → LinuxCNC / HAL → EtherCAT → серво. Ниже — из чего она состоит, в каком порядке поднимается и кто чем владеет.
Лестница запуска
Запуск станка — не одна команда, а ступени с проверкой на каждой. Порядок и тексты отказов — из канона запуска в репозитории платформы; таблица читается оттуда, а не переписана.
| № | ступень | что проверяется | признак успеха | что при отказе |
|---|---|---|---|---|
| 0 | Агент | heartbeat живой, версия агента ≥ минимально совместимой | WS-канал + версия | нет агента → отказ «агент недоступен»; старый → «обновите агент» (Ц7) |
| 1 | Шина | живой скан EtherCAT vs двойник: vid/pid/позиция каждого слейва из `AxisDrive` + слейв шпинделя | все объявленные слейвы найдены на своих позициях | расхождение НАЗВАТЬ до старта LinuxCNC (Ш4), предложить «пересканировать шину» / «запустить sim» |
| 2 | Конфиг | рендер `.ini/.hal/xml` из ЖИВОГО `Machine` (`_merge_machine_ssot`); статическая сверка «каждый lcec-пин из HAL объявлен в XML» (Ш5); `config_hash` vs развёрнутый | конфиг собран, самосогласован, свеж | несобираемый конфиг → отказ с полем-виновником; отставший на стенде → перезалить (это НЕ вопрос пользователю — двойник главный) |
| 3 | LinuxCNC | процесс поднят на нужном конфиге, rsh отвечает, HAL без ошибок | `hello` + `get estop` отвечает | любой сомнительный статус → **жёсткий перезапуск** (stop → clean start), один раз; повторный провал → отказ «LinuxCNC не стартует: <последние строки лога>» |
| 4 | Канал | enable за агентом (`set enable`), хелсчек-noop проходит | верифицированный enable | перезабор enable → reattach → перезапуск LinuxCNC (лестница Т5) |
| 5 | Питание | серво в Operation Enabled **по statusword железа**, не по ack; фолты приводов пусты | statusword каждого привода | фолт → показать русскую расшифровку из профиля привода, кнопка сброса; E-stop → причина рядом (И5) |
| 6 | База | homed-флаги по осям; для абсолютных энкодеров — позиция внутри зоны | все оси homed, позиции валидны | вне зоны → предложить Н1 (паспорт нуля) / джог К зоне (Н4); не «молча расширить лимиты» |
| 7 | Ноль детали | g5x зеркалён и свеж (не от прошлой сессии/другого вылета — Г7) | подтверждённый ноль | ждать зеркало до 3 с (Г1); просрочен → «проверьте ноль» |
| 8 | Инструмент | вылет замерен (`measured_by`, Г3), согласован с нулём (Г4); лимиты с учётом вылета (Г5) | вылет+ноль согласованы | «ноль ставился с другим вылетом — Z уедет на дельту» |
| 9 | Старт | программа загружена, конверт в зоне, все ступени зелёные | RUNNING подтверждён | интерпретатор отказал → строка и причина, не «PAUSED навсегда» |
Владельцы записи
У каждого значения ровно один владелец. Второй писатель — это «две правды», и правым оказывается тот, кто громче.
| значение | владелец | следствие |
|---|---|---|
| Паспорт станка: оси, конверт, кинематика, привязка приводов | Двойник Machine (облако) | Правится только через API двойника. Стенд её не редактирует. |
| .ini / .hal / ethercat-conf.xml / tools.tbl | Конструктор породы | Порождается из двойника при каждом запуске. Правка на стенде будет затёрта. |
| Ноль детали (G54…G59) | Установка — Machine.current_setup / work_offsets | Принадлежит УСТАНОВКЕ, а не программе: программа описывает деталь от угла болванки. |
| Вылет инструмента | Слот библиотеки станка, с указанием происхождения замера | Отправка блокируется, если у слота нет вылета с названным происхождением. |
| Позиции, statusword, фолты приводов | Железо, через агента | Факт идёт снизу вверх. Двойник его отражает, но не назначает. |
| Программа (рез или движение) | Проект в облаке | Замысел идёт сверху вниз пакетом; жест (джог, сырой MDI, SDO) через границу не проходит. |
Четыре окна
Возможность станка не готова, пока её не видят все четыре окна: двойник (факт), стенд (пин, строка .ini),
наладка cncctl (настройка и наблюдение), локальная панель у станка (без облака). Нет ответа хотя бы по одному — возможность
начата, а не спроектирована.
Порождено из кода. Источник:
docs/launch_chain_canon.md :: §1 «Лестница запуска»Пересборка:
bash /opt/synctwin/site/scripts/refresh-integrator.sh · снято 2026-09-11T20:07:30+00:00Руками на этой странице написано: карта владельцев и текст о четырёх окнах