LinuxCNC Integrators Manual Глава VII - Настройка шаговых двигателей

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

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


  1. Загружается драйвер параллельного порта (подробнее см. 9.1).
  1. Функции чтения и записи присоединяются к base thread. 3
  1. Сигналы step и direction (шаг и направление) для осей X, Y, Z подсоединяются к пинам параллельного порта.
  1. Дальнейшие сигналы ввода/вывода (замыкание estop, смены инструмента)
  1. Сигнал включения шпинделя 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 - Виртуальная панель управления