Страница 57 из 71

Конфигурация EMC2 LinuxCNC

Добавлено: 25 окт 2010, 12:36
Nick
После того как Вы произвели установку EMC2, можно переходить к конфигурации.
Начнем с простого пути, использования утилиты Stepconf. Sterconf это графическая утилита для настройки EMC2 для различных станков. Конечно она не реализует все возможности EMC2, но подойдет для большинства станков со step-dir контроллерами управляемыми через lpt порт. Stepconf устанавливается вместе с EMC2 и его можно запустить из меню Приложения -> EMC2 -> Stepconf.
Это незавершенный раздел, Вы можете помочь в его оформлении.
Нужны исправления, комментарии. Публикуйте их в этой теме.

Содержание


Настройка EMC2 (338330 просмотров) <a class='original' href='./download/file.php?id=781&mode=view' target=_blank>Загрузить оригинал (41.24 КБ)</a>
Настройка EMC2
Конфигурация ЕМС2 (338330 просмотров) <a class='original' href='./download/file.php?id=780&mode=view' target=_blank>Загрузить оригинал (44.23 КБ)</a>
Конфигурация ЕМС2

Выбор конфигурации

В первом окне Stepconf есть выбор: создать новую конфигурацию или изменить старую. Выбираем создать новую. Также можно проставить галки напротив Create shortcut, чтобы в последствии запускать EMC2 с созданной конфигурацией в один клик.

Screenshot-EMC2 Stepper Mill Configuration-2.png (338330 просмотров) <a class='original' href='./download/file.php?id=782&mode=view' target=_blank>Загрузить оригинал (95.31 КБ)</a>

Параметры станка, контроллера и быстродействия

Настройки станка
Вводим название станка, в документации говорится, что можно использовать заглавные и строчные буквы, цифры и знаки "-" и "_".
Выбираем конфигурацию осей. XYZ (Фрезер), XYZA (4-х осевой фрезер) или XZ (Токарный станок). Названия только для примера. Если у Вас двух осевой станок, то можете выбрать XYZ, и ось Z оставить не настроенной.
Единицы измерения станка: дюймы или миллиметры.

Настройки контроллера
Можно выбрать из набора предустановленных параметров если Ваш контроллер в список. Или настроить все самому.
Параметры Step time, Step space, Direction hold, Direction setup смотрите в документации к вашему контроллеру.

Настройки lpt
Если у Вас только один lpt, то можно ничего не трогать по умолчанию стоит установка стандартного адреса lpt порта.

Настройки быстродействия
Base period - это одна из основных величин быстродействия, она определяет максимальную скорость работы с контроллером. Она определяет так называемый heartbeat (сердцебиение системы в целом) от которого зависит время для генерации сингала Step. Фактически, чем меньше base period тем больше максимальная частота генерации шагов (например, при Base period = 30 000 ns максимальная частота генерации шагов равна 33333Гц, что при 200 шагах на оборот в режиме микрошага 1:8 дает максимум 20 оборотов в секунду).

Base period зависит от параметров компьютера. Правильно определить base period можно при помощи утилиты Latency test, она тоже входит в состав EMC2. Latency это задержка с которой компьютер может остановить процесс работы для обработки внешнего запроса. В нашем случае, запросом является периодичный "heartbeat" (стук сердца) на основе которого вычисляется нужное время для следующего шага. Для того, чтобы контроллер работал правильно и не пропускал шаги минимальный base period должен быть равным длительность direction setup+direction hold+step space+maximum latency.

Итак, запускаем Latency test, и пытаемся нагрузить компьютер разными задачами, чтобы наверняка получить максимальную задержку. Можно запустить проигрываться фильм, полазить по интернету, скопировать большой файл, перемещать окна. Через несколько минут смотрим значение Base thread Max jitter (максимальное дрожание base period) и вставляем это значение в соответствующую строку в Stepconf.

Onscreen prompt for tool change - уведомление о смене инструмента. Если эта опция включена, то EMC2 будет останавливаться и выдавать сообщение о смене инструмента, каждый раз, когда в управляющей программе будет встречаться код M6. Оставьте эту опцию включенной, только если Вы не собираетесь делать автоматическую смену инструмента.

Настройка LPT для EMC2 (338330 просмотров) <a class='original' href='./download/file.php?id=783&mode=view' target=_blank>Загрузить оригинал (99.1 КБ)</a>
Настройка LPT для EMC2
Настройка LPT для EMC2 (338330 просмотров) <a class='original' href='./download/file.php?id=784&mode=view' target=_blank>Загрузить оригинал (88.29 КБ)</a>
Настройка LPT для EMC2

Настройки пинов LPT

На этой странице мы можем настроить значения всех пинов параллельного порта.
Значения для этих настроек смотрите в документации к контроллеру.

Настройка осей станка в EMC2 LinuxCNC (338330 просмотров) <a class='original' href='./download/file.php?id=785&mode=view' target=_blank>Загрузить оригинал (66.88 КБ)</a>
Настройка осей станка в EMC2 LinuxCNC
Проверка настроек осей LinuxCNC (338330 просмотров) <a class='original' href='./download/file.php?id=786&mode=view' target=_blank>Загрузить оригинал (21.23 КБ)</a>
Проверка настроек осей LinuxCNC

Настройка осей станка

Далее настраиваем все оси станка:

Motor Steps Per Revolution - количество шагов двигателя на один оборот.

Driver Microstepping - настройка микрошага контроллера. Для микрошага 1:8 устанавливайте "8"

Pulley Ratio - значение редуктора, если между валом двигателя и ходовым винтом стоит редуктор установите передаточное число.

Leadscrew Pitch - шаг ходового винта. Можно поменять направление движения вдоль оси установив отрицательное значение шага винта.

Maximum Velocity - Максимальная скорость перемещения.

Maximum Acceleration - Максимальное ускорение по данной оси.

Home Location - положение начала оси. Это положение в котором станок остановится после поиска начала.

Table Travel - границы оси. Положение начала должно быть внутри table travel, причем оно не должно совпадать с границами оси.

Home Switch Location - Положение концевика начального положения. Если у Вас совмещены home switch и limit switch в одном концевике, то значение home location не должно быть равным home switch location иначе появится ошибка "joint limit error", т.е. станок не должен остановиться в точке срабатывания ограничительного концевика.

Home Search Velocity - скорость поиска начала оси. Если концевой датчик расположен рядом с концом оси это значение должно быть выбрано с учетом того, что станок должен будет успеть остановиться до того как он ударится о конец оси. Если концевик замыкается только когда ответная часть рядом с ним, то скорость должна быть выбрана таким образом, чтобы станок успел остановиться пока концевик не разомкнулся. Если станок движется в противоположную сторону от концевика при поиске начала установите отрицательную скорость.

Home Latch Direction - направление уточнения начала, после первоначальной установки начала, они уточняются на очень маленькой скорости. Если выбрана опция "Same" при повторном срабатывании концевика начала будут установлены, если "Opposite" станок будет медленно откатываться пока концевик не разомкнется.

Ниже будут приведены вычисления параметров оси:
  • Time to accelerate to max speed - время ускорения до максимальной скорости (время остановки)
  • Distance to accelerate to max speed - дистанция ускорения до максимальной скорости (дистанция остановки)
  • Pulse rate at max speed - частота сигналов на максимальной скорости
  • Axis SCALE - количество шагов в одной единице измерения шагов/мм (шагов/дюйм)
После введения всех параметров ось можно протестировать. Для этого нажимаем Test this axis.

Настройка управления шпинделем в EMC2 (338330 просмотров) <a class='original' href='./download/file.php?id=787&mode=view' target=_blank>Загрузить оригинал (32.67 КБ)</a>
Настройка управления шпинделем в EMC2

Настройка шпинделя

Если шпиндель регулируется при помощи ШИМ:
Устанавливаем Carrier frequency (Несущая частота) согласно инструкции к Вашему контроллеру шпинделя.
Устанавливаем Speed 1, Speed 2, PWM 1, PWM 2 - значения скоростей в оборотах в минуту при заданном значении ШИМ. Эту информацию можно найти в инструкции к Вашему контроллеру, либо попробовать определить самостоятельно. Этими параметрами определяется линейная зависимость скорости шпинделя от значения PWM.

