LinuxCNC Integrators Manual Глава VII - Настройка шаговых двигателей
Содержание
- 1 LinuxCNC Integrators Manual Глава VII - Настройка шаговых двигателей
- 2 Настройка шаговых двигателей
- 2.1 7.1 Вступление
- 2.2 7.2 Максимальная частота шагов
- 2.3 7.3 Pinout
- 2.3.1 7.3.1 standard_pinout.hal
- 2.3.2 7.3.2 Обзор standard_pinout.hal
- 2.3.3 7.3.3 Изменения standard_pinout.hal
- 2.3.4 7.3.4 Изменение полярности сигнала
- 2.3.5 7.3.5 Добавление Контроля скорости шпинделя через ШИМ
- 2.3.6 7.3.6 Добавление сигнала enable
- 2.3.7 7.3.7 Добавление внешней кнопки аварийной остановки ESTOP
- 3 Оглавление книги LinuxCNC Integrators Manual
LinuxCNC Integrators Manual Глава VII - Настройка шаговых двигателей
Настройка шаговых двигателей
7.1 Вступление
Предпочтительный способ настройки стандартного станка с шаговыми двигателями - использовать Step Configuration Wizard. См Руководство по началу работы (Getting Started Guide).
Эта глава описывает некоторые более общие настройки, для ручной настройки системы основанной на шаговых двигателях. Из-за большого количества вариантов настройки EMC2, очень сложно документировать их всех, и при этом сохранить этот документ относительно коротким.
Чаще всего EMC2 используют для управления системами на шаговых двигателях. Эти системы используют моторы с драйверами, которые принимают сигналы "шаг" и "направление".
Это одна из самых простых настроек, потому, что моторы работают разомкнуто (нет обратной связи от моторов), тем не менее, система должна быть правильно настроена, чтобы двигатели не блокировались и не пропускали шаги. Большая часть этой главы основана на примере настройки выпускаемой вместе с EMC2. Эта настройка называется stepper, и обычно находится в /etc/emc2/sample-configs/stepper.
7.2 Максимальная частота шагов
С программным генерированием шагов, максимальная частота шагов это один шаг за два BASE_PERIOD-а для вывода шаг-направления. Максимальная необходимая частота шагов это произведение MAX_VELOCITY и INPUT_SCALE оси станка.
Если необходимая частота не достижима, следующие ошибки будут возникать, особенно при быстрых перемещениях в ручном режиме и перемещениях G0.
Если ваши шаговые двигатели не поддерживают квадратурный ввод, используйте этот режим. В квадратурном режиме возможен выполнять один шаг за каждый BASE_PERIOD, что удваивает максимальную частоту шагов.
Другие меры - уменьшение одного или более из:
BASE_PERIOD (установка его в слишком маленькое значение приведет к неотзывчивости компьютера или даже к зависаниям), INPUT_SCALE (если вы можете выбрать другой размер шагов на вашем драйвере шагового двигателя, изменить передаточные числа редукторов или шаг ходового винта) или MAX_VELOCITY и STEPGEN_MAXVEL.
Если никакая комбинация BASE_PERIOD, INPUT_SCALE, и MAX_VELOCITY неприемлема, тогда рассмотрите использование аппаратного генератора импульсов шагов (таких как поддерживаемых EMC2 Universal Stepper Controller, платы Mesa, и других).
7.3 Pinout
Одним из главных недостатков EMC было то, что вы не могли изменить раскладку пинов без перекомпиляции кода из исходников. EMC2 гораздо белее гибкий, и теперь (спасибо Hardware Abstraction Layer (HAL)) вы можете просто задать куда должен идти какой сигнал. См. руководство по HAL, для более подробной информации по HAL.
Как это описано во вступлении и туториале по HAL, у нас есть сигналы, пины и параметры внутри HAL.
Вот те, которые отвечают за наш pinout1:
сигналы: Xstep, Xdir & Xen
пины: parport.0.pin-XX-out & parport.0.pin-XX-in2
В зависимости от того, что вы выбрали в вашем .ini-файле вы будете использовать или стандартный standard_pinout.hal или xylotex_pinout.hal. Эти два файла инструктируют HAL как связать различные сигналы и пины.
Позже мы рассмотрим файл standard_pinout.hal.
1 Замечание: мы показываем только одну ось, чтобы текст был короче, все остальные оси схожи.
2 См. раздел 9.1 для дополнитоельной информации.
7.3.1 standard_pinout.hal
Этот файл содержит несколько команд HAL и обычно выглядит примерно так:
# standard pinout config file for 3-axis steppers # using a parport for I/O # (Стандартный файл конфигурации pinout для трех осевых шаговых # ситием использующих параллельный порт для ввода/вывода.) # # first load the parport driver # (Сначала загружаем драйвер параллельного порта) loadrt hal_parport cfg="0x0378" # next connect the parport functions to threads # read inputs first # затем подключаем функции параллельного порта к потокам # в начале чтение входов addf parport.0.read base-thread 1 # write outputs last # в конце запиcь выходов addf parport.0.write base-thread -1 # finally connect physical pins to the signals # и, наконец, подключаем физические пины к сигналам net Xstep => parport.0.pin-03-out net Xdir => parport.0.pin-02-out net Ystep => parport.0.pin-05-out net Ydir => parport.0.pin-04-out net Zstep => parport.0.pin-07-out net Zdir => parport.0.pin-06-out # create a signal for the estop loopback # Создаем сигнал для закольцовки Estop net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in # create signals for tool loading loopback # создаем сигналы для закольцовки установки инструмента net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed # connect "spindle on" motion controller pin to a physical pin # подключаем пин контроллера "spindle on" (включение шпинделя) к физическому пину. net spindle-on motion.spindle-on => parport.0.pin-09-out ### ### You might use something like this to enable chopper drives when machine ON ### the Xen signal is defined in core_stepper.hal ### Вы можете использовать что-то вроде этого для включения прерывателя для драйверов ### когда станок включен, сигнал Xen определяется в core_stepper.hal ### # net Xen => parport.0.pin-01-out ### ### If you want active low for this pin, invert it like this: ### ### Если вы хотите чтобы активное значение было 0, инвертируйте этот пин: ### # setp parport.0.pin-01-out-invert 1 ### ### A sample home switch on the X axis (axis 0). make a signal, ### link the incoming parport pin to the signal, then link the signal ### to EMC’s axis 0 home switch input pin ### ### Простой датчик home на оси Х (ось 0). Создаем сигнал, ### соединяем пин ввода параллельного порта с сигналом, затем ### соединяем сигнал с пином ввода оси 0 EMC2. ### # net Xhome parport.0.pin-10-in => axis.0.home-sw-in ### ### Shared home switches all on one parallel port pin? ### that’s ok, hook the same signal to all the axes, but be sure to ### set HOME_IS_SHARED and HOME_SEQUENCE in the ini file. See the ### user manual! ### ### Общие датчики home - все на одном пине параллельного порта? ### Это нормально, соедините один и тот же сигнал со всеми осями, но ### не забудьте установить HOME_IS_SHARED и HOME_SEQUENCE в ini файле. ### См. руководство пользователя! ### # net homeswitches <= parport.0.pin-10-in # net homeswitches => axis.0.home-sw-in # net homeswitches => axis.1.home-sw-in # net homeswitches => axis.2.home-sw-in ### ### Sample separate limit switches on the X axis (axis 0) ### ### Простые раздельные концевые датчики на оси X (axis 0) ### # net X-neg-limit parport.0.pin-11-in => axis.0.neg-lim-sw-in # net X-pos-limit parport.0.pin-12-in => axis.0.pos-lim-sw-in ### ### Just like the shared home switches example, you can wire together ### limit switches. Beware if you hit one, EMC will stop but can’t tell ### you which switch/axis has faulted. Use caution when recovering from this. ### ### Также как и c датчиками home, вы можете соединить концевые датчики одним ### проводом. Остерегайтесь, оборонитесь до одного из них, EMC2 остановится, но не ### сможет сказать какой датчик/ось выдал ошибку. Будьте аккуратны, когда ### восстанавливаете работоспособность после такой ошибке. ### # net Xlimits parport.0.pin-13-in => axis.0.neg-lim-sw-in axis.0.pos-lim-sw-in
Строки начинающиеся с ’#’ являются комментариями, и их единственная цель направить читателя на нужные места файла.
7.3.2 Обзор standard_pinout.hal
Есть несколько операций, которые могут быть выполнены во время выполнения/интерпретации standard_pinout.hal
- Загружается драйвер параллельного порта (подробнее см. 9.1).
- Функции чтения и записи присоединяются к base thread. 3
- Сигналы step и direction (шаг и направление) для осей X, Y, Z подсоединяются к пинам параллельного порта.
- Дальнейшие сигналы ввода/вывода (замыкание estop, смены инструмента)
- Сигнал включения шпинделя spindle-on определяется и связывается в пином параллельного порта.
3 Самый быстрый поток в EMC2, обычно код выполняется каждые несколько микросекунд.
7.3.3 Изменения standard_pinout.hal
Если вы хотите изменить файл standard_pinout.hal, все что вам понадобится это простой текстовый редактор. Откройте файл и найдите те части, которые вы хотите изменить.
Если вы, например, хотите изменить пин для сигналов Sep и Dir для оси X, все, что вам нужно сделать это поменять номер в названии ’parport.0.pin-XX-out’:
net Xstep parport.0.pin-03-out
net Xdir parport.0.pin-02-out
может быть заменен на:
net Xstep parport.0.pin-02-out
net Xdir parport.0.pin-03-out
или просто на любые другие числа, которые вам нравятся.
Совет: проверьте, чтобы у вас не было подключено более одного сигнала ка один и тот же пин.
7.3.4 Изменение полярности сигнала
Если аппаратное обеспечение ожидает сигнал типа "активный ноль", установите соответствующие параметры -invert. Например, чтобы изменить сигнал контроля шпинделя:
setp parport.0.pin-09-invert TRUE
7.3.5 Добавление Контроля скорости шпинделя через ШИМ
Если ваш шпиндель может контролироваться при помощи сигнала ШИМ, используйте компонент pwmgen для создания сигнала:
loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value
net spindle-on motion.spindle-on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out
setp pwmgen.0.scale 1800 # Change to your spindle’s top speed in RPM
# Измените на максимальную скорость вашего шпинделя в об/мин-1
Предполагается, что реакция контроллера шпинделя на ШИМ проста: 0% ШИМ дает 0 об/мин-1, 10% ШИМ дает 180 об/мин-1 и т.д.
Если требуется, чтобы минимальное значение ШИМ заставляло шпиндель вращаться, следуйте примеру конфигурации nist-lathe для использования компонента scale (масштаба).
7.3.6 Добавление сигнала enable
Некоторые усилители (драйверы) требуют сигнал enable (включения) перед тем, как они будет принимать команды и будет управлять моторами. Для этих целей есть уже заданные сигналы, называющиеся ’Xen’, ’Yen’, ’Zen’.
Для того, чтобы подсоединить их используйте следующий пример:
net Xen parport.0.pin-08-out
Вы можете иметь либо один пин, который будет активировать все драйверы, либо несколько, в зависимости от ваших установок. Однако, отметьте, что обычно когда одна из осей выходит за пределы, все другие оси будут также отключены, поэтому использование только одного пина/сигнала enable для всех драйверов это обычная практика.
You can either have one single pin that enables all drives; or several, depending on the setup you
7.3.7 Добавление внешней кнопки аварийной остановки ESTOP
Как вы можете увидеть в разделе 7.3.1, конфигурация шаговых систем по умолчанию не подразумевает внешней кнопки ESTOP4. Для добавления простой внешней кнопки вам нужно заменить эту строку:
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
на :
net estop-loop parport.0.pin-01-in iocontrol.0.emc-enable-in
Это подразумевает, что переключатель ESTOP подсоединен к пину 01 параллельного порта. Пока переключатель нажат5, EMC2 будет в состоянии ESTOP. Когда внешняя кнопка отпускается EMC2 сразу переключится в состояние ESTOP-RESET и все, что вам будет нужно, это переключится в состояние ВКЛ (Machine On) и вы будете готовы продолжить работу с EMC2
4 Подробное разъяснение схемы ESTOP описанно на wiki.linuxcnc.org и в руководстве станкостроителя.
5 убедитесь, что вы используете обслуживаемую кнопку ESTOP.
Оглавление книги 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 - Виртуальная панель управления |