Самописная прога ;)

Обсуждение софта, программ, постпроцессоров...

Модератор: life

Аватара пользователя
39v
Станкостроитель
Станкостроитель
Сообщения: 14
Зарегистрирован: 10 фев 2010, 01:00

Самописная прога ;)

Сообщение 39v »

Сколько уже желающих было своё что то написать и все куда то пропали ))))

Тему начал так как написал таки свое и хочу поделится, ну и помощь у знающих в программировании людей попросить.

Прога рассчитана под контроллер на 3х мс 555tm7 с драйвером на транзисторах (принцип работы 4е пина от LPT на катушки, + 4е пина на выбор двигателя).

В общем в проге сейчас работает:
1) Базовые функции работы двигателями
2) Оптимизация файлов формата *.drl (может пригодится вам независимо от типа вашего контроллера ;) ) принцип действия прост - упорядочивает координаты точек по кратчайшему расстоянию от "текущей".
3) Собственно режим сверловки плат. (пока есть небольшие глюки. при размере сверловок примерно 200х150 мм сбивается примерно на 2-3мм по оси "у")
4) Режим "ручного" управления двигателями. для тестов механики и подсчета "мм/шаг". Так же есть набор фалов *.drl + 1 *.dxf которые помогут быстро найти "косяки" в механике.

Короче говоря - пишите кто заинтересовался.
andruxoidus
Станкостроитель
Станкостроитель
Сообщения: 451
Зарегистрирован: 19 дек 2009, 01:00
Откуда: UA
Контактная информация:

Сообщение andruxoidus »

я уже заинтересовался, оптимизатором DRLа)))
он его в Gкод переганяет, или просто оптимизирует?
Аватара пользователя
spike
Станкостроитель
Станкостроитель
Сообщения: 28
Зарегистрирован: 01 сен 2009, 00:00
Откуда: Протвино
Контактная информация:

Re: Самописная прога ;)

Сообщение spike »

39v писал(а):Сколько уже желающих было своё что то написать и все куда то пропали ))))
Как это все пропали!? Не все... :)
39v писал(а):Тему начал так как написал таки свое и хочу поделится, ну и помощь у знающих в программировании людей попросить.
...
Короче говоря - пишите кто заинтересовался.
Интересно. А программа-то сама где?
Помочь - всегда пожалуйста.
Аватара пользователя
39v
Станкостроитель
Станкостроитель
Сообщения: 14
Зарегистрирован: 10 фев 2010, 01:00

Сообщение 39v »

А куда вам лучше выложить? тут я так понял все на Неизвестный выкладывают... но эт вроде как другой сайт и "чужие" админы... могу хоть на мыло прислать... Как тут у вас принято?
Trudogolik
КУМ
КУМ
Сообщения: 6126
Зарегистрирован: 26 авг 2009, 00:00
Имя: Николай Иосифович
Откуда: Инта респ. Коми, 2000 км от Москвы на север!
Контактная информация:

Сообщение Trudogolik »

Моя страница для тех, кто ищет ЧПУ выжигатели: https://vk.com/club153912868

Самое ценное в этом мире - информация.
Мы рады предложить вам ее в подарок!
Аватара пользователя
39v
Станкостроитель
Станкостроитель
Сообщения: 14
Зарегистрирован: 10 фев 2010, 01:00

Сообщение 39v »

