1. Description

Управление вводом-выводом решает такие задачи ввода-вывода, как подача СОЖ, смена инструмента и аварийный останов. Сигналы включаются и выключаются с помощью G-кода или в случае аварийного останова в HAL.

I/O Control V2 добавляет дополнительную поддержку устройства смены инструмента для связи с устройством смены инструмента.

  • LinuxCNC инициирует прерывание и ошибку устройства смены инструмента: iocontrol надежно прерывает текущую операцию изменения (смена инструмента подтверждена). Устройство смены инструмента может в любой момент сигнализировать о неисправности, которая приведет к отмене следующего M6. Например, устройство смены инструмента, обнаруживающее пустой карман во время операции подготовки, должно иметь возможность сигнализировать об ошибке в iocontrol, и iocontrol будет действовать соответствующим образом при выполнении операции смены M6.

  • Сообщите о причине прерывания/ошибки: сообщите iocontrol, почему устройство смены инструмента вызвало неисправность и почему iocontrol прервался. Это для целей пользовательского интерфейса. Это будет кандидат на параметр #5xxx и выборочное отображение в пользовательском интерфейсе.

  • Никаких условий конкуренции между iocontrol и устройством смены инструмента: протокол между iocontrol и устройством смены инструмента должен быть однозначным в отношении того, какая операция сигнализируется, а также прервана или завершена операция смены.

  • Согласованное представление о состоянии: обе стороны должны иметь единообразное представление о состоянии в любой момент времени в отношении прерванных и завершенных операций, а также количества инструментов и карманов.

  • Согласованная сигнализация об прерывании/неисправности: LinuxCNC сообщает о прерывании устройству смены инструмента, и неисправность, указываемая устройством смены инструмента согласовывается, чтобы обеспечить надежную сигнализацию и, при необходимости, принудительно выполнить блокировку. Согласование является необязательным и может быть обойдено перемычкой в HAL, если оно не требуется.

  • Обратная совместимость: устройство смены инструментов, игнорирующее строку iocontrol emc-abort и придерживающееся старой обработки, будет "продолжать работать" (зависит от накладок временных характеристик)

Если у вас строгие требования к времени или вам просто нужно больше операций ввода-вывода, рассмотрите возможность использования ввода-вывода в реальном времени, указанного в motion.

2. Использование

Параметры INI-файла:

[EMCIO] раздел
PROTOCOL_VERSION = 2

По умолчанию — 2. Установка значения 1 будет эмулировать старое поведение iocontrol.

EMCIO = iov2 -support-start-change

Вам необходимо явно разрешить протокол start-change, добавив -support-start-change option; в противном случае контакт start-change остается в неактивным и start-change-ack игнорируются. Причина этого - лучшая обратная совместимость.

[TASK] раздел
IO_ERROR

Шаблон в стиле Printf для отображения ошибок оператора (отрицательные коды неисправностей устройства смены инструмента). Никакого цитирования не нужно. Пример: IO_ERROR = Toolchanger fault %d. По умолчанию: toolchanger error %d.

[EMC] раздел
DEBUG

Чтобы получить (довольно подробную) трассировку, установите либо флаг отладки RCS (0x00000200), чтобы включить сообщения отладки RCS по всему LinuxCNC, либо используйте новый бит отладки iocontrol (0x00001000) только для сообщений iov2.

3. Контакты

  • iocontrol.0.coolant-flood (bit, out) TRUE когда запрашивается охлаждающая жидкость.

  • iocontrol.0.coolant-mist (bit, out) TRUE когда запрашивается охлаждающая жидкость в виде тумана.

  • iocontrol.0.emc-enable-in (bit, in) Должно быть установлено значение FALSE, когда существует внешнее условие аварийного останова.

  • iocontrol.0.tool-change (bit, out) TRUE при запросе смены инструмента

  • iocontrol.0.tool-changed (bit, in) Должен быть установлен в TRUE, когда смена инструмента завершена.

  • iocontrol.0.tool-number (s32, out) Текущий номер инструмента

  • iocontrol.0.tool-prep-number (s32, out) Номер следующего инструмента из Т-слова RS274NGC

  • iocontrol.0.tool-prep-pocket (s32, out) Это номер кармана (место в механизме хранения инструментов) инструмента, запрошенного самым последним Т-словом.

  • iocontrol.0.tool-prepare (bit, out) TRUE когда запрашивается подготовка инструмента Tn.

  • iocontrol.0.tool-prepared (bit, in) Должен быть установлен в TRUE, когда подготовка инструмента завершена.

  • iocontrol.0.user-enable-out (bit, out) FALSE когда существует внутреннее состояние аварийного останова

  • iocontrol.0.user-request-enable (bit, out) TRUE когда пользователь запросил сброс аварийного останова

Дополнительные контакты, добавленные I/O Control V2

  • emc-abort: (bit, out) сигнализирует прерывание, инициированное LinuxCNC, устройству смены инструмента.

  • emc-abort-ack: (bit, in) Линия подтверждения от устройства смены инструмента для предыдущего сигнала или установите перемычку на abort-tool-change, если она не используется в устройстве смены инструмента. Примечание: после подачи сигнала emc-abort iov2 будет блокироваться до тех пор, пока не будет активен emc-abort-ack.

  • emc-reason: (S32, out) сообщить причину прерывания, инициированную LinuxCNC, устройству смены инструмента. Использование: информация пользовательского интерфейса. Действительно во время emc-abort TRUE.

  • start-change: (bit, out) утверждается в самом начале операции M6, до выполнения любых операций выключения шпинделя, подъема пиноли или перемещения к позиции смены инструмента.

  • start-change-ack: (bit, in) линия подтверждения start-change.

  • toolchanger-fault: (bit, in) Устройство смены инструмента сигнализирует о неисправности. Эта линия постоянно опрашивается. Неисправность переключает флаг в iocontrol, который отражается на контакте toolchanger-faulted..

  • toolchanger-fault-ack: (bit, out) линия согласования для вышеуказанного сигнала. Будет установлена iov2 в TRUE после того, как состояние указанной выше линии неисправности будет распознано, и отменено, когда исчезнет ошибка устройства смены инструмента. Устройство смены инструмента может свободно интерпретировать ack; чтение линий -ack гарантирует, что ошибка получена и действует.

  • toolchanger-reason: (S32, in) передать код причины неисправности устройства смены инструмента в iov2. Использование: сигнал прервать или продолжить программу, а также информация пользовательского интерфейса в случае, если отрицателен. Считывается во время состояния TRUE неисправности устройства смены инструмента. Ненулевые значения вызовут сообщение оператора Axis или сообщение об ошибке, см. ниже.

  • toolchanger-faulted: (bit, out) сигнализирует, что линия toolchanger-notify устройства смены инструмента переключилась, и toolchanger-reason-code находился в диапазоне ошибки. Следующий M6 прервется.

  • toolchanger-clear-fault: (bit, in) сбрасывает состояние неисправности TC. Перевыставляет toolchanger-faulted, если линия toolchanger-notify имеет значение FALSE. Использование: пользовательский интерфейс — например, кнопка сброса состояния неисправности.

4. Параметры

  • iocontrol.0.tool-prep-index (s32, RO) Индекс внутреннего массива ввода-вывода для подготовленного инструмента, запрошенного самым последним T-словом. 0, если инструмент не подготовлен. На станках со случайной сменой инструмента это номер гнезда инструмента (т. е. такой же, как контакт tool-prep-pocket), на станках с неслучайной сменой инструмента это небольшое целое число, соответствующее положению инструмента во внутреннем представлении таблицы инструментов. Этот параметр возвращается в 0 после успешной смены инструмента M6.

5. Коммуникации

Если LinuxCNC сигнализирует об прерывании по какой-либо причине, это отражается на контактах emc-abort и emc-reason. От устройства смены инструмента ожидается подтверждение контакта emc-abort активным уровнем контакта emc-abort-ack - iov2 будет блокироваться, пока это не будет сделано. Если вам не нужна функция прерывания согласования, соедините их следующим образом:

net emc-abort-ack iocontrol.0.emc-abort iocontrol.0.emc-abort-ack

Вывод emc-reason считается действительным, пока emc-abort имеет значение TRUE.

Коды причин для внутренних аварийных ситуаций LinuxCNC следующие (см. emc.hh прибл. строку 321):

  • EMC_ABORT_TASK_EXEC_ERROR = 1,

  • EMC_ABORT_AUX_ESTOP = 2,

  • EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,

  • EMC_ABORT_TASK_STATE_OFF = 4,

  • EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,

  • EMC_ABORT_TASK_STATE_ESTOP = 6,

  • EMC_ABORT_TASK_STATE_NOT_ON = 7,

  • EMC_ABORT_TASK_ABORT = 8,

  • EMC_ABORT_USER = 100

iov2 добавляет еще один код, а именно EMC_ABORT_BY_TOOLCHANGER_FAULT = 101, который сигнализируется, когда M6 прерывается из-за того, что контакт toolchanger-faulted имеет значение TRUE.

Чтобы сигнализировать о сбоях устройства смены инструмента в LinuxCNC, соедините контакт toolchanger-fault и, опционально, контакты toolchanger-reason и toolchanger-ack.

Сигнал toolchanger-fault вызывает состояние неисправности, которое отражается на контакте toolchanger-fault. Это состояние можно устранить, установив активный уровень контакта toolchanger-clear-fault, при условии, что контакт toolchanger-fault имеет значение FALSE.

Значение контакта toolchanger-reason используется следующим образом:

  • toolchanger-reason > 0 : Процесс смены инструмента не завершен, и программа продолжается, однако параметр #5060 устанавливается на 1,0, что указывает на неисправность. Параметр #5601 содержит значение контакта toolchanger-reason.

    • toolchanger-reason = 0 : программа прервана

    • toolchanger-reason < 0 : программа прервана, и отображается сообщение оператора об ошибке с использованием шаблона IO_ERROR.

Использование контакта toolchanger-fault-ack не является обязательным. Он будет TRUE, когда toolchanger-fault станет активным и контакт toolchanger-reason будет прочитан iov2.