Перейти к содержимому

1.1 Архитектура и владельцы записи

Вертикаль одна: браузер → двойник → конструктор породы → конфиг → LinuxCNC / HAL → EtherCAT → серво. Ниже — из чего она состоит, в каком порядке поднимается и кто чем владеет.

Вертикаль SyncTwin: от описания в браузере через двойник и порождённый конфиг к LinuxCNC, EtherCAT и сервоприводам; обратная связь возвращается в двойник и на экран Браузер Описание детали или логики параметры детали · шаги узла автоматики замысел Двойник · единственный источник правды Двойник оборудования Machine: оси · приводы · входы-выходы · ноль порождение Генерация Конфигурация из двойника .ini · .hal · EtherCAT XML — только из двойника запуск на стенд Бокс у станка LinuxCNC / HAL в VM контур реального времени · без облака команды в цикле Шина EtherCAT единственная шина · цикл ≥ 1 кГц · CiA-402 уставки, момент Железо Сервоприводы и входы-выходы разные вендоры на одной шине Обратная связь позиции ошибка слежения statusword в двойник и экран команда вниз обратная связь вверх физический мир
Замысел идёт сверху вниз, факт — снизу вверх. Конфиг не редактируется на стенде — он порождается из двойника.

Лестница запуска

Запуск станка — не одна команда, а ступени с проверкой на каждой. Порядок и тексты отказов — из канона запуска в репозитории платформы; таблица читается оттуда, а не переписана.

ступеньчто проверяетсяпризнак успехачто при отказе
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 развёрнутыйконфиг собран, самосогласован, свежнесобираемый конфиг → отказ с полем-виновником; отставший на стенде → перезалить (это НЕ вопрос пользователю — двойник главный)
3LinuxCNCпроцесс поднят на нужном конфиге, 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 (настройка и наблюдение), локальная панель у станка (без облака). Нет ответа хотя бы по одному — возможность начата, а не спроектирована.

Четыре окна одной возможности: двойник в облаке, стенд с конфигом и пином HAL, наладка cncctl, локальная панель у станка — одно значение, одно имя, один владелец записи Двойник · облако, cncai Поле в Machine где живёт факт и откуда он берётся; владелец записи — один Стенд · конфиг → HAL Пин HAL, строка .ini проброс до железа: объект шины, команда агента Одна возможность одно значение · одно имя один владелец записи Наладка · cncctl Наладка приводов задаётся и проверяется: осциллограф, параметры привода, диагностика Локальная панель · у станка Оператор у станка пуск, стоп, состояние без облака — связь с сервером не нужна Готово, когда все четыре окна показывают одно и то же
Одно значение, одно имя, один владелец записи — во всех четырёх окнах.
Порождено из кода. Источник: docs/launch_chain_canon.md :: §1 «Лестница запуска»
Пересборка: bash /opt/synctwin/site/scripts/refresh-integrator.sh · снято 2026-09-11T20:07:30+00:00
Руками на этой странице написано: карта владельцев и текст о четырёх окнах