Visual Basic для MACH3.

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Visual Basic для MACH3.

Сообщение putman »

Здравствуйте.
Рою рою интернет, никак не найду руководство по Visual Basic для MACH3 на русском языке.
Поделитесь ссылкой если такое существует конечно.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

putman писал(а): никак не найду руководство по Visual Basic для MACH3 на русском языке.
наврят такое существует
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение putman »

Пока нашел только мануал на английском, но то ли переводчик так переводит, то ли я не еду, бред какой то.
Вот посмотрите:

Код: Выделить всё

IsMoving
Function IsMoving() As Integer
This function returns 1 if any axis is currently moving. This is most often used when commanding
motion within a macro, to pause macro execution until the motion is complete. . This is a complement to
IsStopped().
Arguments:
None
Return Value:
0 if all axes currently stopped
1 if any axis is currently moving
Example:
‘ Move Z axis to Safe_Z position
GotoSafeZ()
‘ Wait for SafeZ move to complete
Sleep(100)
While IsMoving()
Sleep(100)
Wend
, и перевод:

Код: Выделить всё

IsMoving
Функция IsMoving () As Integer
Эта функция возвращает 1, если любой оси в настоящее время движется. Это наиболее часто используется, когда командовавший
движения внутри макро, приостановить выполнение макроса, пока движение не будет завершено. . Это является дополнением к
IsStopped ().
Аргументы:
Ни один
Возвращаемые значения:
0, если все оси момент остановлен
1, если любой оси в настоящее время переходит
Пример:
Как это понимать ?
Каким образом по сигналу Probe прекращается движение макросом, если эта функция только возвращает 0 при остановке ?
Что останавливает оси ?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

кури команду G31 в Gcode


Code "G31 X1000 F500" ' двигаться по +Х на 1м до касания щупом
Переводится примерно так:
ехать по +Х пока не сработает ПРОБНИК или пока не искончается заданное расстояние 1000мм

Возьми любой готовый твой УП (файл с Gcode) и замени М03 на
G31 X100 F500
и запусти выполнение

Станок должен будет проехать 100мм и продолжить выполнение остальной части УП
Запусти УП заново и теперь отклони щуп пробника посмотри что будет

:attention: когда будешь играться с щупом главное чтобы в УП не было команды включение шпинделя М03
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение putman »

aftaev спасибо, буду учиться.
Накопал в сети немного VB скриптов с комментариями, буду их разбирать, пробовать, учиться.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

разберись как работает Gcode G31 все на нем построено
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение putman »

aftaev писал(а):кури команду G31 в Gcode

Code "G31 X1000 F500" ' двигаться по +Х на 1м до касания щупом
Переводится примерно так:
ехать по +Х пока не сработает ПРОБНИК или пока не искончается заданное расстояние 1000мм

Возьми любой готовый твой УП (файл с Gcode) и замени М03 на
G31 X100 F500
и запусти выполнение

Станок должен будет проехать 100мм и продолжить выполнение остальной части УП
Запусти УП заново и теперь отклони щуп пробника посмотри что будет
Набираю:

Код: Выделить всё

G31 X100 F500
, стол дёргается и останавливается.
Некорректно получается работает G31.
Из-за чего такое может быть ?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

вставь его в какой нибудь рабочий Gcode
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение Serg »

putman писал(а):, стол дёргается и останавливается.
попробуй проинвертировать пин.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение putman »

Опять начал воевать с вижл бейсиком.
Пишу так:

Код: Выделить всё

XNew = GetDro(0) - 1	  'пишем в переменную текуще положение по Х минус 1 мм
Code "G00 X" &ХNew    
не работает, там где должно было бы получиться G00 X9(допустим GetDro(0) = 10) и отьехать назад от препятствия на 1 мм, щуп едет дальше...
Видимо какой то не такой синтаксис, в сети очень мало примеров, никак не могу понять как засунуть переменную в Г-код.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

putman писал(а): никак не могу понять как засунуть переменную в Г-код.
не понимаю это как?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение putman »

aftaev писал(а): не понимаю это как?
В вижл бейсике можно написать:

Код: Выделить всё

Code "G00 X10"
Эта строка сформирует и подаст на исполнение станку код - G00 X10.
А мне нужно что бы после "Х" не число 10 стояло, переменная, которая вычисляется в программе.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

Макрос поиск металла http://www.chipmaker.ru/topic/74794/pag ... p__1226914

Пример:

Код: Выделить всё

 Позиционируем датчик металла над проколом Y-25 X+45
Code "G0 Y" & GetDRO(DRO_Y)-25 & "G0 X" & GetDRO(DRO_X)+45 
Code "G0 Z " & GetDRO(DRO_Z)-10
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение michael-yurov »

В первом случае, вероятно, были абсолютные координаты.
Аватара пользователя
putman
Мастер
Сообщения: 937
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 102
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение putman »

У меня не получается.
Вот набрал скрипт в 3 строчки, и даже он не работает как надо:

Код: Выделить всё

Call SetDRO(0,0) ' обнулить данные в окне X
Call SetDRO(1,0) ' обнулить данные в окне У
Call SetDRO(2,0) ' обнулить данные в окне Z
Code "G04 p0.5" ' пауза 0.5 с
Code "G00 x5" 'едем на 5 мм вправо
Code "G00 x" &GetDRO(0) - 10 'едем на 10 мм влево
Code "G04 p0.5" ' пауза 0.5 с   
тут должно обнулить координаты, поехать вправо на 5 мм, потом влево на 10 мм, в итоге координата Х должна быть -5.
Если я обнуляю вручную координаты в окошках, то так и происходит, но если координаты не обнулить, то во второй раз уезжает до -10, в третий -15... бред какой то.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение michael-yurov »

putman писал(а):Если я обнуляю вручную координаты в окошках, то так и происходит, но если координаты не обнулить, то во второй раз уезжает до -10, в третий -15... бред какой то.
Так, вроде, все правильно, так и должно происходить. Или я чего то не понимаю?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Visual Basic для MACH3.

Сообщение aftaev »

putman писал(а):тут должно обнулить координаты, поехать вправо на 5 мм, потом влево на 10 мм, в итоге координата Х должна быть -5.
В ссылке выше есть такой пример

Код: Выделить всё

' Макрос написал Афтаев А.А 2012
Option Explicit
'=== Declaraciones ===
Dim Feed
Dim ZZ ' начальная Z
Const DRO_X = 0
Const DRO_Y = 1
Const DRO_Z = 2

' Read the Z axis DRO
' запоминаем начальную скорость
Feed = FeedRate
ZZ = GetDRO(DRO_Z) ' запоминаем начальную Z
 
' Проверяем включена кнопка поиск меалла on/off 
If GetUserLED(2222) Then
' Подымаемся на всоту Z +20
Code "G0 Z " & GetDRO(DRO_Z)+20
While IsMoving() ' ждем выполнения
Sleep 100
Wend
' Позиционируем датчик металла над проколом Y-25 X+45
Code "G0 Y" & GetDRO(DRO_Y)-25 & "G0 X" & GetDRO(DRO_X)+45 ' ??????????
Code "G0 Z " & GetDRO(DRO_Z)-10

While IsMoving() ' ждем выполнения
Sleep 100
Wend

' Ищем металл
Code "G31 Z-50 F500" 
While IsMoving()
Sleep 100
Wend
Code "G92 Z0" ' обнуляем Z
Code "G0 Z20 F200" ' Подымаемся на Z+20
While IsMoving ()
Sleep 100
Wend
' позиционируем резак на место
Code "G0 Z " & GetDRO(DRO_Z)+GetUserLabel(2104)
Code "G0 Y" & GetDRO(DRO_Y)+25 & "G0 X" & GetDRO(DRO_X)-45 ' ??????????
Code "G0 Z " & ZZ ' Встаем на начальную Z
End If
Code "F" & Feed ' возращаем скорость F
DoSpinCW()'запускаем плазму

Code "G92 Z0" ' обнуляем Z
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Ответить

Вернуться в «Windows / Mach»