Страница 1 из 2
Вопросы создания USB контроллера для Mach3
Добавлено: 08 мар 2014, 18:13
sidor094
Извините за глупый вопрос.А для чего вообще служит внешний контроллер,разве Mach сам не может управлять двигателями?
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 19:44
AndyBig
MACH-то умеет, но операционка и LPT-порт не предназначены для такого управления, поэтому внешний контроллер - это более точный и надежный способ управления

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 19:52
sidor094
AndyBig писал(а):MACH-то умеет, но операционка и LPT-порт не предназначены для такого управления, поэтому внешний контроллер - это более точный и надежный способ управления

То есть контроллер служит только для оптимизации временных характеристик шагов?
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 20:12
selenur
У компьютера диспетчер задач сам рулит какому процессу(программе) сколько процессорного времени выделить, можно конечно и изменить этот параметр, и мачу увеличить приоритет, и тогда допустим в секунду будет выполняться не 100 000 машинных команд программы а 1 000 000, но тогда может не хватить процессорного времени, самой ОС, или драйверу видео, или драйверу работы с жестким диском, и прочее... Из-за чего используют специально отдельный компьютер, на котором установлена единственная программа. А у контроллера обычно кроме генерации шагов почти других задач и нет.
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 20:17
sidor094
Насчёт компьютера понятно.Вопрос вот в чем.Контроллер получает команды на движение или просто нормирует шаговый интервал ?
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 20:24
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
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 20:30
tooshka
selenur писал(а):кроме генерации шагов
Все же наверно зависит от способа управления приводами)))
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 20:59
sidor094
michael-yurov писал(а):Mach3 передает в контроллер данные о том, в какой позиции должен находиться станок через каждые 2 мс, а контроллер равномерно генерирует шаги между этими позициями.
Я так понимаю,что контроллер рассчитывает количество и частоту шагов на интервале 2мс .Неужели для этого нужно такое сложное устройство(ARM процессор в связке с ПЛИС).Помоему любой микроконтроллер способен за 2мс рассчитать
и запрграммировать таймер.А некоторое несоответствие частоты не будет играть роли так как за 2мс путь будет маленьким и можно добавить несделанный шаг в следующем цикле.
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 08 мар 2014, 23:24
Serg
AndyBig писал(а):Вы спорите просто лишь бы поспорить.
Успокойтесь, я умолкаю. Тем более что на это вы тратите свои собственные время и деньги.
Просто мне непонятно зачем пытаться изобрести то, что уже давно продаётся, причём изобрести в более сложном варианте...
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 08:41
michael-yurov
sidor094 писал(а):Я так понимаю,что контроллер рассчитывает количество и частоту шагов на интервале 2мс .Неужели для этого нужно такое сложное устройство(ARM процессор в связке с ПЛИС).Помоему любой микроконтроллер способен за 2мс рассчитать
и запрграммировать таймер.А некоторое несоответствие частоты не будет играть роли так как за 2мс путь будет маленьким и можно добавить несделанный шаг в следующем цикле.
В реальности все не так просто.
Во первых - контроллер одновременно должен осуществлять обмен данными с ПК,
Во вторых - контроллер должен уметь самостоятельно выполнять еще много всего (ручное перемещение, поиск базы и т.п.)
В третьих - генерировать импульсы Step оказалось не так просто, как кажется, и не так-то просто запрограммировать таймер,
Возникают, например, сложности в момент смены направления, сложности со стыками генерируемого сигнала в момент смены частоты...
(для просмотра содержимого нажмите на ссылку)Но, соглашусь - сгенерировать серию импульсов фиксированной длительности на определенном промежутке времени намного проще той задачи, что возникла у меня, когда нужно изменять период и длительность импульсов в ряде случаев намного чаще, чем генерируются сами импульсы.
(например, была частота 20 Гц, и, вдруг, станок резко разгоняется, и за несколько миллисекунд сигнал должен увеличить частоту до нескольких кГц... получается, что ждать окончания импульса длительностью 50 мс (20 Гц) нельзя, и обрывать его тоже нельзя, так как же быть?)
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 09:00
sidor094
michael-yurov писал(а):В реальности все не так просто.
Во первых - контроллер одновременно должен осуществлять обмен данными с ПК,
Во вторых - контроллер должен уметь самостоятельно выполнять еще много всего (ручное перемещение, поиск базы и т.п.)
В третьих - генерировать импульсы Step оказалось не так просто, как кажется, и не так-то просто запрограммировать таймер,
Возникают, например, сложности в момент смены направления, сложности со стыками генерируемого сигнала в момент смены частоты...
Обмен данными с ПК как правило осуществляется по прерываниям.Ручное перемещение осуществляется по тому же таймеру с одновременнной проверкой отпускания кнопки(в основном связано с программированием интерфейса с пользователем).Насчет разгонов- торможенийй, я думаю в основном должен MACH заморачиваться. При смене частоты следующий импульс просто должен прийти через другой промежуток времени ,проблемы могут быть только при резком изменении перида но разгон-торможение проблема MACHa?В чём я не прав?
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 09:15
sidor094
michael-yurov писал(а):Но, соглашусь - сгенерировать серию импульсов фиксированной длительности на определенном промежутке времени намного проще той задачи, что возникла у меня, когда нужно изменять период и длительность импульсов в ряде случаев намного чаще, чем генерируются сами импульсы.
(например, была частота 20 Гц, и, вдруг, станок резко разгоняется, и за несколько миллисекунд сигнал должен увеличить частоту до нескольких кГц... получается, что ждать окончания импульса длительностью 50 мс (20 Гц) нельзя, и обрывать его тоже нельзя, так как же быть?)
Извините сразу не увидел продолжения.Вопервых количество импульсов программируемых таймеру должно соответствовать количеству шагов задаваемых MACHем .Даже при некотором несоответствии частоты таймера требуемой скорости
за 2мс большой временной разницы не наберётся.А во вторых изменение в скорости задаваемое MACHем не должно превышать разгона двигателя.И при резкой смене направления недостающим (последним импульсом )можно пренебречь если учитывать реальную координату и учесть при последующем перемещении.Это может привести только к некоторому сглаживанию углов (как у следящего привода).
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 10:48
michael-yurov
(для просмотра содержимого нажмите на ссылку)sidor094 писал(а):Обмен данными с ПК как правило осуществляется по прерываниям.
Что произойдет, если прерывание возникнет в тот момент, когда нужно менять частоты генераторов? Сколько времени займет обработка прерывания? А если ПК не ответит сразу?
sidor094 писал(а):Ручное перемещение осуществляется по тому же таймеру с одновременнной проверкой отпускания кнопки
Нужно еще учесть ускорения, торможения (и при этом не потерять координаты, и генерировать корректный сигнал Step), а даже это уже не очень простая задача.
sidor094 писал(а):При смене частоты следующий импульс просто должен прийти через другой промежуток времени
В случае с Mach3 этих проблем не будет, т.к. там либо есть импульс на интервале в 2 мс, либо нет, так что дольше 2 мс задерживаться на генерацию импульса не потребуется, и чаще менять частоту - тоже не нужно будет. Достаточно будет просто равномерно сгенерировать необходимое количество импульсов в течении 2 мс, и не нужно думать о дальнейшем, т.е эти периоды никак не связаны, что очень удобно при генерации шагов, поэтому контроллеров для Mach3 так много.
sidor094 писал(а):При смене частоты следующий импульс просто должен прийти через другой промежуток времени
Если так делать - получится рассинхронизация, которую необходимо будет учитывать (т.е. как минимум придется подсчитывать сгенрированные импульсы), а это силнь усложняет задачу.
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 10:57
sidor094
michael-yurov писал(а):т.е. как минимум придется подсчитывать сгенрированные импульсы), а это силнь усложняет задачу.
Чем?
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 11:03
sidor094
Всё равно внутри прерывания подсчитываешь импульсы X++;Y++;Z++ или -- в зависимости от направления и сравниваешь с заданием.
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 11:15
michael-yurov
Только сейчас заметил - мы почему-о в чужой теме разговариваем! надо бы прекратить это.
(для просмотра содержимого нажмите на ссылку)sidor094 писал(а):И при резкой смене направления недостающим (последним импульсом )можно пренебречь если учитывать реальную координату и учесть при последующем перемещении.Это может привести только к некоторому сглаживанию углов (как у следящего привода).
Это больное место большинства подобных контроллеров - теряется импульс (половинка импульса) при смене направления, из за чего постепенно уползают координаты.
michael-yurov писал(а):т.е. как минимум придется подсчитывать сгенрированные импульсы), а это силнь усложняет задачу.
sidor094 писал(а):Чем?
sidor094 писал(а):Всё равно внутри прерывания подсчитываешь импульсы X++;Y++;Z++ или -- в зависимости от направления и сравниваешь с заданием.
Ну тогда возникает вопрос про способ генерации импульсов... Если их будут генерировать таймеры - как тогда их подсчитывать?
И еще.. как выдержать паузу перед сменой направления и после? Ждать два раза по 2 мс довольно расточительно.
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 11:39
sidor094
Я тут человек новый.Не знаю как перейти в свою тему.А про прерывания таймера хочу сказать ,делал приблизительно так.При входе в прерывание проверяю текущую координату,если не достигла требуемой ,устанавливаю порт генерирующий шаги и увеличиваю значение текущей координаты. При этом никаких потерь не возникает.И ещё устанавливаешь частоту таймера в 2 раза больше требуемой и работаю только на четных прерываниях.На нечетных только сбрасываю порт шагов при этом шаги имеют форму меандра ,что удобно так как позволяет использовать для развязки медленные оптроны.Если возможно подскажите,как бы обсудить вопрос не нарушив правила форума?
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 12:01
michael-yurov
sidor094 писал(а):Я тут человек новый.Не знаю как перейти в свою тему.
Попросил администраторов отделить часть сообщений, начиная с #32.
sidor094 писал(а):А про прерывания таймера хочу сказать ,делал приблизительно так.При входе в прерывание проверяю текущую координату,если не достигла требуемой ,устанавливаю порт генерирующий шаги и увеличиваю значение текущей координаты. При этом никаких потерь не возникает.И ещё устанавливаешь частоту таймера в 2 раза больше требуемой и работаю только на четных прерываниях.На нечетных только сбрасываю порт шагов при этом шаги имеют форму меандра ,что удобно так как позволяет использовать для развязки медленные оптроны.
Если обрабатывать прерывание каждого импульса, да еще и по два раза... какая же тогда будет максимальная частота импульсов?
Лучше бы придумать алгоритм генерации импульсов вообще без прерываний и подсчета.
Нужно то ведь сгенерировать серию импульсов так, чтобы в начале и конце последовательности был определенный уровень сигнала, чтобы эти импульсы равномерно были распределены на 2 мс, ну и еще учесть вопрос смены направления.
Т.е. было бы хорошо, если можно было бы вообще не контроллировать,ч то там сгенерировалось, а просто быть уверенным, что если нужно было сгенерировать 137 импульсов, то 137 и получилось, и что следующим шагом (черз 2 мс) можно задавать новые параметры для таймера, и не обрабатывать кучу прерываний.
Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 12:07
selenur
Равномерную генерацию импульсов на необходимом промежутке времени, можно попробовать делать используя алгоритм Брезенхема

Re: Контроллер Mach3 usb на 3 и 4 оси(Mach3 Usb Motion Card
Добавлено: 09 мар 2014, 12:10
michael-yurov
selenur писал(а):Равномерную генерацию импульсов на необходимом промежутке времени, можно попробовать делать используя алгоритм Брезенхема

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