Дополнительные настройки EMC2 (338330 просмотров) <a class='original' href='./download/file.php?id=788&mode=view' target=_blank>Загрузить оригинал (70.45 КБ)</a>
Дополнительные настройки EMC2

Настройка дополнительного интерфейса

  • Include Halui - Добавить пользовательскую панель Halui.
  • Include PyVCP GUI panel - Добавить панель pyVCP.
    См. статью по настройке и применению pyVCP в EMC2
  • Include ClassicLadder PLC - Добавить программируемый контроллер на лестничной логике (Programmable Ladder Logic Controller).

Окончание настройки EMC2 (338330 просмотров) <a class='original' href='./download/file.php?id=789&mode=view' target=_blank>Загрузить оригинал (74.23 КБ)</a>
Окончание настройки EMC2

Заключение


См. также

Нахождение максимальной скорости и ускорения станка
PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Re: Вопросы новичка по Glade + HAL

Добавлено: 14 фев 2018, 14:23
magrelo
Чтобы новую тему не создавать, спрошу тут про логический элемент HAL. Есть номер инструмента tool-number.
Чтобы узнать какой в данный момент инструмент сейчас использую такую громоздкую конструкцию в HAL:
net tool-number conv-s32-u32.1.in
net tool-numberu conv-s32-u32.1.out bitslice.1.in
net tool-laser bitslice.1.out-00 and2.0.in1 ну и т.д.
По документации не нашел элемента , сравненивающем два чила s32. Есть элемент comp но он требует floating thread что то там. Нужно просто (tool-number == 2)?

Re: Вопросы новичка по Glade + HAL

Добавлено: 14 фев 2018, 14:28
nkp
magrelo писал(а):Чтобы узнать какой в данный момент инструмент
но емс и так вроде знает "какой сейчас инструмент"
зы
может всё можно сделать проще?

Re: Вопросы новичка по Glade + HAL

Добавлено: 15 фев 2018, 11:03
magrelo
нет ) у меня на станке 2 инструмента: фреза и лазер китайский 3Вт для маркировки. Я в логике по номеру инструмента переключаю через реле питание инструмента и в лазере еще надо шим модуляцию на холостых переходах выключать.
Вот логика на которую влияет смена инструмента:
#Рабочий проход и инструмент лазер = and2.0.out
net motion-types motion.motion-type conv-s32-u32.0.in
net motion-typeu conv-s32-u32.0.out bitslice.0.in
net motion-work bitslice.0.out-01 and2.0.in0
net tool-ready iocontrol.0.tool-number conv-s32-u32.1.in
net tool-readyu conv-s32-u32.1.out bitslice.1.in
net tool-laser bitslice.1.out-00 and2.0.in1
#Или инструмент шпиндель = or2.0.out
net laser-on and2.0.out or2.0.in0
net tool-laser not.0.in
net tool-spindle not.0.out or2.0.in1
#И если в программе ШИМ спинделя задано, то генерируем ШИМ = and2.1.out
setp parport.0.pin-14-out-invert 1
net spindle-pwm and2.1.in0
net pwm-on or2.0.out and2.1.in1
net pwm-out and2.1.out parport.0.pin-14-out

Просто может вместо bitslice можно что то по проще исполльзовать?
Номера инструментов 1-лазер, 2-фреза. 0й я так понял в станке нельзя использовать.

Re: Вопросы новичка по Glade + HAL

Добавлено: 15 фев 2018, 11:26
nkp
magrelo писал(а):0й я так понял в станке нельзя использовать.
это для работы "без инструмента"
--------------
вариантов как всегда много несколько)

