1. Введение

AXIS — это графический интерфейс для LinuxCNC, который имеет предварительный просмотр в реальном времени и backplot. Он написан на Python и использует Tk и OpenGL для отображения пользовательского интерфейса.

Главное окно AXIS
Figure 1. Окно AXIS

2. Начало

Если ваша конфигурация в настоящее время не настроена для использования AXIS, вы можете изменить ее, отредактировав файл .ini (INI-файл). В разделе [DISPLAY] измените строку [DISPLAY] на DISPLAY = axis.

Пример конфигурации sim/axis.ini уже настроен для использования AXIS в качестве внешнего интерфейса.

При запуске AXIS открывается окно, подобное показанному на рисунке [fig:axis-window] выше.

2.1. настройки INI

Для получения дополнительной информации о настройках файла INI, которые могут изменить работу AXIS, см. Display Section и Axis Section Главы конфигурации INI.

  • CYCLE_TIME - Отрегулируйте скорость отклика ГИП в миллисекундах. Типичное значение 100, полезный диапазон 50–200.
    (по причинам, связанным с устаревшими версиями, время будет принято в секундах (0,05–0,2 – миллисекунды предпочтительнее для соответствия другим экранам).

[DISPLAY]
CYCLE_TIME = 100
  • PREVIEW_TIMEOUT - Установите тайм-аут в секундах для загрузки предварительного просмотра G-кода. Если анализ G-кода длится дольше этого времени, отображается уведомление и на графическом дисплее отображается только начальная часть программы. Указание 0 или отказ от настройки приводит к отсутствию тайм-аута.

[DISPLAY]
PREVIEW_TIMEOUT = 5

2.2. Типичная сессия

  1. Запустите LinuxCNC и выберите файл конфигурации.

  2. Отпустите кнопку аварийного останова (F1) и включите питание станка (F2).

  3. Приведите все оси в исходное положение.

  4. Загрузите файл G-кода.

  5. Используйте график предварительного просмотра, чтобы убедиться в правильности программы.

  6. Загрузите материал.

  7. Установите правильное смещение для каждой оси, перемещая и используя кнопку Touch Off по мере необходимости.

  8. Запустите программу.

  9. Чтобы обработать тот же файл еще раз, вернитесь к шагу 6. Чтобы обработать другой файл, вернитесь к шагу 4.

  10. Когда задание будет завершено, выйдите из AXIS.

Note
Повторный запуск той же программы зависит от ваших настроек и требований. Возможно, вам придется загрузить больше материала и установить смещения или перейти и установить смещение, а затем снова запустить программу. Если ваш материал зафиксирован, возможно, вам придется просто запустить программу еще раз. Дополнительную информацию о команде запуска см. в разделе Machine Menu.

3. Окно AXIS

Окно AXIS содержит следующие элементы:

  • Область отображения, в которой отображается одно из следующего:

    • Предварительный просмотр загруженного файла (в данном случае axis.ngc), а также текущего местоположения controlled point станка с ЧПУ. Позже в этой области будет отображаться путь, по которому прошел станок с ЧПУ, называемый backplot.

    • Большой УЦИ, показывающий текущее положение и все смещения.

  • Строка меню и панель инструментов, позволяющие выполнять различные действия

  • Manual Control Tab - который позволяет вам заставить двигаться станок, включать или выключать шпиндель, а также включать или выключать подачу СОЖ, если она включена в INI-файл.

  • MDI Tab - где программы G-кода можно вводить вручную, по одной строке за раз. Здесь также отображаются Active G-codes, которые показывают, какие модальные G-коды действуют.

  • Feed Override - что позволяет масштабировать скорость запрограммированных движений. Максимальное значение по умолчанию составляет 120 %, и в INI-файле можно установить другое значение. Дополнительную информацию см. в разделе Display файла INI.

  • Spindle Override - что позволяет масштабировать скорость шпинделя вверх или вниз.

  • Jog Speed - что позволяет установить скорость медленной подачи в пределах, заданных в INI-файле. Дополнительную информацию см. в разделе Display файла INI.

  • Max Velocity - что позволяет ограничить максимальную скорость всех запрограммированных движений (кроме синхронизированного движения шпинделя).

  • Область текстового отображения, показывающая загруженный G-код.

  • Строка состояния, показывающая состояние станка. На этом снимке экрана станок включен, в него не вставлен инструмент, а отображаемое положение — Relative (показывающее все смещения) и Actual (показывающее положение обратной связи).

3.1. Пункты меню

Некоторые пункты меню могут быть выделены серым цветом в зависимости от того, как настроен INI-файл. Для получения дополнительной информации о настройке см. INI Chapter.

3.1.1. Меню File

  • Open… - Открывает стандартное диалоговое окно для открытия файла G-кода для загрузки в AXIS. Если вы настроили LinuxCNC на использование программы-фильтра, вы также можете открыть ее. Дополнительную информацию см. в разделе FILTER конфигурации INI.

  • Recent Files - Отображает список недавно открытых файлов.

  • Edit… - Откройте текущий файл G-кода для редактирования, если в вашем INI-файле настроен редактор. См. раздел DISPLAY для получения дополнительной информации об указании используемого редактора.

  • Reload - перезагрузит текущий файл G-кода. Если вы его редактировали, вам необходимо перезагрузить его, чтобы изменения вступили в силу. Если вы остановили файл и хотите начать с начала, перезагрузите файл. Перезагрузка панели инструментов аналогична меню.

  • Save G-code as… - Сохраните текущий файл под новым именем.

  • Properties - Сумма быстрых и подающих перемещений. Не учитывает ускорение, смешивание или режим траектории, поэтому сообщаемое время никогда не будет меньше фактического времени выполнения.

  • Edit tool table… - То же, что и Edit, если вы определили редактор, вы можете открыть таблицу инструментов и редактировать ее.

  • Reload tool table - После редактирования таблицы инструментов необходимо перезагрузить ее.

  • Ladder editor - Если вы загрузили ClassicLadder, вы можете редактировать его здесь. Дополнительную информацию см. в разделе ClassicLadder.

  • Quit - Завершает текущий сеанс LinuxCNC.

3.1.2. Меню Machine

  • Toggle Emergency Stop F1 - Изменяет состояние аварийной остановки.

  • Toggle Machine Power F2 - Изменяет состояние питания станка, если не включена аварийная остановка.

  • Run Program - Запускает загруженную в данный момент программу с самого начала.

  • Run From Selected Line - выбирает строку, с которой хотите начать. Используйте с осторожностью, так как это сначала переместит инструмент в ожидаемую позицию перед строкой, а затем выполнит остальную часть кода.

Warning
Не используйте Run From Selected Line, если ваша программа G-кода содержит подпрограммы.
  • Step - Один шаг через программу.

  • Pause - Приостановить программу.

  • Resume - Возобновить работу после паузы.

  • Stop - Остановить работающую программу. Если выбран запуск после остановки, программа запустится с начала.

  • Stop at M1 - Если достигнут M1 и это отмечено, выполнение программы остановится на строке M1. Нажмите Resume, чтобы продолжить.

  • Skip lines with "/" - Если строка начинается с / и этот флажок установлен, строка будет пропущена.

  • Clear MDI history - Очищает окно истории MDI.

  • Copy from MDI history - Копирует историю MDI в буфер обмена

  • Paste to MDI history - Вставка из буфера обмена в окно истории MDI

  • Calibration - Запускает помощник калибровки (emccalib.tcl). При калибровке считывается файл HAL, и для каждого параметра setp, использующего переменную из файла INI, находящегося в разделе [AXIS_L], [JOINT_N], [SPINDLE_S] или [TUNE], создается запись, которую можно редактировать и тестировать. .

  • Show HAL Configuration - Открывает окно конфигурации HAL, в котором вы можете отслеживать компоненты HAL, контакты, параметры, сигналы, функции и потоки.

  • HAL Meter - Открывает окно, в котором вы можете отслеживать один HAL контакт, сигнал или параметр.

  • HAL Scope - Открывает виртуальный осциллограф, который позволяет отображать зависимости значений HAL от времени.

  • Show LinuxCNC Status - Открывает окно, показывающее статус LinuxCNC.

  • Set Debug Level - Открывает окно, в котором можно просмотреть уровни отладки и настроить некоторые из них.

  • Homing - Исходное положение одной или всех осей.

  • Unhoming - Отменить исходное положение одной или всех осей.

  • Zero Coordinate System - Установите все смещения на ноль в выбранной системе координат.

  • Касание инструмента

    • Tool touch off to workpiece - При выполнении Touch Off введенное значение относится к текущей системе координат заготовки (G5x), измененной смещением оси (G92). После завершения Touch Off Относительная координата выбранной оси станет введенным значением. См. G10 L10 в главе G-код.

    • Tool touch off to fixture - При выполнении Touch Off введенное значение относится к девятой (G59.3) системе координат, при этом смещение оси (G92) игнорируется. Это полезно, когда в фиксированном месте на станке имеется приспособление для касания инструмента, а девятая (G59.3) система координат установлена так, что острие инструмента нулевой длины находится в начале координат приспособления, когда Относительные координаты равны 0. См. G10 L11 в главе G-код.

3.1.3. Меню View

  • Top View - Top View (или вид Z) отображает G-код, смотрящий вдоль оси Z от положительного к отрицательному. Этот вид лучше всего подходит для просмотра X и Y.

  • Rotated Top View - Rotated Top View (или повернутый вид по оси Z) также отображает G-код, смотрящий вдоль оси Z от положительного к отрицательному. Но иногда удобно отображать оси X и Y, повернутые на 90 градусов, чтобы лучше соответствовать дисплею. Этот вид также лучше всего подходит для просмотра X и Y.

  • Side View - Вид сбоку (или вид X) отображает G-код, смотрящий вдоль оси X от положительного к отрицательному. Этот вид лучше всего подходит для просмотра Y и Z.

  • Front View - Вид спереди (или вид Y) отображает G-код, смотрящий вдоль оси Y от отрицательного к положительному. Этот вид лучше всего подходит для просмотра X и Z.

  • Perspective View - Перспективный вид (или вид P) отображает G-код, рассматривающий деталь с настраиваемой точки зрения, по умолчанию — X+, Y-, Z+. Положение регулируется с помощью мыши и переключателя перетаскивания/поворота. Это представление является компромиссным, и, хотя оно хорошо справляется с попыткой отобразить три (до девяти!) осей на двухмерном изображении, часто встречаются некоторые особенности, которые трудно увидеть, что требует изменения точки обзора. Этот вид лучше всего подходит, если вы хотите видеть все три (до девяти) осей одновременно.

Точка зрения

Меню выбора дисплея AXIS View относится к видам Top, Front, и Side. Эти термины верны, если ось Z станка с ЧПУ вертикальна, а положительная Z направлена вверх. Это справедливо для вертикальных фрезерных станков, которые, вероятно, являются наиболее популярным применением, а также почти для всех электроэрозионных станков и даже для вертикальных револьверных токарных станков, где деталь вращается под инструментом.

Термины Top, Front, и Side могут сбивать с толку на других станках с ЧПУ, таких как стандартный токарный станок, где ось Z горизонтальна, или горизонтальный фрезерный станок, опять же, где ось Z горизонтальна, или даже перевернутый вертикальный револьверный станок, на котором деталь вращается над инструментом, а положительное направление оси Z направлено вниз!

Просто помните, что положительная ось Z (почти) всегда находится вдали от детали. Поэтому ознакомьтесь с конструкцией вашего станка и интерпретируйте показания дисплея по мере необходимости.

  • Display Inches - Установите масштаб дисплея AXIS в дюймах.

  • Display MM - Установите масштаб дисплея AXIS в миллиметрах.

  • Show Program - При желании дисплей предварительного просмотра загруженной программы G-кода можно полностью отключить.

  • Show Program Rapids - На экране предварительного просмотра загруженной программы G-кода перемещения скорости подачи (G1,G2,G3) всегда будут отображаться белым цветом. А вот отображение быстрых ходов (G0) голубым цветом при желании можно отключить.

  • Alpha-blend Program - Этот параметр облегчает просмотр сложных программ, но может привести к замедлению предварительного просмотра.

  • Show Live Plot - При желании подсветку путей подачи (G1,G2,G3) при движении инструмента можно отключить.

  • Show Tool - При желании отображение конуса/цилиндра инструмента можно отключить.

  • Show Extents - При желании отображение размеров (максимального хода в каждом направлении оси) загруженной программы G-кода можно отключить.

  • Show Offsets - Выбранное исходное положение смещения приспособления (G54-G59.3) может быть показано как набор из трех ортогональных линий, по одной красной, синей и зеленой. Это отображение начала смещения (или нуля приспособления) при желании можно отключить.

  • Show Machine Limits - Максимальные пределы перемещения станка для каждой оси, установленные в INI-файле, показаны в виде прямоугольника, нарисованного красными пунктирными линиями. Это полезно при загрузке новой программы G-кода или при проверке того, какое смещение приспособления потребуется, чтобы привести программу G-кода в пределы перемещения вашего станка. Его можно отключить, если он не нужен.

  • Show Velocity - Отображение скорости иногда полезно, чтобы увидеть, насколько близко ваш станок работает к расчетной скорости. При желании его можно отключить.

  • Show Distance to Go - Оставшееся расстояние — очень полезный параметр, который нужно знать при первом запуске неизвестной программы с G-кодом. В сочетании с элементами управления быстрой коррекцией и коррекцией скорости подачи можно избежать нежелательного повреждения инструмента и станка. После отладки программы G-кода и ее бесперебойной работы отображение оставшегося пути при желании можно отключить.

  • Coordinates in large font… - Предварительные координаты осей и скорость будут отображаться крупным шрифтом в представлении траектории инструмента.

  • Clear Live Plot - По мере перемещения инструмента на дисплее AXIS путь G-кода подсвечивается. Чтобы повторить программу или лучше рассмотреть интересующую область, можно очистить ранее выделенные пути.

  • Show Commanded Position - Это позиция, которую LinuxCNC попытается занять. Как только движение остановится, LinuxCNC попытается удержать эту позицию.

  • Show Actual Position - Фактическое положение — это измеренное положение, считанное с энкодеров системы или смоделированное генераторами шагов. Это может немного отличаться от заданного положения по многим причинам, включая настройку ПИД-регулятора, физические ограничения или квантование положения.

  • Show Machine Position - Это положение в несмещенных координатах, установленное приведением в исходную позицию.

  • Show Relative Position - Это положение станка, измененное смещениями G5x, G92, и G43.

3.1.4. Меню помощи

  • About AXIS - Мы все знаем, что это такое.

  • Quick Reference - Показывает сочетания клавиш клавиатуры.

3.2. Кнопки панели инструментов

Слева направо на дисплее AXIS расположены кнопки панели инструментов (сочетания клавиш, показанные [в скобках]):

  • Toggle Emergency Stop Переключение аварийной остановки [F1] (также называется E-Stop)

  • Toggle Machine Power Переключение питания станка [F2]

  • Open G Code file Открыть файл с G кодом [O]

  • Reload current file Перезагрузить текущий файл [Ctrl-R]

  • Begin executing the current file Начать исполнение текущего файла [R]

  • Execute next line Выполнить следующую строку [T]

  • Pause Execution - Resume Execution Приостановить исполнение [P] Возобновить исполнение [S]

  • Stop Program Execution Остановить выполнение программы [ESC]

  • Toggle Skip lines Переключение пропуска строк при помощи "/" [Alt-M-/]

  • Toggle Optional Pause Переключение опциональной паузы [Alt-M-1]

  • Zoom In Увеличить

  • Zoom Out Уменьшить

  • Top view Вид сверху

  • Rotated Top view Повернутый вид сверху

  • Side view Вид сбоку

  • Front view Вид спереди

  • Perspective view Вид изометрия

  • Toggle between Drag and Rotate Mode Переключение между режимом перетаскивания и вращения [D]

  • Clear live backplot Очистить текущий фон [Ctrl-K]

3.3. Область графического отображения

Отображение координат

В верхнем левом углу дисплея программы находится отображение положения координат для каждой оси. Справа от числа отображается символ исходного положения origin symbol is shown if the axis has been homed , если ось была перемещена в исходное положение.

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

Чтобы правильно интерпретировать числа координат, обратитесь к индикатору Position: в строке состояния. Если позиция Machine Actual, то отображаемое число находится в системе координат станка. Если это Relative Actual, то отображаемое число находится в смещенной системе координат. Если отображаемые координаты являются относительными и установлено смещение, на дисплее будет отображаться голубой исходное положение станка cyan machine origin маркер.

Если позиция Commanded, то отображаются точные координаты, заданные в команде G-кода. Если это Actual, то это положение, в которое машина фактически переместилась. Эти значения могут отличаться от заданного положения из-за ошибки рассогласования, зоны нечувствительности, разрешения энкодера или размера шага. Например, если вы задаете движение на X 0,0033 на вашем фрезерном станке, но один шаг вашего шагового двигателя или один отсчет энкодера равен 0,00125, тогда Commanded положение может быть 0,0033, а Actual положение будет 0,0025 (2 шага) или 0,00375 (3 шага).

Предварительный просмотр графика

Когда файл загружен, его предварительный просмотр отображается в области отображения. Быстрые движения (например, выполняемые командой G0) показаны голубыми линиями. Перемещения со скоростью подачи (например, выполняемые командой G1) показаны сплошными белыми линиями. Задержки (например, созданные командой G4) отображаются в виде маленьких розовых отметок X.

Движения G0 (быстрые) перед перемещением подачи не будут отображаться на графике предварительного просмотра. Быстрые перемещения после T<n> (смена инструмента) не будут отображаться в предварительном просмотре до тех пор, пока не будет выполнено первое перемещение подачи. Чтобы отключить любую из этих функций, запрограммируйте G1 без каких-либо перемещений перед G0 перемещениями.

Расширения программы

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

Когда некоторые координаты превышают программные пределы в INI-файле, соответствующее измерение отображается другим цветом и заключено в рамку. На рисунке ниже максимальный программный предел превышен по оси X, как указано в рамке вокруг значения координаты. Минимальное перемещение X программы составляет -1,95, максимальное перемещение X составляет 1,88, а программа требует перемещения X 3,83 дюйма. Чтобы в этом случае переместить программу так, чтобы она находилась в пределах хода станка, выполните медленную подачу влево и снова сделайте касание (Touch Off) X.

Програмные пределы
Figure 2. Программные пределы
Конус инструмента

Когда инструмент не загружен, положение кончика инструмента обозначается конусом инструмента. Конус инструмента не дает указаний относительно формы, длины или радиуса инструмента.

Когда инструмент загружается (например, с помощью команды MDI T1 M6), конус меняется на цилиндр, который показывает диаметр инструмента, указанный в файле таблицы инструментов.

Траектория

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

Сетка

AXIS может дополнительно отображать сетку в ортогональных видах. Включите или отключите сетку с помощью меню Grid в разделе View. Если этот параметр включен, сетка отображается в виде сверху и в повернутом виде сверху; когда система координат не повернута, сетка также отображается на видах спереди и сбоку. Пресеты в меню Grid контролируются элементом INI-файла [DISPLAY]GRIDS. Если не указано, по умолчанию используется значение 10 мм 20 мм 50 мм 100 мм 1 дюйм 2 дюйма 5 дюймов 10 дюймов.

Указание очень маленькой сетки может снизить производительность.

Взаимодействие

Если щелкнуть левой кнопкой мыши по части графика предварительного просмотра, линия будет выделена как в графическом, так и в текстовом отображении. Щелкнув левой кнопкой мыши по пустой области, подсветка будет снята.

При перетаскивании с нажатой левой кнопкой мыши график предварительного просмотра будет сдвинут (панорамирован).

При перетаскивании с нажатой левой кнопкой мыши или при перетаскивании с нажатым колесиком мыши график предварительного просмотра будет повернут. Когда линия выделена, центром вращения является центр линии. В противном случае центр вращения является центром всей программы.

Вращая колесо мыши, перетаскивая его с нажатой правой кнопкой мыши или перетаскивая с нажатой левой кнопкой мыши, можно увеличить или уменьшить масштаб графика предварительного просмотра.

Щелкнув одну из иконок Preset View или нажав кнопку V, можно выбрать несколько предустановленных видов.

3.4. Область отображения текста

При щелчке левой кнопкой мыши по строке программы эта строка будет выделена как на графическом, так и на текстовом дисплеях.

Когда программа запущена, строка, исполняемая в данный момент, выделяется красным цветом. Если пользователь не выбрал ни одну строку, текстовый дисплей автоматически прокрутится, чтобы отобразить текущую строку.

Текущие и выбранные строки
Figure 3. Текущие и выбранные строки

3.5. Ручное управление

Когда станок включен, но не запущена программа, элементы на вкладке Manual Control можно использовать для перемещения станка или управления его шпинделем и СОЖ.

Когда станок не включен или когда запущена программа, ручное управление недоступно.

Многие из описанных ниже элементов полезны не на всех станках. Когда AXIS обнаруживает, что определенный контакт не подключен в HAL, соответствующий элемент на вкладке Manual Control удаляется. Например, если контакт HAL spindle.0.brake не подключен, кнопка Brake не появится на экране. Если установлена переменная среды AXIS_NO_AUTOCONFIGURE, это поведение отключено и все элементы появятся.

Группа Axis

AXIS позволяет перемещать станок вручную. Это действие известно как медленная подача (jogging). Сначала выберите ось, которую нужно переместить, щелкнув на ней. Затем нажмите и удерживайте кнопку + или - в зависимости от желаемого направления движения. Первые четыре оси также можно перемещать с помощью клавиш со стрелками (X и Y), клавиш PAGE UP и PAGE DOWN (Z), а также клавиш [ и ] (A).

Если выбрано Continuous, движение будет продолжаться до тех пор, пока нажата кнопка или клавиша. Если выбрано другое значение, станок будет перемещаться точно на отображаемое расстояние при каждом нажатии кнопки или клавиши. По умолчанию доступны значения 0.1000, 0.0100, 0.0010, 0.0001.

Дополнительную информацию о настройке приращений см. в разделе DISPLAY Section.

Приведение в исходное положение (Identity Kinematics)

Параметр INI-файла [KINS]JOINTS определяет общее количество сочленений в системе. Сочленение может быть сконфигурировано с концевиком исходного положения или для немедленного возврата в исходное положение. Сочленения могут определять последовательность приведения в исходное положение, которая организует порядок для приведения в исходное положение групп сочленений.

Если все сочленения настроены для возврата в исходное положение и имеют действительные последовательности возврата в исходное положения, на кнопке возврата в исходное положение будет отображаться надпись Home All. Нажатие кнопки Home All (или клавиши Ctrl-HOME) инициирует возврат в исходное положение для всех сочленений, используя определенные для них последовательности возврата в исходное положение. Нажатие клавиши HOME приведет в исходное положение сочленение, соответствующее текущей выбранной оси, даже если последовательность возврата в исходное положение не определена.

Если не все оси имеют действительные последовательности возврата в исходное положение, на кнопке возврата отобразится Home Axis, и будет выполнено приведение в исходное положение сочленения только для выбранной в данный момент оси. Каждую ось необходимо выбирать и приводить в исходное положение отдельно.

Выпадающее меню Machine/Homing предоставляет альтернативный метод приведения в исходное положение осей. Выпадающее меню Machine/Unhoming предоставляет возможность для вывода осей из исходного положения.

Если на вашем станке в конфигурации не определены концевики исходного положения, кнопка Home установит текущее положение выбранной оси как абсолютное положение 0 для этой оси и установит бит is-homed для этой оси.

Дополнительную информацию см. в разделе Homing Configuration Chapter.

Приведение в исходное положение (Non-Identity Kinematics)

Операция аналогична операции с Identity Kinematics, но перед возвратом в исходное положение кнопки с фиксацией выбирают сочленения по номеру. На кнопке возврата в исходное положение отобразится надпись Home All, если все сочленения настроены для приведения в исходное положение и имеют действительные последовательности приведения в исходное положение. В противном случае на кнопке возврата отобразится Home Joint.

Дополнительную информацию см. в разделе Homing Configuration Chapter.

Касание

При нажатии кнопки Touch Off или клавиши END, G5x offset для текущей оси изменяется так, что текущее значение оси будет заданной величиной. Выражения можно вводить, используя правила для программ rs274ngc, за исключением того, что нельзя ссылаться на переменные. Полученное значение отображается в виде числа.

Окно касания
Figure 4. Окно касания

См. также пункты меню Machine: Touch part и Touch part holder.

Инструмент Touch Off

При нажатии кнопки Tool Touch Off длина и смещения текущего загруженного инструмента будут изменены так, чтобы текущее положение кончика инструмента соответствовало введенной координате.

Окно инструмента касания
Figure 5. Окно инструмента касания

См. также параметры Прикосновение инструмента к заготовке и Прикосновение инструмента к приспособлению в меню Станок.

Переопределение пределов

Нажав кнопку Override Limits, станку будет разрешена временно медленная подача от физического концевого выключателя. Этот флажок доступен только при срабатывании концевого выключателя. Коррекция сбрасывается после одной подачи. Если ось настроена с отдельными положительными и отрицательными концевыми выключателями, LinuxCNC разрешит медленную подачу только в правильном направлении. Override Limits не позволит медленную подачу за программный предел. Единственный способ запретить программный предел на оси — вывести его из исходного положения.

Группа шпинделя

Кнопки первого ряда выбирают направление вращения шпинделя: Counterclockwise, Stopped, Clockwise. Counterclockwise будет отображаться только в том случае, если контакт spindle.0.reverse есть в файле HAL (это может быть net Trick-axis spindle.0.reverse). Кнопки следующего ряда увеличивают или уменьшают скорость вращения. Флажок в третьем ряду позволяет включить или отпустить тормоз шпинделя. В зависимости от конфигурации вашего компьютера могут отображаться не все элементы этой группы. Нажатие кнопки запуска шпинделя устанавливает скорость S на 1.

Группа СОЖ

Две кнопки позволяют включать и выключать СОЖ Mist и Flood. В зависимости от конфигурации вашего компьютера могут отображаться не все элементы этой группы.

3.6. MDI

MDI позволяет вводить команды G-кода вручную. Когда станок не включен или когда запущена программа, элементы управления MDI недоступны.

MDI tab
Figure 6. Вкладка MDI
  • History - тут отображаются команды MDI, которые были набраны ранее в этом сеансе.

  • MDI Command - здесь возможно ввести команду G-кода для выполнения. Выполните команду, нажав Enter или нажав Go.

  • Active G-codes - тут отображаются модальные коды, активные в интерпретаторе. Например, G54 указывает, что G54 offset применяется ко всем введенным координатам. В режиме Авто активные G-коды представляют собой коды после любого считывания интерпретатором.

3.7. Переопределение подачи

Перемещая этот ползунок, можно изменить запрограммированную скорость подачи. Например, если программа запрашивает F60, а ползунок установлен на 120%, то результирующая скорость подачи будет равна 72.

3.8. Spindle Speed Override

Перемещая этот ползунок, можно изменить запрограммированную скорость шпинделя. Например, если программа запрашивает S8000 и ползунок установлен на 80%, результирующая скорость шпинделя будет 6400. Этот элемент появляется только тогда, когда контакт HAL spindle.0.speed-out подключен.

3.9. Скорость медленной подачи

Перемещая этот ползунок, можно изменить скорость медленной подачи. Например, если ползунок установлен на 1 дюйм/мин, то шаг на 0,01 дюйма будет выполнен примерно за 0,6 секунды или 1/100 минуты. С левой стороны (очень медленная подача) значения расположены близко друг к другу, тогда как с правой стороны (быстрая медленная подача) они расположены гораздо дальше друг от друга, что обеспечивает широкий диапазон скоростей медленной подачи с точным контролем, когда это наиболее важно.

На станках с поворотной осью показан второй ползунок скорости медленной подачи. Этот ползунок устанавливает скорость вращения поворотных осей (A, B и C).

3.10. Макс скорость

Перемещая этот ползунок, можно установить максимальную скорость. Это ограничивает максимальную скорость для всех запрограммированных перемещений, кроме перемещений, синхронизированных со шпинделем.

4. Управление клавиатурой

Почти все действия в AXIS можно выполнить с помощью клавиатуры. Полный список сочетаний клавиш можно найти в Кратком справочнике AXIS, который можно просмотреть, выбрав Help > Quick Reference. Многие сочетания клавиш недоступны в режиме MDI.

4.1. Клавиши переопределения подачи

Note
Подробную информацию о испанской раскладке клавиатуры можно найти в переведенной документации.

Клавиши переопределения подачи ведут себя по-другому в ручном режиме. Клавиши 12345678 выберут ось, если она запрограммирована. Если у вас 3 оси, то 0 выберет ось 0, 1 выберет ось 1, а 2 выберет ось 2. Остальные цифровые клавиши по-прежнему будут устанавливать коррекцию подачи. При запуске программы 1234567890 установит значение переопределение подачи 0–100%.

Наиболее часто используемые сочетания клавиш показаны в следующей таблице:

Table 1. Наиболее распространенные сочетания клавиш
Нажатие клавиши Действия Mode

F1

Переключает аварийный останов

Любой

F2

Станок вкл/выкл

Любой

`, 1 .. 9, 0

Устанавливает переопределение подачи от 0% до 100%

Варьируется

X, `

Активирует первую ось

Ручной

Y, 1

Активирует вторую ось

Ручной

Z, 2

Активирует третью ось

Ручной

A, 3

Активирует четвертую ось

Ручной

I

Устанавливает приращение медленной подачи

Ручной

C

Непрерывная медленная подача

Ручной

Control-Home

Выполнить последовательность приведения в исходное положение

Ручной

End

Touch off: Устанавливает G5x смещение для активой оси

Ручной

Left, Right

Медленная подача первой оси

Ручной

Up, Down

Медленная подача второй оси

Ручной

Pg Up, Pg Dn

Медленная подача третьей оси

Ручной

[, ]

Медленная подача четвертой оси

Ручной

O

Открыть файл

Ручной

Control-R

Перезагрузить файл

Ручной

R

Запустить файл

Ручной

P

Приостановить исполнение

Автоматический

S

Возобновить исполнение

Автоматический

ESC

Остановить исполнение

Автоматический

Control-K

Очистить траекторию

Автоматический/Ручной

V

Переключаться между предустановленными видами

Автоматический/Ручной

Shift-Left,Right

Быстро ось X

Ручной

Shift-Up,Down

Быстро ось Y

Ручной

Shift-PgUp, PgDn

Быстро ось Z

Ручной

@

Переключить Текущее/Заданное

Любой

#

Переключить относительные/станочные

Любой

5. Показать статус LinuxCNC (linuxcnctop)

В состав AXIS входит программа под названием linuxcnctop, которая показывает некоторые детали состояния LinuxCNC. Вы можете запустить эту программу, вызвав Machine > Show LinuxCNC Status

Окно статус LinuxCNC
Figure 7. Окно статус LinuxCNC

Название каждого элемента отображается в левом столбце. Текущее значение отображается в правом столбце. Если значение недавно изменилось, оно отображается на красном фоне.

6. MDI интерфейс

В состав AXIS входит программа под названием mdi, которая позволяет вводить команды MDI в текстовом режиме в работающий сеанс LinuxCNC. Вы можете запустить эту программу, открыв терминал и набрав:

mdi

После запуска отображается приглашение MDI>. При вводе пустой строки отображается текущее положение станка. Когда команда вводится, она отправляется в LinuxCNC для выполнения.

Это пример сеанса MDI:

$ mdi
MDI>
(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
MDI> G1 F5 X1
MDI>
(0.5928500000000374, 0.0, 0.0, 0.0, 0.0, 0.0)
MDI>
(1.0000000000000639, 0.0, 0.0, 0.0, 0.0, 0.0)

7. axis-remote

В состав AXIS входит программа под названием axis-remote, которая может отправлять определенные команды работающему AXIS. Доступные команды отображаются при запуске axis-remote --help и включают проверку работы AXIS (--ping), загрузку файла по имени, перезагрузку текущего загруженного файла (--reload) и выполнение выхода из AXIS (--quit).

8. Ручная смена инструмента

LinuxCNC включает компонент HAL, работающий не в режиме реального времени, под названием hal_manualtoolchange, который показывает окно с подсказкой, сообщающее вам, какой инструмент ожидается при вводе команды M6. После нажатия кнопки ОК выполнение программы продолжится.

Компонент hal_manualtoolchange включает в себя контакт HAL для кнопки, которую можно подключить к физической кнопке, чтобы завершить смену инструмента и удалить подсказку окна (hal_manualtoolchange.change_button).

Файл конфигурации HAL lib/hallib/axis_manualtoolchange.hal показывает команды HAL, необходимые для использования этого компонента.

hal_manualtoolchange можно использовать, даже если AXIS не используется в качестве графического интерфейса. Этот компонент наиболее полезен, если у вас есть предустановленные инструменты и вы используете таблицу инструментов.

Note
Важное примечание: быстрые перемещения не будут отображаться в предварительном просмотре после выдачи T<n> до следующего хода подачи после M6. Это может сбить с толку большинство пользователей. Чтобы отключить эту функцию для текущей программы смены инструмента, введите G1 без перемещения после T<n>.
Окно ручной смены инструмента
Figure 8. Окно ручной смены инструмента

9. Модули Python

AXIS включает в себя несколько модулей Python, которые могут быть полезны другим. Для получения дополнительной информации об одном из этих модулей используйте pydoc <имя модуля> или прочитайте исходный код. Эти модули включают в себя:

  • emc обеспечивает доступ к каналам команд, состояний и ошибок LinuxCNC

  • gcode предоставляет доступ к интерпретатору rs274ngc

  • rs274 предоставляет дополнительные инструменты для работы с файлами rs274ngc

  • hal позволяет создавать компоненты HAL не реального времени, написанные на Python

  • _togl предоставляет виджет OpenGL, который можно использовать в приложениях Tkinter

Чтобы использовать эти модули в своих собственных скриптах, вы должны убедиться, что каталог, в котором они находятся, находится в пути к модулю Python. При запуске установленной версии LinuxCNC это должно происходить автоматически. При запуске «на месте» это можно сделать с помощью scripts/rip-environment.

10. Использование AXIS в режиме токарного станка

Включив строку LATHE = 1 в раздел [DISPLAY] INI-файла, AXIS выбирает режим токарного станка. Ось Y не отображается в показаниях координат, вид изменяется, чтобы показать ось Z, уходящую вправо, и ось X, уходящую к нижней части экрана, а некоторые элементы управления (например, для предустановленных видов) удалены. Показания координат для X заменяются диаметром и радиусом.

Режим токарного станка AXIS
Figure 9. Режим токарного станка AXIS

Нажатие клавиши V уменьшает масштаб, чтобы отобразить весь файл, если он загружен.

В режиме токарного станка отображается форма загруженного инструмента (если есть).

Форма инструмента токарного станка
Figure 10. Форма инструмента токарного станка

Чтобы изменить отображение на токарный станок с задним инструментом, вам необходимо иметь как LATHE = 1, так и BACK_TOOL_LATHE = 1 в разделе [DISPLAY]. Это инвертирует вид и поместит инструмент на обратную сторону оси Z.

Форма заднего инструмента токарного станка
Figure 11. Форма заднего инструмента токарного станка

11. Использование AXIS в режиме резки вспенненого материала

Включив строку FOAM = 1 в раздел [DISPLAY] INI-файла, выбирает режим резки вспенненого материала AXIS. В предварительном просмотре программы движения XY отображаются в одной плоскости, а UV-движения — в другой. На графике линии рисуются между соответствующими точками на плоскости XY и плоскости UV. Специальные комментарии (XY_Z_POS) и (UV_Z_POS) устанавливают координаты Z этих плоскостей, которые по умолчанию равны 0 и 1,5 станочным единицам.

Режим резки вспененного материала
Figure 12. Режим резки вспененного материала

12. Расширенная конфигурация

При запуске AXIS создает контакты HAL для графического пользовательского интерфейса, а затем выполняет файл HAL, указанный в файле INI: [HAL]POSTGUI_HALFILE=<filename>. Обычно <filename> представляет собой базовое имя конфигурации + _postgui + .hal, например. lathe_postgui.hal, но может быть любым допустимым именем файла. Эти команды выполняются после построения экрана, гарантируя доступность контактов HAL виджета. Вы можете иметь несколько строк POSTGUI_HALFILE=<filename> в INI. Каждая из них будет запускаться одна за другой в том порядке, в котором они появляются.

Дополнительную информацию о настройках файла INI, которые могут изменить способ работы AXIS, см. в разделе Display Section главы о настройке INI.

12.1. Программные фильтры

AXIS имеет возможность пропускать загруженные файлы через программу-фильтр. Этот фильтр может выполнять любую желаемую задачу: что-то простое, например проверка того, что файл заканчивается на M2, или что-то более сложное, например создание G-кода из изображения.

Раздел [FILTER] INI-файла управляет работой фильтров. Сначала для каждого типа файла напишите строку PROGRAM_EXTENSION. Затем укажите программу, которая будет выполняться для каждого типа файла. Этой программе присваивается имя входного файла в качестве первого аргумента, и она должна записать код rs274ngc в стандартный вывод. Этот вывод будет отображаться в текстовой области, просматриваться в области отображения и выполняться LinuxCNC при нажатии кнопки Run. Следующие строки добавляют поддержку конвертера image-to-gcode, включенного в LinuxCNC:

[FILTER]
PROGRAM_EXTENSION = .png,.gif Greyscale Depth Image
png = image-to-gcode
gif = image-to-gcode

Также возможно указать интерпретатор:

PROGRAM_EXTENSION = .py Python Script
py = python

Таким образом, любой скрипт Python может быть открыт, а его выходные данные обрабатываются как G-код. Один из таких примеров скрипта доступен по адресу nc_files/holecircle.py. Этот скрипт создает G-код для сверления серии отверстий по окружности.

Отверстия по кругу
Figure 13. Отверстия по кругу

Если установлена переменная среды AXIS_PROGRESS_BAR, то в stderr записываются строки вида

FILTER_PROGRESS=%d

установит индикатор выполнения AXIS на заданный процент. Эту функцию следует использовать любому фильтру, работающему в течение длительного времени.

12.2. База данных ресурсов X (X-windows)

Цвета большинства элементов пользовательского интерфейса AXIS можно настроить с помощью базы данных X Resource Database. Образец файла axis_light_background изменяет цвета окна траектории на схему темные линии на белом фоне, а также служит ссылкой для настраиваемых элементов в области отображения. В образце файла axis_big_dro значение положения изменяется на шрифт большего размера. Чтобы использовать эти файлы:

xrdb -merge /usr/share/doc/emc2/axis_light_background

xrdb -merge /usr/share/doc/emc2/axis_big_dro

Информацию о других элементах, которые можно настроить в приложениях Tk, см. на страницах руководства Tk.

Поскольку современные среды рабочего стола автоматически вносят в базу данных ресурсов X некоторые настройки, которые отрицательно влияют на AXIS, то по умолчанию эти настройки игнорируются. Чтобы элементы базы данных X Resource переопределяли значения по умолчанию AXIS, включите следующую строку в свои X Resources:

*AXIS*optionLevel: widgetDefault

это приводит к созданию встроенных параметров на уровне параметра widgetDefault, чтобы ресурсы X (которые имеют уровень userDefault) могли их переопределить.

12.3. Маховичок

Чтобы улучшить взаимодействие AXIS с физическим маховичком, текущая активная ось, выбранная в графическом интерфейсе, также выводится на контакт HAL с именем типа axisui.jog.x. За исключением короткого времени после изменения текущей оси, только один из этих контаков одновременно имеет значение TRUE, остальные остаются FALSE.

После того как AXIS создала эти контакты HAL, она запускает файл HAL, объявленный с помощью: [HAL]POSTGUI_HALFILE. Чем отличается от [HAL]HALFILE, который можно использовать только один раз.

12.4. ~/.axisrc

Если он существует, содержимое ~/.axisrc выполняется как исходный код Python непосредственно перед отображением графического интерфейса AXIS. Детали того, что может быть записано в ~/.axisrc, могут быть изменены в ходе цикла разработки.

Следующее добавляет Control-Q в качестве сочетания клавиш для выхода.

Пример файла .axisrc
root_window.bind("<Control-q>", "destroy .")
help2.append(("Control-Q", "Quit"))

Следующее действие останавливает диалоговое окно "Do you really want to quit".

root_window.tk.call("wm","protocol",".","WM_DELETE_WINDOW","destroy .")

12.5. USER_COMMAND_FILE

Файл Python для конкретной конфигурации можно указать с помощью параметра INI-файла [DISPLAY]USER_COMMAND_FILE=filename.py. Как и файл ~/.axisrc, этот файл создается непосредственно перед отображением графического интерфейса AXIS. Этот файл относится к конфигурации файла INI, а не к домашнему каталогу пользователя.

12.6. user_live_update()

Графический интерфейс AXIS включает недействующую функцию (заполнитель) с именем user_live_update(), которая выполняется по завершении функции update() своего класса LivePlotter. Эту функцию можно реализовать в скрипте Python ~/.axisrc или скрипте Python [DISPLAY]USER_COMMAND_FILE для выполнения пользовательских периодических действий. Подробности того, что может быть выполнено с помощью этой функции, зависят от реализации ГИП AXIS и могут быть изменены в ходе цикла разработки.

12.7. user_hal_pins()

Графический интерфейс AXIS включает в себя неиспользуемую функцию (заполнитель) с именем user_hal_pins().
Он выполняется сразу после вызова файла .axisrc и непосредственно перед инициализацией любых панелей/встроенных вкладок GladeVCP.
Эту функцию можно реализовать в скрипте Python ~/.axisrc или скрипте Python [DISPLAY]USER_COMMAND_FILE для создания пользовательских выводов HAL, использующих axisui. префикс.
Используйте comp в качестве ссылки на экземпляр компонента HAL.
HAL comp.ready() вызывается сразу после возврата из этой функции.

12.8. Внешний редактор

Пункты меню File > Edit… and File > Edit Tool Table… становятся доступными после определения редактора в разделе INI [DISPLAY]. Полезные значения включают EDITOR=gedit и EDITOR=gnome-terminal -e vim. Дополнительную информацию см. в разделе «sub:ini:sec:display,Display» главы Конфигурация INI.

12.9. Виртуальные панели управления

AXIS может отображать пользовательскую виртуальную панель управления либо в правом столбце, либо в нижней строке. Кроме того, одна или несколько панелей могут отображаться как встроенные вкладки. Вы можете запрограммировать кнопки, индикаторы, отображение данных и многое другое. Дополнительную информацию см. в главах PyVCP и GladeVCP.

12.10. Управление предварительным просмотром

В файл G-кода можно вставлять специальные комментарии, чтобы контролировать поведение предварительного просмотра AXIS. В случае, если вы хотите ограничить прорисовку предварительного просмотра, используйте эти специальные комментарии. Все, что находится между (AXIS,hide) и (AXIS,show), не будет отображаться во время предварительного просмотра. (AXIS,hide) и (AXIS,show) должны использоваться парами, при этом (AXIS,hide) идет первым. Все, что находится после (AXIS,stop), не будет отображаться во время предварительного просмотра.

Эти комментарии полезны для упрощения отображения предварительного просмотра (например, при отладке большого файла G-кода можно отключить предварительный просмотр для определенных частей, которые уже работают нормально).

  • (AXIS,hide) Останавливает предварительный просмотр (должен быть первым)

  • (AXIS,show) Возобновляет предварительный просмотр (должен следовать за скрытием)

  • (AXIS,stop) Останавливает предварительный просмотр отсюда до конца файла.

  • (AXIS,notify,the_text) Отображает the_text как информационный дисплей

Это отображение может быть полезно при предварительном просмотре AXIS, когда комментарии (debug,message) не отображаются.

13. Axisui

Чтобы улучшить взаимодействие AXIS с физическими маховичками, ось, выбранная в данный момент в графическом интерфейсе, также отображается на выводе с именем типа axisui.jog.x. Один из этих выводов одновременно имеет значение TRUE, а остальные — FALSE. Они предназначены для управления контактами разрешения перемещений медленной подачи.

Axisui Контакты

AXIS имеет контакты HAL для указания того, какая кнопка с фиксацией выбрана на вкладке Manual Control.

Type Dir  Name
bit  OUT  axisui.jog.x
bit  OUT  axisui.jog.y
bit  OUT  axisui.jog.z
bit  OUT  axisui.jog.a
bit  OUT  axisui.jog.b
bit  OUT  axisui.jog.c
bit  OUT  axisui.jog.u
bit  OUT  axisui.jog.v
bit  OUT  axisui.jog.w

AXIS имеет контакт HAL для обозначения приращения медленной подачи, выбранного на вкладке Manual Tab.

Type  Dir Name
float OUT axisui.jog.increment

AXIS имеет выходной контакт HAL, который указывает, когда произошло прерывание. Вывод axisui.abort будет иметь значение TRUE и вернется в состояние FALSE через 0,3 мс.

Type  Dir    Name
bit   OUT    axisui.abort

AXIS имеет выходной контакт HAL, который указывает, когда произошла ошибка. Вывод axisui.error останется TRUE, пока все уведомления об ошибках не будут отклонены.

Type  Dir    Name
bit   OUT    axisui.error

AXIS имеет входные контакты HAL для очистки всплывающих уведомлений об ошибках и информации.

Type  Dir    Name
bit   IN     axisui.notifications-clear
bit   IN     axisui.notifications-clear-error
bit   IN     axisui.notifications-clear-info

AXIS имеет входной контакт HAL, который отключает/включает функцию Pause/Resume.

Type  Dir    Name
bit   IN     axisui.resume-inhibit

14. Советы по настройке AXIS

AXIS — это довольно большая и сложная для проникновения база кода. Это помогает поддерживать стабильность кода, но затрудняет его настройку.
Здесь мы покажем фрагменты кода для изменения поведения или визуальных эффектов экрана. Имейте в виду, что внутренний код AXIS может время от времени меняться.
работа этих фрагментов не гарантируется: возможно, их потребуется скорректировать.

14.1. Функция обновления

В AXIS есть функция user_live_update, которая вызывается каждый раз, когда AXIS обновляется. Вы можете использовать это для обновления своих собственных функций.

# continuous update function
def user_live_update():
    print('i am printed every update...')

14.2. Отключить диалог закрытия

# disable the do you want to close dialog
root_window.tk.call("wm","protocol",".","WM_DELETE_WINDOW","destroy .")

14.3. Изменить шрифт текста

# change the font

font = 'sans 11'
fname,fsize = font.split()
root_window.tk.call('font','configure','TkDefaultFont','-family',fname,'-size',fsize)

# redo the text in tabs so they resize for the new default font

root_window.tk.call('.pane.top.tabs','itemconfigure','manual','-text',' Manual - F3 ')
root_window.tk.call('.pane.top.tabs','itemconfigure','mdi','-text',' MDI - F5 ')
root_window.tk.call('.pane.top.right','itemconfigure','preview','-text',' Preview ')
root_window.tk.call('.pane.top.right','itemconfigure','numbers','-text',' DRO ')


# G-code font is independent

root_window.tk.call('.pane.bottom.t.text','configure','-foreground','blue')
#root_window.tk.call('.pane.bottom.t.text','configure','-foreground','blue','-font',font)
#root_window.tk.call('.pane.bottom.t.text','configure','-foreground','blue','-font',font,'-height','12')

14.4. Измените быструю скорость с помощью сочетаний клавиш

# use control + ` or 1-0 as keyboard shortcuts for rapidrate and keep ` or 1-0 for feedrate
# also adds text to quick reference in help

help1.insert(10,("Control+ `,1..9,0", _("Set Rapid Override from 0% to 100%")),)

root_window.bind('<Control-Key-quoteleft>',lambda event: set_rapidrate(0))
root_window.bind('<Control-Key-1>',lambda event: set_rapidrate(10))
root_window.bind('<Control-Key-2>',lambda event: set_rapidrate(20))
root_window.bind('<Control-Key-3>',lambda event: set_rapidrate(30))
root_window.bind('<Control-Key-4>',lambda event: set_rapidrate(40))
root_window.bind('<Control-Key-5>',lambda event: set_rapidrate(50))
root_window.bind('<Control-Key-6>',lambda event: set_rapidrate(60))
root_window.bind('<Control-Key-7>',lambda event: set_rapidrate(70))
root_window.bind('<Control-Key-8>',lambda event: set_rapidrate(80))
root_window.bind('<Control-Key-9>',lambda event: set_rapidrate(90))
root_window.bind('<Control-Key-0>',lambda event: set_rapidrate(100))
root_window.bind('<Key-quoteleft>',lambda event: set_feedrate(0))
root_window.bind('<Key-1>',lambda event: set_feedrate(10))
root_window.bind('<Key-2>',lambda event: set_feedrate(20))
root_window.bind('<Key-3>',lambda event: set_feedrate(30))
root_window.bind('<Key-4>',lambda event: set_feedrate(40))
root_window.bind('<Key-5>',lambda event: set_feedrate(50))
root_window.bind('<Key-6>',lambda event: set_feedrate(60))
root_window.bind('<Key-7>',lambda event: set_feedrate(70))
root_window.bind('<Key-8>',lambda event: set_feedrate(80))
root_window.bind('<Key-9>',lambda event: set_feedrate(90))
root_window.bind('<Key-0>',lambda event: set_feedrate(100))

14.5. Чтение INI-файла

# read an INI file item
machine = inifile.find('EMC','MACHINE')
print('machine name =',machine)

14.6. Чтение статуса LinuxCNC

# LinuxCNC status can be read from s.
print(s.actual_position)
print(s.paused)

14.7. Изменить текущий вид

# set the view of the preview
# valid views are view_x view_y view_y2 view_z view_z2 view_p
commands.set_view_z()

14.8. Создание новых контактов AXISUI HAL

def user_hal_pins():
    comp.newpin('my-new-in-pin', hal.HAL_BIT, hal.HAL_IN)
    comp.ready()

14.9. Создание нового HAL компонента и контактов

# create a component

mycomp = hal.component('my_component')
mycomp.newpin('idle-led',hal.HAL_BIT,hal.HAL_IN)
mycomp.newpin('pause-led',hal.HAL_BIT,hal.HAL_IN)
mycomp.ready()

# connect pins

hal.new_sig('idle-led',hal.HAL_BIT)
hal.connect('halui.program.is-idle','idle-led')
hal.connect('my_component.idle-led','idle-led')

# set a pin

hal.set_p('my_component.pause-led','1')

# get a pin 2,8+ branch

value = hal.get_value('halui.program.is-idle')
print('value is a',type(value),'value of',value)

14.10. Переключение вкладок с помощью контактов HAL

# HAL pins from a GladeVCP panel will not be ready when user_live_update is run
# to read them you need to put them in a try/except block

# the following example assumes 5 HAL buttons in a GladeVCP panel used to switch
# the tabs in the AXIS screen.
# button names are 'manual-tab', 'mdi-tab', 'preview-tab', 'dro-tab', 'user0-tab'
# the user_0 tab if it exists would be the first GladeVCP embedded tab

# for LinuxCNC 2.8+ branch

def user_live_update():
    try:
        if hal.get_value('gladevcp.manual-tab'):
            root_window.tk.call('.pane.top.tabs','raise','manual')
        elif hal.get_value('gladevcp.mdi-tab'):
            root_window.tk.call('.pane.top.tabs','raise','mdi')
        elif hal.get_value('gladevcp.preview-tab'):
            root_window.tk.call('.pane.top.right','raise','preview')
        elif hal.get_value('gladevcp.numbers-tab'):
            root_window.tk.call('.pane.top.right','raise','numbers')
        elif hal.get_value('gladevcp.user0-tab'):
            root_window.tk.call('.pane.top.right','raise','user_0')
    except:
        pass

14.11. Добавить кнопку GOTO Home

def goto_home(axis):
    if s.interp_state == linuxcnc.INTERP_IDLE:
        home = inifile.find('JOINT_' + str(inifile.find('TRAJ', 'COORDINATES').upper().index(axis)), 'HOME')
        mode = s.task_mode
        if s.task_mode != linuxcnc.MODE_MDI:
            c.mode(linuxcnc.MODE_MDI)
        c.mdi('G53 G0 ' + axis + home)

# make a button to home y axis
root_window.tk.call('button','.pane.top.tabs.fmanual.homey','-text','Home Y','-command','goto_home Y','-height','2')

# place the button
root_window.tk.call('grid','.pane.top.tabs.fmanual.homey','-column','1','-row','7','-columnspan','2','-padx','4','-sticky','w')

# any function called from Tcl needs to be added to TclCommands
TclCommands.goto_home = goto_home
commands = TclCommands(root_window)

14.12. Добавить кнопку в ручной фрейм

# make a new button and put it in the manual frame

root_window.tk.call('button','.pane.top.tabs.fmanual.mybutton','-text','My Button','-command','mybutton_clicked','-height','2')
root_window.tk.call('grid','.pane.top.tabs.fmanual.mybutton','-column','1','-row','6','-columnspan','2','-padx','4','-sticky','w')

# the above send the "mybutton_clicked" command when clicked
# other options are to bind a press or release (or both) commands to the button
# these can be in addition to or instead of the clicked command
# if instead of then delete '-command','mybutton_clicked', from the first line

# Button-1 = left mouse button, 2 = right or 3 = middle

root_window.tk.call('bind','.pane.top.tabs.fmanual.mybutton','<Button-1>','mybutton_pressed')
root_window.tk.call('bind','.pane.top.tabs.fmanual.mybutton','<ButtonRelease-1>','mybutton_released')

# functions called from the buttons

def mybutton_clicked():
    print('mybutton was clicked')
def mybutton_pressed():
    print('mybutton was pressed')
def mybutton_released():
    print('mybutton was released')

# any function called from Tcl needs to be added to TclCommands

TclCommands.mybutton_clicked = mybutton_clicked
TclCommands.mybutton_pressed = mybutton_pressed
TclCommands.mybutton_released = mybutton_released
commands = TclCommands(root_window)

14.13. Чтение внутренних переменных

# the following variables may be read from the vars instance

print(vars.machine.get())
print(vars.emcini.get())

    active_codes            = StringVar
    block_delete            = BooleanVar
    brake                   = BooleanVar
    coord_type              = IntVar
    display_type            = IntVar
    dro_large_font          = IntVar
    emcini                  = StringVar
    exec_state              = IntVar
    feedrate                = IntVar
    flood                   = BooleanVar
    grid_size               = DoubleVar
    has_editor              = IntVar
    has_ladder              = IntVar
    highlight_line          = IntVar
    interp_pause            = IntVar
    interp_state            = IntVar
    ja_rbutton              = StringVar
    jog_aspeed              = DoubleVar
    jog_speed               = DoubleVar
    kinematics_type         = IntVar
    linuxcnctop_command     = StringVar
    machine                 = StringVar
    max_aspeed              = DoubleVar
    max_maxvel              = DoubleVar
    max_queued_mdi_commands = IntVar
    max_speed               = DoubleVar
    maxvel_speed            = DoubleVar
    mdi_command             = StringVar
    metric                  = IntVar
    mist                    = BooleanVar
    motion_mode             = IntVar
    on_any_limit            = BooleanVar
    optional_stop           = BooleanVar
    override_limits         = BooleanVar
    program_alpha           = IntVar
    queued_mdi_commands     = IntVar
    rapidrate               = IntVar
    rotate_mode             = BooleanVar
    running_line            = IntVar
    show_distance_to_go     = IntVar
    show_extents            = IntVar
    show_live_plot          = IntVar
    show_machine_limits     = IntVar
    show_machine_speed      = IntVar
    show_program            = IntVar
    show_pyvcppanel         = IntVar
    show_rapids             = IntVar
    show_tool               = IntVar
    show_offsets            = IntVar
    spindledir              = IntVar
    spindlerate             = IntVar
    task_mode               = IntVar
    task_paused             = IntVar
    task_state              = IntVar
    taskfile                = StringVar
    teleop_mode             = IntVar
    tool                    = StringVar
    touch_off_system        = StringVar
    trajcoordinates         = StringVar
    tto_g11                 = BooleanVar
    view_type               = IntVar

14.14. Скрыть виджеты

# hide a widget
# use 'grid' or 'pack' depending on how it was originally placed
root_window.tk.call('grid','forget','.pane.top.tabs.fmanual.jogf.zerohome.tooltouch')

14.15. Изменить ярлык

# change label of a widget
root_window.tk.call('setup_widget_accel','.pane.top.tabs.fmanual.mist','Downdraft')

# make sure it appears (only needed in this case if the mist button was hidden)
root_window.tk.call('grid','.pane.top.tabs.fmanual.mist','-column','1','-row','5','-columnspan','2','-padx','4','-sticky','w')

14.16. Перенаправить существующую команду

# hijack an existing command
# originally the mist button calls the mist function
root_window.tk.call('.pane.top.tabs.fmanual.mist','configure','-command','hijacked_command')

# The new function
def hijacked_command():
    print('hijacked mist command')

# add the function to TclCommands
TclCommands.hijacked_command = hijacked_command
commands = TclCommands(root_window)

14.17. Изменить цвет УЦИ

# change dro screen
root_window.tk.call('.pane.top.right.fnumbers.text','configure','-foreground','green','-background','black')

14.18. Изменение кнопок панели инструментов

# change the toolbar buttons

buW = '3'
buH = '2'
boW = '3'

root_window.tk.call('.toolbar.machine_estop','configure','-image','','-text','ESTOP','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.machine_power','configure','-image','','-text','POWER','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.file_open','configure','-image','','-text','OPEN','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.reload','configure','-image','','-text','RELOAD','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_run','configure','-image','','-text','RUN','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_step','configure','-image','','-text','STEP','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_pause','configure','-image','','-text','PAUSE','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_stop','configure','-image','','-text','STOP','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_blockdelete','configure','-image','','-text','Skip /','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_optpause','configure','-image','','-text','M1','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_zoomin','configure','-image','','-text','Zoom+','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_zoomout','configure','-image','','-text','Zoom-','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_z','configure','-image','','-text','Top X','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_z2','configure','-image','','-text','Top Y','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_x','configure','-image','','-text','Right','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_y','configure','-image','','-text','Front','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_p','configure','-image','','-text','3D','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.rotate','configure','-image','','-text','Rotate','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.clear_plot','configure','-image','','-text','Clear','-width',buW,'-height',buH,'-borderwidth',boW)

14.19. Изменение цветов отрисовки

В формате RGBA, в следующем порядке: медленная подача, быстрое перемещение, подача, дуга, смена инструмента, измерительный щуп

# change plotter colors
try:
    live_plotter.logger.set_colors((255,0,0,255),
                                    (0,255,0,255),
                                    (0,0,255,255),
                                    (255,255,0,255),
                                    (255,255,255,255),
                                    (0,255,255,255))
except Exception as e:
    print(e)