Написание проги для упраления чпу

DCat

Приветствую, всех Вас друззья, хоббисты. У меня вот кака тема назрела.
Хочу вот написать програмулину для управления простеньким станочком на 4 ДШИ-200 для резки пенопласта горячей ниточкой. Но… Вот это НО меня и беспокоит 😃 . Интересно как это все реализовать в практическом виде? Каков принцип управления шаговыми движками через ЛПТ, на чем прогу ваять. Вобшем хочу рисунок закинуть, в G-код перевести, на станочке резать (это в обшем, может что упустил, поправьте). Може хто подмогнет советом, сылочкой и др. инфой. Только не надо предлагать готовые програмные решения типа Mach2 CKam и др. Хочется так сказать самому познать всю суть данной проблемы Буду рад любой помощи. Заранее спасибочки.

Практик
DCat:

Приветствую, всех Вас друззья, хоббисты. У меня вот кака тема назрела.
Хочу вот написать програмулину для управления простеньким станочком на 4 ДШИ-200 для резки пенопласта горячей ниточкой. Но… Вот это НО меня и беспокоит 😃 . Интересно как это все реализовать в практическом виде? Каков принцип управления шаговыми движками через ЛПТ, на чем прогу ваять. Вобшем хочу рисунок закинуть, в G-код перевести, на станочке резать (это в обшем, может что упустил, поправьте). Може хто подмогнет советом, сылочкой и др. инфой. Только не надо предлагать готовые програмные решения типа Mach2 CKam и др. Хочется так сказать самому познать всю суть данной проблемы Буду рад любой помощи. Заранее спасибочки.

Первая помощь в этом вопросе такова-пожалейте себя ради бога и не беритесь за это.Угрохаете
два года труда и получите за это 1 раз 50 (ПЯТДЕСЯТ) долларов.После чего Ваша программа будет крякнута(Если она вообще чего-то стоит) и выставлена МЕЖДУНАРОДНЫМИ пиратами по 100 рублей
за пучок на всех развалах страны.Все возможные и невозможные способы защиты помогут Вам также,как помогли всем остальным разработчикам софта.

DCat
Практик:

Первая помощь в этом вопросе такова-пожалейте себя ради бога и не беритесь за это.Угрохаете
два года труда и получите за это 1 раз 50 (ПЯТДЕСЯТ) долларов.После чего Ваша программа будет крякнута(Если она вообще чего-то стоит) и выставлена МЕЖДУНАРОДНЫМИ пиратами по 100 рублей
за пучок на всех развалах страны.Все возможные и невозможные способы защиты помогут Вам также,как помогли всем остальным разработчикам софта.

Да не в том дело. Я совершенно не преследую коммерческие цели. Никому ничего продавать не собираюсь. Я хочу познать. Самосовершенствование превыше денег, вот и все 😒

Владимир_У

Похвальное дело. Примерно затем же для чего у меня токарный станок.

На первый взгляд (хотя я очень отстал в программировании):

  1. Управлять двигателем через порт очень просто - в порт (по определенному адресу) записывается байт, каждый бит которого соответствует проводочку в ЛПТ. Соответственно собираем нужный байт из битов, описывающих направление вращения, затем то же + биты “шаг”, затем “шаг” убираем - двигатель вращается на один шаг. Только не знаю как Винды относятся к прямой записи в порт.

  2. Я думаю, что превращение картинки в Ж-коды - надо сделать отдельно, а Ж-коды в импульсы на ЛПТ-отдельно.

  3. Если не гнаться за скоростью, все можно сделать в удобном для себя языке, сейчас это наверное Си

  4. Если знать язык программирования, то главная проблема - это алгоритм превращения картинки в Ж-коды. Начиная например с того, в каком виде должна быть исходная картинка…

  5. Все остальное после нескольких экспериментов - вязание - однообразный, времязанимающий, бездумный процесс написания программы. Ну конечно если мы говорим о приметивной программе.

В.Р.

toxa

Наверное, есть смысл изучить исходники turbocnc. Это очень хороший старт для написания собственного софта.

DCat
toxa:

Наверное, есть смысл изучить исходники turbocnc. Это очень хороший старт для написания собственного софта.

А ссылочка есть на исходник? Было бы здорово посмотреть.

Владимир_У:

Похвальное дело. Примерно затем же для чего у меня токарный станок.

На первый взгляд (хотя я очень отстал в программировании):

  1. Управлять двигателем через порт очень просто - в порт (по определенному адресу) записывается байт, каждый бит которого соответствует проводочку в ЛПТ. Соответственно собираем нужный байт из …

Спастбо огромное за информацию. С языком С я не очень знаком, а вот VB лучше освоил, поэтому я хочу писать именно на нем.

toxa
DCat:

А ссылочка есть на исходник? Было бы здорово посмотреть.

Исходники продают всем желающим по 60$. Я купил. Программа написана на borland pascal…

DCat

Вот снова вопрос назрел. Итак я решил писать прогу на VB. Как я понял VB не работает на прямую с ЛПТ портом, а через драйвер? Так вот кто поведает как это скажется на скорости работы станка, если для управления ШД (ДШИ-200-2)используется связка L297,298?
И вот еше, если допустим подаем на 2 вывод ЛПТ 1, то как ведет себя ШД, и если сбрасываем, тобишь 0, надеюсь вопрос задал корректно, если нет поправьте плиз 😒

toxa
DCat:

Вот снова вопрос назрел. Итак я решил писать прогу на VB. Как я понял VB не работает на прямую с ЛПТ портом, а через драйвер? Так вот кто поведает как это скажется на скорости работы станка, если для управления ШД (ДШИ-200-2)используется связка L297,298?

Связка тут не при чем. Под мультизадачными ОС существует проблема организации малых периодов задержки. В любой момент ваша программа может быть прервана для исполнения другой программы, при этом момент формирования импульса будет задержан. Таким образом, импульсы идут не ровно. Вот степень этой “неровности” зависит от выбранной операционной системы, быстродействия компьютера и особенностей самой программы. Проще всего формировать импульсы под досом.

Alex_CNC
toxa:

Связка тут не при чем. Под мультизадачными ОС существует проблема организации малых периодов задержки. В любой момент ваша программа может быть прервана для исполнения другой программы, при этом момент формирования импульса будет задержан. Таким образом, импульсы идут не ровно. Вот степень этой “неровности” зависит от выбранной операционной системы, быстродействия компьютера и особенностей самой программы. Проще всего формировать импульсы под досом.

Уважаемые, а можно поступить иначе!!!
Забрать управление (во времени) других пограмм, в многозадачных ОС под контроль Вашей программы, и позволять им выполнятся только нужное Вам время!!! Затем управление переходит опять под Ваши нужды. И не каких временных отклонений!

toxa
Alex_CNC:

Забрать управление (во времени) других пограмм, в многозадачных ОС под контроль Вашей программы, и позволять им выполнятся только нужное Вам время!!! Затем управление переходит опять под Ваши нужды.

Вы не можете это сделать в nt/2000/xp. Хотя и существуют т.н. realtime extention’ы для линейки nt, все это достаточно сложно. Они не бесплатные и недешевые. Софт должен быть заточен на использование этих расширений.

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

Alex_CNC

Вот как раз о драйвере и идет речь.

Как говорят мои друзья менты - Не важно каким способом, важен результат!

toxa
Alex_CNC:

Вот как раз о драйвере и идет речь.

Драйвер - не панацея. Если бы все было так просто, не нужны бы были RTX, а мач работал бы идеально.

Alex_CNC

Кстати сказать XP не позволяет напрямую обращатся к портам и системнному таймеру (пробовал на Assemblere), но в режиме эмуляции WIN95-98 не ругается и все работает на ура. Но нужно предпринять особые меры, чтобы OS не выполняла свои задачи в тот момент пока идет работа с портом.

Mach - хорошо работает с микрошаговым режимом (8) и та ничтожно малая неравномерность практически не сказывается на шаговый двигатель, а вот сервомотор с энкодерами ошибается при высокой частоте вращения. даже при средней.

toxa
Alex_CNC:

Но нужно предпринять особые меры, чтобы OS не выполняла свои задачи в тот момент пока идет работа с портом.

Какие подразумеваются “особые” меры? Мне таковые не известны. Тем более, когда программа dos и работает в режиме эмуляции это вдвойне сложнее, чем просто win32 приложение.

С портами под xp работать можно, при чем возможны разные варианты. Либо обращаться к ним из ring0 в своем (чужом, универсальном) драйвере, либо из того же ring0 разрешить приложению, запущенному в ring3, обращаться к нужному порту. Дальше можно работать напрямую. Но драйвер по-любому нужен.

Alex_CNC:

но в режиме эмуляции WIN95-98 не ругается и все работает на ура

если не считать того неприятного факта, что этот таймер виртуальный и эти порты виртуальные. 😃 или вы о режиме, в который надо перезагружаться? чем это тогда отличается от доса?

Alex_CNC
toxa:

Они не бесплатные и недешевые. Софт должен быть заточен на использование этих расширений.

А неужели можно сделать CNC, я имею ввиду готовый результат (софт и хард) бесплатно или дешево? Да еще и работало чтоб!

Да я про существование DOSа уже давно забыл, как о кошмарном сне!

toxa
Alex_CNC:

Mach - хорошо работает с микрошаговым режимом (8) и та ничтожно малая неравномерность практически не сказывается на шаговый двигатель, а вот сервомотор с энкодерами ошибается при высокой частоте вращения.

Чем “больше” микрошаг, тем ниже скорость. Чтобы сохранить скорость, требуется более высокая частота. Чем больше частота, тем меньше интервалы, которые необходимо точно замерять. Чем меньше интервалы, тем больше погрешность.

Alex_CNC
toxa:

Чем “больше” микрошаг, тем ниже скорость. Чтобы сохранить скорость, требуется более высокая частота. Чем больше частота, тем меньше интервалы, которые необходимо точно замерять. Чем меньше интервалы, тем больше погрешность.

Я согласен с Вами, НО для тех систем где имеется обратная связь по углу поворота вала двигателя. Вот только тогда и будет заметна эта неравномерность. А например при использовании скажем A3770 не о какой неравномерности не может быть и речи! Все крутится ровно. проверено! Важно иметь шустрый компьютер.

Граф
Alex_CNC:

А неужели можно сделать CNC, я имею ввиду готовый результат (софт и хард) бесплатно или дешево? Да еще и работало чтоб!

Да я про существование DOSа уже давно забыл, как о кошмарном сне!

А зря забыли. Если хочется сделать грамотно и качетвенно, то подходить надо с другой стороны - со стороны станка а не со стороны домашнего компьютера.

Вот по этому и ставят вместе с контроллером для шаговых моторов плату простенького компьютера, который только и умеет что принять по сети G-код и подать в контроллер шаговых двигателей нужные последовательности импульсов. И все это железнобетонно-стабильно, в ДОС-е!

Городить сложную программу и занимать шустрый компьютер выпиливанием – путь тупиковый.

aleks_shap

Под винду писать не серьезно.
Пробовал выдавать импульсы на LTP под XP, неравномерность была дикая, написал драйвер под нулевое кольцо, стало получше, но не намного. Поставил защелку (Lock, функция есть в DriverStudio от Numega), стало хорошо 😃 4мкс минимальная ширина импульса которую я достиг, может можно и меньше, мне хватало. Но при использовании этой защелки система не реагирует ни на какие раздражители. 😃 Т.е. экран остается в том же состоянии, мышка и клава не работают, как и все остальное - проц выполняет только одну задачу - вашего драйвера.
В принципе почти как под ДОСом.

Andrey12

Думаю об ЛПТ лучше даже не думать. www.modbus.org давно уже существует. Правильно разработать драйвер ШД с встроенным modbus сервером(клиентом) с Ethernet интерфейсом.

toxa
Andrey12:

Правильно разработать драйвер ШД с встроенным modbus сервером(клиентом) с Ethernet интерфейсом.

Ага. Только полноценный компьютер pc/104 со всей периферией и rtlinux+emc будет дешевле и универсальнее. С ethernet, tcp/ip, и еще фиг знает чем. Мало ли какие спутники летают… Хотелось бы что-то более приближенное к жизни. Промышленные системы немеряной стоимости как-то совсем малоинтересны.

Alex_CNC:

Я согласен с Вами, НО для тех систем где имеется обратная связь по углу поворота вала двигателя. Вот только тогда и будет заметна эта неравномерность.

Обратная связь не имеется в хобби-станках. Она не нужна совершенно. А неравномерность будет хорошо заметна на детали.

amb2000

Мож пора на USB переходить с последующим дешифратором на микроконтроллере(с USB-)?
А там уж хоть на 3 мотора хоть на 20.
toxa! С днём варенья!

Andrey12

2 toxa

Не обязательно делать PC104 или ему подобный. Вы же не на улице в -30 будете им пользоваться.
Стоимость комплектующих (железо) под ведомое устройство будет в районе 50уе. Но нужно писать программу для MCU, что бы поддерживала modbus протокол. Именно здесь и будут проблемы 😃

Кстати существуют и другие варианты - программная реализация “ведомого” выполняет функции моста с любым железом. Запускается на том же компе где modbus сервер.

toxa
amb2000:

Мож пора на USB переходить с последующим дешифратором на микроконтроллере(с USB-)?

Вопрос в адаптации софта. Прошивка микроконтроллера будет не так уж проста. Фактически, в нем надо будет реализовать половину управляющей программы. Самую ответственную и трудоемкую: передвижение по вектору по всем осям одновременно, разгон-торможение, линейная и круговая интерполяция и так далее. Если у большинства проблемы с тем, чтобы просто фазы двигателя переключать в зависимости от двух пинов, то уж такой софт…

Есть программа mach и в ней есть USB mode. Но там он достаточно тупой. Фактически, там реализован LPT по USB. И все проблемы с задержками как были так и есть, потому что интервалы все равно измеряются mach.

Andrey12:

Не обязательно делать PC104 или ему подобный. Вы же не на улице в -30 будете им пользоваться.

Как это… “Размер имеет значение”. 😃 У меня все вместе с компьютером собрано в корпус 15x30x6 см. Вместе с дисководом.

Andrey12:

Стоимость комплектующих (железо) под ведомое устройство будет в районе 50уе. Но нужно писать программу для MCU, что бы поддерживала modbus протокол. Именно здесь и будут проблемы 😃

Вот-вот. А тут поставил emc, turbocnc или еще лучше step-four и радуйся.