оставить всё как есть(работает же я так понял ;) )
-------
конвертнуть не в u32 ,а в float и дальше хоть компаратором,хоть near(conv_s32_float )
----------
делать все это в .py файле (раз это уже glade)

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 24 фев 2018, 02:15
Maxmarinin
Всем привет! Решил перейти на EMC с mach3. Установил Debian Wheezy и LinuxCNC 2.7 При загрузке УП постоянно вылетают ошибки в синтаксисе УП, типа этой. УП генерируется постпроцессором emc в HsmWorks. Куда копать?

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 24 фев 2018, 03:02
PKM
Строка 2 лишняя

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 24 фев 2018, 13:20
Maxmarinin
Спасибо всё пока получается! Постпроцессор -то EMC, но он для фрезера, а у меня токарка, я смотрю что он на "y" ругается .В общем ночь была. Станок переделал на сервы и решил с Mach3 на LinuxCNC перейти но пока будут работать через LPT по Step-dir, приводы позволяют. И вопрос к знатокам, где настроить компенсацию люфта? С X всё в порядке, там швп C5 с преднатягом, а вот по Z обычная C7 и люфт 7-8 соток. Вторая гайка покупалась отдельно и неприлично болтается на швп, регулировка помогает мало. Ну и с нарезкой резьб надо разобраться, старый диск с одной меткой справлялся прекрасно, но из под Mach.

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 24 фев 2018, 15:03
Serg
Maxmarinin писал(а):И вопрос к знатокам
Читайте документацию, она довольно подробная и можно найти даже переведённые части - сэкономите много своего времени.

Синий китаец на TB6560

Добавлено: 14 мар 2018, 13:55
pokery
LinuxCNC установил, теперь занялся конфигурацией. Есть несколько вопросов.
1. Латенси тест показывает запредельное значение в 2 миллиона. Я так думаю, что это далеко не нормально. Куда копать, чтобы посмотреть, что не так? Система: АМД феном 3-х ядерный, плата Gygabite MA-770 DS3, 4 гига оперативки, видео MSI 9600GT 1Gb.
2. Вот эти значения Step time, Step space, Direction hold, Direction setup на что-то влияют, если их оставить по-умолчанию? В документации к моему контроллеру ничего такого не нашёл (синяя плата 3-х осевая, HY-TB3DV-M).
3. Вместо винтов на станке буду использовать обычные винты на М8. Правильно ли я ввёл значение 1.25 в поле мм/об? По крайней мере, перемещение происходит вроде как надо, т.е. от минус 15мм, до +15.
4. Движки Nema 23 вращаются не очень быстро, максимальные значения, которые удалось поставить, это 10 мм/сек максимальная скорость. Если ставить 11 и больше, двиг начинает пищать и тут же останавливается. На плате есть джамперы, установил следующее: 25% Current, Fast Decay, 1/2 шаг.

Вроде бы остальных вопросов пока нет.

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 14 мар 2018, 19:26
solo
pokery писал(а):1. Латенси тест показывает запредельное значение в 2 миллиона
с этого надо начать , а то может материнка не годится ,
лично я в биосе повыключал все, что относится к энергосбережению , установил мах частоту процессора , оставил одно рабочее ядро ,

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 14 мар 2018, 20:20
pokery
В биосе отключил всё на странице Power Manegement. У пунктов, где нет слова Disable, они просто переключатся на другие значения, но не отключаются.
140320181426.jpg (3617 просмотров) <a class='original' href='./download/file.php?id=134634&mode=view' target=_blank>Загрузить оригинал (220.41 КБ)</a>
На всякий случай отключил USB планшет. Всё одно:
140320181427.jpg (3617 просмотров) <a class='original' href='./download/file.php?id=134635&mode=view' target=_blank>Загрузить оригинал (233.91 КБ)</a>
Насчёт ядер, в биосе таких пунктов нет, только частота проца, памяти и шины.

Сегодня прочитал (ну насколько я понял, с английским не очень), что этот тест работает эмпирически (не знаю, что это), т.е. если во время работы EMC2 не запускать другие приложения, то всё будет в порядке. В принципе я так и попробовал: 3д шестерёнки - никаких изменений, терминал - тоже, как только запускаю либр офис или магазин убунты - сразу 2 мильона с половиной. Поставил цифру 30000 в настройки, погонял движки - вроде всё нормально (ну как нормально, со скоростями не понял, а может это у них максимум у этих движков).

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 15 мар 2018, 12:40
solo
pokery писал(а):с английским не очень
я сам с английским совсем ни как
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Latency-Test
вот здесь есть материнки "Гигабит" и примеры что и как настраивали в биосе , может будет полезно ,
просто с такими показателями МАХ джитер частота импульсов степ буде около 200 гц , как по мне это плохо и медленно

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 16 мар 2018, 15:12
pokery
По таблице материнок не понял ничего, относительно гигабайтных- какой то SMI, в биосе такого нет, прочитал про это дело - то надо его отключить, то не надо. Там же по этой ссылке есть про это тема, какие то скрипты, не стал пробовать, да и не разбираюсь в этом.

Насчёт Max Jitter. Оказывается перескакивает сразу на значение 2 с половиной миллиона после нажатия клавиш Alt + Tab (т.е. переключение задач), причём даже тогда, когда запущен только латенси тест. Если это сочетание клавиш не нажимать, то выше 19000 не поднимается, причём даже тогда, когда запускать на фоне всё остальное, включая либр офис, какое-нибудь видео, копирование файлов и т.д. Странно.

По поводу значений Step time, Step space, Direction hold, Direction setup. Есть в документации к LinuxCNC таблица контроллеров, синий китаец идёт самым первым, там все четыре значения по 150000, но у меня только максимум можно ввести сто тысяч, что я и сделал. Разницы не увидел никакой.

По поводу значения переключателя Current на контроллере. Попробовал поставить на 50%, движки сразу греться сильно стали, так что оставил на 25%.

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 22 мар 2018, 01:51
ScrewDriver
Парни, появился небольшой вопрос.
Во всю настраиваю LinuxCNC, собственно споткнулся вот об какую штуку:
если концевик стоит в максимуме оси, то система доезжает до него и дальше радостно едет в ноль. Можно это где-то переключить, чтобы у концевика ось останавливалась?
Грубо говоря поехала она в плюс по оси, на 299 встретила концевик, ну и пусть там и остается, нечего у нули катить обратно.

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 22 мар 2018, 02:05
PKM
В ini параметр HOME сделать равным HOME_OFFSET

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 22 мар 2018, 02:11
ScrewDriver
PKM писал(а): В ini параметр HOME сделать равным HOME_OFFSET
Эм... я пока только графическим конфигуратором ковырялся =) Чет даже стыдно.
Спасибо, завтра попробую этот параметр поменять.

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 23 мар 2018, 02:21
Maxmarinin
Всем привет! На EMC перешёл месяц назад, а мозг уже где-то на восьмом месяце :oops: Есть токарный станок на сервах, надо резать резьбы, сделал энкодер шпинделя.
Энкодер шпинделя.jpg (3447 просмотров) <a class='original' href='./download/file.php?id=135342&mode=view' target=_blank>Загрузить оригинал (879.93 КБ)</a>
Готовую конфигурацию нашёл тут: http://7xcnc.com/hardware/encoder/ Отредактировал свои custom.hal и custom_postgui.hal, а прога не грузится, ругается Путем изучения документации, подправил файлы всё стало грузиться но работать не начало. Сразу после запуска LCNC светодиод горит зелёным, типа шпиндель вращается, а после включения шпинделя загорается красным, ну типа стоим. При этом оси не едут и программа не выполняется. Halscope сигналы encoder.0.phase-Z и encoder.0.phase-A отображает. Может кто из гуру посмотрит на конфиги и сразу ткнёт меня носом, буду благодарен
custom.hal
############# Spindle Encoder #############
# add scale and lowpass, these will be used in custom_postgui.hal
loadrt scale count=1
loadrt lowpass count=1


# add the encoder to HAL and attach it to threads.
loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread

# set the HAL encoder to 60 pulses per revolution.
setp encoder.0.position-scale 60

# set the HAL encoder to non-quadrature simple counting using A only.
setp encoder.0.counter-mode true
#setp encoder.0.counter-mode 1 - alternative line

