Настройка EMC2 на простейший драйвер управления ШД

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
igor_66
Новичок
Сообщения: 15
Зарегистрирован: 07 фев 2011, 11:49
Репутация: 0
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение igor_66 »

Добрый день!
Даж не знаю в какой ветке форума задать вопрос, остановился на этой)). Получится ли идеально синхронно управлять двумя ШД в EMC2 по одной оси, включая естественно и два контроллера, а может и один контроллер может гонять двумя ШД ? Это применительно к плазмарезке и к координатному столу.
Вложения
Scan-110404-0001.jpg (4157 просмотров) <a class='original' href='./download/file.php?id=1341&mode=view' target=_blank>Загрузить оригинал (43.99 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

Есть два варианта, прописываем в EMC2 два разных пина на lpt порте.
Функция update компонента stepgen выполняется одновременно для всех генераторов шагов, поэтому задержка в сигналах, если она и будет, будет оооочень маленькой - несколько тактов процессора. Для плазморезки, как впрочем и для всех остальных станков, этого должно быть более чем достаточно.

Второй вариант - разводим один пин LPT, на два контроллера и вообще забываем о ПО. Получится, что EMC2 даже знать не будет, что у тебя два движка.

Однако, люди говорили что лучше оси двигателей завязать между собой дополнительно, повесить между ними ремень, или соединить длинным жестким валом через шестерни. Т.к. иногда ШД могут пропускать шаги, когда этих ШД два вероятность увеличивается. И если например одни двигатель стопорнется, то может перекосить всю конструкцию. Но это так - страшилки, т.к. и с одним движком можно дел наворотить :).

ЗЫ и от ПО это никак зависеть не будет.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение psha »

Если расстояние между движками изрядное, то можно использовать gantrykins и управлять ими независимо.
http://www.linuxcnc.org/component/optio ... g,english/
http://www.linuxcnc.org/docs/2.4/html/m ... ins.9.html
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

А в чем прикол gantrykins? Чем он отличается от простого
net xstep => parport.0.pin-08-out
net xstep => parport.0.pin-09-out

Или от распараллеливания одного пина на два контроллера?

------------
о... конвертация... щас посмотрим...
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение psha »

Возможностью выставлять оси в ноль (home) независимо (но одновременно)
Что для большого пролета может быть актуально
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

А вот это действительно классно!
Роман
Новичок
Сообщения: 18
Зарегистрирован: 20 мар 2013, 14:20
Репутация: 0
Откуда: Ижевск, Удмуртская Респ
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Роман »

Надо настроить емс для фазового режима... в принципе можно было бы сделать нормальную статью чтобы такие как я не мучались потом)
вот собственно вопрос как настроить фазовый режим обращения к моторчикам? вот нашел ветку http://www.cnc-club.ru/forum/viewtopic. ... %BC7#p3874 но там тема не до конца расскрыта)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

Все оказывается еще проще. Насколько я понимаю фазовый режим - это мы должны посылать контроллеру какую обмотку надо включать.
В общем, для этого надо загружать stepgen в режиме 5-8
types 5 through 8: four phase, full step
Four pins, phases A through D. Four steps per full cycle. Types 5 and 6 are suitable for use with unipolar steppers, where power is applied to the center tap of each winding, and four open-collector transistors drive the ends. Types 7 and 8 are suitable for bipolar steppers, driven by two H-bridges.
Тогда у него будут дополнительные пины, на которых будет появляться нужный сигнал:
stepgen.N.phase-A thru phase-E bit out (step types 2-14 only)
Output bits. phase-A and phase-B are present for step types 2-14, phase-C for types 3-14, phase-D for types 5-14, and phase-E for types 11-14. Behavior depends on selected stepping type.
Чтобы stepgen загружался в нужном режиме - надо в строке загрузки компонента проставить соответствующие режимы:
loadrt stepgen step_type=8,8,8
см: http://linuxcnc.org/docs/html/man/man9/stepgen.9.html
Ivn
Новичок
Сообщения: 37
Зарегистрирован: 13 дек 2012, 11:24
Репутация: 0
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Ivn »

Nick писал(а):Компилируем и устанавливаем компонент HAL при помощи comp: comp --install simple_stepper.comp
NICK - вопрос тебе по 3 пункту:
что то не выходит "каменный цветочек":

root@cncdeb:/home/cncuser# comp --install /home/cncuser/simple_stepper.comp
Traceback (most recent call last):
File "/usr/bin/comp", line 1346, in <module>
main()
File "/usr/bin/comp", line 1315, in main
process(f, mode, outfile)
File "/usr/bin/comp", line 1185, in process
a, b = parse(filename)
File "/usr/bin/comp", line 417, in parse
a, b = f.split("\n;;\n", 1)
ValueError: need more than 1 value to unpack <<<<<<<<<<<<<<<<<<----------------------------------

ИЗВИНИ ламера-из гатчины. ^^^^^^^^^^^^ Чего он хочет?

*не успел до повышения купить драйвер с моторами у китайцев, а сыну для поделок хоцца(и самому интересно) простой станочек собрать (на "фанере-ДСП"+ мосфеты со старых материнок через опторазвязку - без изысков вообщем)
**параллельно строю стол и начал софт готовить -только линукс(gpl)
***тест латенси серво 42к, бейс- 17к без шестеренок- видюха от нвидиа работает на драйвере "обратный инжиниринг-что-то" слаб в англицком
****помоги добрым советом(ами)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

А что ты хочешь сделать?
Ivn писал(а):root@cncdeb:/home/cncuser# comp --install /home/cncuser/simple_stepper.comp
Traceback (most recent call last):
File "/usr/bin/comp", line 1346, in <module>
main()
File "/usr/bin/comp", line 1315, in main
process(f, mode, outfile)
File "/usr/bin/comp", line 1185, in process
a, b = parse(filename)
File "/usr/bin/comp", line 417, in parse
a, b = f.split("\n;;\n", 1)
ValueError: need more than 1 value to unpack
Скорее всего ошибка в компоненте. Там должно быть описание, которое отделяется ;; от тела программы.
Выложи свой файл simple_stepper
Ivn писал(а): мосфеты со старых материнок через опторазвязку
Какие нужны сигналы на выходе? Управление обмотками напрямую?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Serg »

Nick писал(а):a, b = f.split("\n;;\n", 1)
Re: Станок канатной резки камня с ЧПУ #115
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

наоборот, нужны два ;;. В этой строчке он отделяет заголовки для comp и само тело компонента. Если он их не найдет, то split даст 1 результат, а в этом выражении нужно два.
a, b = f.split("\n;;\n", 1)
Ivn
Новичок
Сообщения: 37
Зарегистрирован: 13 дек 2012, 11:24
Репутация: 0
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Ivn »

Nick писал(а):А что ты хочешь сделать?
Nick писал(а):Скорее всего ошибка в компоненте. Там должно быть описание, которое отделяется ;; от тела программы.
Выложи свой файл simple_stepper
Инструкция взята твоя отсюда (стр.1)"#18 Сообщение Nick » 28 мар 2011, 20:54 "


"Объясняю. Все это нужно запихать в компонент. Для этого:

1.Сохраняем все что вверху в файл simple_stepper.comp.
2.Устанавливаем пакет emc2-dev: sudo apt-get install emc2-dev
3.Компилируем и устанавливаем компонент HAL при помощи comp: comp --install simple_stepper.comp
4.Настраиваем станок для использования такого компонента, для этого редактируем .hal файл настроек контроллера добавляем примерно следующее :"...(много текста)

Компонента взята твоя отсюда " #4 Сообщение Nick » 27 мар 2011, 20:54 "
(?копирую с форума и вставляю в nano-редакторе(терминал) и сохраняю с именем simple_stepper.comp)

component simple_stepper;
pin in bit step;
pin in bit dir;
pin out bit out1;
pin out bit out2;
pin out bit out3;
pin out bit out4;
variable int step_phase;

license "GPL";
;;
if (dir == 0){step_phase = (step_phase-1)%4;} else {step_phase = (step_phase+1)%4;}

if (step_phase == 0)
{ out1 = 1; out1 = 0; out1 = 0; out1 = 0; }
else if (step_phase == 1)
{ out1 = 0; out1 = 1; out1 = 0; out1 = 0; }
else if (step_phase == 2)
{ out1 = 0; out1 = 0; out1 = 1; out1 = 0; }
else if (step_phase == 3)
{ out1 = 0; out1 = 0; out1 = 0; out1 = 1; }

Посмотри ты уже сталкивался с такой ошибкой(не у тебя- у новичка)
#51 Сообщение UAVpilot » 12 янв 2015, 12:51
ссылка "Re: Станок канатной резки камня с ЧПУ #115"
там таже проблема-чем закончилась не известно
(о каких пробелах речь идет?)
Nick писал(а):Какие нужны сигналы на выходе? Управление обмотками напрямую?
Прозорлив ты чертяка!(уважаю!) Именно напрямую. (пусть начнет работать хоть и медленно, дальше-больше)
*где то в нете один линуксоид писал об этом: на 220 строил, изменял LPT режим
(3 axis напрямую, и концевики, кажется, с e-stop на одном проводе -"без излишеств с обратной связью")
но без EMC и очень тяжело -линукс, всё таки-въехать сразу не получится.
**хотя по инструкциям даже real-time-ядро пытался собрать (latency test -максджитер был за 1м) и что то компилировалось,
но не запустил ни разу(не было попыток даже -не дошел: сначала некогда, потом целевой комп отдал под word)

Спасибо.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Nick »

Ivn писал(а):Прозорлив ты чертяка!(уважаю!) Именно напрямую. (пусть начнет работать хоть и медленно, дальше-больше)
Тогда все просто, ничего не надо устанавливать.
1. Делаешь обычную настройку для шаговиков через stepconf.
Потом открываешь hal файл и в нем меняешь в строке
loadrt stepgen step_type=type0[,type1...]
тип выбираешь отсюда:
type 1: up/down
Two pins, one for ’step up’ and one for ’step down’. Like type 0, make-pulses must run twice per step, which limits the maximum speed.
type 2: quadrature
Two pins, phase-A and phase-B. For forward motion, A leads B. Can advance by one step every time make-pulses runs.
type 3: three phase, full step
Three pins, phase-A, phase-B, and phase-C. Three steps per full cycle, then repeats. Only one phase is high at a time - for forward motion the pattern is A, then B, then C, then A again.
type 4: three phase, half step
Three pins, phases A through C. Six steps per full cycle. First A is high alone, then A and B together, then B alone, then B and C together, etc.
types 5 through 8: four phase, full step
Four pins, phases A through D. Four steps per full cycle. Types 5 and 6 are suitable for use with unipolar steppers, where power is applied to the center tap of each winding, and four open-collector transistors drive the ends. Types 7 and 8 are suitable for bipolar steppers, driven by two H-bridges.
types 9 and 10: four phase, half step
Four pins, phases A through D. Eight steps per full cycle. Type 9 is suitable for unipolar drive, and type 10 for bipolar drive.
types 11 and 12: five phase, full step
Five pins, phases A through E. Five steps per full cycle. See HAL reference manual for the patterns.
types 13 and 14: five phase, half step
Five pins, phases A through E. Ten steps per full cycle. See HAL reference manual for the patterns.
type 15: user-specified
This uses the waveform specified by the user_step_type module parameter, which may have up to 10 steps and 5 phases.
Потом нужно поменять привязку пинов:

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

net xstep => parport.0.pin-02-out
net xdir => parport.0.pin-03-out
и

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

net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
на пины
stepgen.N.phase-A thru phase-E bit out (step types 2-14 only)
Output bits. phase-A and phase-B are present for step types 2-14, phase-C for types 3-14, phase-D for types 5-14, and phase-E for types 11-14. Behavior depends on selected stepping type.
и все :)
Ivn
Новичок
Сообщения: 37
Зарегистрирован: 13 дек 2012, 11:24
Репутация: 0
Контактная информация:

Re: Настройка EMC2 на простейший драйвер управления ШД

Сообщение Ivn »

Спасибо.
В выходные попробую светодиоды в lpt через 330ом навесить для проверки
(опторазвязка и т.д. пока не готова)
Ответить

Вернуться в «LinuxCNC»