Макросы реального времени FANUC ZONCE и ZEDGE: почему условие стало истинным, а действие не произошло
На условном окне в 100 миллисекунд правила 30i-A сравнивают ZONCE, ZEDGE и исходно истинное условие. Показано, почему время ожидания однократного макроса и обнаружение коротких импульсов — разные вопросы.
Содержание
В макросе реального времени записано «выполнить при истинном условии», условие позже действительно становится истинным, но действия нет. Здесь как минимум два независимых вопроса: применяется однократная проверка или ожидание фронта и не закончилось ли окно выполнения, в котором шло ожидание.
Три правила определяют временную последовательность
Общее руководство пользователя 30i/31i/32i-A B-63944EN/03, §17.1.1 и §17.4.1–17.4.2, страницы 581, 599–600 (общедоступное зеркало оригинального руководства) устанавливает: при ложном условии ZONCE завершается, не ожидая будущей истины; ZEDGE ждёт перехода из лжи в истину, а исходная истина не считается новым фронтом. Однократная RTM запускается вместе с первой последующей NC-командой и действует до её завершения.
Речь только об однократных операторах функции пользовательских макросов реального времени данной редакции. Обычный макрооператор IF, модальная RTM и цикл опроса PLC не считаются тем же механизмом. Наличие функции и назначение сигналов должны соответствовать реальной конфигурации управления.
Поместим ожидание в конкретное окно
Авторский логический пример: связанный NC-кадр начинается при t=0 и заканчивается при t=100 ms. «Действие» означает лишь регистрацию программного события, без выходных сигналов и движения осей. Предполагается, что указанные изменения условия были корректно получены при выборке.
| Изменение условия | Однократная ZONCE | Однократная ZEDGE |
|---|---|---|
| Сначала ложь, с 60 ms истина сохраняется | Завершается при первой ложной оценке | Выполняется после обнаружения нарастающего фронта внутри окна |
| Сначала ложь, истина лишь в 120 ms | Уже завершена | Окно 100 ms завершено, ожидания больше нет |
| Сначала истина, в 40 ms ложь, в 70 ms снова истина | Выполняется при исходной истине | Исходная истина не запускает действие, последующий переход ложь→истина запускает |
Во второй строке выражение не обязательно ошибочно: событие находится вне срока действия. Третья показывает разные назначения «состояние сейчас истинно» и «наблюдался новый фронт». Первое проверяет наличие состояния, второе — последующее изменение.
Порядок текста не определяет длительность окна
Более ранняя запись однократного макроса реального времени ещё не означает более раннего начала ожидания. Сначала найдите NC-команду, которая действительно его запускает. Если требуется наблюдение через несколько NC-кадров, одного увеличения ожидаемой длительности кадра недостаточно для доказательства надёжности: коррекция подачи, остановки и ветвление меняют временные связи.
Разделяйте также достаточную длительность жизненного цикла и видимость события при выборке. При условном периоде проверки 4 ms импульс длиной 1 ms может целиком попасть между проверками. Это общий пример дискретизации, а не заявление, что цикл макроса FANUC равен 4 ms. ZEDGE не гарантирует аппаратный захват сколь угодно коротких импульсов.
Как выбрать уровень проверки
Если при исходной лжи дальнейшего выполнения никогда нет, проверьте, не выбрана ли по ошибке ZONCE. Если условие срабатывает внутри кадра, но не после него, проверьте срок действия однократной команды. Если иногда пропадают только очень короткие события, анализируйте входную цепь и выборку. Причины различны, и сводить их к «макрос не работает в реальном времени» нельзя. Другие механизмы разобраны в разделе OPTION.