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

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

Добавлено: 27 мар 2011, 16:26
htr
Собрал вот такой (http://www.homecnc.ru/index.php/electro ... controller) контроллер ШД (вот ещё ссылка http://www.electroprivod.ru/pc_operation.htm). Пока для эксперемента сделал 1 ось, хочу посмотреть как будет работать. Не могу настроить EMC2 на работу с этим контроллером.
Там для управление 1 шд используются 4 пина lpt порта D0-D3. Вот таблица для шага:

D0 D1 D2 D3
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Я не разбираюсь в этой программе вообще, в интернете весь поиск перерыл - ничего не нашел.
Если можно распишите подробней как это заставить работать.

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

Добавлено: 27 мар 2011, 16:36
Nick
Я так понимаю, что эти 0 и 1 это пины на каждую обмотку?

Если да, то это не очень рациональное использование порта лпт. ведь шаговиком можно управлять всего по двум пинам - шаг и направление. Но не суть.

Это можно реализовать при помощи компонентов.

Если я все правильно понял, тогда можно будет продолжать.

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

Добавлено: 27 мар 2011, 16:41
htr
Да всё правильно, пины это управление обмотками, насчёт рациональности, для управления по двум пинам нужно делать более сложный контроллер, пока не хочу.
Это можно реализовать при помощи компонентов.
Этого я не понимаю.
Если я все правильно понял, тогда можно будет продолжать.
Если можно поподробней.
Спасибо.

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

Добавлено: 27 мар 2011, 20:54
Nick
По компонентам сначала просмотри эту тему: http://cnc-club.ru/forum/viewtopic.php?f=15&t=790 .
Там было общее описание работы компонент. В твоем случае, нужно что-то типа этого:

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


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; }
Потом подгружаем этот компонент в файле hal :
loadrt simple_stepper count=3
И подключаем на него нужные пины:
net simple_stepper.0.step <= stepgen.0.step
net simple_stepper.0.dir <= stepgen.0.dir
...
net simple_stepper.0.out1 => parport.0.pin-03-out
...

PS если с английским хорошо, то обязательно почитай вот это: http://linuxcnc.org/docs/html/hal_comp.html

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

Добавлено: 27 мар 2011, 21:48
htr
Спасибо за ответ, только что мне с этим делать?
С английским очень плохо дружу.
Если можно расписать все как для чайника: открываем файл, вставляем код, сохраняем, компилируем, открываем emc2, заходим туда, выбираем то, и оп-ля функционирует.
Либо дайте вразумительную ссылку где для таких как я написано как компоненты делать...

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

Добавлено: 27 мар 2011, 22:12
Nick
Ну в общем, все написано тут: http://linuxcnc.org/docs/html/hal_comp.html, но по английски.

Завтра переведу основные моменты на великий и могучий. И добавлю комментариев.

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

Добавлено: 28 мар 2011, 09:24
jura
Решился на EMC2.Вопрос:на vri-cnc есть схема простейшего контроллера на к155тм7,будет ли это вместе корректно работать?

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

Добавлено: 28 мар 2011, 10:31
Nick
А как он управляется? Хотя бы примерно.
Или дай прямую ссылочку на описание.

ЗЫ мне казалось, что самый простой контроллер - это step/dir (кроме описанного выше). Все что нужно это просто счетчик и таблица активации выводов.
Вся логика контроллера заключается в такой простой функции:

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

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; }
Описанный выше контроллер проще тем, что в контроллере даже логика не нужна. Но это занимает в два раза больше пинов LPT, которые у нас в дефиците, т.к. обычно помимо самих двигателей еще хочется подключить датчики и прочую ерунду :).

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

Добавлено: 28 мар 2011, 11:38
yura
дело в том,что за неимением никокого опыта в программировании чипов спаял этот вариант.и моторы закрутились,с vri-cnc,так если я оставлю эту схему и буду использовать ЕMC2,то теоретически должно работать,если правильно настроить лтп,так?а как его правильно настроить под этот контроллер?(запустил с live-cd EMC2-НУ ОЧЕНЬ НРАВИТСЯ,ХОЧУ ОСВОИТЬ).У МЕНЯ ТОЛЬКО X,Y,Z БЕЗ КОНЦЕВИКОВ.

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

Добавлено: 28 мар 2011, 11:46
Nick
Нужен протокол общения с контроллером. Есть ссылка на описание команд?
На сколько я помню, там вроде был не обычный step/dir...

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

Добавлено: 28 мар 2011, 12:27
YURA
ЭТО ЕГО СХЕМА

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

Добавлено: 28 мар 2011, 12:38
Nick
Понятно, а что на него нужно посылать, какого вида команда?
ЗЫ что-то у меня vri-cnc не открывается...

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

Добавлено: 28 мар 2011, 12:42
YURA
А, потому я дал фото,у меня тоже не открывается,так бы я дал ссылку

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

Добавлено: 28 мар 2011, 13:12
Nick
У них остался старый сайт http://cnc.4bb.ru надо там глянуть...

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

Добавлено: 28 мар 2011, 13:18
YURA
да утром открывал его,попробуем попозже

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

Добавлено: 28 мар 2011, 20:46
htr
Ну ждать терпения не было, решил другую систему попробовать (TurboCNC). Оказалась намного проще в настройке, всё заработало.
Хотелось всё же и на EMC2 запустить. ТОлько есть проблема с пониманием как это сделать. Выше был дан код, только что с ним делать?

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

Добавлено: 28 мар 2011, 20:47
Nick
Слушай, а то что на нижнем рисунке, это у тебя перед движками стоит?
Если да, то тогда можно всю остальную часть вообще выкинуть и подключить транзисторы прямо к LPT (ну лучше конечно не прямо, а через опторазвязку). Получится схема описанная выше.

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

Добавлено: 28 мар 2011, 20:54
Nick
htr писал(а):Ну ждать терпения не было, решил другую систему попробовать (TurboCNC). Оказалась намного проще в настройке, всё заработало.
Хотелось всё же и на EMC2 запустить. ТОлько есть проблема с пониманием как это сделать. Выше был дан код, только что с ним делать?
Объясняю. Все это нужно запихать в компонент. Для этого:
  1. Сохраняем все что вверху в файл simple_stepper.comp.
  2. Устанавливаем пакет emc2-dev: sudo apt-get install emc2-dev
  3. Компилируем и устанавливаем компонент HAL при помощи comp: comp --install simple_stepper.comp
  4. Настраиваем станок для использования такого компонента, для этого редактируем .hal файл настроек контроллера добавляем примерно следующее :

    loadrt simple_stepper count=3

    net simple_stepper.0.step <= stepgen.0.step
    net simple_stepper.0.dir <= stepgen.0.dir

    net simple_stepper.0.out1 => parport.0.pin-01-out
    net simple_stepper.0.out2 => parport.0.pin-02-out
    net simple_stepper.0.out3 => parport.0.pin-03-out
    net simple_stepper.0.out4 => parport.0.pin-04-out

    net simple_stepper.1.step <= stepgen.1.step
    net simple_stepper.1.dir <= stepgen.1.dir

    net simple_stepper.1.out1 => parport.0.pin-05-out
    net simple_stepper.1.out2 => parport.0.pin-06-out
    net simple_stepper.1.out3 => parport.0.pin-07-out
    net simple_stepper.1.out4 => parport.0.pin-08-out

    net simple_stepper.2.step <= stepgen.2.step
    net simple_stepper.2.dir <= stepgen.2.dir

    net simple_stepper.2.out1 => parport.0.pin-09-out
    net simple_stepper.2.out2 => parport.0.pin-10-out
    net simple_stepper.2.out3 => parport.0.pin-11-out
    net simple_stepper.2.out4 => parport.0.pin-12-out
  5. И убираем строки типа
    net stepgen.0.step => parport.0.pin-12-out
    net stepgen.0.dir => parport.0.pin-12-out
  6. Запускаем, и пишем, какая вылазит ошибка :hehehe:
... Перевод статьи о компонентах по-тихоньку двигается

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

Добавлено: 28 мар 2011, 21:23
V0id
root писал(а):Понятно, а что на него нужно посылать, какого вида команда?
ЗЫ что-то у меня vri-cnc не открывается...
Контроллер на ТМ7 устроен так что за 1 такт можно сделать 1 шаг одним движком.
И на самом деле контроллер реализован софтварно.
Соответственно софт и решает какую обмотку включать на каком двигателе.
2, 3. 4, 5 пин - это номера обмотки каждого двигатееля
6 - ШД_Х
7 - ШД_Y
8 - ШД_Z

* для полного шага очерёдность включения обмоток будет такой:
- 1000 - 0100 - 0010 - 0001 - (всего используем 4 фазы)
за каждый шаг работает только одна обмотка
- снижено потребление тока но и мощность двигателя снижена тоже.
* либо такой
- 1100 - 0110 - 0011 - 1001.
за каждый шаг работает одновременно две обмотки.
Повышенно потребление тока и повышена мощность двигателя.
* для полушага -
1000 - 1100 - 0100 - 0110 - 0010 - 0011 - 0001 - 1001 - (всего 8 фаз - комбинаций)
поочерёдно включены то одна - то две обмотки.
Каждый нечётный шаг мощность снижена, каждый чётный - увеличена.

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

Добавлено: 28 мар 2011, 21:30
Nick
хммм это не есть хорошо...

Интересно, он успеет понять команды, если я отправлю их одна за другой без дополнительных пауз?