Извините, на тот хостинг выкладывать не хочу и не буду.
Качайте с депозитов:
http://depositfiles.com/files/hvsu15wac
Текущею проблему опишу стразу - отсутствие нормальной процедуры delay () в delphi
данная версия вероятней всего сильно тормознутая в том смысле что движки переключаются медленно. Кто умеет работать в делфе - открываем исходник и правим процедуру delay() , компилируем и радуемся, ДЕЛИМСЯ. В остальном вроде глюков нет. прога написана под контроллер Ветрова Романа.
Основная задача проги - сверление дырок в печатных платах. там еще немного про черчение есть, но эта функция почти не тестировалась мной и почти наверника глючная. Есть оптимизация файла *.drl с подбором и сортировкой точек по кратчайшему расстоянию между ними. к кнопке тест прикручена, если не ошибаюсь(давно не дописывал ничего нового)
В папке программы есть *.drl файлы корпусов микросхем расположенных под разными углами, предназначены в основном для оценки "правельности" механики(станок собирал паралельно написанию проги, так что тестировать приходилась и то и другое одновременно).
Если что - пишите, мб помогу чемто.
aLf
Станкостроитель
Станкостроитель
Сообщения: 160
Зарегистрирован: 26 фев 2010, 01:00
Откуда: Красноярский край
Контактная информация:

Сообщение aLf »

У меня кстати рабочая прога есть, оптимизатор только dxf для выжигания поинт ту поинт, но там собственно от сверления не особо отличается все тоже :), на моем компе 500 тыс точек (дырок) оптимизировал 45 секунд. Длинна холостого хода уменьшается на 5-90% в зависимоти от "заполненности" рисунка.

Сам алгоритм простейший :)
Trudogolik
КУМ
КУМ
Сообщения: 6126
Зарегистрирован: 26 авг 2009, 00:00
Имя: Николай Иосифович
Откуда: Инта респ. Коми, 2000 км от Москвы на север!
Контактная информация:

Сообщение Trudogolik »

Дмитрий Александрович, скачал, запустил, возникла куча вопросов:
А как установить разные скорости по осям?
И по интерфейсу - нельзя ли на главной панели сделать все надписи или по русски или по английски. Наличие рядом надписей "OPEN" и "Показать" , "Применить" и "LOAD" как то сбивает с толку.
Очень неудобно наложение окон, нет ли возможности сделать изменяемые размеры окон или сделать одно большое окно?
Как отобразить путь инструмента в окне просмотра, при предпросмотре и во время работы?
Что такое тесты базовых функций? Насколько я понял это дополнительные возможности для проверки?
И еще, программа почему-то при первом запуске показала ошибку открытия файлов, а при попытке сверления - иногда зависает. У меня WIN XP SP2.
С механикой состыкую и покопаюсь на праздники, благо контроллер на ТМ7 где то еще валяется
Моя страница для тех, кто ищет ЧПУ выжигатели: https://vk.com/club153912868

Самое ценное в этом мире - информация.
Мы рады предложить вам ее в подарок!
Аватара пользователя
39v
Станкостроитель
Станкостроитель
Сообщения: 14
Зарегистрирован: 10 фев 2010, 01:00

Сообщение 39v »

Ну попробую ответить по порядку )
- разные скорости по осям пока не планировались, но если очень нужно, то дописать не сложно. Пока что скорость на все оси задается в окошке "Delay" если не ошибаюсь, с последуюшим нажатием кнопки "Применить" (собственно в этом то и проблема проги. Разницы в интервалах 1 мс и 50-70 мс почти нет )
- Проблема подписей пока не стоит, т.к. гораздо важней разобраться с задержкой перезаписи в порт иначе прогой и так пользоваться не будут т.к. медленно. Как только delay ктонить толковый подскажет обещаю все сделать на русском, ну или на англ. кому как понравится )
- Наложение действительно не очень удобная штука, можно решить проблему перенесением пред просмотра на основную форму. НО опять же - не это не дает нормально прогу использовать.
- путь инструмента отображается автоматически во время сверления и по моему даже при простом перемещении в указанную точку. Возможно вы этого не увидели по причине или слишком большой задержки или наоборот - слишком маленькой. Тут надо поиграться временем задержки ибо процедура самописная (точнее взятая с форумов где люди эту проблему обсуждали ) и в полне может привязываться к конкретному компу т.е. скажем у меня 10мс в ее понимании могут длится дольше чем у кого то другого.
- Тесты базовых ф-цый просто исторически сложились... Использовал когда тестировал сам контроллер + писал и тестировал процедуры типа moveX, moveY, moveZ На данный момент они просто помогают тестировать контроллер, если появляются сомнения в его корректной работе (400 полушагов = полный оборот двигателя).
- С ошибкой открытия файла все просто - прога предполагает, что на момент ее запуска у вас в директории c:\temp лежит файл settings.ini в котором она ищит предыдущие введенные вами настройки. Т.к. она его там не находит - жалуется, потом при закрытие она его создаст сама(если у вас c:\temp есть) и больше вроде как ругаться не должна.
Для новичков могу выложить печатную плату своего контроллера в программе Layout - будет легче собирать. Сразу хочу отметить что контроллер "медленный" без использования ШИМ и лучше собирать другой )))
В свою очередь, еще раз прошу помочь написанием КОРРЕКТНО РАБОТАЮЩЕЙ процедуры delay тогда прога будет полезна многим. Заранее Спасибо.
В программировании я не силен так что не судите строго.
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

В свою очередь, еще раз прошу помочь написанием КОРРЕКТНО РАБОТАЮЩЕЙ процедуры delay тогда прога будет полезна многим. Заранее Спасибо.
Под виндой это не реально. Если меем ввиду что-то серьёзное. ДОС, или свой драйвер порта,как в маче.
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Serg
Станкостроитель
Станкостроитель
Сообщения: 628
Зарегистрирован: 10 янв 2010, 01:00
Откуда: Украина, Львов

Сообщение Serg »

Просишь помочь написать, но не говоришь на чём пишешь.

А в винде ты никогда не получишь правильную задержку, потому как планировщик процессов и потоков в ОС кривой, вернее не расчитаный на это. Т.е. все потоки изначально имеют один приоритет и пихаются в процессор тупо по очереди. Если где-то влезет какая-то программка - считай твою отодвинет. Или ищи как получить чуть ли не системный приоритет потока. У акрониса это, вроде как, реализовано.
Или пиши под 98-ю винду, а лучше под дос.
Gentoo way
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

Забыл:). Интересный факт. Драйвер мача виден в диспетчере устройств. Это как понимать?
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Аватара пользователя
39v
Станкостроитель
Станкостроитель
Сообщения: 14
Зарегистрирован: 10 фев 2010, 01:00

Сообщение 39v »

Пишу на Delphi, думаю в основном изза схожести с паскалем и готовых форм и кнопочек )))) могу на php переписать, да и си разберусь если нужно будет. Главное тут не язык, а вставшая в процессе написания проблема точных временных интервалов. Кстати - вопрос к любителям доса :) много еще тех кто в чистом досе сидит (а не эмулирует его из под винды)? Сразу замечу - переход в дос не считаю разумным т.к. есть много девайсов которые в полне нормально работают через порты из винды и т.д. думаю что отдельный комп под досом не все соберут только для станка скажем так. Надо искать другой путь. Тем более он явно есть.
а по поводу не реально - все относительно. Ветров в своей проге сделал чтото хитрое что позволяет с удовлетворительной точностью задавать задержку. Кроме того видел в сети некую пояснялку от заграничного гуру по поводу написания программ контроля чпу через ЛПТ порт. Вот только неосилил ее в виду того что не очень дружу с объектами в программировании и поэтому 5-10 страниц о том кто кого "родил" и что именно он при этом "перекрыл" (в виде исходного кода) для меня клинопись...
Может смелые найдутся, так я его исходники поищу. Может завалялись у меня гдето. Там как будто с МилиСек-дами все нормально(по крайней мере с виду).
Последний раз редактировалось 39v 29 апр 2010, 16:32, всего редактировалось 1 раз.
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

Ветров в своей проге сделал чтото хитрое
Да нет там хитрого ничего:).У меня и исходники были, всё стандартно. Тоже пытались добиться стабильных результатов. Оно как: комп 2гГц - пашет на ура, а 470 мег - затыки достают даже если проге установить максимальный приоритет. Винда, одно слово. Многозадачность, а отсюда очередность процессов. Вот и...
На обменнике валяется наша с сыном под ДОС. Стартует с диска. Моторы - песТня, разгон-торможение, в общем ОК:). Но когда влез в мач, то понял что не сможем предоставить и десятой части возможностей, которыми он обладает. И ВСЕ эти возможности наверное никто и не знает:). В смысле скопом.
39v, пойми правильно, я ниникак не против написания таких программ, просто описываю грабли.
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Аватара пользователя
39v
Станкостроитель
Станкостроитель
Сообщения: 14
Зарегистрирован: 10 фев 2010, 01:00

Сообщение 39v »

та тут дело даже не в этом против или за. я когда эту прогу писать начал я ее как бы бесплатным аналогом хотел сделать. А то как бы много чести за Ветровскую прогу платить... кроме того мне были не нужны особые навороты Мач. мне нужен был открытый исходный код который я мог бы приспосабливать под свои нужды. Да и любой другой мог бы скачать ее с исходниками и модернизировать под себя. Скажем кинуть на форму 1ну кнопку в которую он вложит нужную именно ему последовательность действий и заменит ею придыдущие 10-15 кнопок. В этом то и есть преимущество исходников...
Иногда людям не нужна громоздкая вешь типа мач, а напротив нужно нечето легкое что можно быстро настроить под себя...
Я просто системным администратором работаю, так нам иногда задачи для тупых ставят - например написать скрипт который конектится к фтп серверу и выкладывает туда файлы а для пользователя это был бы простой ярлычек на раб столе "кликнул и забыл". Бабуля пальцем отчет за день в экселе натыкала, что такое фтп она знать не знает и не интересуется, кликнула по значку и ОК... вот в чем простота... а то что этот скрипт кудато лезет, резервные копии делает, пользователя, пароль вводит.... ей это вообще не о чем не говорит... и более того - оно ей и не надо.
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

Иногда людям не нужна громоздкая вешь типа мач, а напротив нужно нечето легкое что можно быстро настроить под себя...
Согласен, из-за этого тоже своё писали...
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Аватара пользователя
spike
Станкостроитель
Станкостроитель
Сообщения: 28
Зарегистрирован: 01 сен 2009, 00:00
Откуда: Протвино
Контактная информация:

Сообщение spike »

39v писал(а):Как только delay ктонить толковый подскажет обещаю все сделать на русском, ну или на англ. кому как понравится )
Вот, рекомендую ознакомиться: Если очень хочется, то можно... :nose:
Serg
Станкостроитель
Станкостроитель
Сообщения: 628
Зарегистрирован: 10 янв 2010, 01:00
Откуда: Украина, Львов

Сообщение Serg »

Dj_smart
Всё предельно просто... драйвер у мача отдельная подпрограмма, работающая почти или на уровне прерываний (акронис тру имейдж так же работает) - это даёт возможность отодвинуть сторонние процессы из очереди на выполнение. Единственное пройдут рядом/перед основние системные процессы. потому мач и выдаёт пракрасные результаты.

Нужно курить планировщик и переключение контекста в ОС дабы добится хороших результатов.


В линуксе же архитектура системы позволяет добиватся просто офигенных результатов работы в риал-тайм. Как минимум это работа с устройствами и портами через файл устройства. Возможность грамотной работы с приоритетами процессов и тд.


Автору могу только рекомендовать ознакомится с линуксом, выбрать простейший дистрибютив и начать писать очень простую программу с хорошей русской локалью под него. Откроешь исходники - думаю, тебе помогут. С виндой ты каши не сваришь и мач писали явно не самоучки, а весьма грамотные люди, которые архитектуру ОС виндовс знают как свои 5 пальцев и программируют на уровне ядра/драйверов.
Gentoo way
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

Всё предельно просто... драйвер у мача отдельная подпрограмма
Это я знаю. Меня интересует почему оно видится как ОТДЕЛЬНОЕ устройство?
Автору могу только рекомендовать ознакомится с линуксом, выбрать простейший дистрибютив и начать писать очень простую программу с хорошей русской локалью под него
Смысл? Стоит оно того? Могу дать десяток ссылок на халявный мач. Всёравно не переплюнуть....
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Trudogolik
КУМ
КУМ
Сообщения: 6126
Зарегистрирован: 26 авг 2009, 00:00
Имя: Николай Иосифович
Откуда: Инта респ. Коми, 2000 км от Москвы на север!
Контактная информация:

Сообщение Trudogolik »

Dj_smart писал(а): Могу дать десяток ссылок на халявный мач. .
:rights: Только через мой... через личку.
Моя страница для тех, кто ищет ЧПУ выжигатели: https://vk.com/club153912868

Самое ценное в этом мире - информация.
Мы рады предложить вам ее в подарок!
Аватара пользователя
spok
Наблюдающий
Сообщения: 4
Зарегистрирован: 21 апр 2010, 00:00
Контактная информация:

Сообщение spok »

За задержками вам сюда: http://habrahabr.ru/blogs/delphi/75234/, либо в комментарии туда же.
От себя добавлю: (ТАК НЕЛЬЗЯ ДЕЛАТЬ, ПОЭТОМУ ДЕЛАЙТЕ ЭТО ТОЛЬКО ОПЦИОНАЛЬНО с по умолчанию выключенной опцией) нужно до начала ожидания выставить приоритет процесса - на реал-тайм, приоритет этого ожидающего потока - на тайм-критикал, сделать любое окно вашего приложения - активным (SetForegroundWindow,SetActiveWindow)... дождаться своей паузы... и вернуть приоритет потока и процесса на место. Заклинаю: только опционально! За подробностями - в каждую вторую книгу Криса Касперского (например, в "Техника и философия хакерских атак").

Оптимизация пути... если я правильно понял, речь идёт о свервеловке - это стандартная (кстати, сложная) олимпиадная задача о коммивояжере. Точно решается только перебором, приближённо - хм... рекомендую простейший алгоритм Прима-Краскала... его эээ... оптимизации... обычно хватает на всё.
если я непонимаю о чем я говорю, значет у тебя не достаточно высокий icq!!!
Serg
Станкостроитель
Станкостроитель
Сообщения: 628
Зарегистрирован: 10 янв 2010, 01:00
Откуда: Украина, Львов

Сообщение Serg »

Dj_smart
Устройству назначено прерывание, грубо говоря.. за счёт этого и работает нормально.
А зачем ? ну автор же хочет сам писать, а это выход - простая, маленькая, выполняющая свои ф-ция программа... и менее ресурсоёмкая, на более старый комп.

spok
Задача Монжа-Канторовича, она же транспортная, только с другой формулировкой, не ?
Или теорию графов курить.
Gentoo way
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

Только через мой... через личку.
И даже не в личку:). Мыло.
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Аватара пользователя
spok
Наблюдающий
Сообщения: 4
Зарегистрирован: 21 апр 2010, 00:00
Контактная информация:

Сообщение spok »

Задача Монжа-Канторовича, она же транспортная, только с другой формулировкой, не ?
Или теорию графов курить.
Не, другая (основные отличия: ЗК - на вес ребра, ЗМК - на поток через ребро и содержимое узла). Собственно, тут уже без теории графов... либо скучно (фиг решишь), либо интересно (придумывать велосипед). И если это не олимпиада, нужно брать любое стандартное решение под эту задачу.
Последний раз редактировалось spok 30 апр 2010, 20:58, всего редактировалось 1 раз.
если я непонимаю о чем я говорю, значет у тебя не достаточно высокий icq!!!
argusstar
Станкостроитель
Станкостроитель
Сообщения: 615
Зарегистрирован: 28 авг 2009, 00:00
Откуда: г.Омск

Сообщение argusstar »

spok, а на пальцах обяснишь?или переведи
Serg
Станкостроитель
Станкостроитель
Сообщения: 628
Зарегистрирован: 10 янв 2010, 01:00
Откуда: Украина, Львов

Сообщение Serg »

  Не в тему:   Транспортная задача интересная вещ до тех пор, пока тебя не заставляют её программировать...
Gentoo way
Аватара пользователя
spok
Наблюдающий
Сообщения: 4
Зарегистрирован: 21 апр 2010, 00:00
Контактная информация:

Сообщение spok »

ok, пусть будет на пальцах алгоритм Прима-Краскала.
Есть координаты дырок.
Условно, у нас существует матрица расстояний - от каждой до каждой (сама матрица, собственно не нужна, накладные расходы на вычисление расстояний - ничтожные).
Выбираем такие две дырки, между которыми расстояние кратчайшее. Запоминаем (занимаем) обе. Берём следующее кратчайшее расстояние между двумя дырками, но такое, чтобы не между этими же. И так до тех пор, пока свободные дырки не закончатся. В конечном итоге получается оптимальная (согласно этому алгоритму) последовательность посещения всех дырок.
Напоминаю, что это сложная задача (т.е. не имеющая никакого точно решения, кроме получаемого путём полного перебора всех вариантов решения), однако это самый простой алгоритм, легко программируется. Решение, в общем-то, неплохое. Если нужно пооптимальнее - следует смотреть в сторону метода ветвей и границ, либо перебора с возвратом, либо ещё чего-то совсем более сложного.
Очень легко представить наглядно - взять карандаш, линейку, листик . Наставить точек семь, соединить каждую с каждой линией, а дальше - по алгоритму.
Так лучше? ;-)
если я непонимаю о чем я говорю, значет у тебя не достаточно высокий icq!!!
Dj_smart
Смотрящий
Сообщения: 7565
Зарегистрирован: 28 авг 2009, 00:00
Имя: Юрий
Откуда: Украина. Межевая.

Сообщение Dj_smart »

если ты непонимаешь о чем я говорю, значет у тебя не достаточно высокий icq!!!
Точно:(.
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Efim
Станкостроитель
Станкостроитель
Сообщения: 1484
Зарегистрирован: 03 дек 2009, 01:00
Откуда: РФ Лен.обл.

Сообщение Efim »

spok писал(а):ok, пусть будет на пальцах алгоритм Прима-Краскала.
Есть координаты дырок.
Это еще зачем?? Напиши G-код, в котором ты сам указываешь какое отверстие сверлить первым, вторым.. и последним, а так же их координаты, скорости перемещения между операциями. Пусть даже 100-1000 отверстий, все равно время написания кода достаточно мало.
А сверлить по чертежу, обсчитывая его - это, я считаю, бред. Нужна наладка-подгонка чертежа и ни о какой оптимизации говорить тут не приходится, пользуйся хоть каким алгоритмом и если в результате обработки рисунка получается G-код, то его оптимизация отнимет времени столько же, как и написание его вручную. Отсчет от отверстия к отверстию приводит к накоплению ошибки, к 100му отверстию она может иногда стать соизмеримой с размером отверстия.
PS Обработка по рисункам подходит только для художественных задач. Я такими не занимаюсь...
Не тратьте силы, возьмите молоток побольше.
andruxoidus
Станкостроитель
Станкостроитель
Сообщения: 451
Зарегистрирован: 19 дек 2009, 01:00
Откуда: UA
Контактная информация:

Сообщение andruxoidus »

Это еще зачем?? Напиши G-код, в котором ты сам указываешь какое отверстие сверлить первым, вторым..
ну как зачем, печатные платы к примеру. там уже есть готовый файл с координатами сверловки, а вот оптимизации никакой разбросаны как попало. врядли ктото вручную захочет их переписывать)))
Ответить