Перейти к публикации

параметр в подпрограмме


kopatych

Рекомендованные сообщения

Как передать в подпрограмму параметр? например у меня есть такая подпрограмма

%
G54 G90
T1 M6
G43 Z10 H1
#1=10.0(RADIUS)
#2=1.0(START)
#3=0.0(CENTR)
#4=0.0(CENTR)
#5=50(GLUBINA)
#6=0.5(SHAG)
G00 X#3 Y#4
Z0. M08
N100
G01 X#1.0 F100
G03 X#1.0 Z-#2 I-#1 J0
#2=#2+#6
IF[#2LE#5] GOTO 100
G03 X#1.0 I-#1 J0
G00 X#3 Y#4
Z50.0
M30
%

тут она еще не совсем подпрограмма это для примера. Так вот я хочу в эту подпрограмму передавать координаты отверстий которые хочу расфрезеровать по спирали.

в программе это будет через G66...G67

 

 

Ссылка на сообщение
Поделиться на других сайтах


Так вот я хочу в эту подпрограмму передавать координаты отверстий которые хочу расфрезеровать по спирали.

Ну и передавай по G66P... X...Y..., в подпрограмму они пойдут как #24 #25 . Или как-то хитрее надо?

Ссылка на сообщение
Поделиться на других сайтах

Локальные переменные
Локальные переменные находятся в диапазоне от #1 до #33. Набор локальных переменных доступен
в любое время. При выполнении вызова подпрограммы с помощью команды G65 локальные
переменные сохраняются, и можно использовать новый набор. Это называется вложенностью
локальных переменных. При вызове G65 все новые локальные переменные сбрасываются на
значение «не определено», а всем локальным переменным, имеющим соответствующие адресные
переменные в строке G65, присваиваются значения из строки G65. Ниже приводится таблица
локальных переменных с аргументами адресных переменных, которые изменяют их.
 

A 1, B 2, C 3, I 4, J 5, K 6  и так далее, смотрите соответствеи в свой документации

 

****************************************

Сразу вам заказ на подппрограмму которая будет измерять угол отклонения от оси для двух отверстий и соответственно

генерить строку поворота системы координат

Ссылка на сообщение
Поделиться на других сайтах
Или как-то хитрее надо?

Мне кажется или данная программа только в координате "0" будет работать? И что шаг по глубине должен быть кратный количеству проходов, иначе зарез...

Ссылка на сообщение
Поделиться на других сайтах

 

Или как-то хитрее надо?

Мне кажется или данная программа только в координате "0" будет работать? И что шаг по глубине должен быть кратный количеству проходов, иначе зарез...

 

Если вопрос мне, то не вникал в текст, автор вроде сказал, что это черновик.

Ссылка на сообщение
Поделиться на других сайтах
иначе зарез...

мне тоже так показалось, нужно не шаг прохода тогда задавать а количество проходов

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

 

собственно я реализовал у себя такой алгоритм (расфрезеровывание по спирали

но руки не доходят его в подпрограмму перенести

Ссылка на сообщение
Поделиться на других сайтах

мне тоже так показалось, нужно не шаг прохода тогда задавать а количество проходов

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

 

собственно я реализовал у себя такой алгоритм (расфрезеровывание по спирали

но руки не доходят его в подпрограмму перенести

 

Количество тоже не вариант. Нужно еще одно условие, если последний проход меньше шага, то он равен шагу. И на последней глубине проход нужен.

Если вопрос мне, то не вникал в текст, автор вроде сказал, что это черновик.

Нет, это я вашу цитату использовал. По этой причине и не смог ответ ТС дать.

Ссылка на сообщение
Поделиться на других сайтах
Количество тоже не вариант. Нужно еще одно условие, если последний проход меньше шага, то он равен шагу. И на последней глубине проход нужен.

понятно что тут несколько вариантов и все можно реализовать

можно жесткий цикл повторений (без проверки условий) и количество проходов в L  передавать

можно с проверкой условий, как угодно

 

еще счетчик на количество проходов можно поставить

в своем алгоритме я задаю сколько раз и по сколько (один проход) мне так удобнее

*********************************

к слову сказать это все от бедности системы фанук

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

Ссылка на сообщение
Поделиться на других сайтах

 

Так вот я хочу в эту подпрограмму передавать координаты отверстий которые хочу расфрезеровать по спирали.

Ну и передавай по G66P... X...Y..., в подпрограмму они пойдут как #24 #25 . Или как-то хитрее надо?

 

Это где то описано что именно #24 #25 ? Это стандарт?

 

 

мне тоже так показалось, нужно не шаг прохода тогда задавать а количество проходов

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

 

собственно я реализовал у себя такой алгоритм (расфрезеровывание по спирали

но руки не доходят его в подпрограмму перенести

 

Количество тоже не вариант. Нужно еще одно условие, если последний проход меньше шага, то он равен шагу. И на последней глубине проход нужен.

 

 

Если вопрос мне, то не вникал в текст, автор вроде сказал, что это черновик.

Нет, это я вашу цитату использовал. По этой причине и не смог ответ ТС дать.

 

сделаю такую проверку

Ссылка на сообщение
Поделиться на других сайтах

держи нас в курсе

если дело пойдет много наплодим таких подпрограмм )

 

 

 

Это где то описано что именно #24 #25 ? Это стандарт?

 

я не уверен что на всех моделях такое соответствие, хотя хз

если есть руководство то смотри в сторону "Локальные переменные"

 

****************************************

только что нашел в соседней ветке файл пдф

Custom-Macro-Quick-Reference-1.pdf

Ссылка на сообщение
Поделиться на других сайтах

Код для центрования и сверления n количества отверстий

%
T01 M06
G54 G90
G00 G43 Z50.0 H01
S1500 M03
G01 Z10.0 M08 F100
#50=6.0(KOL-VO OTVERSTII)
#51=360.0/#50(UGOL)
#52=100.0(DIAMETR)
#53=1.0(SCHETCHIK)
#54=66.0(UPREGDENIE)
G00 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53]
N100
G81 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53] Z-2.5 F100.0
G80
#53=#53+1
IF[#53LE#50] GOTO 100
G00 Z50.0
#53=1.0
G00 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53]
N200
G83 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53] Z-50.0 Q5.0 R3.0 F100.0
G80
#53=#53+1
IF[#53LE#50] GOTO 200
G00 Z50.0
M30
%

post-25729-0-33142900-1413964135_thumb.png

Ссылка на сообщение
Поделиться на других сайтах
%
G91 G28 Z0
G49 H0
T1 M6 (CENTROVKA)
G55 G90
S1500 M3
G43 Z50.0 H1 M8
G01 Z10.0 M08 F100
#50=6.0(KOL-VO OTVERSTII)
#51=360.0/#50(UGOL)
#52=100.0(DIAMETR)
#53=1.0(SCHETCHIK)
#54=66.0(UPREGDENIE)
G00 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53]
N100
G81 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53] Z-2.5 F100.0
G80
#53=#53+1
IF[#53LE#50] GOTO 100
G00 Z50.0
M5
G91 G28 Z0
G49 H0
T5 M6 (SVERLO D__)
G55 G90
S500 M3
G43 Z50.0 H5 M8
#53=1.0
G00 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53]
N200
G83 X#52/2*COS[#54+#51*#53] Y#52/2*SIN[#54+#51*#53] Z-50.0 Q5.0 R3.0 F100.0
G80
#53=#53+1
IF[#53LE#50] GOTO 200
G00 Z50.0
M5
M9
G91 G28 Z0
G91 G28 Y0
G49 H0
G90
M30
%

поправил

Ссылка на сообщение
Поделиться на других сайтах

На Фануках это называется что-то типа "цикл обработки под болты по окружности" и пример макро есть в инструкции, не надо велосипед изобретать.

Ссылка на сообщение
Поделиться на других сайтах
На Фануках это называется что-то типа "цикл обработки под болты по окружности" и пример макро есть в инструкции, не надо велосипед изобретать.

Этот пример работает только для простого сверления. Для других циклов G82 G83 G84 и т.д. он не подходит, потому что это просто пример. Мы сейчас для обработки "под болты по окружности" хотим перейти на задание координат в полярной системе. Хочется, чтобы программа была простая и наглядная - виден был G-цикл и видны координаты всех отверстий.

Ссылка на сообщение
Поделиться на других сайтах

Fanuc-Bolt-Hole-Circle-Custom-Macro-BHC.

G65 P9100 Xx Yy Zz Rr Ff Ii Aa Bb Hh
X: X coordinate of the center of the circle (#24)
Y: Y coordinate of the center of the circle (#25)
Z: Hole depth (#26)
R: Coordinates of an approach point (#18)
F: Cutting feedrate (#9)
I: Radius of the circle (#4)
A: Drilling start angle (#1)
B: Incremental angle (Clockwise when negative value) (#2)
H: Number of holes (#11)
*/

O9100
#3=#4003
G81 Z#26 R#18 F#9 K0
IF[#3 EQ 90]GOTO 1
#24=#5001+#24
#25=#5002+#25
N1 WHILE[#11 GT 0]DO 1
#5=#24+#4*COS[#1]
#6=#25+#4*SIN[#1]
G90 X#5 Y#6
#1=#1+#2
#11=#11-1
END 1
G#3 G80
M99

/*Fanuc Bolt Hole Macro Example
Example macro call to drill 5 holes at intervals of 45 degrees
after a start angle of 0 degrees
on the circumference of a circle with radius 4”.
The absolute center of the circle is (10”, 5”).*/
O0002
G90 G92 X0 Y0 Z4.0
G65 P9100 X10.0 Y5.0 R1.0 Z-2.0 F20 I4.0 A0 B45.0 H5
M30
Ссылка на сообщение
Поделиться на других сайтах

Хм. Более лаконичный цикл. Который ответил на все мои вопросы. Кто- то тут предлагал собирать макросы в отдельной ветке?

Ссылка на сообщение
Поделиться на других сайтах

G65-Macro-for-an-Increasing-Radius.jpg

;A = #1 (Start Angle 0 degrees)
;B = #2 (Start Radius)
;C = #3 (Increment angle for accuracy calculations.)
;I = #4 (Finish Angle)
;J = #5 (Finish radius)
;K = #6 (Milling feed)

O2222
T5 M6
G0 G90 G40 G21 G17 G94 G80
G54 X35 Y0 S500 M3
G43 Z100 H?
Z5
G1 Z-0.5 F200
G65 P8999 A0 B35 C0.01 I70 J37 K500
G0 G90 Z100 M30

O8999
#7 = #4 / #3 ;1) Total no. of moves 70 / 0.01
#8 = [[#5 - #2] / #7] ;2) Increase in radius 37-35/7000
N1 #2 = #2 + #8 ;3) Next Radius i.e. 35+inc. radius.
#1 = #1 + #3 ;4) Increase in angle
#9 = #2 * COS [ #1 ] ;5) New X axis position
#10 = #2 * SIN [ #1 ] ;6) New Y axis position
G1 X#9 Y#10 F#6 ;7) Feed move to new positions
;8) If new angle is less than finish angle go to line N1.
IF [#1 LT #4] GOTO 1
G0 Z10
M99

Тогда надо накопить) и попросить модератора перенести всё в 1 тему и зафиксировать сверху ветки

Ссылка на сообщение
Поделиться на других сайтах

поддерживаю, еще нужно описание написать к каждой подпрограмме, и пополнять

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...