Страница 1 из 1
Повторение куска кода
Добавлено: 15 мар 2013, 10:24
Loituma
Здравствуйте, Уважаемые.
И так, запускаю очередной станок и тут возник вопрос, а как сделать повторение кода?
Например:
Код: Выделить всё
S3979
g0x775.y470.5
m3
g1z-10.5F30
g0z4
g1z12.5f20
g0z0
M5
g0x27.5y470.5
m3
g1z-9.5F30
g0z4
g1z12f20
g0z0
M5
g0x20.y20.z0
M30
g0x27.5y470.5
m3
g1z-9.5F30
g0z4
g1z12f20
g0z0
M5
Вот этот кусок кода мне нужно повторить 10 раз друг за другом...
И второй вопрос, как этот кусок можно вызвать как подпрограмму: то есть я ставлю спец символ, а выполняется этот кусок кода...
Пример взял с сверлильного...
Мне пожалуйста прямо примером...
Буду признателен.
Re: Повторение куска кода
Добавлено: 15 мар 2013, 10:31
nkp
Код: Выделить всё
o112 repeat [10]
g0x27.5y470.5
m3
g1z-9.5F30
g0z4
g1z12f20
g0z0
M5
o112 endrepeat
повтор 10 раз
Re: Повторение куска кода
Добавлено: 15 мар 2013, 10:39
nkp
Код: Выделить всё
O<name> sub
g0x27.5y470.5
m3
g1z-9.5F30
g0z4
g1z12f20
g0z0
M5
O<name> endsub
теперь можно сохранить этот код в файл name.ngc и положить в папку с программами (путь к ней прописан в ини файле
в строке
PROGRAM_PREFIX =)
или просто этот кусок кода писать в своей программе (это будет подпрограммой)
вызывается :
O<name> call
можно в подпрограмме значения заменить на переменные - тогда при вызове можно каждый раз указывать разные значения
пример вызова с передачей значений переменных:
O<name> call [12] [2] [224]
Re: Повторение куска кода
Добавлено: 15 мар 2013, 12:40
Nick
А ты прямо одну и туже программу выполняешь несколько раз и без остановки и без сдвигов?
Re: Повторение куска кода
Добавлено: 15 мар 2013, 12:58
ukr-sasha
Еще зависит какая стойка.
В Мач и ЕМС будет работать такой код:
Код: Выделить всё
G21G90
M98P1234Q10 // 10 раз вызывается подпрограмма №1234
M30
O1234
g0x27.5y470.5
m3
g1z-9.5F30
g0z4
g1z12f20
g0z0
M5
M99
Re: Повторение куска кода
Добавлено: 15 мар 2013, 13:20
Nick
ukr-sasha писал(а):В Мач и ЕМС будет работать такой код:
А в доках по Gкодам linuxcnc почему-то M98 нет...
Re: Повторение куска кода
Добавлено: 15 мар 2013, 15:11
nkp
ukr-sasha писал(а):и ЕМС будет работать такой код:
В емс
такой код работать не будет:
и подпрограммы в емс не так оформляются
Re: Повторение куска кода
Добавлено: 15 мар 2013, 16:47
ukr-sasha
Странно. В К-Флопе, а он основан на коде ЕМС, все работает.
Ок. Беру свои слова назад, в ЕМС не работает.

Посмотрел на скрины, там где название подпрограммы, очень похоже, что не О (буква), а 0 (ноль).
Вполне возможно, что из-за этого.
Re: Повторение куска кода
Добавлено: 15 мар 2013, 16:54
Nick
ноль пишется с точкой - скорее всего O, тем более ругается не на нее...
А в Mach O1234 CALL будет работать?
Re: Повторение куска кода
Добавлено: 15 мар 2013, 16:56
nkp
ukr-sasha писал(а):Посмотрел на скрины, там где название подпрограммы, очень похоже, что не О (буква), а 0 (ноль).
Вполне возможно, что из-за этого.
нет - с этим там все в порядке
просто такой М-код(М98) емс не поддерживает
Re: Повторение куска кода
Добавлено: 15 мар 2013, 16:57
ukr-sasha
Nick писал(а):А в Mach O1234 CALL будет работать?
Да.
Re: Повторение куска кода
Добавлено: 15 мар 2013, 20:30
Rafiq
А как с передачей параметров в подпрограмму? Например, базовых координат, и с указанием координат во всех кадрах в подпрограмме относительно базовых, переданных как параметр.
Допустим, есть подпрограмма для вырезания шайб, ей передаются координаты центра шайбы, и мне надо вырезать 10 таких из одного листа, соответственно при каждом вызове будут новые параметры.
А может еще и условные переходы есть?

Xотя вроде как не нужны они в УП.
Re: Повторение куска кода
Добавлено: 15 мар 2013, 21:27
nkp
Rafiq писал(а):А как с передачей параметров в подпрограмму?
выше писал,что при вызове подпрограммы передаются и параметры:
O<code> call [2] [32] [5.45]
здесь вызываем подпрограмму code и передаем ей три параметра
есть конструкции if - else и while
Re: Повторение куска кода
Добавлено: 16 мар 2013, 12:55
Loituma
Nick писал(а):А ты прямо одну и туже программу выполняешь несколько раз и без остановки и без сдвигов?
в бухте бывает 10000 метров проволки, изделие больше метра редко идет, а делаем тысячами

...
Re: Повторение куска кода
Добавлено: 16 мар 2013, 13:03
nkp
если пользуешь емс - то можно и больше повторов задавать (не знаю как 1000 будет грузиться долго)
в Axis нужно будет отключать предпросмотр...
опять же если Axis...
Re: Повторение куска кода
Добавлено: 18 мар 2013, 08:06
Rafiq
nkp писал(а):
O<code> call [2] [32] [5.45]
здесь вызываем подпрограмму code и передаем ей три параметра
Ок, а как в подпрограмме обратиться к этим аргументам? Например, как там написать что-то вроде G0 X<аргумент_X>+10 Y<аргумент_Y>+10?
Re: Повторение куска кода
Добавлено: 18 мар 2013, 10:12
Nick
В подпрограмме эти аргументы будут #1, #2, ..., #30, т.о. передать можно до 30 аргументов. Все эти переменные будут локальными для подпрограммы.
Также можно использовать и глобальные переменные (все, что не входит в #1-30).
Re: Повторение куска кода
Добавлено: 18 мар 2013, 13:58
Rafiq
Т.е. в подпрограмме надо писать
G0 X#1+10 Y#2+10
так?
Re: Повторение куска кода
Добавлено: 18 мар 2013, 15:11
Nick
Да, или #<x> = #1, ну и т.д. Но если простая подпрограмма, то лучше #1, а в комментах написать, что оно значит.