Страница 1 из 12

ЕМС2 и ШД с энкодером

Добавлено: 07 авг 2011, 12:05
намбаван
решил создать тему,сто процентов кому то будет нужно :)
вот почти аналогичная:
http://cnc-club.ru/forum/viewtopic.php?f=15&t=928
пусть будет в виде пошагового мануала,а то я например достаточно долго не мог понять куда конкретно нужно вставлять куски кода из темы со ссылкой выше :oops:
итак идем в папку мой-станок (на рабочем столе,по названию конфигурации),в папке открываем "мой станок.hal" и копипастим туда вот такой кусочек из той же темы:

Код: Выделить всё

# описываем энкодер

loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 20.000000
net Xpos-phase-a encoder.0.phase-A
net Xpos-phase-b encoder.0.phase-B
net Xpos-index encoder.0.phase-Z
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-index <= parport.0.pin-11-in

# конец
теперь содержание полное файла выглядит так:

Код: Выделить всё

# Создан stepconf в Wed Dec 11 02:54:53 2002
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out  "
setp parport.0.reset-time 1000
loadrt stepgen step_type=0,0,0 

# описываем энкодер

loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 20.000000
net Xpos-phase-a encoder.0.phase-A
net Xpos-phase-b encoder.0.phase-B
net Xpos-index encoder.0.phase-Z
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-index <= parport.0.pin-11-in

# конец

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 <= motion.spindle-speed-out
net din-01 => motion.digital-in-01
net din-02 => motion.digital-in-02

net xstep => parport.0.pin-01-out
setp parport.0.pin-01-out-reset 1
net xdir => parport.0.pin-02-out


net din-01 <= parport.0.pin-12-in
net din-02 <= parport.0.pin-13-in


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 24000
setp stepgen.0.dirsetup 223000
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_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 24000
setp stepgen.1.dirsetup 223000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 24000
setp stepgen.2.dirsetup 223000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.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
потом в емс кнопка"станок"-hal метр-encoder.0.counts
вот так это выглядит на мониторе,если выбрать"ножки"когда мотор крутится,то поочередно моргают 1 и 0:
http://s43.radikal.ru/i099/1108/3c/d472057c0715.png
я хотел посмотреть перемещения и рядом,на вкладке "параметры" нашел вот такое,но там цифры не меняются :(
http://s55.radikal.ru/i149/1108/a3/9fdfb19f4589.png
где-нибудь можно посмотреть перемещение по энкодеру?

Re: ЕМС2 и ШД с энкодером

Добавлено: 07 авг 2011, 13:31
Nick
Для того, чтобы посмотреть положение по энкодеру нужно смотреть пин encoder.0.position.

Re: ЕМС2 и ШД с энкодером

Добавлено: 08 авг 2011, 23:03
Nick
По личной просьбе, раскроем тему до конца :).

Итак, первое, с чем нужно определиться. Для чего хотим управлять шаговиком как сервой. По идее, скорости и дополнительного момента на высоких оборотах ШД это не прибавит. Единственное обоснованное улучшение контроль пропуска шагов и их компенсация, если пропуск произойдет.

Как все это будет реализовываться. В случае когда мы используем серво двигатель, есть несколько вариантов управления:
  • контроль положения
  • контроль скорости
  • контроль момента
С шаговым двигателем контролировать момент не получится, поэтому есть два варианта: контроль положения и контроль скорости.

Управление ШД в EMC2

В EMC2 за управление шаговым двигателем отвечает компонент stepgen. Он получает команды от планировщика траекторий и на основе них создает импульсы для управления шаговым двигателем. Рассмотрим некоторые пины stepgen, которые нам понадобятся для управления шаговым двигаталем в режиме серво двигателя:
  • (FLOAT) stepgen.<chan>.position-cmd – Желаемое положение мотора, в единицах измерения положения (только для режима положения).
  • (FLOAT) stepgen.<chan>.velocity-cmd – Желаемая скорость мотора, в единицах измерения положения в секунду (только в режиме контроля скорости).
  • (S32) stepgen.<chan>.counts – Обратная связь положения в тиках счетчика, обновляется посредством capture_position().
  • (FLOAT) stepgen.<chan>.position-fb – Обратная связь положения в единицах измерения положения, обновляется при помощи capture_position().
Для изменения режима управления на серво контроллер, все, что нужно это добавить к setpgen обратную связь. По умолчанию, EMC2 считает, что шаговый двигатель не пропускает шагов, поэтому обратная связь берется напрямую из выхода управляющих сигналов. поэтому на шаговых двигателях не должна возникать ошибка FERROR - превышение максимального отклонения от траектории.

Добавляем контроль положения шагового двигателя через энкодер

Если мы хотим связать энкодер и контроллер ШД, то нужно пин выхода энкодера encoder.<chan>.position связать с пинов входа обратной связи stepgen.
т.е. просто добавляем строчку
net x-feedback encoder.<chan>.position => stepgen.<chan>.position-fb
т.е. создаем сигнал с именем x-feedback, который связывает описанные пины.

Делаем серву из шагового двигателя с контролем положения

Если мы все же хотим сделать полноценную серву, то нам придется создавать для нее цикл pid.
Для этого надо будет загрузить специальный компонент pid, и все его необходимые функции (точно также, как мы это делаем для сервы).
(! добавлю код позже !)

Потом настраиваем все параметры пид, опять же как для любой сервы.
(! добавлю код позже !)

И переходим к самому главному:
Заводим обратную связь от энкодера в pid контроллер.
net x-feedback encoder.<chan>.position => pid.<chan>.feedback
И заводим пин вывода pid на вход stepgen.velocity-cmd или stepgen.position-cmd, в зависимости от того, чем хотим управлять.
Т.е.
net x-output pid.<chan>.output => stepgen.<chan>.velocity-cmd
или
net x-output pid.<chan>.output => stepgen.<chan>.position-cmd

:attention: Если мы хотим управлять шаговым двигателем в режиме управления скоростью, это нужно указать во время загрузки компонента stepgen, т.е. в строчке
loadrt stepgen step_type=0,0,0
добавить тип управления для stepgen (p - управление положением, v - управление скоростью)
loadrt stepgen step_type=0,0,0 ctrl_type=p,p,v

-------------------------------------------------------------------

Теперь вопросы:
1. какой тип управления интересен?
2. в каком станке собираешься применять такие двигатели/контроллеры? И вообще, опиши свой станок. Если есть фотографии, тоже прикрепляй их сюда, могут быть полезными...
3. И главное, чего хочешь этим добиться :)?

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 07:49
намбаван
станок мне нужен для обработки алюминия,это первый мой станок(ещё не до конца сделан-нет одного контроллера,концевиков,датчиков,всей проводки)опыта фрезеровки нет вообще,ни на чпу,ни на ручных станках.производительность шпинделя и реальная жесткость станка в работе мне неизвестна,исхожу из минимума-крошечный съем и большое количество проходов.станок для хобби и работы в квартире-производительность не важна,пусть хоть пару суток подряд пилит-шпиндель тихий,не высокооборотный.соответственно энкодер на 99% нужен чтобы не было пропусков шагов.1% оставлен скорее для любопытства-попробовать позиционирование с разрешением меньше,чем один шаг(контроллеры до 1/250 шага,энкодеры 1000 имп/оборот)но это совершенно неактуально :)

станок из алюминия формата А4,зет~80 мм,цилиндрические направляющие,каретки SC,винты трапеция 14х3,подвижный стол,~25 кг веса.полноценная презентация с фото будет позже,после освоения и первых изделий :)

сейчас "мой станок.hal" такой же,как в первом посте темы,какие то сигналы с энкодера идут,в encoder.0.position при вращении мотора меняются цифры 0 и 0.05,в принципе для обратной связи этого наверно достаточно,в емс есть возможность посмотреть перемещение по энкодеру в мм. или сумму сигналов?

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 09:51
Nick
намбаван писал(а):энкодер на 99% нужен чтобы не было пропусков шагов.
Нормально настроенный шаговый двигатель не должен пропускать шагов вообще. Даже в режиме 24х7. Но если энкодеры все равно есть, то почему бы не попробовать :).

