Узел автоматики описывается как БЛОК — набор каналов и логика, которая этому набору полагается. Архетип — заготовка блока: состав каналов плюс шаблон типовой программы. Ниже — из чего состоит блок, какой словарь ролей у портов и что несёт каждый архетип каталога.
Ось несёт РОЛЬ (что за величину ею задают) и МЕХАНИЗМ (чем она физически является). Роль выбирает режим привода, механизм — то, что видит оператор и рисует двойник.
Дискретный вход с РОЛЬЮ: что этот датчик знает. Роль решает, какие глаголы предлагаются автору именно на этом узле.
Дискретный выход с РОЛЬЮ: что этот порт делает — держит, стопорит, метит, переводит поток.
Привязка к железу у архетипа пустая — и это намеренно. Слейв, шарнир и пин задаются на конкретном стенде при наладке. Пуск проверяет привязку и отказывает, если её нет: молчаливой подстановки «наверное, первый привод» не бывает.
Каждый канал помнит свой источник. Что принёс архетип, а что технолог добавил руками — видно у каждой оси и каждого порта. Довесок не теряется при обновлении шаблона.
Узлу предлагаются только его глаголы. Блоку без датчика наличия «дождись детали» не предложат вовсе — пригодность работает фильтром выбора, а не отказом после выбора.
| Роль | Режим | Единицы паспорта | Что это |
|---|---|---|---|
| linear_axis | PP | мм | прямая ось: ход по координате |
| joint | PP | ° | поворотная ось: угол |
| spindle_speed | PV | об/мин | вращение без цели: лента, шнек, шпиндель |
| spindle_torque | PT | Н·м | момент: затяжка, прижим |
Роль и механизм ортогональны: лента конвейера и мачта крана обе линейны по роли, но выглядят и ведут себя совершенно по-разному.
| Механизм оси | Что это |
|---|---|
| belt | лента / рольганг — транспортировка потоком |
| pusher | толкатель — штучная выдача из магазина |
| gantry_axis | портальная ось — линейный привод хендлинга или крана |
| mast | мачта — вертикальный подъём кран-штабелёра |
| fork | вилка — телескопический заезд в ячейку |
| rotary_table | поворотный стол / делительная головка |
| auger | шнек дозатора |
| screw_spindle | шпиндель завинчивания |
| press_ram | пресс-плунжер / прижим |
| web_feed | протяжка ленты или плёнки |
| probe_axis | ось щупа контроля |
| linear_feed | локальная линейная подача — когда ни один из остальных не подходит |
Роль — не HAL-пин и не адрес. Это объявление смысла: по нему автору предлагается глагол, а оператору — понятная подпись на экране.
| Выход | Подпись | Глагол | Что означает |
|---|---|---|---|
| grip | захват | захвати / отпусти | схват манипулятора: держит деталь, пока выход включён |
| clamp | зажим (фиксатор) | зажми / разожми | прижим детали на позиции — стол, кондуктор, фиксатор паллеты |
| gate | стопор (отсекатель) | придержи / пропусти | останов потока: стопор конвейера, отсекатель магазина |
| valve | клапан | открой / закрой клапан | пневматика или среда: воздух, обдув, дозирование |
| marker | маркер | пометь деталь | отметка детали по результату контроля |
| applicator | аппликатор | приложи | прикладывающий орган: этикетка, штамп, накатка |
| diverter | стрелка | переведи поток | развилка маршрута: стрелка A/B на сортировке |
| vacuum | вакуум (присоски) | присоси / отпусти | вакуумный захват — тот же смысл, что grip, но другая физика |
| glue | клей | подай клей | подача клея или герметика на шов |
| part_feed | питатель | подай деталь | выдача штучной детали из магазина |
| Вход | Подпись | Глагол | Что означает |
|---|---|---|---|
| presence | наличие детали | дождись детали | деталь есть в зоне или ячейке — самый частый датчик линии |
| at_position | приход в точку | дождись прихода в точку | механизм доехал: концевик позиции |
| trigger | событие | дождись события | внешнее событие потока: «короб пришёл», старт от соседа |
| verdict | вердикт контроля | дождись вердикта | ответ измерителя годен / брак |
| fill_level | наполнение | дождись наполнения | уровень набран: дозатор, бункер, тара |
| force_ok | усилие достигнуто | дождись усилия | подтверждение прижима или затяжки от датчика усилия |
| grip_ok | захват подтверждён | дождись подтверждения захвата | схват сомкнут на детали: «взял», а не «команда подана» |
| label_gap | метка ленты | дождись метки | промежуток между этикетками — синхронизация протяжки |
«Команда подана» — это не «взял». Вход grip_ok заведён именно затем, чтобы захват подтверждался сигналом, а не выдержкой на глазок. Пауза вслепую — это таймаут без названного исхода, а такой таймаут всегда заканчивается ложным успехом.
Восемнадцать заготовок реальных модулей участка. Каждая несёт состав каналов И шаблон типовой программы — заготовку логики, которую технолог правит под свой узел. Все шаблоны написаны на том же языке, что и любая другая программа блока.
| Группа | Архетип | Типовая задача | Оси | Выходы | Входы |
|---|---|---|---|---|---|
| Транспорт | conveyor Конвейер (транспортёр) | гнать ленту и считать детали по фотодатчику | srv0 лента | — | di0 счётчик |
| Транспорт | conveyor_roller Роликовый конвейер (накопление) | передать деталь по зонам без давления (ZPA) | srv0…srv2 зоны 1–3 | — | di0…di2 датчики зон |
| Транспорт | linear_transfer Линейный трансфер | подать паллету к стопору, выдержать пост и выпустить | srv0 рольганг | do0 стопор | di0 на позиции |
| Транспорт | feeder Питатель (распределение) | выдать одну заготовку из магазина | srv0 толкатель | do0 отсекатель | di0 наличие |
| Хендлинг | pick_place_2axis Pick&Place 2 оси | перенести деталь из точки забора в точку укладки | srv0 X, srv1 Z | do0 захват | di0 деталь есть, di1 захват сомкнут |
| Хендлинг | gantry_3axis Портал 3 оси + захват | взять деталь и уложить по маршруту XY → Z | srv0 X, srv1 Y, srv2 Z | do0 захват | — |
| Индексация | rotary_index Поворотный делительный стол | повернуть стол на одну делительную позицию | srv0 стол | do0 фиксатор | di0 в позиции |
| Индексация | rotary_clamp Поворотный стол + зажим | зажать деталь, повернуть оснастку и разжать | srv0 стол | do0 зажим | — |
| Процесс | dispenser Дозатор | выдать дозу до подтверждения наполнения | srv0 шнек | do0 клапан | di0 наполнение |
| Процесс | screwdriver Завинчивание (момент) | подать винт и затянуть до момента | srv0 шпиндель (момент), srv1 подача Z | do0 питатель винта | di0 винт подан |
| Процесс | press_fit Запрессовка | запрессовать деталь до подтверждения усилия | srv0 ползун | — | di0 деталь, di1 усилие ОК |
| Контроль | sorter Сортировщик | развести деталь по признаку в ветку A или B | srv0 лента | do0 стрелка A, do1 стрелка B | di0 признак |
| Контроль | inspection Контроль / тестирование | замерить щупом и по вердикту пометить брак | srv0 щуп | do0 маркер брака | di0 в допуске |
| Упаковка | labeling Этикетирование | нанести этикетку на пришедший короб | srv0 протяжка ленты | do0 аппликатор | di0 короб пришёл, di1 метка ленты |
| Упаковка | palletizer Паллетайзер | уложить слой на паллету | srv0 X, srv1 Y, srv2 Z, srv3 поворот | do0 захват | — |
| Упаковка | case_erector Формовка коробки | сформовать короб из заготовки и проклеить клапаны | srv0 формовка, srv1 прижим | do0 присоски, do1 клей | di0 заготовка |
| Склад | stacker_crane Кран-штабелёр (склад) | привезти груз из ячейки в ячейку; вернуть кран в исходную | srv0 рельс, srv1 мачта, srv2 вилка | do0 захват | di0 ячейка |
| Сборный | feed_turn_grip Подача + поворот + захват | подать, дозировать, повернуть и захватить | srv0 ось, srv1 шнек, srv2 сустав | do0 захват | di0 наполнение |
Девятнадцатая позиция каталога — пустой блок. У него нет ни каналов, ни шаблона программы: оси, входы и выходы заводятся вручную в конструкторе. Это законный старт для узла, который ни на что из списка не похож.
Кран-штабелёр объявляет ещё и задание. Кроме шаблона у него описана поверхность задач: «привези груз из ячейки A в ячейку B» и «вернись в исходную» — задания шлёт складская система или пульт оператора, программа при этом одна и та же.
Что шаблон НЕ делает. Он не подставляет числа хода вашего механизма и не привязывается к железу. Позиции в шаблонах схематичны — это заготовка-процедура, а не готовая партитура вашего участка.
Четвёртая порода карточек того же каталога: состав каналов не написан нами, а ВЫЧИТАН из файла механизма — сколько подвижных шарниров, как они зовутся, каковы пределы хода. Механизм и его геометрия приезжают вместе с блоком. Это учебные образцы: приводов под ними нет, привязка к стенду пустая.
| Образец | Каналы из файла | Программа-пример |
|---|---|---|
| motopos_d500 Позиционер Motoman MotoPos D500 | два поворотных шарнира: наклон и вращение стола | есть — обход хода по пределам файла |
| flir_ptu_d46 Поворотная голова FLIR PTU-D46 | два поворотных шарнира: поворот и наклон | есть — обзор сцены |
| ewellix_lift Телескопическая колонна Ewellix TLT | две линейные ступени (верхняя объявлена ведомой нижней, поддержки ведомых шарниров нет — обе адресуются явно) | нет — ход винта (lead_mm) паспортом узла не назван, цель прямой оси в оборотах считать не из чего |
| robotiq_2f_85 Схват Robotiq 2F-85 | шесть шарниров, пять из них ведомые | нет — готовится: честная программа возможна только с поддержкой ведомых шарниров |
Имя шарнира — то, чем его зовёт программа. У образца из механизма оси зовутся так же, как шарниры в файле, и все числа хода в программе-примере взяты из его же пределов. Ни одно из них не выдумано.
Ведомые шарниры пока не поддержаны. Где механизм объявляет один шарнир ведомым от другого, программа адресует обе ступени явно; там, где ведомых большинство, программы-примера нет вовсе — и это сказано прямо, а не заменено правдоподобной подделкой.
Как устроена сама программа — шаг, дорожка, условие перехода, пороги аварии — на странице примеров программ. Путь навесного органа робота описан отдельно, в глаголах движения.