LinuxCNC Integrators Manual Глава V - LinuxCNC и HAL: различия между версиями

Материал из cnc-club
Перейти к навигации Перейти к поиску
 
Строка 7: Строка 7:
  
 
== 5.1 motion (realtime) ==
 
== 5.1 motion (realtime) ==
'''5.1.1 Параметры'''
+
=== 5.1.1 Параметры ===
  
 
Motion загружается при помощи команды motmod. Родственные программы должны быть запущены до motion.
 
Motion загружается при помощи команды motmod. Родственные программы должны быть запущены до motion.
Строка 17: Строка 17:
 
Если необходимое количество аналоговых Вводов/Выводов больше чем значение по умолчанию равное 4, вы можете добавить вплоть до 16 аналоговых Вводов/Выводов, используя опцию '''num_aio''' при загрузке motmod.
 
Если необходимое количество аналоговых Вводов/Выводов больше чем значение по умолчанию равное 4, вы можете добавить вплоть до 16 аналоговых Вводов/Выводов, используя опцию '''num_aio''' при загрузке motmod.
  
'''5.1.2 Pins'''
+
=== 5.1.2 Pins ===
  
 
Эти пины, параметры и функции создаются модулем реального времени motmod.
 
Эти пины, параметры и функции создаются модулем реального времени 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).
  
'''motion.adaptive-feed''' ''(float, in)'' Когда активирована адаптивная подача при помощи M52 P1, устанавливаемая скорость умножается на это значение. Эффект мультипликативен с NML-level превышения подачи и motion.feed-hold.
+
=== 5.1.3 Параметры ===
 
 
'''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, контроллер может определить, что ему возможно не удалось попасть во временные рамки. Каждый раз, когда отмечается такая неудача, это значение увеличивается.
  
'''motion-command-handler.time''' ''(s32, RO)''
+
=== 5.1.4 Функции ===
 
 
'''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) в показанном порядке.
 
Обычно, обе эти функции добавляются к servo-потоку (thread) в показанном порядке.
 
+
*'''motion-command-handler''' Обрабатывает команды motion приходящие от пользователя
'''motion-command-handler''' Обрабатывает команды motion приходящие от пользователя
+
*'''motion-controller''' Запускает контроллер перемещений EMC
 
 
'''motion-controller''' Запускает контроллер перемещений EMC
 
  
 
== 5.2 axis.N (realtime) ==
 
== 5.2 axis.N (realtime) ==
Строка 129: Строка 81:
  
  
 +
=== 5.2.1 Пины ===
  
'''5.2.1 Пины'''
+
*'''axis.N.active''' ''(bit, out)''
 
+
*'''axis.N.amp-enable-out''' ''(bit, out)'' Равен TRUE если усилитель для этого сочленения должен быть включен.
'''axis.N.active''' ''(bit, out)''
+
*'''axis.N.amp-fault-in''' ''(bit, in)'' Должен быть установлен в TRUE если обнаружена внешняя неисправность с усилителем этого сочленения.
 
+
*'''axis.N.backlash-corr''' ''(float, out)''
'''axis.N.amp-enable-out''' ''(bit, out)'' Равен TRUE если усилитель для этого сочленения должен быть включен.
+
*'''axis.N.backlash-filt''' ''(float, out)''
 
+
*'''axis.N.backlash-vel''' ''(float, out)''
'''axis.N.amp-fault-in''' ''(bit, in)'' Должен быть установлен в TRUE если обнаружена внешняя неисправность с усилителем этого сочленения.
+
*'''axis.N.coarse-pos-cmd''' ''(float, out)''
 
+
*'''axis.N.error''' ''(bit, out)''
'''axis.N.backlash-corr''' ''(float, out)''
+
*'''axis.N.f-error''' ''(float, out)''
 
+
*'''axis.N.f-error-lim''' ''(float, out)''
'''axis.N.backlash-filt''' ''(float, out)''
+
*'''axis.N.f-errored''' ''(bit, out)''
 
+
*'''axis.N.faulted''' ''(bit, out)''
'''axis.N.backlash-vel''' ''(float, out)''
+
*'''axis.N.free-pos-cmd''' ''(float, out)''
 
+
*'''axis.N.free-tp-enable''' ''(bit, out)''
'''axis.N.coarse-pos-cmd''' ''(float, out)''
+
*'''axis.N.free-vel-lim''' ''(float, out)''
 
+
*'''axis.N.home-sw-in''' ''(bit, in)'' Должен быть установлен в TRUE если датчик home для этого сочленения замкнут.
'''axis.N.error''' ''(bit, out)''
+
*'''axis.N.homed''' ''(bit, out)''
 
+
*'''axis.N.homing''' ''(bit, out)'' Равен TRUE если сочленение в настоящий момент выставляется в 0.
'''axis.N.f-error''' ''(float, out)''
+
*'''axis.N.in-position''' ''(bit, out)''
 
+
*'''axis.N.index-enable''' ''(bit, I/O)''
'''axis.N.f-error-lim''' ''(float, out)''
+
*'''axis.N.jog-counts''' ''(s32, in)'' Соединен с пином "counts" (количества) внешнего энкодера для использования физического джойстика ручного управления.
 
+
*'''axis.N.jog-enable''' ''(bit, in)'' Когда равен TRUE (в и ручном режиме), любое изменение в "jog-counts" будет приводить к движению. Когда равен FALSE, "jog-counts" игнорируется.
'''axis.N.f-errored''' ''(bit, out)''
+
*'''axis.N.jog-scale''' ''(float, in)'' Устанавливает дистанцию перемещения на каждый "jog-counts", в единицах измерения станка.
 
+
*'''axis.N.jog-vel-mode''' ''(bit, in)'' Если равен FALSE (по умолчанию), колесико ручного управления работает в режиме положения. Ось будет перемещаться ровно на jog-scale для каждой единицы, независимо от того, сколько на это потребуется времени. Если равен TRUE, колесико работает в режиме скорости - движение останавливается когда колесико останавливается, даже если это значит, что заданное движение еще не законченно.
'''axis.N.faulted''' ''(bit, out)''
+
*'''axis.N.joint-pos-cmd''' ''(float, out)'' Заданное положение сочленения (joint) (отлично от положения двигателя). Может существовать отступ между положением сочленения и положением мотора, например, процесс выставления осей задает такой отступ.
 
+
*'''axis.N.joint-pos-fb''' ''(float, out)'' Обратная связь положения сочленения (отлично от обратной вязи положения мотора).
'''axis.N.free-pos-cmd''' ''(float, out)''
+
*'''axis.N.joint-vel-cmd''' ''(float, out)''
 
+
*'''axis.N.kb-jog-active''' ''(bit, out)''
'''axis.N.free-tp-enable''' ''(bit, out)''
+
*'''axis.N.motor-pos-cmd''' ''(float, out)'' Заданное положение для этого сочленения.
 
+
*'''axis.N.motor-pos-fb''' ''(float, in)'' Текущее положение этого сочленения.
'''axis.N.free-vel-lim''' ''(float, out)''
+
*'''axis.N.neg-hard-limit''' ''(bit, out)''
 
+
*'''axis.N.pos-lim-sw-in''' ''(bit, in)'' Должно быть установлено в TRUE если концевой датчик положительного направления этого сочленения замкнут.
'''axis.N.home-sw-in''' ''(bit, in)'' Должен быть установлен в TRUE если датчик home для этого сочленения замкнут.
+
*'''axis.N.pos-hard-limit''' ''(bit, out)''
 
+
*'''axis.N.neg-lim-sw-in''' ''(bit, in)'' Должно быть установлено в TRUE если концевой датчик отрицательного направления этого сочленения замкнут.
'''axis.N.homed''' ''(bit, out)''
+
*'''axis.N.wheel-jog-active''' ''(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)''
 
  
 
<sup>1</sup> В "тривиальной кинематике" есть однозначное соответствие между сочленениями станка (joints) и осями (axis).
 
<sup>1</sup> В "тривиальной кинематике" есть однозначное соответствие между сочленениями станка (joints) и осями (axis).
 
+
=== 5.2.2 Параметры ===
'''5.2.2 Параметры'''
+
*'''axis.N.home-state''' Отражает состояние процедуры выставления оси (отражает текущий шаг процедуры).
 
 
'''axis.N.home-state''' Отражает состояние процедуры выставления оси (отражает текущий шаг процедуры).
 
  
 
== 5.3 iocontrol (userspace) ==
 
== 5.3 iocontrol (userspace) ==
Строка 212: Строка 127:
  
  
 
+
=== 5.3.1 Пины ===
'''5.3.1 Пины'''
+
*'''iocontrol.0.coolant-flood''' ''(bit, out)'' Равен TRUE когда требуется включить поток охлаждения (flood coolant).
 
+
*'''iocontrol.0.coolant-mist''' ''(bit, out)'' Равен TRUE когда требуется охлаждение туманом (mist coolant).
'''iocontrol.0.coolant-flood''' ''(bit, out)'' Равен TRUE когда требуется включить поток охлаждения (flood coolant).
+
*'''iocontrol.0.emc-enable-in''' ''(bit, in)'' Должен быть установлен в FALSE когда существует внешнее состояние E-Stop.
 
+
*'''iocontrol.0.lube''' ''(bit, out)'' Равен TRUE когда заданно включение смазка (возможно СОЖ)
'''iocontrol.0.coolant-mist''' ''(bit, out)'' Равен TRUE когда требуется охлаждение туманом (mist coolant).
+
*'''iocontrol.0.lube_level''' ''(bit, in)'' Должен быть установлен в TRUE когда уровень смазки достаточен.
 
+
*'''iocontrol.0.tool-change''' ''(bit, out)'' равен TRUE когда запрошена замена инструмента.
'''iocontrol.0.emc-enable-in''' ''(bit, in)'' Должен быть установлен в FALSE когда существует внешнее состояние E-Stop.
+
*'''iocontrol.0.tool-changed''' ''(bit, in)'' Должен быть установлен в TRUE когда замена инструмента завершена.
 
+
*'''iocontrol.0.tool-number''' ''(s32, out)'' Текущий номер инструмента.
'''iocontrol.0.lube''' ''(bit, out)'' Равен TRUE когда заданно включение смазка (возможно СОЖ)
+
*'''iocontrol.0.tool-prep-number''' ''(s32, out)'' Номер следующего инструмента , из RS274NGC T-кода.
 
+
*'''iocontrol.0.tool-prepare''' ''(bit, out)'' Равен TRUE когда запрошена подготовка инструмента.
'''iocontrol.0.lube_level''' ''(bit, in)'' Должен быть установлен в TRUE когда уровень смазки достаточен.
+
*'''iocontrol.0.tool-prepared''' ''(bit, in)'' Должен быть установлен в TRUE когда подготовка инструмента завершена.
 
+
*'''iocontrol.0.user-enable-out''' ''(bit, out)'' Равен FALSE когда присутствует внутреннее состояние E-Stop.
'''iocontrol.0.tool-change''' ''(bit, out)'' равен TRUE когда запрошена замена инструмента.
+
*'''iocontrol.0.user-request-enable''' ''(bit, out)'' Равен TRUE когда пользователь запросил сброс E-Stop.
 
 
'''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.
 
  
  
 
{{Оглавление_Integrators_manual}}
 
{{Оглавление_Integrators_manual}}

Текущая версия на 13:05, 14 мая 2014

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