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 - Виртуальная панель управления