Вопросы создания USB контроллера для Mach3

Контроллеры, драйверы, датчики, управляющие устройства.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Вопросы создания USB контроллера для Mach3

Сообщение sidor094 »

Извините за глупый вопрос.А для чего вообще служит внешний контроллер,разве Mach сам не может управлять двигателями?
Эта темабыла отделена от: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card (AK) #31.
--Nick
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение AndyBig »

MACH-то умеет, но операционка и LPT-порт не предназначены для такого управления, поэтому внешний контроллер - это более точный и надежный способ управления :)
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

AndyBig писал(а):MACH-то умеет, но операционка и LPT-порт не предназначены для такого управления, поэтому внешний контроллер - это более точный и надежный способ управления :)
То есть контроллер служит только для оптимизации временных характеристик шагов?
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение selenur »

У компьютера диспетчер задач сам рулит какому процессу(программе) сколько процессорного времени выделить, можно конечно и изменить этот параметр, и мачу увеличить приоритет, и тогда допустим в секунду будет выполняться не 100 000 машинных команд программы а 1 000 000, но тогда может не хватить процессорного времени, самой ОС, или драйверу видео, или драйверу работы с жестким диском, и прочее... Из-за чего используют специально отдельный компьютер, на котором установлена единственная программа. А у контроллера обычно кроме генерации шагов почти других задач и нет.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

Насчёт компьютера понятно.Вопрос вот в чем.Контроллер получает команды на движение или просто нормирует шаговый интервал ?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение michael-yurov »

sidor094 писал(а):Насчёт компьютера понятно.Вопрос вот в чем.Контроллер получает команды на движение или просто нормирует шаговый интервал ?
Mach3 передает в контроллер данные о том, в какой позиции должен находиться станок через каждые 2 мс, а контроллер равномерно генерирует шаги между этими позициями.

А чтобы "нормировать шаговый интервал" - вот такая штука есть: http://cnc-club.ru/forum/viewtopic.php?f=41&t=2725
Вот здесь есть интересные осциллограммы: http://cnc-club.ru/forum/viewtopic.php? ... 300#p92389
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение tooshka »

selenur писал(а):кроме генерации шагов
Все же наверно зависит от способа управления приводами)))
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

michael-yurov писал(а):Mach3 передает в контроллер данные о том, в какой позиции должен находиться станок через каждые 2 мс, а контроллер равномерно генерирует шаги между этими позициями.
Я так понимаю,что контроллер рассчитывает количество и частоту шагов на интервале 2мс .Неужели для этого нужно такое сложное устройство(ARM процессор в связке с ПЛИС).Помоему любой микроконтроллер способен за 2мс рассчитать
и запрграммировать таймер.А некоторое несоответствие частоты не будет играть роли так как за 2мс путь будет маленьким и можно добавить несделанный шаг в следующем цикле.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение Serg »

AndyBig писал(а):Вы спорите просто лишь бы поспорить.
Успокойтесь, я умолкаю. Тем более что на это вы тратите свои собственные время и деньги.
Просто мне непонятно зачем пытаться изобрести то, что уже давно продаётся, причём изобрести в более сложном варианте...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение michael-yurov »

sidor094 писал(а):Я так понимаю,что контроллер рассчитывает количество и частоту шагов на интервале 2мс .Неужели для этого нужно такое сложное устройство(ARM процессор в связке с ПЛИС).Помоему любой микроконтроллер способен за 2мс рассчитать
и запрграммировать таймер.А некоторое несоответствие частоты не будет играть роли так как за 2мс путь будет маленьким и можно добавить несделанный шаг в следующем цикле.
В реальности все не так просто.
Во первых - контроллер одновременно должен осуществлять обмен данными с ПК,
Во вторых - контроллер должен уметь самостоятельно выполнять еще много всего (ручное перемещение, поиск базы и т.п.)
В третьих - генерировать импульсы Step оказалось не так просто, как кажется, и не так-то просто запрограммировать таймер,
Возникают, например, сложности в момент смены направления, сложности со стыками генерируемого сигнала в момент смены частоты...
(для просмотра содержимого нажмите на ссылку)
Но, соглашусь - сгенерировать серию импульсов фиксированной длительности на определенном промежутке времени намного проще той задачи, что возникла у меня, когда нужно изменять период и длительность импульсов в ряде случаев намного чаще, чем генерируются сами импульсы.
(например, была частота 20 Гц, и, вдруг, станок резко разгоняется, и за несколько миллисекунд сигнал должен увеличить частоту до нескольких кГц... получается, что ждать окончания импульса длительностью 50 мс (20 Гц) нельзя, и обрывать его тоже нельзя, так как же быть?)
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

