1. Введение

Halui — это пользовательский интерфейс для LinuxCNC на основе HAL, он соединяет контакты HAL с командами NML. Большая часть функциональности (кнопки, индикаторы и т. д.), предоставляемой традиционным ГИП (AXIS, GMOCCAPY, QtDragon и т. д.), обеспечивается контактами HAL в Halui.

Самый простой способ добавить halui — добавить следующее в раздел [HAL] INI-файла:

[HAL]
HALUI = halui

Альтернативный способ его вызова (особенно если вы создаете конфигурацию с помощью StepConf) — включить следующее в ваш файл custom.hal.
Убедитесь, что вы используете правильный путь к вашему INI-файлу.

loadusr halui -ini /path/to/inifile.ini

2. MDI

Иногда пользователь хочет добавить более сложные задачи, которые будут выполняться путем активации контакта HAL. Это возможно путем добавления команд MDI в INI-файл в разделе [HALUI]. Пример:

[HALUI]
MDI_COMMAND = G0 X0
MDI_COMMAND = G0 G53 Z0
MDI_COMMAND = G28
MDI_COMMAND = o<mysub>call
...

Когда halui запускается, он считывает поля MDI_COMMAND в INI и экспортирует контакты от 00 до количества MDI_COMMAND, найденного в INI, и до максимального количества 64 команд. Эти контакты можно подключать как любые контакты HAL. Распространенный метод — использовать кнопки, предоставляемые виртуальными панелями управления, как показано в примере Пример для соединений MDI_COMMAND.

Example 1. Пример соединений MDI_COMMAND
HAL-файл
net quill-up      halui.mdi-command-00 <= pyvcp.quillup
net reference-pos halui.mdi-command-01 <= pyvcp.referencepos
net call-mysub    halui.mdi-command-02 <= pyvcp.callmysub
Сети, соединяющие контакты halui.mdi-command-NN, предоставленные halui.
$ halcmd show pin halui.mdi
Component Pins:
Owner  Type  Dir Value  Name
   10  bit   IN  FALSE  halui.mdi-command-00 <== quill-up
   10  bit   IN  FALSE  halui.mdi-command-01 <== reference-pos
   10  bit   IN  FALSE  halui.mdi-command-02 <== call-mysub
    ...

Когда на выводе halui MDI установлено (импульсное) значение true, halui отправит команду MDI, определенную в INI. Это не всегда будет успешным в зависимости от текущего режима работы (например, в режиме AUTO halui не может успешно отправлять команды MDI).

3. Пример конфигурации

Пример конфигурации sim (configs/sim/axis/halui_pyvcp/halui.ini) включен в дистрибутив.

4. Справочник по контактам Halui

Все контакты halui также описаны на странице руководства halui:

$ man halui

4.1. Прерывание

  • halui.abort (bit, in) - контакт для отправки сообщения об прерывании (очищает большинство ошибок)

4.2. E-Stop

  • halui.estop.activate (bit, in) - контакт для запроса аварийного останова

  • halui.estop.is-activated (bit, out) - отображает сброс аварийного останова

  • halui.estop.reset (bit, in) - контакт для запроса сброса аварийного останова

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

  • halui.feed-override.count-enable (bit, in) - должно быть true, чтобы работали counts или direct-value.

  • halui.feed-override.counts (s32, in) - counts * scale = процент FO. Может использоваться с энкодером или 'direct-value.

  • halui.feed-override.decrease (bit, in) - контакт для уменьшения FO (-=scale)

  • halui.feed-override.increase (bit, in) - контакт для увеличения ФО (+=scale)

  • halui.feed-override.reset (bit, in) - вывод для сброса FO (scale=1,0)

  • halui.feed-override.direct-value (bit, in) - false при использовании энкодера для изменения отсчетов, true для непосредственного изменения отсчетов.

  • halui.feed-override.scale (float, in) - контакт для установки масштабирования увеличения и уменьшения feed-override.

  • halui.feed-override.value (float, out) - текущее значение FO

