ООО «СинкТвин Технологии» +7 925 353-56-35 info@synctwin.ru

Программа движения и PLC

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

интерфейссписоклабораториядля когочто пишет авторсправочник
путь навесногоПРОГРАММЫ → Движения/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
что докручиваетсяу каждого умолчание, и оно видно в подсказке глаголавысота разворота, скорость, сторона захвата

Каждый глагол — что называет автор, что выводит платформа, чем ограничен — справочник «Глаголы движения».

Программа узла

Шаги, дорожки, условия

Лаборатория PLC: код программы узла и граф шагов
Лаборатория /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

Текст каждой программы и числа ожидания — «Программы-примеры пород».