michael-yurov писал(а):В реальности все не так просто.
Во первых - контроллер одновременно должен осуществлять обмен данными с ПК,
Во вторых - контроллер должен уметь самостоятельно выполнять еще много всего (ручное перемещение, поиск базы и т.п.)
В третьих - генерировать импульсы Step оказалось не так просто, как кажется, и не так-то просто запрограммировать таймер,
Возникают, например, сложности в момент смены направления, сложности со стыками генерируемого сигнала в момент смены частоты...
Обмен данными с ПК как правило осуществляется по прерываниям.Ручное перемещение осуществляется по тому же таймеру с одновременнной проверкой отпускания кнопки(в основном связано с программированием интерфейса с пользователем).Насчет разгонов- торможенийй, я думаю в основном должен MACH заморачиваться. При смене частоты следующий импульс просто должен прийти через другой промежуток времени ,проблемы могут быть только при резком изменении перида но разгон-торможение проблема MACHa?В чём я не прав?
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

michael-yurov писал(а):Но, соглашусь - сгенерировать серию импульсов фиксированной длительности на определенном промежутке времени намного проще той задачи, что возникла у меня, когда нужно изменять период и длительность импульсов в ряде случаев намного чаще, чем генерируются сами импульсы.
(например, была частота 20 Гц, и, вдруг, станок резко разгоняется, и за несколько миллисекунд сигнал должен увеличить частоту до нескольких кГц... получается, что ждать окончания импульса длительностью 50 мс (20 Гц) нельзя, и обрывать его тоже нельзя, так как же быть?)
Извините сразу не увидел продолжения.Вопервых количество импульсов программируемых таймеру должно соответствовать количеству шагов задаваемых MACHем .Даже при некотором несоответствии частоты таймера требуемой скорости
за 2мс большой временной разницы не наберётся.А во вторых изменение в скорости задаваемое MACHем не должно превышать разгона двигателя.И при резкой смене направления недостающим (последним импульсом )можно пренебречь если учитывать реальную координату и учесть при последующем перемещении.Это может привести только к некоторому сглаживанию углов (как у следящего привода).
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение michael-yurov »

(для просмотра содержимого нажмите на ссылку)
sidor094 писал(а):Обмен данными с ПК как правило осуществляется по прерываниям.
Что произойдет, если прерывание возникнет в тот момент, когда нужно менять частоты генераторов? Сколько времени займет обработка прерывания? А если ПК не ответит сразу?
sidor094 писал(а):Ручное перемещение осуществляется по тому же таймеру с одновременнной проверкой отпускания кнопки
Нужно еще учесть ускорения, торможения (и при этом не потерять координаты, и генерировать корректный сигнал Step), а даже это уже не очень простая задача.
sidor094 писал(а):При смене частоты следующий импульс просто должен прийти через другой промежуток времени
В случае с Mach3 этих проблем не будет, т.к. там либо есть импульс на интервале в 2 мс, либо нет, так что дольше 2 мс задерживаться на генерацию импульса не потребуется, и чаще менять частоту - тоже не нужно будет. Достаточно будет просто равномерно сгенерировать необходимое количество импульсов в течении 2 мс, и не нужно думать о дальнейшем, т.е эти периоды никак не связаны, что очень удобно при генерации шагов, поэтому контроллеров для Mach3 так много.
sidor094 писал(а):При смене частоты следующий импульс просто должен прийти через другой промежуток времени
Если так делать - получится рассинхронизация, которую необходимо будет учитывать (т.е. как минимум придется подсчитывать сгенрированные импульсы), а это силнь усложняет задачу.
Последний раз редактировалось michael-yurov 09 мар 2014, 11:24, всего редактировалось 1 раз.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

michael-yurov писал(а):т.е. как минимум придется подсчитывать сгенрированные импульсы), а это силнь усложняет задачу.
Чем?
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

Всё равно внутри прерывания подсчитываешь импульсы X++;Y++;Z++ или -- в зависимости от направления и сравниваешь с заданием.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение michael-yurov »

Только сейчас заметил - мы почему-о в чужой теме разговариваем! надо бы прекратить это.
(для просмотра содержимого нажмите на ссылку)
sidor094 писал(а):И при резкой смене направления недостающим (последним импульсом )можно пренебречь если учитывать реальную координату и учесть при последующем перемещении.Это может привести только к некоторому сглаживанию углов (как у следящего привода).
Это больное место большинства подобных контроллеров - теряется импульс (половинка импульса) при смене направления, из за чего постепенно уползают координаты.
michael-yurov писал(а):т.е. как минимум придется подсчитывать сгенрированные импульсы), а это силнь усложняет задачу.
sidor094 писал(а):Чем?
sidor094 писал(а):Всё равно внутри прерывания подсчитываешь импульсы X++;Y++;Z++ или -- в зависимости от направления и сравниваешь с заданием.
Ну тогда возникает вопрос про способ генерации импульсов... Если их будут генерировать таймеры - как тогда их подсчитывать?

И еще.. как выдержать паузу перед сменой направления и после? Ждать два раза по 2 мс довольно расточительно.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение sidor094 »

Я тут человек новый.Не знаю как перейти в свою тему.А про прерывания таймера хочу сказать ,делал приблизительно так.При входе в прерывание проверяю текущую координату,если не достигла требуемой ,устанавливаю порт генерирующий шаги и увеличиваю значение текущей координаты. При этом никаких потерь не возникает.И ещё устанавливаешь частоту таймера в 2 раза больше требуемой и работаю только на четных прерываниях.На нечетных только сбрасываю порт шагов при этом шаги имеют форму меандра ,что удобно так как позволяет использовать для развязки медленные оптроны.Если возможно подскажите,как бы обсудить вопрос не нарушив правила форума?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение michael-yurov »

sidor094 писал(а):Я тут человек новый.Не знаю как перейти в свою тему.
Попросил администраторов отделить часть сообщений, начиная с #32.
sidor094 писал(а):А про прерывания таймера хочу сказать ,делал приблизительно так.При входе в прерывание проверяю текущую координату,если не достигла требуемой ,устанавливаю порт генерирующий шаги и увеличиваю значение текущей координаты. При этом никаких потерь не возникает.И ещё устанавливаешь частоту таймера в 2 раза больше требуемой и работаю только на четных прерываниях.На нечетных только сбрасываю порт шагов при этом шаги имеют форму меандра ,что удобно так как позволяет использовать для развязки медленные оптроны.
Если обрабатывать прерывание каждого импульса, да еще и по два раза... какая же тогда будет максимальная частота импульсов?
Лучше бы придумать алгоритм генерации импульсов вообще без прерываний и подсчета.
Нужно то ведь сгенерировать серию импульсов так, чтобы в начале и конце последовательности был определенный уровень сигнала, чтобы эти импульсы равномерно были распределены на 2 мс, ну и еще учесть вопрос смены направления.

Т.е. было бы хорошо, если можно было бы вообще не контроллировать,ч то там сгенерировалось, а просто быть уверенным, что если нужно было сгенерировать 137 импульсов, то 137 и получилось, и что следующим шагом (черз 2 мс) можно задавать новые параметры для таймера, и не обрабатывать кучу прерываний.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение selenur »

Равномерную генерацию импульсов на необходимом промежутке времени, можно попробовать делать используя алгоритм Брезенхема :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card

Сообщение michael-yurov »

selenur писал(а):Равномерную генерацию импульсов на необходимом промежутке времени, можно попробовать делать используя алгоритм Брезенхема :-)
Так обычно и делают, и таймеры тога не нужны на каждую ось, и прерывания не будут ресурсы съедать.
Ответить

Вернуться в «Электроника»