правильный синтаксис условия IF
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
правильный синтаксис условия IF
пробую написать програму с условием, 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
#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
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
всем спасибо, справился без условий (функция 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
или дайте ссылку на руководство по программированию (там где это есть)
кстати, програмка для выравнивания стола, пользуйтесь.
#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
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
подниму темку,
неужели никто не пользуется параметрическим программированием?
вопрос по условному и безусловному переходу открыт, и добавился вопрос по округлению числа в большую или меньшую сторону, тк просто округлить число меня не устраивает- может получиться 0 или 1, а хотелось бы точно знать, что будет 0 или 1.
неужели никто не пользуется параметрическим программированием?
вопрос по условному и безусловному переходу открыт, и добавился вопрос по округлению числа в большую или меньшую сторону, тк просто округлить число меня не устраивает- может получиться 0 или 1, а хотелось бы точно знать, что будет 0 или 1.
- RNDL
- Опытный
- Сообщения: 176
- Зарегистрирован: 06 июн 2018, 18:29
- Репутация: 66
- Контактная информация:
Re: правильный синтаксис условия IF
Раньше, когда не было CAM, тоже писал параметрические программы на мач. В инструкции к мач не нашел ничего про условные переходы. А после приобретения спрут кам забыл про параметрическое программирование
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
у меня заморочка с раскладкой фасадов (кухонных допустим) на плоскости листа (есть такая же парам програмка с запросом во внешние подпрограммы, написанные в G91).
я тоже пользуюсь многими камами, но есть узкие задачки, которые проще сделать (читай-правильнее) через параметры
я тоже пользуюсь многими камами, но есть узкие задачки, которые проще сделать (читай-правильнее) через параметры
- RNDL
- Опытный
- Сообщения: 176
- Зарегистрирован: 06 июн 2018, 18:29
- Репутация: 66
- Контактная информация:
Re: правильный синтаксис условия IF
Да, полностью согласен. Ну может быть мач не особо заточен под это. Тут ничем не смогу помочь.
На Сименсе, например, можно условия задавать и возвращаться к определенному кадру. Но это так, к делу не относится
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
с сименсами тоже регулярно "общаюсь", жаль что мяч не сименс)))
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: правильный синтаксис условия IF
Точно знать до укругления?..
Что за операция такая "просто округлить"?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
я имел ввиду эти функции:
Таблица 10.1. Основные арифметические и логические команды
Функция-=-Формат
Абсолютное значение-=- #c=ABS[#b]
Округление-=-#c=ROUND[#b]
хотя, их тоже может не быть в мяч... еще не пробовал (в CIMCO отрабатываются)
Таблица 10.1. Основные арифметические и логические команды
Функция-=-Формат
Абсолютное значение-=- #c=ABS[#b]
Округление-=-#c=ROUND[#b]
хотя, их тоже может не быть в мяч... еще не пробовал (в CIMCO отрабатываются)
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: правильный синтаксис условия IF
ABS - абсолютное значение числа, т.е. без знака. К округлению не имеет никакого отношения.
ROUND - собственно округление. Округления бывают разные: https://ru.wikipedia.org/wiki/%D0%9E%D0 ... 0%B8%D0%B5
В Mach3 (если верить документации) ROUND() - это округление до ближайшего целого, значит всё, что меньше N.5 даст N, а всё, что больше или равно N.5 даст N+1. Вот такое вот прогнозирование.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
есть документ по программированию именно мяч?
я про это и спрашивал: нужно, чтобы округление работало стабильно, те округляло либо постоянно в большую сторону, либо постоянно в меньшую. (при N=N.0 оставалось целым числом, при N отличном от N.0 округлялось либо до N+1, либо до N)
это нужно для расчета кол-ва повторений, зависящих от вводимого параметра, допустим есть прямоугольник, в который нужно вписать рисунок в виде диагональной сетки с шагом и началом на середине нижней стороны. при d=45 получим координату по y=a/2 (равнобедренный) и, из получившегося можем вычислить кол-во таких диагональных линий, на высоте b, но можно нарваться на неверное округление и выйти за пределы прямоугольника
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: правильный синтаксис условия IF
ROUND(N+0.5)
ROUND(N-0.5)
Это не Mach, это математика примерно 4 класса.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 06 мар 2020, 12:17
- Репутация: 1
- Настоящее имя: Сергей
- Контактная информация:
Re: правильный синтаксис условия IF
#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
#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
- Kachik
- Мастер
- Сообщения: 1410
- Зарегистрирован: 13 янв 2017, 16:22
- Репутация: 308
- Настоящее имя: Сергей
- Откуда: Питер
- Контактная информация:
Re: правильный синтаксис условия IF
Подправил, в двух строчках были ошибки с расстановкой квадратных скобок - теперь не ругается и всё работает.
получается ROUND работает - значит у меня был мануал старый/неполный
получается ROUND работает - значит у меня был мануал старый/неполный
- Kachik
- Мастер
- Сообщения: 1410
- Зарегистрирован: 13 янв 2017, 16:22
- Репутация: 308
- Настоящее имя: Сергей
- Откуда: Питер
- Контактная информация:
Re: правильный синтаксис условия IF
Во нашёл, упоминание про ROUND в описании для составления макросов, тут более поздний мануал и соответственно он полнее.
-
- Мастер
- Сообщения: 939
- Зарегистрирован: 29 окт 2017, 14:08
- Репутация: 60
- Настоящее имя: Makc
- Откуда: Ярославль
- Контактная информация:
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: правильный синтаксис условия IF
RS274/NGC - Recomended Standard.steals_y2k писал(а): ↑ вот вроде g-code стандарт, но у lcnc несколько иначе всё.
то же округление вверх fup[].
Отличия LinuxCNC от этого стандарта: http://linuxcnc.org/docs/devel/html/gcode/rs274ngc.html
Все три варианта округления есть.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 939
- Зарегистрирован: 29 окт 2017, 14:08
- Репутация: 60
- Настоящее имя: Makc
- Откуда: Ярославль
- Контактная информация: