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

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 и радуйся.

11 days later
DCat

Сколько интересных мыслей. Я уже сорок раз запутался. Так ктонибудь скажет на чем писать програмулину-то для 2D станка, чтоб рулила из под ДОСа? Пожааааалуйста 😵

toxa
DCat:

Сколько интересных мыслей. Я уже сорок раз запутался. Так ктонибудь скажет на чем писать програмулину-то для 2D станка, чтоб рулила из под ДОСа? Пожааааалуйста 😵

На си:
watcom c/c++
borland c++ 4.5

На паскале:
freepascal
virtual pascal 2.1
borland pascal 7

STEPMOTOR
toxa:

На си:
watcom c/c++
borland c++ 4.5

На паскале:
freepascal
virtual pascal 2.1
borland pascal 7

или Qbasic 4.5, Tasm
но лучше на вышеуказанном

amb2000

На TAsm c плавающей запятой какие нибудь кривые пересчитывать пожалуй сложновато будет.

DCat:

Сколько интересных мыслей. Я уже сорок раз запутался.

А каких не поделитесь?

toxa
amb2000:

На TAsm c плавающей запятой какие нибудь кривые пересчитывать пожалуй сложновато будет.

Глупо писать на ассемблере то, что можно написаь на си или паскале. Просто бессмысленная трата времени. Если необходимо реализовать какой-то критичный кусок (что врядли понадобится, можно обойтись чистым языком), пишем именно то что надо на ассемблере, потом линкуем к программе на си или паскале. Никаких проблем. Но, извините, возиться с интерфейсом пользователя, когда есть turbovision/graphicsvision или разбором строк, когда есть lexx/yacc и regexp’ы - просто бессмысленно.

amb2000:

А каких не поделитесь?

На мой взгляд, самая интересная мысль - взять за основу turbocnc или для любителей linux и gcc - emc и на основе этого делать то, что необходимо.