1/250 шага - это от лукавого :), тем более ты ее не увидишь, максимум 1000имп/оборот = это 200шагов на оборот * 4 (микрошаг 1/4). Вообще, на сколько я понимаю микрошаг обычно используют не для улучшения разрешающей способности, адля большей плавности хода двигателя и не стоит забывать, что микрошаг сильно снижает момент ШД.

А как у тебя все подключается к компу? По lpt или есть MESA? Просто для 3-х осей с шаговыми + энкодерами + концевые датчики + шпиндель одного lpt может не хватить. Да и энкодер с шаговиком будет гораздо лучше обрабатываться контроллером в МЕСЕ, чем на ЦП компа.
намбаван писал(а):в емс есть возможность посмотреть перемещение по энкодеру в мм. или сумму сигналов?
По идее, на пине position и должна быть сумма, точнее реальное положение оси в единицах станка. Сейчас гляну, может ты что-то не так настроил...

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 12:10
Nick
setp encoder.0.position-scale 20.000000
Этот пин должен быть равен количество тиков на одну единицу измерения, т.е. при 1000 имп на оборот, и винте 14х3, он должен быть
1000/3 = 333.333333
setp encoder.0.position-scale 333.333333

net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-index <= parport.0.pin-11-in

Тут наверное я ошибся, нужно завести фазу А и В, фаза Z - index (если она есть у энкодера) нужна только для поиска нулей осей. Поэтому он у тебя и скачет между двумя значениями - думает, что ты двигатель туда-сюда дергаешь. Т.е. должно быть:
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-phase-b <= parport.0.pin-11-in

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 12:38
намбаван
Но если энкодеры все равно есть, то почему бы не попробовать :).
именно!к тому это мне ещё пригодится :think:
а ещё на винтах от пурелогика (заказывал обработку концов)остались следы от патрона и на них гайку подклинивает :(
1/250 шага - это от лукавого :), тем более ты ее не увидишь, максимум 1000имп/оборот = это 200шагов на оборот * 4 (микрошаг 1/4). Вообще, на сколько я понимаю микрошаг обычно используют не для улучшения разрешающей способности, адля большей плавности хода двигателя и не стоит забывать, что микрошаг сильно снижает момент ШД.
сейчас стоит 1/25 и с моим латенси можно ездить макс. метр четырнадцать в минуту,что меня полностью устраивает 8-)
меня бы устроило и 30 см в минуту,потому что на этой скорости очень тихо работает-практически неслышно,а для меня это главное))
А как у тебя все подключается к компу? По lpt или есть MESA?
только lpt.MESA я пока не знаю что такое :?
Просто для 3-х осей с шаговыми + энкодерами + концевые датчики + шпиндель одного lpt может не хватить. Да и энкодер с шаговиком будет гораздо лучше обрабатываться контроллером в МЕСЕ, чем на ЦП компа.
однозначно не хватит,буду покупать PCI-lpt.
надеюсь с теми скоростями,которые мне нужны справится любое счетное устройство ))

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 13:13
намбаван
Nick писал(а):setp encoder.0.position-scale 20.000000
Этот пин должен быть равен количество тиков на одну единицу измерения, т.е. при 1000 имп на оборот, и винте 14х3, он должен быть
1000/3 = 333.333333
setp encoder.0.position-scale 333.333333

net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-index <= parport.0.pin-11-in

Тут наверное я ошибся, нужно завести фазу А и В, фаза Z - index (если она есть у энкодера) нужна только для поиска нулей осей. Поэтому он у тебя и скачет между двумя значениями - думает, что ты двигатель туда-сюда дергаешь. Т.е. должно быть:
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-phase-b <= parport.0.pin-11-in
не запустился что то емс,такую ошибку показал:
Изображение

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 14:24
Nick
С изменениями это вроде не связанно. Он не может открыть LPT. У тебя ничего "такого" не запущено? Самое простое, но не самое true, попробуй перезапуститься :).

Когда появляется такая ошибка, лучше всего сюда просто копируй текст из окна. И лучше в тэг

Код: Выделить всё

. 
---------
MESA - это карта, которая подключается по lpt или вставляется в PCI, обычно это Anything I/O платы, т.е. плата вывода для всего чего угодно. На них есть небольшие процессоры, который отлично используются для контроля ШД, серв, и энкодеров.  Также на них обычно около 30-50 вводов/выводов, что позволяет подключать много периферии. И самое главное, это аппаратура реального времени, поэтому EMC2 может с ней работать!

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 15:41
намбаван
ура!запустился и считает! :cheesy:(после перегрузки)пока я не понял,что конкретно он считает,буду разбираться.вопрос-как сбросить показания энкодера на 0?

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 16:41
Nick
Считать должен миллиметры, если ты scale правильно настроил :).
намбаван писал(а):как сбросить показания энкодера на 0?
В encoder.N.reset пишем 1.
Можно кнопку для этого сделать. А вообще надо бы настроить процедуру обнуления оси по датчикам.

Что там у тебя с датчиками?

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 17:44
намбаван
продуктивный день,я доволен :) промежуточный итог:
encoder.0.position показывает в четыре раза больше,чем есть,т.е. было к примеру 438,000 нажимаешь кнопку"подвинуть на один мм" и он показывает 442,000. в принципе можно поделить ещё на четыре и забыть :) попробую позже разобраться,сейчас у нас поздно уже

encoder.N.reset не понял где искать,в HAL-метре есть encoder.0.reset,но там нельзя изменить значение :? дополнительная кнопка для сброса была бы отличной штукой!

датчиков никаких нету,в качестве концевиков думал использовать кнопки от мышей,потому что есть дома.а с хоме не знаю что делать,скорей всего буду просто руками выставлять каждый раз.

MESA-это вот такие платы?есть ли разница между PCI и ISA?
http://nnz-ipc.dev2.ts2.ru/good/show/15491/15499/
http://www.5sgroup.ru/list_products.php ... l=EX-94632
http://www.insat.ru/prices/info.php?pid=5984

Re: ЕМС2 и ШД с энкодером

Добавлено: 09 авг 2011, 19:58
Nick
ISA это тот же PCI, только 10-15 летней давности :).

MESA вот тут: http://www.mesanet.com/

То что датчиков нет - это плохо. концевые датчики в принципе не нужны, если есть датчик home.
Код для кнопки будет позже.

А пока можешь сделать такую кнопку из кнопки мыши - подключаешь ее к пину ввода и добавляешь строчку в hal:
net reset-encoders parport.0.pin-XX-in => encoder.0.reset
А вообще, там должна быть штука для изменения пинов, толи hal scope, толи hal meter.

Re: ЕМС2 и ШД с энкодером

Добавлено: 16 авг 2011, 09:59
намбаван
добрался наконец до станка :hammer: :spanner: :pliers: :) взял с компа +5 через резистор 380 ом и кнопку нормально разомкнутую завел в пин 13,добавил в хал строчку по инструкии :)
net reset-encoders parport.0.pin-13-in => encoder.0.reset
и не запустился,ошибку написал

Код: Выделить всё

Print file information:
RUN_IN_PLACE=no
EMC2_DIR=
EMC2_BIN_DIR=/usr/bin
EMC2_TCL_DIR=/usr/share/emc/tcl
EMC2_SCRIPT_DIR=
EMC2_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/emc2
EMC2_CONFIG_DIR=
EMC2_LANG_DIR=/usr/share/emc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
EMC2_EMCSH=/usr/bin/wish8.5
EMC2 - 2.4.3
Machine configuration directory is '/home/f12/emc2/configs/мой-станок'
Machine configuration file is 'мой-станок.ini'
INIFILE=/home/f12/emc2/configs/мой-станок/мой-станок.ini
PARAMETER_FILE=emc.var
EMCMOT=motmod
EMCIO=io
TASK=milltask
HALUI=
DISPLAY=axis
NML_FILE=
Starting EMC2...
Starting EMC2 server program: emcsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting EMC2 IO program: io
Shutting down and cleaning up EMC2...
Killing task emcsvr, PID=2453
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
мой-станок.hal:47: Pin 'parport.0.pin-13-in' was already linked to signal 'reset-encoders'
2453
  PID TTY      STAT   TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[ 9766.822086] I-pipe: Domain RTAI registered.