4.4. Туман

  • halui.mist.is-on (bit, out) - показывает, что туман включен

  • halui.mist.off (bit, in) - контакт для запроса отключения тумана

  • halui.mist.on (bit, in) - контакт для запроса включения тумана

4.5. СОЖ

  • halui.flood.is-on (bit, out) - показывает, что СОЖ включена

  • halui.flood.off (bit, in) - контакт для запроса отключения СОЖ

  • halui.flood.on (bit, in) - контакт для запроса отключения СОЖ

4.6. Homing

  • halui.home-all (bit, in) - контакт для запроса возврата в исходное положение всех осей. Этот контакт будет доступен только в том случае, если в INI-файле установлено значение HOME_SEQUENCE.

4.7. Станок

  • halui.machine.units-per-mm (float out) - контакт для единиц станка на мм (дюйм:1/25,4, мм:1) в соответствии с настройкой inifile: [TRAJ]LINEAR_UNITS

  • halui.machine.is-on (bit, out) - показывает, что станок включен

  • halui.machine.off (bit, in) - контакт для запроса выключения станка

  • halui.machine.on (bit, in) - контакт для запроса включения станка

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

Максимальную линейную скорость можно регулировать от 0 до MAX_VELOCITY, установленной в разделе [TRAJ] INI-файла.

  • halui.max-velocity.count-enable (bit, in) - должно быть true , чтобы counts или direct-value работали.

  • halui.max-velocity.counts (s32, in) - counts * scale = процент MV. Может использоваться с энкодером или direct-value.

  • halui.max-velocity.direct-value (bit, in) - false при использовании энкодера для изменения отсчетов, true для непосредственного изменения отсчетов.

  • halui.max-velocity.decrease (bit, in) - контакт для уменьшения максимальной скорости

  • halui.max-velocity.increase (bit, in) - контакт для увеличения максимальной скорости

  • halui.max-velocity.scale (float, in) - величина, применяемая к текущей максимальной скорости при каждом переходе от выключения к включению контакта увеличения или уменьшения в единицах станках в секунду.

  • halui.max-velocity.value (float, out) - максимальная линейная скорость в единицах станка в секунду.

4.9. MDI

  • halui.mdi-command-<nn> (bit, in) - halui попытается отправить команду MDI, определенную в INI. <nn> — двузначное число, начинающееся с 00.
    Если команда выполнена успешно, LinuxCNC перейдет в режим MDI, а затем вернется в ручной режим.
    Если в ini-файле не заданы переменные [HALUI]MDI_COMMAND, halui не будет экспортировать контакты halui.mdi-command-<nn>.

  • halui.halui-mdi-is-running (bit, out) - execution status of MDI commands sent by halui. The status is active even during mode switching. If no [HALUI]MDI_COMMAND variables are set in the ini file, this pins will not be exported by halui.

4.10. Сочленение

