Страница 1 из 1

Visual Basic для MACH3.

Добавлено: 26 июн 2013, 08:24
putman
Здравствуйте.
Рою рою интернет, никак не найду руководство по Visual Basic для MACH3 на русском языке.
Поделитесь ссылкой если такое существует конечно.

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 09:30
aftaev
putman писал(а): никак не найду руководство по Visual Basic для MACH3 на русском языке.
наврят такое существует

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 09:45
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 при остановке ?
Что останавливает оси ?

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 10:35
aftaev
кури команду G31 в Gcode


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

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

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

:attention: когда будешь играться с щупом главное чтобы в УП не было команды включение шпинделя М03

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 11:46
putman
aftaev спасибо, буду учиться.
Накопал в сети немного VB скриптов с комментариями, буду их разбирать, пробовать, учиться.

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 12:11
aftaev
разберись как работает Gcode G31 все на нем построено

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 18:45
putman
aftaev писал(а):кури команду G31 в Gcode

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

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

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

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

G31 X100 F500
, стол дёргается и останавливается.
Некорректно получается работает G31.
Из-за чего такое может быть ?

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 21:29
aftaev
вставь его в какой нибудь рабочий Gcode

Re: Visual Basic для MACH3.

Добавлено: 26 июн 2013, 21:49
Serg
putman писал(а):, стол дёргается и останавливается.
попробуй проинвертировать пин.

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 21:25
putman
Опять начал воевать с вижл бейсиком.
Пишу так:

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

XNew = GetDro(0) - 1	  'пишем в переменную текуще положение по Х минус 1 мм
Code "G00 X" &ХNew    
не работает, там где должно было бы получиться G00 X9(допустим GetDro(0) = 10) и отьехать назад от препятствия на 1 мм, щуп едет дальше...
Видимо какой то не такой синтаксис, в сети очень мало примеров, никак не могу понять как засунуть переменную в Г-код.

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 21:39
aftaev
putman писал(а): никак не могу понять как засунуть переменную в Г-код.
не понимаю это как?

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 21:44
putman
aftaev писал(а): не понимаю это как?
В вижл бейсике можно написать:

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

Code "G00 X10"
Эта строка сформирует и подаст на исполнение станку код - G00 X10.
А мне нужно что бы после "Х" не число 10 стояло, переменная, которая вычисляется в программе.

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 22:10
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

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 22:28
michael-yurov
В первом случае, вероятно, были абсолютные координаты.

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 22:28
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... бред какой то.

Re: Visual Basic для MACH3.

Добавлено: 24 янв 2014, 23:16
michael-yurov
putman писал(а):Если я обнуляю вручную координаты в окошках, то так и происходит, но если координаты не обнулить, то во второй раз уезжает до -10, в третий -15... бред какой то.
Так, вроде, все правильно, так и должно происходить. Или я чего то не понимаю?

Re: Visual Basic для MACH3.

Добавлено: 25 янв 2014, 00:24
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