Страница 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 писал(а):и ЕМС будет работать такой код:
В емс такой код работать не будет:
Выделение(008).jpg (2434 просмотра) <a class='original' href='./download/file.php?id=12819&mode=view' target=_blank>Загрузить оригинал (168.71 КБ)</a>
и подпрограммы в емс не так оформляются

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 метров проволки, изделие больше метра редко идет, а делаем тысячами :thinking: ...

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, а в комментах написать, что оно значит.