Траекторию называет автор: куда ехать, что схватить, когда ждать датчик. Платформа выводит кадры, ориентацию, порядок осей и то, чего в тексте нет, — из двойника. Род один, интерфейса два: путь навесного и программа узла автоматики.
| интерфейс | список | лаборатория | для кого | что пишет автор | справочник |
|---|---|---|---|---|---|
| путь навесного | ПРОГРАММЫ → Движения | /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({
axes: { шпиндель: 0, 'подача Z': 1 },
outputs: { 'питатель винта': 0 },
inputs: { 'винт подан': 0 },
})
machine({
title: 'Завинчивание',
initial: 'подать винт',
states: {
'подать винт': {
entry: [pulse(0.3, 0)], // импульс на питатель
lanes: { 'винт подан': [waitFor('↑', { timeout: 5, onTimeout: 'error' })] },
on: { done: 'подвод' },
},
'подвод': {
lanes: { 'подача Z': [move(2, { v: 0.6 })] },
on: { done: 'завинчивание' },
},
'завинчивание': {
lanes: { шпиндель: [push(60, { sec: 2 })] }, // 60 % номинала, держать 2 с
on: { done: 'отвод' },
},
},
}) Шаг длится по самой долгой дорожке. Ожидание входа эластично — дорожка стоит, пока сигнала нет, и время шага плывёт за фактом; предел ожидания называется явно. Затяжка задаётся моментом, а не координатой.
Грамматика языка — условия, единицы, пороги аварии — порождается из кода лаборатории и живёт на cncai.ru/docs/plc; здесь она не дублируется. Из чего состоит узел и девятнадцать архетипов линии — «Блоки автоматики»; четыре программы целиком — «Программы автоматики».
| шаг | что | где | что видно |
|---|---|---|---|
| 1 | создать | ПРОГРАММЫ → Движения (или PLC-программы) → «Новая программа»: машина или блок | блок даёт программе оси, роли и имена входов-выходов |
| 2 | написать | лаборатория: код слева, кадр ячейки или граф шагов справа | кадр ячейки: места, деталь в руке, навесное; у узла — «Логика» и «План» |
| 3 | проиграть в браузере | кнопка проигрывания; у узла — «Щёлкаю руками» / «Приходят сами» | 3D механизма идёт вместе с песочницей; осциллограмма цикла |
| 4 | сохранить | «Сохранить» → карточка в списке | карточка с 3D-обложкой у PLC-программ |
| 5 | на железо | пуск из списка или кокпита: вирт / серво, «В цикле» | раздел «От программы к станку» |
«Приходят сами» — оценка для расчёта, на железо она не идёт: время срабатывания датчика в браузере вы придумали, на стенде его называет мир.
Пошагово с названиями кнопок и текстами отказов — руководство «Автоматика», шаги 5–8.
Роботы и параллельные кинематики — исследовательская полка (R&D): кинематика работает на виртуальных осях, на живом железе не проверена.
| порода | программа | конечная поза | зрелость |
|---|---|---|---|
| robot-kr16 | перекладка A→B | — | R&D |
| kuka-welder | прямой шов 300 мм | — | R&D |
| robot-hexapod | обход с наклоном платформы | X=0 Y=0 Z=450 | R&D |
| robot-tripod | наклоны головки | Z=-10 | R&D |
Текст каждой программы и числа ожидания — «Программы-примеры пород».