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

правильный синтаксис условия IF

Добавлено: 06 авг 2020, 12:42
hohol_62
пробую написать програму с условием, mach3 меня не понимает, помогите разобраться в чем проблема?

#1=[2240.0] ;(максимальное перемещение по Y)
#2=[3370.0] ;(максимальное перемещение по X)
#3=[10.0] ;(смещение по X)
#4=[15.0] ;(смещение по Y)
#5=[-1.1] ;(глубина по оси Z)
#8=[2500.0] ; (рабочая подача)


G91G0X[[0-#2]/2]Y[[0-#1]/2]z20
G91G1Z#5F200

#6=#3
#7=#4

G90G1X[0-#3]F#8
G90G1Y#4F#8

N1

#6=[#6+#3]
#7=[#7+#4]

G90G1X#6F#8
G90G1Y[0-#7]F#8
G90G1X[0-#6]F#8
G90G1Y#7F#8

IF[#6LT#2]GOTO N2

N2 IF[#7LT#1]GOTO N1

G91G1X0F#8
G91G1Y0F#8
G91G1X#2F#8
G91G1Y#1F#8

G91G0z20
G91G0x0Y0

M30

Re: правильный синтаксис условия IF

Добавлено: 07 авг 2020, 09:05
hohol_62
всем спасибо, справился без условий (функция IF), но хотелось бы найти эту функцию для MACH3, иногда очень нужно, если кто знает, отзовитесь, пожалуйста!

или дайте ссылку на руководство по программированию (там где это есть)

кстати, програмка для выравнивания стола, пользуйтесь.

#1=[2240.0] ;(максимальное перемещение по Y)
#2=[3370.0] ;(максимальное перемещение п о X)
#3=[15.0] ;(смещение по X)
#4=[10.0] ;(смещение по Y)
#5=[-1.1] ;(глубина по оси Z)
#8=[2500.0] ; (рабочая подача)

#9=[0.0]
#10=[0.0]
#11=[0.0]
#12=[0.0]

G90G0X[[0-#2]/2]Y[[0-#1]/2]z20
G90G1Z#5F200



M98P1L[[#1/#4]/2]

G90G0z20
G90G0x0Y0

M30

O1


G91
#9=[#9+#3]
G1X#9F#8
#10=[#10+#4]
G1Y#10F#8
#9=[[#9-[#9*2]]-#3]
G1X#9F#8
#10=[[#10-[#10*2]]-#4]
G1Y#10F#8
#9=[#9+[#9*-2]]
#10=[#10+[#10-2]]

M99

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 07:29
hohol_62
подниму темку,
неужели никто не пользуется параметрическим программированием?

вопрос по условному и безусловному переходу открыт, и добавился вопрос по округлению числа в большую или меньшую сторону, тк просто округлить число меня не устраивает- может получиться 0 или 1, а хотелось бы точно знать, что будет 0 или 1.

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 11:32
RNDL
Раньше, когда не было CAM, тоже писал параметрические программы на мач. В инструкции к мач не нашел ничего про условные переходы. А после приобретения спрут кам забыл про параметрическое программирование

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 12:41
hohol_62
у меня заморочка с раскладкой фасадов (кухонных допустим) на плоскости листа (есть такая же парам програмка с запросом во внешние подпрограммы, написанные в G91).
я тоже пользуюсь многими камами, но есть узкие задачки, которые проще сделать (читай-правильнее) через параметры

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 13:15
RNDL
hohol_62 писал(а): есть узкие задачки, которые проще сделать (читай-правильнее) через параметры
Да, полностью согласен. Ну может быть мач не особо заточен под это. Тут ничем не смогу помочь.
На Сименсе, например, можно условия задавать и возвращаться к определенному кадру. Но это так, к делу не относится

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 13:26
hohol_62
с сименсами тоже регулярно "общаюсь", жаль что мяч не сименс)))

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 14:54
Serg
hohol_62 писал(а): вопрос по условному и безусловному переходу открыт, и добавился вопрос по округлению числа в большую или меньшую сторону, тк просто округлить число меня не устраивает- может получиться 0 или 1, а хотелось бы точно знать, что будет 0 или 1.
Точно знать до укругления?.. :thinking:
Что за операция такая "просто округлить"?

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 15:21
hohol_62
я имел ввиду эти функции:

Таблица 10.1. Основные арифметические и логические команды

Функция-=-Формат

Абсолютное значение-=- #c=ABS[#b]
Округление-=-#c=ROUND[#b]

хотя, их тоже может не быть в мяч... еще не пробовал (в CIMCO отрабатываются)

Re: правильный синтаксис условия IF

Добавлено: 16 фев 2021, 18:21
Serg
hohol_62 писал(а): Абсолютное значение-=- #c=ABS[#b]
Округление-=-#c=ROUND[#b]
ABS - абсолютное значение числа, т.е. без знака. К округлению не имеет никакого отношения.
ROUND - собственно округление. Округления бывают разные: https://ru.wikipedia.org/wiki/%D0%9E%D0 ... 0%B8%D0%B5
В Mach3 (если верить документации) ROUND() - это округление до ближайшего целого, значит всё, что меньше N.5 даст N, а всё, что больше или равно N.5 даст N+1. Вот такое вот прогнозирование.

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 08:19
hohol_62
Serg писал(а): 16 фев 2021, 18:21 В Mach3 (если верить документации)
есть документ по программированию именно мяч?
Serg писал(а): 16 фев 2021, 18:21 Округления бывают разные:
я про это и спрашивал: нужно, чтобы округление работало стабильно, те округляло либо постоянно в большую сторону, либо постоянно в меньшую. (при N=N.0 оставалось целым числом, при N отличном от N.0 округлялось либо до N+1, либо до N)

это нужно для расчета кол-ва повторений, зависящих от вводимого параметра, допустим есть прямоугольник, в который нужно вписать рисунок в виде диагональной сетки с шагом и началом на середине нижней стороны.
IMG_0799[1].JPG (2484 просмотра) <a class='original' href='./download/file.php?id=192382&sid=2c30999949c493ac67c2601afc41f672&mode=view' target=_blank>Загрузить оригинал (1.29 МБ)</a>
при d=45 получим координату по y=a/2 (равнобедренный) и, из получившегося можем вычислить кол-во таких диагональных линий, на высоте b, но можно нарваться на неверное округление и выйти за пределы прямоугольника

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 08:42
Serg
hohol_62 писал(а): округляло либо постоянно в большую сторону
ROUND(N+0.5)
hohol_62 писал(а): либо постоянно в меньшую.
ROUND(N-0.5)

Это не Mach, это математика примерно 4 класса.

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 08:56
Kachik
hohol_62 писал(а): есть документ по программированию именно мяч?
Вот официальный мануал по скриптам:
VBScript_Commands.pdf
(717.74 КБ) 313 скачиваний
Отбрасывание дробной части есть, а вот ROUND, что-то не видать...

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 09:06
hohol_62
#1=5 ;GLUBINA

#9=100 ;SHIRINA
#10=2000 ;VISOTA

#12=100 ;SHAG
#13=45 ;UGOL NAKLONA

#15=[[COS[#13]]*[#12]]; SHAG VDOL Y
#14=[ABS[ROUND[[[#10]-[#9]]/[#15]]]] ;KOL-VO DLINNIH LINIJ

#5=200
#6=2000

#7=10
#8=10

G90

G0Z50
G0X0Y0

G91

M3S22000

G0X0Y0

G90
G1Z#1F#5
G91
F#6

X[0-[#9]]
Y[0-[#10]]
X[#9]
Y[#10]
X[0-[#9]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]

M98P1L#14

Y[0-[#15]]

M98P2L#14

G0Z50M5
G0X0Y0

M30

O1

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[TAN[#13]]*[[#9]/2]

Y[0-#15]

M99

O2

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

Y#15

M99

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 10:12
Kachik
Подправил, в двух строчках были ошибки с расстановкой квадратных скобок - теперь не ругается и всё работает.
получается ROUND работает - значит у меня был мануал старый/неполный :thinking:
(для просмотра содержимого нажмите на ссылку)

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

#1=5 ;GLUBINA

#9=100 ;SHIRINA
#10=2000 ;VISOTA

#12=100 ;SHAG
#13=45 ;UGOL NAKLONA

#15=[[COS[#13]]*[#12]]; SHAG VDOL Y
#14=[ABS[ROUND[[[#10]-[#9]]/[#15]]]] ;KOL-VO DLINNIH LINIJ

#5=200
#6=2000

#7=10
#8=10

G90

G0Z50
G0X0Y0

G91

M3S22000

G0X0Y0

G90
G1Z#1F#5
G91
F#6

X[0-[#9]]
Y[0-[#10]]
X[#9]
Y[#10]
X[0-[#9]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]

M98P1L#14

Y[0-[#15]]

M98P2L#14

G0Z50M5
G0X0Y0

M30

O1

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

Y[0-#15]

M99

O2

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

Y#15

M99

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 10:28
hohol_62
Kachik писал(а): 17 фев 2021, 08:56 Вот официальный мануал по скриптам:VBScript_Commands.pdf

Отбрасывание дробной части есть, а вот ROUND, что-то не видать...
спасибо, покурю.

да, торопился, скобок лишних наставил, но суть не в этом

Re: правильный синтаксис условия IF

Добавлено: 17 фев 2021, 10:46
Kachik
Во нашёл, упоминание про ROUND в описании для составления макросов, тут более поздний мануал и соответственно он полнее.
Mach3_V3.x_Macro_Prog_Ref.pdf
(330.87 КБ) 177 скачиваний

Re: правильный синтаксис условия IF

Добавлено: 08 май 2021, 10:39
steals_y2k
вот вроде g-code стандарт, но у lcnc несколько иначе всё.
то же округление вверх fup[].
Grompel писал(а): Учиться и учиться. Для меня все это пока так сложно )
штук 60-90 программ параметрических под различные рисунки заметно улучшают понимание))
заодно и курс геометрии вспоминается.

Re: правильный синтаксис условия IF

Добавлено: 08 май 2021, 11:06
Serg
steals_y2k писал(а): вот вроде g-code стандарт, но у lcnc несколько иначе всё.
то же округление вверх fup[].
RS274/NGC - Recomended Standard.
Отличия LinuxCNC от этого стандарта: http://linuxcnc.org/docs/devel/html/gcode/rs274ngc.html
Все три варианта округления есть.

Re: правильный синтаксис условия IF

Добавлено: 08 май 2021, 11:30
steals_y2k
Serg писал(а): Отличия LinuxCNC от этого стандарта:
там нет списка отличающихся команд.
не спорю о вариантах, разное название=ограниченная совместимость.