LinuxCNC Integrators Manual Глава V - LinuxCNC и HAL

Материал из cnc-club
Перейти к: навигация, поиск

LinuxCNC Integrators Manual Глава V - LinuxCNC и HAL

LinuxCNC и HAL

Смотри также разделы man motion(9) и iocontrol(1).


5.1 motion (realtime)

5.1.1 Параметры

Motion загружается при помощи команды motmod. Родственные программы должны быть запущены до motion.

loadrt motmod [base_period_nsec=period] [servo_period_nsec=period] [traj_period_nsec=period] [num_joints=[0-9] ([num_dio=1-64] [num_aio=1-16])

Если необходимое количество цифровых Вводов/Выводов больше чем значение по умолчанию равное 4, вы можете добавить вплоть до 64 цифровых Вводов/Выводов, используя опцию num_dio при загрузке motmod.

Если необходимое количество аналоговых Вводов/Выводов больше чем значение по умолчанию равное 4, вы можете добавить вплоть до 16 аналоговых Вводов/Выводов, используя опцию num_aio при загрузке motmod.

5.1.2 Pins

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

  • motion.adaptive-feed (float, in) Когда активирована адаптивная подача при помощи M52 P1, устанавливаемая скорость умножается на это значение. Эффект мультипликативен с NML-level превышения подачи и motion.feed-hold.
  • motion.analog-in-00 (float, in) Эти пины (00, 01, 02, 03 и более, если настроены) контролируются M66.
  • motion.analog-out-00 (float, out) Эти пины (00, 01, 02, 03 и более, если настроены) контролируются M67 или M68.
  • motion.coord-error (bit, out) TRUE если motion обнаружил ошибку, такую как превышение мягкого предела.
  • motion.coord-mode (bit, out) TRUE когда motion в режиме coordinated mode", что является противопоставлением режима "teleop mode"
  • motion.current-vel (float, out) Текущая скорость инструмента в пользовательских единицах измерения в секунду.
  • motion.digital-in-00 (bit, in) Эти пины (00, 01, 02, 03 и более, если настроены) контролируются M62-65.
  • motion.digital-out-00 (bit, out) Эти пины (00, 01, 02, 03 и более, если настроены) контролируются M62-65.
  • motion.distance-to-go (float,out) Дистанция до окончания текущего перемещения.
  • motion.enable (bit, in) Если этот бит устанавливается в FALSE, движение останавливается, станок переходит в состояние "machine off" и оператору станка показывается сообщение. Для нормального движения держите этот бит в TRUE.
  • motion.feed-hold (bit, in) Когда Feed Stop Control (управление остановкой подачи) включено при помощи M53 P1, и этот бит равен TRUE, скорость подачи устанавливается в 0.
  • motion.in-position (bit, out) равен TRUE если станок находится в нужном положении.
  • motion.motion-enabled (bit, out) равен TRUE в состоянии "machine on" (станок включен).
  • motion.on-soft-limit (bit, out) TRUE когда станок находится на мягком пределе (soft limit).
  • motion.probe-input (bit, in) G38.x использует значение этого пина для определения того, что на пробе есть контакт. TRUE для замкнутого контакта (касание), FALSE для открытого контакта. (Используется при определении длинны инструмента.)
  • motion.program-line (s32, out) Текущая строка исполняемой программы. Ноль, если программа не выполняется или находится между двух строк в пошаговом режиме.
  • motion.requested-vel (float, out) Текущая запрошенная скорость в пользовательских единицах измерения в секунду из установки F=n в файле с Gcode. Никаких увеличений подачи (feed override) или другие установки не применяются к этому пину.
  • motion.spindle-at-speed (bit, in) Движение будет приостановлено до тех пор пока этот пин не станет TRUE, при следующих условиях: перед первым движением с подачей, после каждого запуска шпинделя или изменения скорости; и если в режиме CSS (constans surface speed - постоянной скорости поверхности), при каждом переходе с быстрого перемещения на подачу. Этот ввод может быть использован для того, чтобы убедиться, что шпиндель разогнан до нужной скорости перед началом обработки или что шпиндель токарного станка в режиме CSS замедлился после перехода с обработки большого диаметра до маленького к следующему заходу на большом диаметре обработки. Многие VFD (variable speed drive - двигатели с переменной скоростью) имеют вывод "at spped" (на нужной скорости). В противном случае, просто генерировать этот сигнал при помощи HAL компонента, сравнивая запрошенную и текущие скорости.
  • motion.spindle-brake (bit, out) Равен TRUE когда должен быть применен тормоз шпинделя.
  • motion.spindle-forward (bit, out) Равен TRUE когда шпиндель должен вращаться вперед.
  • motion.spindle-index-enable (bit, I/O) Для корректного выполнения перемещений синхронизированных со шпинделем, этот пин должен быть завязан на пин index-enable энкодера шпинделя.
  • motion.spindle-on (bit, out) Равен TRUE когда шпиндель должен вращаться.
  • motion.spindle-reverse (bit, out) Равен TRUE когда шпиндель должен вращаться в обратную сторону.
  • motion.spindle-revs (float, in) Для корректного выполнения перемещений синхронизированных со шпинделем, этот сигнал должен быть завязан на пин положения энкодера шпинделя. Энкодер шпинделя должен быть масштабирован согласно увеличению spindle-revs на 1.0, для каждого оборота шпинделя в направлении часовой стрелки (M3).
  • motion.spindle-speed-in (float, in) Обратная связь текущей скорости шпинделя в оборотах в секунду. Это значение используется при движении в режиме подачи на оборот (G95). Если ваш энкодер двигателя шпиндель не имеет ввода скорости, вы можете генерировать подходящую величину посылая положение шпинделя через компонент ddt. (ddt − Вычисляет производную входной функции)
  • motion.spindle-speed-out (float, out) Заданная скорость шпинделя в оборотах в минуту. Положительное значение для вращения вперед (M3), отрицательное для вращения шпинделя в обратную сторону (M4).
  • motion.spindle-speed-out-rps (float, out) Заданная скорость шпинделя в оборотах в секунду. Положительное значение для вращения вперед (M3), отрицательное для вращения шпинделя в обратную сторону (M4).
  • motion.teleop-mode (bit, out)Равен TRUE когда движение происходит в режиме teleop, в противоположность режиму "coordinated move"
  • motion.tooloffset.w (float, out) Показывает используемую w отступа; она может быть взята из таблицы инструментов (включен G43) или из G кода (включен G43.1).
  • motion.tooloffset.x (float, out) Показывает используемую x отступа; она может быть взята из таблицы инструментов (включен G43) или из G кода (включен G43.1).
  • motion.tooloffset.z (float, out) Показывает используемую z отступа; она может быть взята из таблицы инструментов (включен G43) или из G кода (включен G43.1).

5.1.3 Параметры

Многие из этих параметров служат для нужд дебагинга, и могут быть удалены в любое время.

  • motion-command-handler.time (s32, RO)
  • motion-command-handler.tmax (s32, RW)
  • motion-controller.time (s32, RO)
  • motion-controller.tmax (s32, RW)
  • motion.debug-bit-0 (bit, RO) Этот параметр используется при дебагинге.
  • motion.debug-bit-1 (bit, RO) Этот параметр используется при дебагинге.
  • motion.debug-float-0 (float, RO) Этот параметр используется при дебагинге.
  • motion.debug-float-1 (float, RO) Этот параметр используется при дебагинге.
  • motion.debug-float-2 (float, RO) Этот параметр используется при дебагинге.
  • motion.debug-float-3 (float, RO) Этот параметр используется при дебагинге.
  • motion.debug-s32-0 (s32, RO) Этот параметр используется при дебагинге.
  • motion.debug-s32-1 (s32, RO) Этот параметр используется при дебагинге.
  • motion.servo.last-period (u32, RO) Количество циклов процессора между запусками потока серво (servo thread).Обычно, это число поделенное на скорость процессора дает время в секундах и может быть использовано для определения укладывается ли контроллер перемещений реального времени в свои временные рамки.
  • motion.servo.last-period-ns (float, RO)
  • motion.servo.overruns (u32, RW) Отмечая большую разницу между конечными значениями motion.servo.last-period, контроллер может определить, что ему возможно не удалось попасть во временные рамки. Каждый раз, когда отмечается такая неудача, это значение увеличивается.

5.1.4 Функции

Обычно, обе эти функции добавляются к servo-потоку (thread) в показанном порядке.

  • motion-command-handler Обрабатывает команды motion приходящие от пользователя
  • motion-controller Запускает контроллер перемещений EMC

5.2 axis.N (realtime)

Эти пины и параметры создаются модулем реального времени motmod. Это текущие значения осей станка (физических сочленений), но пины все равно называются "axis.N".1 Они читаются и обновляются функцией motion-controller.


5.2.1 Пины

  • axis.N.active (bit, out)
  • axis.N.amp-enable-out (bit, out) Равен TRUE если усилитель для этого сочленения должен быть включен.
  • axis.N.amp-fault-in (bit, in) Должен быть установлен в TRUE если обнаружена внешняя неисправность с усилителем этого сочленения.
  • axis.N.backlash-corr (float, out)
  • axis.N.backlash-filt (float, out)
  • axis.N.backlash-vel (float, out)
  • axis.N.coarse-pos-cmd (float, out)
  • axis.N.error (bit, out)
  • axis.N.f-error (float, out)
  • axis.N.f-error-lim (float, out)
  • axis.N.f-errored (bit, out)
  • axis.N.faulted (bit, out)
  • axis.N.free-pos-cmd (float, out)
  • axis.N.free-tp-enable (bit, out)
  • axis.N.free-vel-lim (float, out)
  • axis.N.home-sw-in (bit, in) Должен быть установлен в TRUE если датчик home для этого сочленения замкнут.
  • axis.N.homed (bit, out)
  • axis.N.homing (bit, out) Равен TRUE если сочленение в настоящий момент выставляется в 0.
  • axis.N.in-position (bit, out)
  • axis.N.index-enable (bit, I/O)
  • axis.N.jog-counts (s32, in) Соединен с пином "counts" (количества) внешнего энкодера для использования физического джойстика ручного управления.
  • axis.N.jog-enable (bit, in) Когда равен TRUE (в и ручном режиме), любое изменение в "jog-counts" будет приводить к движению. Когда равен FALSE, "jog-counts" игнорируется.
  • axis.N.jog-scale (float, in) Устанавливает дистанцию перемещения на каждый "jog-counts", в единицах измерения станка.
  • axis.N.jog-vel-mode (bit, in) Если равен FALSE (по умолчанию), колесико ручного управления работает в режиме положения. Ось будет перемещаться ровно на jog-scale для каждой единицы, независимо от того, сколько на это потребуется времени. Если равен TRUE, колесико работает в режиме скорости - движение останавливается когда колесико останавливается, даже если это значит, что заданное движение еще не законченно.
  • axis.N.joint-pos-cmd (float, out) Заданное положение сочленения (joint) (отлично от положения двигателя). Может существовать отступ между положением сочленения и положением мотора, например, процесс выставления осей задает такой отступ.
  • axis.N.joint-pos-fb (float, out) Обратная связь положения сочленения (отлично от обратной вязи положения мотора).
  • axis.N.joint-vel-cmd (float, out)
  • axis.N.kb-jog-active (bit, out)
  • axis.N.motor-pos-cmd (float, out) Заданное положение для этого сочленения.
  • axis.N.motor-pos-fb (float, in) Текущее положение этого сочленения.
  • axis.N.neg-hard-limit (bit, out)
  • axis.N.pos-lim-sw-in (bit, in) Должно быть установлено в TRUE если концевой датчик положительного направления этого сочленения замкнут.
  • axis.N.pos-hard-limit (bit, out)
  • axis.N.neg-lim-sw-in (bit, in) Должно быть установлено в TRUE если концевой датчик отрицательного направления этого сочленения замкнут.
  • axis.N.wheel-jog-active (bit, out)

1 В "тривиальной кинематике" есть однозначное соответствие между сочленениями станка (joints) и осями (axis).

5.2.2 Параметры

  • axis.N.home-state Отражает состояние процедуры выставления оси (отражает текущий шаг процедуры).

5.3 iocontrol (userspace)

Эти пины создаются пользовательской областью контроллера Ввода/Вывода, обычно он называется io.


5.3.1 Пины

  • iocontrol.0.coolant-flood (bit, out) Равен TRUE когда требуется включить поток охлаждения (flood coolant).
  • iocontrol.0.coolant-mist (bit, out) Равен TRUE когда требуется охлаждение туманом (mist coolant).
  • iocontrol.0.emc-enable-in (bit, in) Должен быть установлен в FALSE когда существует внешнее состояние E-Stop.
  • iocontrol.0.lube (bit, out) Равен TRUE когда заданно включение смазка (возможно СОЖ)
  • iocontrol.0.lube_level (bit, in) Должен быть установлен в TRUE когда уровень смазки достаточен.
  • iocontrol.0.tool-change (bit, out) равен TRUE когда запрошена замена инструмента.
  • iocontrol.0.tool-changed (bit, in) Должен быть установлен в TRUE когда замена инструмента завершена.
  • iocontrol.0.tool-number (s32, out) Текущий номер инструмента.
  • iocontrol.0.tool-prep-number (s32, out) Номер следующего инструмента , из RS274NGC T-кода.
  • iocontrol.0.tool-prepare (bit, out) Равен TRUE когда запрошена подготовка инструмента.
  • iocontrol.0.tool-prepared (bit, in) Должен быть установлен в TRUE когда подготовка инструмента завершена.
  • iocontrol.0.user-enable-out (bit, out) Равен FALSE когда присутствует внутреннее состояние E-Stop.
  • iocontrol.0.user-request-enable (bit, out) Равен TRUE когда пользователь запросил сброс E-Stop.


Оглавление книги LinuxCNC Integrators Manual

Глава Название
Глава 1 LinuxCNC Integrators Manual Глава I - Важные определения
Глава 2 LinuxCNC Integrators Manual Глава II - Аппаратное обеспечение (Hardware)
Глава 3 LinuxCNC Integrators Manual Глава III - Конфигурационные файлы
Глава 4 Доделать! LinuxCNC Integrators Manual Глава IV - Файл INI
Глава 5 Доделать! LinuxCNC Integrators Manual Глава V - LinuxCNC и HAL
Глава 6 Доделать! LinuxCNC Integrators Manual Глава VI - Основы HAL
Глава 7 Доделать! LinuxCNC Integrators Manual Глава VII - Настройка шаговых двигателей
Глава 8 Доделать! LinuxCNC Integrators Manual Глава VIII - Компонетны HAL
Глава 9 Забыли перевести! LinuxCNC Integrators Manual Глава IX - Параллельный порт
Глава 10 Доделать! LinuxCNC Integrators Manual Глава X - Пользовательский интерфейс HAL (Halui)
Глава 11 Доделать! LinuxCNC Integrators Manual Глава XI - Примеры HAL
Глава 12 Доделать! LinuxCNC Integrators Manual Глава XII - Virtual Control Panel - Виртуальная панель управления