[ 9766.822114] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 9766.822120] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 9766.822134] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 9766.822138] PIPELINE layers:
[ 9766.822145] e25dce20 9ac15d93 RTAI 200
[ 9766.822150] c085cb20 0 Linux 100
[ 9766.883041] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 9766.883559] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 9766.883572] RTAI[sched]: hard timer type/freq = APIC/6224680(Hz); default timing: periodic; linear timed lists.
[ 9766.883580] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 1992176000 hz.
[ 9766.883586] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[ 9766.883843] RTAI[usi]: enabled.
[ 9767.191999] RTAI[math]: loaded.
[ 9767.378754] config string '0x378 out  '
[ 9769.171211] RTAI[math]: unloaded.
[ 9769.394691] SCHED releases registered named ALIEN RTGLBH
[ 9769.408745] RTAI[malloc]: unloaded.
[ 9769.508061] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 9769.521499] I-pipe: Domain RTAI unregistered.
[ 9769.521524] RTAI[hal]: unmounted.
10,11,12,13 у меня включены как цифровые входы

Re: ЕМС2 и ШД с энкодером

Добавлено: 16 авг 2011, 10:39
Nick
намбаван писал(а):мой-станок.hal:47: Pin 'parport.0.pin-13-in' was already linked to signal 'reset-encoders'
Давай сюда свой hal, может ты дважды вставил?

Re: ЕМС2 и ШД с энкодером

Добавлено: 16 авг 2011, 20:05
намбаван
вот он

Код: Выделить всё

# Создан stepconf в Wed Dec 11 02:54:53 2002
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out  "
setp parport.0.reset-time 1000
loadrt stepgen step_type=0,0,0 

# encoder

loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 333.333333
net Xpos-phase-a encoder.0.phase-A
net Xpos-phase-b encoder.0.phase-B
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-phase-b <= parport.0.pin-11-in

# encoder

# KNOPKA SBROS
net reset-encoders parport.0.pin-13-in => encoder.0.reset
# SBROS

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 <= motion.spindle-speed-out
net din-01 => motion.digital-in-01
net din-02 => motion.digital-in-02

net xstep => parport.0.pin-01-out
setp parport.0.pin-01-out-reset 1
net xdir => parport.0.pin-02-out


net din-01 <= parport.0.pin-12-in
net din-02 <= parport.0.pin-13-in


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 24000
setp stepgen.0.dirsetup 223000
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_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 24000
setp stepgen.1.dirsetup 223000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable

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

Re: ЕМС2 и ШД с энкодером

Добавлено: 16 авг 2011, 20:56
Nick
Строка 47 :
net din-02 <= parport.0.pin-13-in

Стирай ее. Если ты пины настраиваешь в hal, то не надо их еще отдельно настраивать. Но это наверное моя ошибка, не понял, что ты их настроил как din.

Re: ЕМС2 и ШД с энкодером

Добавлено: 16 авг 2011, 21:54
намбаван
если её вычеркнуть,то запускается,но энкодер не считает-0 показывает и при нажатой кнопке,и при отпущенной.а если вернуть строку и вычеркнуть кнопку,то считает

Re: ЕМС2 и ШД с энкодером

Добавлено: 16 авг 2011, 22:18
Nick
А на что ты второй провод от кнопки кинул? Т.е. куда ты замыкаешь пин?

Проверь в halscope, чему равен пин. Возможно, его надо будет инвертировать.

Re: ЕМС2 и ШД с энкодером

Добавлено: 17 авг 2011, 10:08
Nick
намбаван писал(а):Заголовок: ЕМС2 и ШД с энкодером
Nick писал(а):А на что ты второй провод от кнопки кинул? Т.е. куда ты замыкаешь пин?

Проверь в halscope, чему равен пин. Возможно, его надо будет инвертировать.
Ник,пожалуйста,черкни схемку подключения кнопки,я совсем запутался :oops: :oops:
Значит так, просто подключаешь один провод кнопки к пину, второй кидаешь на землю - пины с 18 по 25, наверняка на контроллере есть вывод на землю. Потом смотришь, в hal meter, что показывает на этом пине при нажатой и не нажатой кнопке. Результат пиши сюда, так мы поймем:
1. работает или нет кнопка
2. надо ли ее инвертировать