Добро пожаловать на Форум по станкам с ЧПУ!

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

Тема в разделе "Программы исполняющие G-код", создана пользователем Lexa_Maniak, 21 сен 2017.

  1. Lexa_Maniak

    Lexa_Maniak Member

    Регистрация:
    21 сен 2012
    Сообщения:
    98
    Симпатии:
    0
    Собрал вот такой (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

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

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Я так понимаю, что эти 0 и 1 это пины на каждую обмотку?

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

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

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

    Lexa_Maniak Member

    Регистрация:
    21 сен 2012
    Сообщения:
    98
    Симпатии:
    0
    Да всё правильно, пины это управление обмотками, насчёт рациональности, для управления по двум пинам нужно делать более сложный контроллер, пока не хочу.

    Этого я не понимаю.

    Если можно поподробней.
    Спасибо.
     
  4. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    По компонентам сначала просмотри эту тему: viewtopic.php?f=15&t=790[/URL] .
    Там было общее описание работы компонент. В твоем случае, нужно что-то типа этого:

    Код:
    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
     
  5. Lexa_Maniak

    Lexa_Maniak Member

    Регистрация:
    21 сен 2012
    Сообщения:
    98
    Симпатии:
    0
    Спасибо за ответ, только что мне с этим делать?
    С английским очень плохо дружу.
    Если можно расписать все как для чайника: открываем файл, вставляем код, сохраняем, компилируем, открываем emc2, заходим туда, выбираем то, и оп-ля функционирует.
    Либо дайте вразумительную ссылку где для таких как я написано как компоненты делать...
     
  6. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Ну в общем, все написано тут: http://linuxcnc.org/docs/html/hal_comp.html , но по английски.

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

    Reader2008 Member

    Регистрация:
    11 май 2012
    Сообщения:
    735
    Симпатии:
    0
    Решился на EMC2.Вопрос:на vri-cnc есть схема простейшего контроллера на к155тм7,будет ли это вместе корректно работать?
     
  8. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    А как он управляется? Хотя бы примерно.
    Или дай прямую ссылочку на описание.

    ЗЫ мне казалось, что самый простой контроллер - это 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, которые у нас в дефиците, т.к. обычно помимо самих двигателей еще хочется подключить датчики и прочую ерунду :).
     
  9. CNC_SUPER

    CNC_SUPER Active Member

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

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Нужен протокол общения с контроллером. Есть ссылка на описание команд?
    На сколько я помню, там вроде был не обычный step/dir...
     
  11. LiViS

    LiViS Member

    Регистрация:
    11 май 2012
    Сообщения:
    67
    Симпатии:
    0
    ЭТО ЕГО СХЕМА
    [​IMG]
    [​IMG]
    [​IMG]
     
  12. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Понятно, а что на него нужно посылать, какого вида команда?
    ЗЫ что-то у меня vri-cnc не открывается...
     
  13. LiViS

    LiViS Member

    Регистрация:
    11 май 2012
    Сообщения:
    67
    Симпатии:
    0
    А, потому я дал фото,у меня тоже не открывается,так бы я дал ссылку
     
  14. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    У них остался старый сайт http://cnc.4bb.ru надо там глянуть...
     
  15. LiViS

    LiViS Member

    Регистрация:
    11 май 2012
    Сообщения:
    67
    Симпатии:
    0
    да утром открывал его,попробуем попозже
     
  16. Lexa_Maniak

    Lexa_Maniak Member

    Регистрация:
    21 сен 2012
    Сообщения:
    98
    Симпатии:
    0
    Ну ждать терпения не было, решил другую систему попробовать (TurboCNC). Оказалась намного проще в настройке, всё заработало.
    Хотелось всё же и на EMC2 запустить. ТОлько есть проблема с пониманием как это сделать. Выше был дан код, только что с ним делать?
     
  17. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Слушай, а то что на нижнем рисунке, это у тебя перед движками стоит?
    Если да, то тогда можно всю остальную часть вообще выкинуть и подключить транзисторы прямо к LPT (ну лучше конечно не прямо, а через опторазвязку). Получится схема описанная выше.
     
  18. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Объясняю. Все это нужно запихать в компонент. Для этого:
    Сохраняем все что вверху в файл simple_stepper.comp.
    Устанавливаем пакет emc2-dev: sudo apt-get install emc2-dev
    Компилируем и устанавливаем компонент HAL при помощи comp: comp --install simple_stepper.comp
    Настраиваем станок для использования такого компонента, для этого редактируем .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


    И убираем строки типа
    net stepgen.0.step => parport.0.pin-12-out
    net stepgen.0.dir => parport.0.pin-12-out
    Запускаем, и пишем, какая вылазит ошибка

    ... Перевод статьи о компонентах по-тихоньку двигается
     
  19. sk007web

    sk007web Member

    Регистрация:
    19 янв 2013
    Сообщения:
    235
    Симпатии:
    0
    Контроллер на ТМ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 фаз - комбинаций)
    поочерёдно включены то одна - то две обмотки.
    Каждый нечётный шаг мощность снижена, каждый чётный - увеличена.
     
  20. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    хммм это не есть хорошо...

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