# connect the HAL encoder outputs to LinuxCNC.
net spindle-position encoder.0.position => motion.spindle-revs
net spindle-velocity encoder.0.velocity => motion.spindle-speed-in
net spindle-index-enable encoder.0.index-enable <=> motion.spindle-index-enable

# connect the HAL encoder inputs to the real encoder.
net spindle-phase-a encoder.0.phase-A <= parport.0.pin-11-in
net spindle-phase-b encoder.0.phase-B
net spindle-index encoder.0.phase-Z <= parport.0.pin-12-in
############# End Spindle Encoder #############

# load a near component and attach it to a thread
loadrt near
addf near.0 servo-thread
loadrt abs
addf abs.0 servo-thread
addf scale.0 servo-thread

# connect one input to the commanded spindle speed
net spindle-cmd => near.0.in1

# connect one input to the encoder-measured spindle speed
net spindle-velocity => near.0.in2

# connect the output to the spindle-at-speed input
net spindle-at-speed motion.spindle-at-speed <= near.0.out

# set the spindle speed inputs to agree if within 1%
setp near.0.scale 1.01

#net spindle-fb-filtered-rps => abs.0.in
#net spindle-fb-filtered-abs-rps => scale.0.in

custom_postgui.hul
# **** Setup of spindle speed display using pyvcp -START ****
# **** Use ACTUAL spindle velocity from spindle encoder
# **** spindle-velocity bounces around so we filter it with lowpass
# **** spindle-velocity is signed so we use absolute component to remove sign
# **** ACTUAL velocity is in RPS not RPM so we scale it.

setp scale.0.gain 60
setp lowpass.0.gain 0.010000
net spindle-velocity => lowpass.0.in
net spindle-fb-filtered-rps lowpass.0.out => abs.0.in
net spindle-fb-filtered-abs-rps abs.0.out => scale.0.in
net spindle-fb-filtered-abs-rpm scale.0.out => pyvcp.spindle-speed

# **** set up spindle at speed indicator ****

net spindle-cmd => near.0.in1
net spindle-velocity => near.0.in2
net spindle-at-speed <= near.0.out
setp near.0.scale 1.500000
net spindle-at-speed => pyvcp.spindle-at-speed-led

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 23 мар 2018, 02:41
PKM
Навскидку 1% очень мало здесь

# set the spindle speed inputs to agree if within 1%
setp near.0.scale 1.01

Для пробы увеличить до 1.2

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 23 мар 2018, 09:41
solo
Maxmarinin писал(а):Сразу после запуска LCNC светодиод горит зелёным, типа шпиндель вращается, а после включения шпинделя загорается красным, ну типа стоим
может просто надо инвертировать сигнал motion.spindle-on , обычно об этом сигнале упоминается в "мой станок. hal"
Re: EMC2 Integrators Manual Перевод на русский язык #28

Re: Конфигурация EMC2 LinuxCNC

Добавлено: 23 мар 2018, 12:20
Maxmarinin
По поводу масштаба, проверю когда доберусь до станка. А на счет motion.spindle-on (bit, out), так что-то я вообще его у себя в hal его не нашёл. А ведь ещё, видимо, должны быть прописаны motion.spindle-reverse (bit, out) и motion.spindle-revs (float, in) Для корректного выполнения перемещений синхронизированных со шпинделем, этот сигнал должен быть завязан на пин положения энкодера шпинделя. Энкодер шпинделя должен быть масштабирован согласно увеличению spindle-revs на 1.0, для каждого оборота шпинделя в направлении часовой стрелки (M3). Вот мой основной hal
# Generated by stepconf 1.1 at Sun Feb 25 01:22:49 2018
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd-rpm <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-at-speed => motion.spindle-at-speed

net xstep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net xdir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable

setp stepgen.1.position-scale [AXIS_2]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
setp stepgen.1.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.1.position-cmd
net zpos-fb stepgen.1.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.1.step
net zdir <= stepgen.1.dir
net zenable axis.2.amp-enable-out => stepgen.1.enable

net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared