Многоканальное ожидание FANUC: почему перестановка двух точек ожидания блокирует продолжение
По правилам ожидания 30i/31i/32i-B рассчитан нормальный график двух участвующих каналов и разобрано циклическое ожидание при перестановке A и B. Различаются разница такта обработки и недостижимые точки ожидания.
Содержание
Оба канала остановлены на командах ожидания — это не обязательно означает слишком медленную обработку в одном из них. Если каждый ждёт метку, до которой другой дойдёт лишь после прохождения текущего ожидания, увеличение времени не устранит противоречие порядка.
Ожидается совпадение меток, а не завершение произвольной M-функции
Руководство описаний FANUC 30i/31i/32i-MODEL B B-64482EN/03, §7.5, страницы 254–255 (общедоступное зеркало оригинального руководства) объясняет: многоканальное ожидание сопоставляет настроенные M-коды ожидания участвующих каналов; следующие кадры выполняются после совпадения. Команда ожидания должна занимать отдельный кадр. Эти M-коды не выводятся в PMC, поэтому их нельзя всегда трактовать как обычную вспомогательную функцию и искать сигнал её завершения.
Модель рассматривает два участвующих канала многоканальной системы с этой функцией. Ожидание активно, операция его игнорирования не используется, других участников нет. A и B — условные метки, а не вводимые в станок M-коды.
При нормальном порядке время ожидания вычисляется
| Этап | Канал 1 | Канал 2 | Общий результат |
|---|---|---|---|
| До ожидания A | Обработка 3 s, приход в A при t=3 | Обработка 5 s, приход в A при t=5 | Совпадение при t=5; канал 1 ждёт 2 s |
| После A и до B | Ещё 2 s обработки, приход в B при t=7 | Ещё 4 s обработки, приход в B при t=9 | Совпадение при t=9; канал 1 ждёт ещё 2 s |
Авторская модель времени не учитывает накладные расходы выполнения команд. Общая длительность max(3,5)+max(2,4)=9 s, а не сумма обработки обоих каналов 14 s. Ожидание канала 1 в течение 4 s ещё не означает неправильную скорость его обработки.
Что произойдёт при перестановке только в одном канале
Теперь канал 1 выполняет A→B, а канал 2 — B→A. Канал 1 остановлен в A и ждёт прихода канала 2 в A; канал 2 остановлен в B и ждёт канала 1 в B. Каждому нужно сначала завершить текущее ожидание, чтобы попасть в точку, нужную другому. Возникает циклическое ожидание.
В отличие от нормального примера, здесь другой канал не придёт просто после нескольких секунд дополнительной обработки. Снижение подачи или более долгое ожидание не меняют порядок меток. Вывод следует из зависимостей последовательностей, без предположения об обязательной аварии по тайм-ауту.
Проверяйте обе позиции выполнения одновременно
Сопоставьте как минимум текущую метку ожидания, участников, текущую позицию программы другого канала и принадлежность обоих к одному циклу обработки. Наличие такой метки в тексте ещё не доказывает достижимость в текущем выполнении. Пропуск точки условной ветвью также меняет сопоставление.
Если один канал ещё заканчивает конечный участок обработки, сначала анализируйте такт. Если оба стоят во взаимно недостижимых точках, проверяйте порядок программы. Ожидания часто координируют общее рабочее пространство; принудительное игнорирование ожидания не подходит для проверки этой модели. Другие особенности программ — в разделе OPTION.