N = joint number (0 … num_joints-1)
Пример:

  • halui.joint.N.select (bit in) - контакт для выбора сочленения N

  • halui.joint.N.is-selected (bit out) - контакт состояния, что выбрано сочленение N

  • halui.joint.N.has-fault (bit out) - контакт состояния, сообщающий о неисправности сочленения N

  • halui.joint.N.home (bit in) - контакт для приведения в исходное положение сочленения N

  • halui.joint.N.is-homed (bit out) - контакт состояния, сообщающий, что сочленение N возвращено в исходное положение

  • halui.joint.N.on-hard-max-limit (bit out) - контакт состояния, сообщающий, что сочленение N находится на положительном аппаратном пределе

  • halui.joint.N.on-hard-min-limit (bit out) - контакт состояния, сообщающий, что сочленение N находится на отрицательном аппаратном пределе

  • halui.joint.N.on-soft-max-limit (bit out) - контакт состояния, сообщающий, что сочленение N находится на положительном программном пределе

  • halui.joint.N.on-soft-min-limit (bit out) - контакт состояния, сообщающий, что сочленение N находится на отрицательном программном пределе

  • halui.joint.N.override-limits (bit out) - контакт состояния, сообщающий, что ограничения сочленения N временно переназначены

  • halui.joint.N.unhome (bit in) - контакт для вывода из исходного состояния сочленения N

  • halui.joint.selected (u32 out) - номер выбранного сочленения (0 … num_joints-1)

  • halui.joint.selected.has-fault (bit out) - контакт состояния, что выбранное сочленение неисправно

  • halui.joint.selected.home (bit in) - контакт для возврата в исходное положение выбранного сочленения

  • halui.joint.selected.is-homed (bit out) - контакт состояния, сообщающий, что выбранное сочленение в исходном положении

  • halui.joint.selected.on-hard-max-limit (bit out) - контакт состояния, сообщающий, что выбранное сочленение находится на положительном аппаратном пределе

  • halui.joint.selected.on-hard-min-limit (bit out) - контакт состояния, сообщающий, что выбранное сочленение находится на отрицательном аппаратном пределе

  • halui.joint.selected.on-soft-max-limit (bit out) - контакт состояния, сообщающий, что выбранное сочленение находится на положительном программном пределе

  • halui.joint.selected.on-soft-min-limit (bit out) - контакт состояния, сообщающий, что выбранное сочленение находится на отрицательном программном пределе

  • halui.joint.selected.override-limits (bit out) - контакт состояния, сообщающий, что ограничения выбранного сочленения временно переназначены

  • halui.joint.selected.unhome (bit in) - контакт для вывода из исходного положения выбранного сочленения

4.11. Медленная подача сочленения

N = joint number (0 … num_joints-1)

  • halui.joint.jog-deadband (float in) - конаткт для установки зоны аналоговой нечувствительности медленной подачи (аналоговые значения медленной подачи, меньше/медленнее этого - в абсолютном значении - игнорируются)

  • halui.joint.jog-speed (float in) - контакт для настройки скорости медленной подачи для медленной подачи плюс/минус.

  • halui.joint.N.analog (float in) - контакт для медленной подачи сочленения N с использованием значения с плавающей запятой (например, джойстика). Значение, обычно устанавливаемое в диапазоне от 0,0 до ±1,0, используется в качестве множителя скорости медленной подачи.

  • halui.joint.N.increment (float in) - контакт для установки инкремента медленной подачи для сочленения N при использовании приращения-плюс/минус

  • halui.joint.N.increment-minus (bit in) - фронт заставит сочленение N двигаться в отрицательном направлении на величину приращения

  • halui.joint.N.increment-plus (bit in) - фронт заставит сочленение N медленно перемещаться в положительном направлении на величину приращения

  • halui.joint.N.minus (bit in) - контакт для медленной подачи сочленения N в отрицательном направлении со скоростью halui.joint.jog-speed

  • halui.joint.N.plus (bit in) - контакт для медленной подачи сочленения N в положительном направлении со скоростью halui.joint.jog-speed

  • halui.joint.selected.increment (float in) - контакт для установки инкремента медленной подачи для выбранного сочленения при использовании приращения плюс/минус

  • halui.joint.selected.increment-minus (bit in) - фронт приведет к медленной подаче выбранного сочленения в отрицательном направлении на величину приращения

  • halui.joint.selected.increment-plus (bit in) - фронт приведет к медленной подаче выбранного сочленения в положительном направлении на величину приращения

  • halui.joint.selected.minus (bit in) - контакт для медленной подачи выбранного сочленения в отрицательном направлении со скоростью halui.joint.jog-speed

  • halui.joint.selected.plus (bit in) - контакт для медленной подачи выбранного сочленения в положительном направлении со скоростью halui.joint.jog-speed

4.12. Axis

L = буква оси (xyzabcuvw)

  • halui.axis.L.select (bit) - контакт для выбора оси по букве

  • halui.axis.L.is-selected (bit out) - контакт состояния, что выбрана ось L

  • halui.axis.L.pos-commanded (float out) - Заданное положение оси в координатах станка

  • halui.axis.L.pos-feedback float out) - Обратная связь положения оси в координатах станка

  • halui.axis.L.pos-relative (float out) - Обратная связь положения оси в относительных координатах

4.13. Медленная подача оси

L = буква оси (xyzabcuvw)

  • halui.axis.jog-deadband (float in) - pin for setting jog analog deadband (jog analog inputs smaller/slower than this (in absolute value) are ignored)

  • halui.axis.jog-speed (float in) - pin for setting jog speed for plus/minus jogging.

  • halui.axis.L.analog (float in) - pin for jogging the axis L using an float value (e.g. joystick). The value, typically set between 0.0 and ±1.0, is used as a jog-speed multiplier.

  • halui.axis.L.increment (float in) - pin for setting the jog increment for axis L when using increment-plus/minus

  • halui.axis.L.increment-minus (bit in) - a rising edge will will make axis L jog in the negative direction by the increment amount

  • halui.axis.L.increment-plus (bit in) - a rising edge will will make axis L jog in the positive direction by the increment amount

  • halui.axis.L.minus (bit in) - pin for jogging axis L in negative direction at the halui.axis.jog-speed velocity

  • halui.axis.L.plus (bit in) - pin for jogging axis L in positive direction at the halui.axis.jog-speed velocity

  • halui.axis.selected (u32 out) - selected axis (by index: 0:x 1:y 2:z 3:a 4:b 5:cr 6:u 7:v 8:w)

  • halui.axis.selected.increment (float in) - pin for setting the jog increment for the selected axis when using increment-plus/minus

  • halui.axis.selected.increment-minus (bit in) - a rising edge will will make the selected axis jog in the negative direction by the increment amount

  • halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the positive direction by the increment amount

  • halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the halui.axis.jog-speed velocity

  • halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the halui.axis.jog-speed velocity

4.14. Mode

  • halui.mode.auto (bit, in) - контакт для запроса автоматического режима

  • halui.mode.is-auto (bit, out) - указывает на то, что автоматический режим включен

  • halui.mode.is-joint (bit, out) - указывает сочленение по включенному режиму медленной подачи сочленения

  • halui.mode.is-manual (bit, out) - указывает на то, что ручной режим включен

  • halui.mode.is-mdi (bit, out) - указывает на то, что режим MDI включен

  • halui.mode.is-teleop (bit, out) - указывает на то, что включен режим медленной подачи

  • halui.mode.joint (bit, in) - контакт для запроса режима совместной работы сочленения

  • halui.mode.manual (bit, in) - контакт для запроса ручного режима

  • halui.mode.mdi (bit, in) - контакт для запроса режима MDI

  • halui.mode.teleop (bit, in) - контакт для запроса режима координированной медленной подачи

4.15. Программа

  • halui.program.block-delete.is-on (bit, out) - контакт состояния, сообщающий, что удаление блока включено

  • halui.program.block-delete.off (bit, in) - контакт для запроса удаления блока отключен

  • halui.program.block-delete.on (bit, in) - контакт для запроса удаления блока включен

  • halui.program.is-idle (bit, out) - контакт состояния, сообщающий, что ни одна программа не запущена

  • halui.program.is-paused (bit, out) - контакт состояния, сообщающий о том, что программа приостановлена

  • halui.program.is-running (bit, out) - контакт состояния, сообщающий о том, что программа запущена

  • halui.program.optional-stop.is-on (bit, out) - контакт состояния, сообщающий о том, что опциональная остановка включена

  • halui.program.optional-stop.off (bit, in) - контакт, запрашивающий отключение опциональной остановки

  • halui.program.optional-stop.on (bit, in) - контакт запроса на включение опциональнаой остановки

  • halui.program.pause (bit, in) - контакт для приостановки программы

  • halui.program.resume (bit, in) - контакт для возобновления приостановленной программы

  • halui.program.run (bit, in) - контакт для запуска программы

  • halui.program.step (bit, in) - контакт для шага в программе

  • halui.program.stop (bit, in) - контакт для остановки программы

4.16. Быстрое переназначение

  • halui.rapid-override.count-enable (bit in (default: TRUE)) - Когда TRUE, изменить Rapid Override при изменении счетчика.

  • halui.rapid-override.counts (s32 in) - отсчитывает X коэффициент масштаба = процент Rapid Override. Может использоваться с энкодером или direct-value.

  • halui.rapid-override.decrease (bit in) - контакт для уменьшения быстрого переопределения (-=масштаб)

  • halui.rapid-override.direct-value (bit in) - контакт для разрешения ввода напрямую значения Rapid Override

  • halui.rapid-override.increase (bit in) - контакт для увеличения быстрого переопределения (+=масштаб)

  • halui.rapid-override.scale (float in) - контакт для установки масштаба при изменении быстрого переопределения

  • halui.rapid-override.value (float out) - текущее значение быстрого переопределения

  • halui.rapid-override.reset (bit, in) - контакт для сброса значения быстрого переопределения (шкала=1,0)

4.17. Переопределение шпинделя

  • halui.spindle.N.override.count-enable (bit, in) - должно быть true, чтобы counts или direct-value работали.

  • halui.spindle.N.override.counts (s32, in) - counts * scale = процент SO. Может использоваться с энкодером или direct-value.

  • halui.spindle.N.override.decrease (bit, in) - контакт для уменьшения SO (-=шкала)

  • halui.spindle.N.override.direct-value (bit, in) - false при использовании энкодера для изменения отсчетов, true при непосредственной установке отсчетов.

  • halui.spindle.N.override.increase (bit, in) - контакт для увеличения SO (+=scale)

  • halui.spindle.N.override.scale (float, in) - контакт для настройки шкалы при изменении SO

  • halui.spindle.N.override.value (float, out) - текущее значение SO

  • halui.spindle.N.override.reset (bit, in) - контакт для сброса значения SO (масштаб=1,0)

4.18. Spindle

  • halui.spindle.N.brake-is-on (bit, out) - указывает на то, что тормоз включен

  • halui.spindle.N.brake-off (bit, in) - контакт для отключения шпинделя/тормоза

  • halui.spindle.N.brake-on (bit, in) - контакт для активации тормоза шпинделя

  • halui.spindle.N.decrease (bit, in) - уменьшает скорость шпинделя

  • halui.spindle.N.forward (bit, in) - запускает шпиндель по часовой стрелке

  • halui.spindle.N.increase (bit, in)- увеличивает скорость шпинделя

  • halui.spindle.N.is-on (bit, out) - указывает на то, что шпиндель включен (в любом направлении)

  • halui.spindle.N.reverse (bit, in)- запускает движение шпинделя против часовой стрелки

  • halui.spindle.N.runs-backward (bit, out) - указывает на то, что шпиндель включен и в реверсе

  • halui.spindle.N.runs-forward (bit, out) - указывает, что шпиндель включен и вращается в прямом направлении

  • halui.spindle.N.start (bit, in) - запускает шпиндель

  • halui.spindle.N.stop (bit, in) - останавливает шпиндель

4.19. Tool

  • halui.tool.length-offset.a (float out) - текущая примененная коррекция длины инструмента для оси A

  • halui.tool.length-offset.b (float out) - текущая примененная коррекция длины инструмента для оси B

  • halui.tool.length-offset.c (float out) - текущая примененная коррекция длины инструмента для оси C

  • halui.tool.length-offset.u (float out) - текущее применяемое смещение длины инструмента для оси U

  • halui.tool.length-offset.v (float out) - текущее применяемое смещение длины инструмента для оси V

  • halui.tool.length-offset.w (float out) - текущее применяемое смещение длины инструмента для оси W

  • halui.tool.length-offset.x (float out) - текущее примененное смещение длины инструмента для оси X

  • halui.tool.length-offset.y (float out) - текущее примененное смещение длины инструмента для оси Y

  • halui.tool.length-offset.z (float out) - текущая примененная коррекция длины инструмента для оси Z

  • halui.tool.diameter (float out) - Текущий диаметр инструмента или 0, если инструмент не загружен.

  • halui.tool.number (u32, out) - указывает текущий выбранный инструмент