Траекторию называет автор: куда ехать, что схватить, когда ждать датчик. Платформа выводит кадры, ориентацию, порядок осей и то, чего в тексте нет, — из двойника. Род один, интерфейса два: путь навесного и программа узла автоматики.
| интерфейс | список | лаборатория | для кого | что пишет автор | справочник |
|---|---|---|---|---|---|
| путь навесного | ПРОГРАММЫ → Движения | /lab/cad?discipline=motion | робот, портал, станок с захватом или горелкой | глаголы пути: место, ход, схват, поворот, шов | Глаголы движения |
| программа узла | ПРОГРАММЫ → PLC-программы | /lab/plc | узел автоматики: позиционер, трек, рука, схват | шаги, дорожки оборудования, условия перехода | Программы автоматики |
Общее у обоих интерфейсов: координаты ЯЧЕЙКИ, а не детали; слотов инструмента нет; имя шарнира — то,
чем его зовёт программа (srv0, di0 у узла, буква оси у станка).
/lab/cad в роде движения: справа кадр ячейки — места, деталь в руке, навесное.| ярус | глаголы | что это |
|---|---|---|
| факт ячейки | place · part | место по имени и груз; координаты — из двойника, обучением |
| элементарные | orient · moveTo · jaws · rotate · smooth · dwell · phase | один шаг замысла — несколько кадров |
| макро | transfer · flip · orbit · weld · weldRing | приём целиком; раскрывается в те же элементарные |
const p = part({ size: [200, 100, 50], at: place('mill-1.vise'), grip: 'side' });
phase('подвод');
moveTo(p.above(120)); // рапидом над деталью
jaws('open', { onTheMove: true }); // разводим на ходу
phase('захват');
moveTo(p.grip, { feed: 1200 }); // на местный ноль губок
jaws('close');
dwell(0.3);
phase('перенос');
moveTo(p.above(150), { feed: 1200 });
moveTo(place('table.pallet-1'), { feed: 1200 }); // место по имени
jaws('open'); Тот же перенос одним макро: transfer({ from, to, hold: 'side', feed }) — скелет пути
платформа раскроет из паспорта головы. Ориентация модальная, как в G-code: orient() назван один раз,
дальше едет сам. Программа начинается и заканчивается в начальной точке двойника — только тогда её можно
ставить в цепочку в любом порядке.
| часть | правило | пример у flip |
|---|---|---|
| что называет автор | нет — отказ с человеческим текстом, не догадка | что кантуем, куда кладём |
| что берётся из двойника | место, опора, пролёт губок, вылет, порт клапана — в программе не дублируется | cell_frames · end_effector · current_setup |
| что докручивается | у каждого умолчание, и оно видно в подсказке глагола | высота разворота, скорость, сторона захвата |
Каждый глагол — что называет автор, что выводит платформа, чем ограничен — справочник «Глаголы движения».
/lab/plc: программа узла — шаги и дорожки; справа «Логика», «План», «Прогон», «Модель».// @rig
machine({
title: 'WB1S-750 — оборот планшайбы',
initial: 'исходная',
states: {
'исходная': {
lanes: { 'вращение': [move(deg(0), { v: 0.15 })] },
on: { done: 'оборот' },
},
'оборот': {
lanes: { 'вращение': [move(deg(360), { v: 0.15 })] }, // углы — через deg(), ось считает в оборотах
on: { done: 'пауза' },
},
'пауза': {
wait: 0.5,
on: { done: 'исходная' },
},
},
}) Шаг длится по самой долгой дорожке. Ожидание входа (waitFor) эластично — дорожка стоит, пока
сигнала нет, и время шага плывёт за фактом; предел ожидания и исход по нему называются явно.
Затяжка задаётся моментом (push), а не координатой.
Грамматика языка — условия, единицы, пороги аварии — порождается из кода лаборатории и живёт на cncai.ru/docs/plc; здесь она не дублируется. Из чего состоит узел и каталог образцов — «Блоки автоматики»; программы целиком — «Программы автоматики».
| шаг | что | где | что видно |
|---|---|---|---|
| 1 | создать | ПРОГРАММЫ → Движения (или PLC-программы) → «Новая программа»: машина или блок | блок даёт программе оси, роли и имена входов-выходов |
| 2 | написать | лаборатория: код слева, кадр ячейки или граф шагов справа | кадр ячейки: места, деталь в руке, навесное; у узла — «Логика» и «План» |
| 3 | проиграть в браузере | кнопка проигрывания; у узла — «Щёлкаю руками» / «Приходят сами» | 3D механизма идёт вместе с песочницей; осциллограмма цикла |
| 4 | сохранить | «Сохранить» → карточка в списке | карточка с 3D-обложкой у PLC-программ |
| 5 | на железо | пуск из списка или кокпита: вирт / серво, «В цикле» | раздел «От программы к станку» |
«Приходят сами» — оценка для расчёта, на железо она не идёт: время срабатывания датчика в браузере вы придумали, на стенде его называет мир.
Пошагово с названиями кнопок и текстами отказов — руководство «Автоматика», шаги 5–8.
Роботы и параллельные кинематики — исследовательская полка (R&D): кинематика проверена на
виртуальных осях; рука KR16 и позиционер — ещё и на живых серво стенда. Строки с + —
пара «порода + навесное»: та же станина с другой головой исполняет другой пример.
| порода | программа | конечная поза | зрелость |
|---|---|---|---|
| robot-kr16 | перекладка A→B | — | R&D |
| kuka-welder | прямой шов 300 мм | — | R&D |
| kuka-welder-positioner | кольцевой шов: стол крутит, горелка стоит | — | R&D |
| robot-hexapod | обход с наклоном платформы | X=0 Y=0 Z=450 | R&D |
| robot-tripod | наклоны головки | Z=-10 | R&D |
| kuka-welder-ring | Кольцевой шов на стыке труб (KUKA): максимальная дуга | — | R&D |
| robot-kr16-transfer | перекладка A→B глаголом transfer | — | R&D |
| robot-kr16-flip | переворот детали на месте (рецепт flip) | — | R&D |
| mill-xyz+gripper | перекладка тиски → паллета | — | R&D |
| trivkins-twin | кольцевой шов на позиционере | A=360 | R&D |
| mill-xyz+dispenser | валик герметика по контуру | — | R&D |
| mill-5axis-head+welder | шов с наклоном головы 150 мм | B=0 C=0 | R&D |
| kuka-welder-positioner-seam | продольный шов: деталь повёрнута столом | — | R&D |
Текст каждой программы и числа ожидания — «Программы-примеры пород».