Сообщений в теме: 25
#1 OFFLINE
Отправлено 21 Июль 2015 - 23:17
Очень нужна ваша помощь. Сам в программировании ничего не понимаю( Наверное нужно писать что-то типа макроса.
Готов материально отблагодарить за помощь. Понимаю, что не у всех есть время на решение моих проблем.
---
Станок - самодельная чпу сварка для продольных швов. Работает на Mach3, контроллер в алюминевом корпусе TB6560.
Нарисовал схему станка.
Небольшое уточнение:
Деталь - полностью металлическая, будет присоединена к контроллеру.
Металлический щуп будет присоединен к контроллеру.
Таким образом получится что-то типа датчика нормальноразомкнутого, который будет посылать сигнал на контроллер когда щуп соприкоснется с деталью, т.е. замкнет цепь.
Необходимо написать программу (скорее всего макрос) для алгоритма:
1. Горелка едет вниз по Оси Z, в какую-то координату которая заведомо ниже поверхности детали.
2. Как только щуп касается поверхности детали, ось Z останавливается и движется вверх на 2 шага (мм) вверх.
Все. Больше от макроса ничего не требуется.
При этом система система координат станка не должна сбиваться, т.е. чтобы этот макрос вставленный в управляющую программу ее не ломал.
И еще вопрос куда в моем контроллере необходимо воткнуть провода от детали и от щупа, чтобы это все правильно работало?
Готов материально отблагодарить за помощь. Понимаю, что не у всех есть время на решение моих проблем.
---
Станок - самодельная чпу сварка для продольных швов. Работает на Mach3, контроллер в алюминевом корпусе TB6560.
Нарисовал схему станка.
Небольшое уточнение:
Деталь - полностью металлическая, будет присоединена к контроллеру.
Металлический щуп будет присоединен к контроллеру.
Таким образом получится что-то типа датчика нормальноразомкнутого, который будет посылать сигнал на контроллер когда щуп соприкоснется с деталью, т.е. замкнет цепь.
Необходимо написать программу (скорее всего макрос) для алгоритма:
1. Горелка едет вниз по Оси Z, в какую-то координату которая заведомо ниже поверхности детали.
2. Как только щуп касается поверхности детали, ось Z останавливается и движется вверх на 2 шага (мм) вверх.
Все. Больше от макроса ничего не требуется.
При этом система система координат станка не должна сбиваться, т.е. чтобы этот макрос вставленный в управляющую программу ее не ломал.
И еще вопрос куда в моем контроллере необходимо воткнуть провода от детали и от щупа, чтобы это все правильно работало?
#2 OFFLINE
Отправлено 22 Июль 2015 - 16:22
Не вдаваясь в подробности, так на вскидку, не проще ли обычную УП создать? По которой и опустится на сколько надо поднимется на сколько надо и проедет сколько надо и поднимется где надо. Лично я не вижу никаких препятствий для этого. Зачем усложнять макросами всякими?
#3 OFFLINE
Отправлено 22 Июль 2015 - 18:53
Сначала так и сделали, но заготовки катаются на вальцовочном станке и почти каждая вторая чуть ниже либо чуть выше эталона. В сварке лишний милиметр очень сильно влияет на шов.
#4 OFFLINE
Отправлено 22 Июль 2015 - 19:00
Я бы в сторону алгоритма "авто Z" думал...
Посмотрите как работает, в инете инфы предостаточно, проанализируйте и переделайте под свои нужды...
Сообщение отредактировал preps: 22 Июль 2015 - 19:01
Дневник мастерской https://boosty.to/diycnc
#5 OFFLINE
Отправлено 22 Июль 2015 - 20:14
и почти каждая вторая чуть ниже либо чуть выше эталона
Ну так отбивайте ноль на каждой заготовке, это же секундное дело, а в макросе кнопки "Автопоиск Z=0", после нахождения нуля пропишите подъем на "ваши" 2 мм.
"Датчик у меня толщиной 10,15 мм. + команда поднятия ещё на 30 мм. (первые две строчки макроса)."
http://mir-cnc.ru/to...ктрон/?p=138924
Сообщение отредактировал Ewgeniy: 22 Июль 2015 - 20:16
#6 OFFLINE
Отправлено 28 Декабрь 2015 - 16:58
Доброго времени суток гуру ЧПУ!
Я не сомневаюсь, что среди вас есть профи, которые пользуются Mach3 на уровне скриптов и которым не составит труда подсказать мне.
Сам я не селен в VB скриптах к сожалению.
Буду признателен за любые мысли и подсказки.
Теперь собственно, к самой проблеме. Есть станок у которого операцию сверления выполняет сверло, соответственно, а контур газовый резак обрезает, расположены они на одном супорте и вот для того что бы газовый резак начал с того же начала координат, нужно перед запуском программы сместить резак в -100 по оси Y и скажем - 50 оси Х.
Скажем в скринсете создаю 2 поля ввода для X и Y, куда буду вводить координаты смещения. Но вот как мне создать кнопку, при нажатии на которую будет включаться макрос и выполнять алгоритм на подобии этого:
Если нажата кнопка ПУСК, тогда
проверяем поле координаты X если значение не 0, то обнуляем координату X
проверяем поле координаты Y если значение не 0, то обнуляем координату Y
Переезжаем по оси X на n-ое количество мм, (указанное в специальном поле вода данных, про которое я писал выше)
Переезжаем по оси Y на n-ое количество мм
После чего обнуляем все оси и начинаем выполнение управляющей программы.
Хотелось бы что либо на подобии этого, или другие варианты решение проблемы, буду всему рад. Надеюсь на Ваше понимание.
Я не сомневаюсь, что среди вас есть профи, которые пользуются Mach3 на уровне скриптов и которым не составит труда подсказать мне.
Сам я не селен в VB скриптах к сожалению.
Буду признателен за любые мысли и подсказки.
Теперь собственно, к самой проблеме. Есть станок у которого операцию сверления выполняет сверло, соответственно, а контур газовый резак обрезает, расположены они на одном супорте и вот для того что бы газовый резак начал с того же начала координат, нужно перед запуском программы сместить резак в -100 по оси Y и скажем - 50 оси Х.
Скажем в скринсете создаю 2 поля ввода для X и Y, куда буду вводить координаты смещения. Но вот как мне создать кнопку, при нажатии на которую будет включаться макрос и выполнять алгоритм на подобии этого:
Если нажата кнопка ПУСК, тогда
проверяем поле координаты X если значение не 0, то обнуляем координату X
проверяем поле координаты Y если значение не 0, то обнуляем координату Y
Переезжаем по оси X на n-ое количество мм, (указанное в специальном поле вода данных, про которое я писал выше)
Переезжаем по оси Y на n-ое количество мм
После чего обнуляем все оси и начинаем выполнение управляющей программы.
Хотелось бы что либо на подобии этого, или другие варианты решение проблемы, буду всему рад. Надеюсь на Ваше понимание.
#7 OFFLINE
Отправлено 17 Февраль 2016 - 15:23
Попрошу помощи и я, так как я технарь до мозга костей и с VB совсем не дружу, а проблему решить надо.
И так. В процессе выполнения программы нужно включать и выключать Output1 или устанавливать параметр "Motor Direction Active A" когда выполняется заданное условие.
Условием для включения и выключения является вид движения.
Вижу два возможных варианта:
1. Движения нет - выход выключен. При G0 - выключен. При движении с G1 G2 G3 - выход включен. (Думаю сложно реализовать)
2. Выполнять условие. Если скорость движении в заданных пределах, то есть больше 100 но меньше 1500 мм/мин выход активен, иначе выключен. Допускается учитывать только совместную скорость движения по осям XY. то есть V=sqrt(Vx^2+Vy^2).
Зачем мне это нужно.
Скрытый текст
Испробованный мной макрос.
Скрытый текст
Мой станок - начало, тесты. Уже много чего переделано.
Скрытый текст
Прикрепленные файлы
Сообщение отредактировал Master-Dimm: 17 Февраль 2016 - 15:29
#8 OFFLINE
Отправлено 17 Февраль 2016 - 17:37
Посоветовал бы сменить ноут на системник с LPT или с платой контроллера PCI-LPT и попробовать всё-таки М10-М11. Люди пишут - нормально работает и задержка допустимая.
А макросы, которые что-то постоянно отслеживают тоже не моментально исполняются (имею ввиду Macro Pump и Brain). На счёт Brain точно не знаю, а Macro Pump выполняется с частотой 10 Гц, т.е. даёт задержку 100мс, по описанию.
2. Выполнять условие. Если скорость движении в заданных пределах, то есть больше 100 но меньше 1500 мм/мин выход активен, иначе выключен. Допускается учитывать только совместную скорость движения по осям XY. то есть V=sqrt(Vx^2+Vy^2).
По Brain данных не встречал, может и шустрее будет, почитайте про это.
Это, в какой-то мере, графическая система написания макроса, не сложно разобраться.
В данном случае, задача - сделать 2 сравнения текущей скорости из окна Feedrate (результирующая скорость осей, DRO 818, если не ошибаюсь), с результатами сравнения совершить логическое И (AND) и привязать результат к нужному выходу (Output1, допустим).
Здесь решена похожая задача, с примером файла Brain.
#9 OFFLINE
Отправлено 17 Февраль 2016 - 22:27
По Brain данных не встречал, может и шустрее будет, почитайте про это.
Это, в какой-то мере, графическая система написания макроса, не сложно разобраться.
В данном случае, задача - сделать 2 сравнения текущей скорости из окна Feedrate (результирующая скорость осей, DRO 818, если не ошибаюсь), с результатами сравнения совершить логическое И (AND) и привязать результат к нужному выходу (Output1, допустим).
Здесь решена похожая задача, с примером файла Brain.
Спасибо, Roma.
Brain не работает должным образом. Наверное из за буферизации инструкций платой. Скорей всего после получения значения текущей подачи отправляется команда на активацию выхода1. Эта команда ставится в очередь, где впереди уже есть какие то команды. В результате получаем выполнение с большой задержкой. Может есть возможноть получить расчётную скорость подачи?
В моём кривом макросе (см. мой предыдущий пост) "лазер" включался вместе с началом движения и выключался с прекращением движения. Жаль только в процессе не вкл/выкл. Так что может макрос??? Помогите пожалуйста, кто понимает в скриптах.
На видео результат работы с брейном. Вместо лазера красный диод на плате). Условие: подача по Y больше 10. Кстати если реализовывать через брейн, то это работает и в ручном режиме.
#10 OFFLINE
Отправлено 17 Февраль 2016 - 22:35
В моём кривом макросе (см. мой предыдущий пост) "лазер" включался вместе с началом движения и выключался с прекращением движения. Жаль только в процессе не вкл/выкл. Так что может макрос???
А попробуйте, для интересу, добавить этот макрос М111 в каждую строку УП.
PS. Только скрипт поправить надо, всё-таки контролировать лучше цифру из окна Units/min (оно же Blended velocity), а это OEMDRO (813).
value = GetOEMDRO(813)
If value > 1500 Or value < 100 Then DeactivateSignal(Output1) Else ActivateSignal(Output1)
End
Сообщение отредактировал Roma: 17 Февраль 2016 - 23:42
#11 OFFLINE
Отправлено 18 Февраль 2016 - 15:42
Код М111 в каждой строке кода где есть G0 G1.При применении данного макроса не происходит ничего.
Если изменить чуть
value = GetOEMDRO(813)
If value > 100 Or value < 1500 Then
ActivateSignal(Output1)
Else
DeActivateSignal(Output1)
End If
Тогда работает, только постоянно без прерываний. Но включается точно с началом движения и выкл при останове. При изменении направления движения есть совсем маленькая не страшная пауза. Без М111 паузы нет. Пробовал также оператор And вместо Or. То же самое.
Выполняемая программа.
G0 X0 Y0 F1000 M111 G1 X100 Y0 M111 G0 X100 Y100 M111 G1 X0 Y100 M111 G0 X0 Y0 M30
Оффтоп -
Скрытый текст
#12 OFFLINE
Отправлено 18 Февраль 2016 - 17:18
С вариантом макроса -
value = GetOEMDRO(813)
If value > 100 And value < 1500 Then
ActivateSignal(Output1)
Else
DeActivateSignal(Output1)
End If
при имитации выполнения приведённой УП, индикатор Output1 в окне диагностики включается-выключается.
Но, не так, как ожидалось. Дело в том, что при переходе на новую строку УП, цифры в окне Units/min не могут измениться мгновенно и макрос считывает предыдущую скорость.
А с интерфейсной платой LPT по ссылке, думаю - правильное решение. Конечно, добавить к ней надо будет системник с LPT.
Вопрос: Будет ли "помнить" пин на LPT, который dir оси, своё последнее включённое состояние?
Да, он "помнит".
#13 OFFLINE
Отправлено 19 Февраль 2016 - 12:27
Конечно, добавить к ней надо будет системник с LPT.
Да есть там один, чуть доделать нужно.
Написал вчера китайцам по поводу моей платы и М11/М10. Сказали что в Mach3 эти функции не документированы поэтому они их не делали в плате. Пообещали посоветоваться со своими инженерами, сделать, потестить и сообщить результат. Подожду)
Ещё нашел на просторах интернета вот такую схемку - должна "запоминать" последнее состояния вывода. Буду разбираться. Не понятно что за элемент U1 и как с ним быть. Но это уже тема для другого форума.
Спасибо за помощь!!!
#14 OFFLINE
Отправлено 06 Январь 2017 - 02:28
Добрый всем день!
Помогите разобраться. Я не очень понял концепцию макросов в Mach3. Иду в папку с макросами создаю к примеру файл пусть M900.m1s . И как его запустить из мача?? Назначить на кнопку или как?? Если на кнопку то как? Если открыть как файл для выполнения то тоже как?
#15 OFFLINE
Отправлено 06 Январь 2017 - 03:01
В уп и введи М900
#16 OFFLINE
Отправлено 06 Январь 2017 - 13:46
Так пробовал. Ничего не происходит. Сделал MsgBox("Hello world"), в УП пишу M900 и тишина. В чем проблема может быть?
#17 OFFLINE
Отправлено 06 Январь 2017 - 14:56
Так пробовал. Ничего не происходит. Сделал MsgBox("Hello world"), в УП пишу M900 и тишина. В чем проблема может быть?
окна конечно я так не открывал... но выходы и входа программируются
посмотрите в той ли папке они лежат
может создали в одном профиле а пытаетесь запустить из другого
#18 OFFLINE
Отправлено 06 Январь 2017 - 17:02
Я поставил на помпу шпинделя расходомер по принципу датчика холла, и на СОЖ аналогичную штуковину. Дальше ардуина считывает их показания и выбрасывает на COM порт. В матче есть макрос который вызывается каждый 200мс как я понял и прикручивается к COM порту. Так вот вопрос реально ли считывать оттуда показания и добавить на экран эти данные? В виде как координаты выводятся. В самом макросе я конечно напише обработки аварийных значений этих датчиков, но хотелось бы видеть реальные значения скорости протекания жидкостей.
#19 OFFLINE
Отправлено 06 Январь 2017 - 17:45
для аварии очень легко сделать
сделай лед, привяжи к порту-пину
чтоб считывать.... я бы сделал по модбус из готовых решений)
#20 OFFLINE
Отправлено 07 Январь 2017 - 23:56
По мод басу толковая идея, тем более что матч с ним подружить не сложно. А вопрос про индикацию количества протекаемо жидкости то идеи есть?
Темы с аналогичным тегами макрос для Mach
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных