Перейти к содержимому


Фотография

Написание макросов для Mach3

макрос для Mach

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 25

#1 OFFLINE   snova

snova

    Абитуриент

  • Пользователи
  • Pip
  • 4 сообщений
  • Из:Киров

Отправлено 21 Июль 2015 - 23:17

Очень нужна ваша помощь. Сам в программировании ничего не понимаю( Наверное нужно писать что-то типа макроса.
 
Готов материально отблагодарить за помощь. Понимаю, что не у всех есть время на решение моих проблем.
 
---
 
Станок - самодельная чпу сварка для продольных швов. Работает на Mach3, контроллер в алюминевом корпусе TB6560.
 
Нарисовал схему станка. 
 
схема-горелки.jpg
 
Небольшое уточнение:
 
Деталь - полностью металлическая, будет присоединена к контроллеру.
Металлический щуп будет присоединен к контроллеру.
Таким образом получится что-то типа датчика нормальноразомкнутого, который будет посылать сигнал на контроллер когда щуп соприкоснется с деталью, т.е. замкнет цепь.
 
Необходимо написать программу (скорее всего макрос) для алгоритма:
 
1. Горелка едет вниз по Оси Z, в какую-то координату которая заведомо ниже поверхности детали.
2. Как только щуп касается поверхности детали, ось Z останавливается и движется вверх на 2 шага (мм) вверх.
 
Все. Больше от макроса ничего не требуется.
 
При этом система система координат станка не должна сбиваться, т.е. чтобы этот макрос вставленный в управляющую программу ее не ломал.
 
И еще вопрос куда в моем контроллере необходимо воткнуть провода от детали и от щупа, чтобы это все правильно работало?
  • 0

#2 OFFLINE   Ewgeniy

Ewgeniy

    Гуру CNC

  • Пользователи+
  • PipPipPipPipPipPipPipPipPipPip
  • 1 234 сообщений
  • Пол:Мужчина
  • Из:Москва

Отправлено 22 Июль 2015 - 16:22

Не вдаваясь в подробности, так на вскидку, не проще ли обычную УП создать? По которой и опустится на сколько надо поднимется на сколько надо и проедет сколько надо и поднимется где надо. Лично я не вижу никаких препятствий для этого. Зачем усложнять макросами всякими?


  • 0

#3 OFFLINE   snova

snova

    Абитуриент

  • Пользователи
  • Pip
  • 4 сообщений
  • Из:Киров

Отправлено 22 Июль 2015 - 18:53

Сначала так и сделали, но заготовки катаются на вальцовочном станке и почти каждая вторая чуть ниже либо чуть выше эталона. В сварке лишний милиметр очень сильно влияет на шов.
  • 0

#4 OFFLINE   preps

preps

    Пианист CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 6 846 сообщений
  • Пол:Мужчина
  • Город:взрывающихся у быдла пердаков из-за маечки в сеточку )
  • Интересы:Ура, мы фсех артистов подебилы )
  • Из:Страны-казармы

Отправлено 22 Июль 2015 - 19:00

Я бы в сторону алгоритма "авто Z" думал...

 

Посмотрите как работает, в инете инфы предостаточно, проанализируйте и переделайте под свои нужды...


Сообщение отредактировал preps: 22 Июль 2015 - 19:01

  • 0

Дневник мастерской https://boosty.to/diycnc


#5 OFFLINE   Ewgeniy

Ewgeniy

    Гуру CNC

  • Пользователи+
  • PipPipPipPipPipPipPipPipPipPip
  • 1 234 сообщений
  • Пол:Мужчина
  • Из:Москва

Отправлено 22 Июль 2015 - 20:14

и почти каждая вторая чуть ниже либо чуть выше эталона

 

Ну так отбивайте ноль на каждой заготовке, это же секундное дело, а в макросе кнопки "Автопоиск Z=0", после нахождения нуля пропишите подъем на "ваши" 2 мм.

 

1r27iFFZb08.jpg

 

"Датчик у меня толщиной 10,15 мм. + команда поднятия ещё на 30 мм. (первые две строчки макроса)."

 

http://mir-cnc.ru/to...ктрон/?p=138924


Сообщение отредактировал Ewgeniy: 22 Июль 2015 - 20:16

  • 0

#6 OFFLINE   Kostyan4

Kostyan4

    Абитуриент

  • Пользователи
  • Pip
  • 1 сообщений
  • Из:Чебоксары

Отправлено 28 Декабрь 2015 - 16:58

Доброго времени суток гуру ЧПУ!
Я не сомневаюсь, что среди вас есть профи, которые пользуются Mach3 на уровне скриптов и которым не составит труда подсказать мне. 
Сам я не селен в VB скриптах к сожалению. icon_sorry.gif 
Буду признателен за любые мысли и подсказки.
Теперь собственно, к самой проблеме. Есть станок у которого операцию сверления выполняет сверло, соответственно, а контур газовый резак обрезает, расположены они на одном супорте и вот для того что бы газовый резак начал с того же начала координат, нужно перед запуском программы сместить резак в -100 по оси Y и скажем - 50 оси Х.

Скажем в скринсете создаю 2 поля ввода для X и Y, куда буду вводить координаты смещения. Но вот как мне создать кнопку, при нажатии на которую будет включаться макрос и выполнять алгоритм на подобии этого:

Если нажата кнопка ПУСК, тогда
проверяем поле координаты X если значение не 0, то обнуляем координату X
проверяем поле координаты Y если значение не 0, то обнуляем координату Y
Переезжаем по оси X на n-ое количество мм, (указанное в специальном поле вода данных, про которое я писал выше)
Переезжаем по оси Y на n-ое количество мм
После чего обнуляем все оси и начинаем выполнение управляющей программы.


Хотелось бы что либо на подобии этого, или другие варианты решение проблемы, буду всему рад. Надеюсь на Ваше понимание.
 

  • 0

#7 OFFLINE   Master-Dimm

Master-Dimm

    Абитуриент

  • Пользователи
  • Pip
  • 8 сообщений
  • Из:Черкассы

Отправлено 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

  • 0

#8 OFFLINE   Roma

Roma

    Гуру CNC

  • Продвинутый
  • PipPipPipPipPipPipPipPipPipPip
  • 1 219 сообщений
  • Пол:Мужчина
  • Из:Воронеж

Отправлено 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.


  • 0

#9 OFFLINE   Master-Dimm

Master-Dimm

    Абитуриент

  • Пользователи
  • Pip
  • 8 сообщений
  • Из:Черкассы

Отправлено 17 Февраль 2016 - 22:27

 

По Brain данных не встречал, может и шустрее будет, почитайте про это.
Это, в какой-то мере, графическая система написания макроса, не сложно разобраться.
В данном случае, задача - сделать 2 сравнения текущей скорости из окна Feedrate (результирующая скорость осей, DRO 818, если не ошибаюсь), с результатами сравнения совершить логическое И (AND) и привязать результат к нужному выходу (Output1, допустим).
Здесь решена похожая задача, с примером файла Brain.

Спасибо, Roma. 

Brain не работает должным образом. Наверное из за буферизации инструкций платой. Скорей всего после получения значения текущей подачи отправляется команда на активацию выхода1. Эта команда ставится в очередь, где впереди уже есть какие то команды. В результате получаем выполнение с большой задержкой. Может есть возможноть получить расчётную скорость подачи?

 

 

В моём кривом макросе (см. мой предыдущий пост) "лазер" включался вместе с началом движения и выключался с прекращением движения. Жаль только в процессе не вкл/выкл. Так что может макрос??? Помогите пожалуйста, кто понимает в скриптах.

 

На видео результат работы с брейном. Вместо лазера красный диод на плате). Условие: подача по Y больше 10. Кстати если реализовывать через брейн, то это работает и в ручном режиме. 

 


  • 0

#10 OFFLINE   Roma

Roma

    Гуру CNC

  • Продвинутый
  • PipPipPipPipPipPipPipPipPipPip
  • 1 219 сообщений
  • Пол:Мужчина
  • Из:Воронеж

Отправлено 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

  • 0

#11 OFFLINE   Master-Dimm

Master-Dimm

    Абитуриент

  • Пользователи
  • Pip
  • 8 сообщений
  • Из:Черкассы

Отправлено 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

Оффтоп -

Скрытый текст

  • 0

#12 OFFLINE   Roma

Roma

    Гуру CNC

  • Продвинутый
  • PipPipPipPipPipPipPipPipPipPip
  • 1 219 сообщений
  • Пол:Мужчина
  • Из:Воронеж

Отправлено 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 оси, своё последнее включённое состояние?

Да, он "помнит".


  • 0

#13 OFFLINE   Master-Dimm

Master-Dimm

    Абитуриент

  • Пользователи
  • Pip
  • 8 сообщений
  • Из:Черкассы

Отправлено 19 Февраль 2016 - 12:27

Конечно, добавить к ней надо будет системник с LPT.

 

Да есть там один, чуть доделать нужно.

 

Написал вчера китайцам по поводу моей платы и М11/М10. Сказали что в Mach3 эти функции не документированы поэтому они их не делали в плате. Пообещали посоветоваться со своими инженерами,  сделать,  потестить и сообщить результат. Подожду)

Ещё нашел на просторах интернета вот такую схемку -  должна "запоминать" последнее состояния вывода. Буду разбираться. Не понятно что за элемент U1 и как с ним быть. Но это уже тема для другого форума.

nrfwz.jpg

 

Спасибо за помощь!!!


  • 0

#14 OFFLINE   suzo

suzo

    Абитуриент

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Из:Железногорск

Отправлено 06 Январь 2017 - 02:28

Добрый всем день!

 

Помогите разобраться. Я не очень понял концепцию макросов в Mach3. Иду в папку с макросами создаю к примеру файл пусть M900.m1s . И как его запустить из мача?? Назначить на кнопку или как?? Если на кнопку то как? Если открыть как файл для выполнения то тоже как?

 

 


  • 0

#15 OFFLINE   mihams

mihams

    Гуру CNC

  • Пользователи+
  • PipPipPipPipPipPipPipPipPipPip
  • 1 328 сообщений
  • Из:Kovrov

Отправлено 06 Январь 2017 - 03:01

В уп и введи М900


  • 0

#16 OFFLINE   suzo

suzo

    Абитуриент

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Из:Железногорск

Отправлено 06 Январь 2017 - 13:46

Так пробовал. Ничего не происходит. Сделал MsgBox("Hello world"), в УП пишу M900 и тишина. В чем проблема может быть?


  • 0

#17 OFFLINE   mihams

mihams

    Гуру CNC

  • Пользователи+
  • PipPipPipPipPipPipPipPipPipPip
  • 1 328 сообщений
  • Из:Kovrov

Отправлено 06 Январь 2017 - 14:56

Так пробовал. Ничего не происходит. Сделал MsgBox("Hello world"), в УП пишу M900 и тишина. В чем проблема может быть?

окна конечно я так не открывал... но выходы и входа программируются

посмотрите в той ли папке они лежат

может создали в одном профиле а пытаетесь запустить из другого


  • 0

#18 OFFLINE   suzo

suzo

    Абитуриент

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Из:Железногорск

Отправлено 06 Январь 2017 - 17:02

Я поставил на помпу шпинделя расходомер по принципу датчика холла, и на СОЖ аналогичную штуковину. Дальше ардуина считывает их показания и выбрасывает на COM порт. В матче есть макрос который вызывается каждый 200мс как я понял и прикручивается к COM порту. Так вот вопрос реально ли считывать оттуда показания и добавить на экран эти данные? В виде как координаты выводятся. В самом макросе я конечно напише обработки аварийных значений этих датчиков, но хотелось бы видеть реальные значения скорости протекания жидкостей.


  • 0

#19 OFFLINE   mihams

mihams

    Гуру CNC

  • Пользователи+
  • PipPipPipPipPipPipPipPipPipPip
  • 1 328 сообщений
  • Из:Kovrov

Отправлено 06 Январь 2017 - 17:45

для аварии очень легко сделать

сделай лед, привяжи к порту-пину

чтоб считывать.... я бы сделал по модбус из готовых решений)


  • 0

#20 OFFLINE   suzo

suzo

    Абитуриент

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Из:Железногорск

Отправлено 07 Январь 2017 - 23:56

По мод басу толковая идея, тем более что матч с ним подружить не сложно. А вопрос про индикацию количества протекаемо жидкости то идеи есть?


  • 0





Темы с аналогичным тегами макрос для Mach

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных