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.
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) - указывает текущий выбранный инструмент