Các đoạn Custom Macro hữu ích

Author
Các đoạn CNC Custom Macro hữu ích

Chào anh em,

Trên box lập trình CNC hiện tại đã có một topic giới thiệu về lập trình macro. Hôm nay mình lập nên topic này để chia sẻ và hy vọng nhận được từ anh em các đoạn, các chương trình macro hay, hữu ích và có ý nghĩa thực tiễn cao để mọi người để dành gối đầu sau này biết đâu có dịp dùng tới.

Nếu chưa có khái niệm hay hình dung gì về lập trình macro trong đầu, anh em nên đọc qua TOPIC NÀY trước và xem thêm một số tài liệu về Custom macro của Fanuc cũng như các hệ điều khiển khác.

Vì tính phổ biến của hệ điều khiển Fanuc nên các macro mình chia sẻ với mọi người là Fanuc Custom Macro B.

Quan điểm của mình là biết cái gì chia sẻ cái đó, trong quá trình này mình cũng sẽ học được nhiều từ anh em. Không dám múa rìu qua mắt thợ, anh em xin đừng ném đá vỉ mình cũng chỉ mới làm quen với Macro thôi.

Các đoạn macro được chia sẻ có thể do mình tự viết hoặc sưu tầm/chỉnh sửa từ nguồn bên ngoài. Sai xót là điều không thể tránh khỏi, xin anh em cứ thoải mái góp ý nhé.

===========================

Xin mở đầu với 1 chương trình Macro dùng để lấy tọa độ X, Y của tâm phôi và nhập giá trị tọa độ này vào các ô nhớ work offset tương ứng (G54, G55...). Đây là chương trình đơn giản, thuật toán có thể chưa tối ưu và chưa linh hoạt cho người dùng, sẽ nghiên cứu và nâng cấp thêm sau này.

Để chạy macro này, bạn phải chạy qua lại ở hai chế độ MEMORY và HANDLE.
Mỗi lần chạm mép phôi chướng trình sẽ lấy dữ liệu tọa độ machine X, Y hiện hành qua các biến #5021(Tọa độ X-machine hiện thời)#5022 (Tọa độ Y-machine hiện thời) và lưu 4 giá trị này vào 4 biến #1, #2, #3,#4

Sau khi có 4 giá trị #1, #2,#3, #4. Dễ dàng tìm được tọa độ tâm phôi bằng phép tính +-x/.
Sau khi tính được tọa độ X, Y của tâm phôi, ta gán giá trị tính được vào fixture offset G54 qua 2 biến #2501 (G54-X) và #2601 (G54-Y).

Test chương trình chạy OK trên máy chạy Fanuc 0i-MC, Fanuc 0i-MD.

Với các máy fanuc đời khác hoặc nếu dùng work offset khác (G55, G56...), biến số ta dùng sẽ khác với ví dụ.
Bạn cần tham khảo các tài liệu tra cứu về macro để biết chính xác biến số nào ta phải dùng trong chương trình của mình.



Code:
%
O0001 (Auto fixture offset setting)


N1(X+ setting)
#3006=1 (MANUAL [MEDIA=youtube]OD-TOUCH[/MEDIA] X+)
(PRESS CYCLE START)
[COLOR=#FF0000][B]#1=#5021[/B][/COLOR] (CAPTURE CURRENT MACHINE X COOR.)


N2 (X-SETTING)
#3006=1 (MANUAL MODE - TOUCH X-)
(PRESS CYCLE START)
[COLOR=#FF0000][B]#2=#5021[/B][/COLOR] (CAPTURE CURRENT MACHINE X COOR.)

N3 (Y+ SETTING)
#3006=1 (MANUALMODE - TOUCH Y+)
(PRESS CYCLE START)
[B][COLOR=#FF0000]#3=#5022[/COLOR] [/B](CAPTURE CURRENT MACHINE Y COOR.)

N4 (Y- SETTING)
#3006=1 (MANUAL MODE - TOUCH Y-)
(PRESS CYCLE START)
[B][COLOR=#FF0000]#4=#5022[/COLOR] [/B](CAPTURE CURRENT MACHINE Y COOR.)

(WORK OFFSET SETTING)
[B][COLOR=#FF0000]#2501[/COLOR][/B]=[#1+#2]/2 (G54-X)
[COLOR=#FF0000][B]#2601[/B][/COLOR]=[#3+#4]/2 (G54-Y)
#1=0 (VAR RESET)
#2=0
#3=0
#4=0
M30
%
 
Ðề: Các đoạn Custom Macro hữu ích

Rất hay và rất có ý nghĩa. Mong bạn thêm nhiều chường trình khác nữa.
 
Author
Ðề: Các đoạn Custom Macro hữu ích

MACRO SỐ 2: MACRO PHAY TINH CHỎM CẦU LÕM





Đây là macro giúp người dùng phay tinh chỏm cầu lõm, lưu ý là macro phay tinh nhé (mình sẽ bổ sung macro phá thô sau, hơi ngược đời chút xíu :D). Để sử dụng macro này người dùng cần nhập các thông số :

- Bán kính chỏm cầu: #1
- Bán kính dao cầu: #2 (macro này viết cho dao cầu - không dùng được cho Flat end mill và Bull End Mill)
- Chiều cao tâm chỏm cầu so với mặt phôi (Z0): #3
- Bước tiến (3d Step over): trong macro này bước tính không tính theo chiều sâu mỗi lớp cắt mà tính theo biên dạng 2D nên sẽ đảm bảo được độ đồng đều của bề mặt sau khi gia công.

Hồi nhỏ học toán không được khá nên chương trình viết hơi dài anh em thông cảm . Chương trình này mình viết chưa bao gồm các câu lệnh kiểm tra giá trị đầu vào của biến, nếu bạn thích thì có thể bổ sung để chương trình an toàn và thông minh hơn.



Video test Macro trên cimcoedit
[MEDIA=youtube]DpzRETP_ibY[/MEDIA]&feature=youtu.be

Code:
%O0911 ( SPHERE FINISHING MACRO)
( BY GIANGTHETOOL)


(==== USER INPUT HERE====)
#1=30 [B][COLOR=#ff0000](SPHERE  RADIUS )[/COLOR][/B]
#2= 5 [B][COLOR=#ff0000](TOOL  RADIUS)[/COLOR][/B]
#3=10 [B][COLOR=#ff0000](SPHERE CENTER HEIGHT)[/COLOR][/B]
#4=1 [COLOR=#ff0000][B](3D STEP OVER)[/B][/COLOR]
#11= 6000 [B][COLOR=#ff0000](SPINDLE SPEED)[/COLOR][/B]
#12=500  [B][COLOR=#ff0000](PLUNGE FEED RATE)[/COLOR][/B]
#13=2000  [B][COLOR=#ff0000](CUTTING FEED RATE)[/COLOR][/B]
(======== END INPUT======)


(===== DO NOT MODIFY FOLLOWING BLOCKS===)
#5=0 (SPHERE  RADIUS AT CURRENT PASS)
#6=0 (CURENT CONTACT DEPTH)
#7=0 (CURRENT TOOL TIP - X COORDINATE)
#8=0 (CURRENT TOOL TIP - Z COORDINATE)
#9= 0 (COUNTING VAR.)
#10=0  (CURRENT ANGLE)


(====CALCULATION=====)
#14=2*[#1]*3.14159 (SPHERE PERIMETER)
#15= ASIN[#3/[#1]]   (INITIAL ARC ANGLE)
#16= [#15]/360*[#14]   (INITIAL ARC LENGTH)
#17= #14/4 (END ARC LENGTH)
#20= 0  (STEP OVER FOR FIRST PASS)


N1 
T1 M6
G0G90G54X0Y0.S[#11] M3
M08
G43 H1 Z[#4]


WHILE[#16 LT #17] DO1
IF[#16NE[#15/360*#14]]THEN#20=#4 (CONDITION FOR NEXT PASSES)
#18=#16+#20 ( CALCULATE CURRENT ARC LENGTH )
#10=[#18/#14]*360 ( CALCULATE CURRENT ANGLE )
#5=[#1* COS[#10]] ( CALCULATE CURRENT RADIUS)
#6=[#1]*SIN[#10]-#3 ( CALCULATE CURRENT CONTACT DEPTH)
#7=[1-[#2]/[#1]]*#5 (CALCULATE CURRENT TOOL CENTER X COORDINATE)
#8=#6-[#2*SIN[#10]]+#2 (CALCULATE CURRENT TOOL CENTER Z COORDINATE)


IF[#20EQ0]THEN GOTO11 (L[MEDIA=youtube]A-IN[/MEDIA] FOR 1ST PASS )
IF[#20NE0]THEN GOTO12 (NO L[MEDIA=youtube]A-IN[/MEDIA] FOR NEXT PASSES)


N11 G0 X[#7-#2] Z-[#8-#2] (L[MEDIA=youtube]A-IN[/MEDIA] FOR 1ST PASS)
N12 G1 X[#7] Z-[#8] F[#12] 
G3 I-[#7] J0. F[#13]
#16=[#16+#4]
END1
G0 Z5.
G91 G28 Z0.
M5
M19
M30
 
Ðề: Các đoạn CNC Custom Macro hữu ích

Cho em hỏi là mấy cái #2501,2506 kia là mình gán cho nó hay mặc định nó là mã gán trong fanuc ạ?
 
Ðề: Các đoạn Custom Macro hữu ích

em đã chạy thử trên fanuc 31i-modelA ,chạy rất tốt :36:
 
Author
Ðề: Các đoạn CNC Custom Macro hữu ích

Cho em hỏi là mấy cái #2501,2506 kia là mình gán cho nó hay mặc định nó là mã gán trong fanuc ạ?
Đó là biến hệ thống của fanuc dòng "i", vd:0i, 21i... Hai biến này chứa giá trị X, Y của G54, không phải do người dùng tự đặt bạn nhé.
Các dòng fanuc không "i" có thể sẽ dùng biến khác.
 
Ðề: Các đoạn Custom Macro hữu ích

anh GiangTheTool ơi còn các biến cho G55~G59 thì như thế nào ạ? cho em biết luôn với!!



em đã tìm được các biến còn lại rồi ạ
 
Ðề: Các đoạn Custom Macro hữu ích

Chỗ em làm có 1 máy dùng chuyên cắt cực EDM,mỗi lần setting đều phải nhập từng giá trị cho x,y,z vì nó là fanuc Oi không như 31i có thể đồng thời nhập 3 giá trị 1 lần.Cực EDM thì chỉ cần cho dao vào tâm của khối rồi nhập 3 giá trị =0 cho các trục X,Y,Z,Em đã dựa vào đoạn Macro của Anh nhưng phải bấm 3 lần start cho 3 trục.Anh có thể hướng dẫn hoặc cho em một đoạn mà chỉ bấm 1 lần có thể nhập 3 giá trị vào không anh Giang?
Mong được sự giúp đỡ sớm của anh!
 
Author
Ðề: Các đoạn Custom Macro hữu ích

anh GiangTheTool ơi còn các biến cho G55~G59 thì như thế nào ạ? cho em biết luôn với!!
Có G54 rồi, bạn mò mò quanh đó sẽ ra các G còn lại :D

Chỗ em làm có 1 máy dùng chuyên cắt cực EDM,mỗi lần setting đều phải nhập từng giá trị cho x,y,z vì nó là fanuc Oi không như 31i có thể đồng thời nhập 3 giá trị 1 lần.Cực EDM thì chỉ cần cho dao vào tâm của khối rồi nhập 3 giá trị =0 cho các trục X,Y,Z,Em đã dựa vào đoạn Macro của Anh nhưng phải bấm 3 lần start cho 3 trục.Anh có thể hướng dẫn hoặc cho em một đoạn mà chỉ bấm 1 lần có thể nhập 3 giá trị vào không anh Giang?
Chưa hiểu ý của bạn lắm. Nếu bạn tự đưa được dao về tâm phôi thì có thể bỏ các dòng #3006=1, như vậy chỉ cần bấm 1 lần thôi, máy ko cần hiện thông báo hướng dẫn người dùng nữa mà nhập tọa độ X, Y, Z hiện tại vào bộ nhớ luôn.
 
Ðề: Các đoạn Custom Macro hữu ích

Là thế này ạ,cty em có 1 máy chuyên cắt cực phóng điện .Mà mỗi lần cắt ít nhất cũng phải 20EA trở lên mà nhập từng giá trị vào work offset setting đó tổng cộng là mất 6 lần bấm cho 1 phôi(cực lắm anh a)vì nó là cực phóng điện lên chỉ cần chấm cho nó vào tâm(tương đối) rồi nhập thôi nên em muốn mượn đoạn mã này để giảm bớt số lần bấm.
Em cũng đã mò theo và cũng thấy tạm ổi rồi,
#1=#5021(X)
#2=#5022(Y)
#3=#5023(Z)
#3006=1(nhập giá trị XYZ cho P1) vì làm nhiều nên phải chuyển qua G54.1
#7001=#1
#7002=#2
#7003=#3
#1=0
#2=0
#3=0
và cứ như vật em viết 1 lần tới P30 dùng dài dài ,như thế này sẽ bớt được 4 lần bấm:1:
anh check lại giúp em xem có chuẩn chưa ạ?
 
Ðề: Các đoạn Custom Macro hữu ích

với máy chuyên dùng để gia công cực điện thì bạn nên dùng đồ gá, tại mỗi vị trí gá Erowa là một gốc (G54,G55,G56...). Vậy là bạn chỉ cần lấy gốc 1 lần duy nhất cho mỗi vị trí.lần sau chỉ cần gá Erowa lên đồ gá là xong. ưu điểm lớn nữa là Erowa tháo ra lắp vào gia công lại điện cực ko sợ mất gốc (chỉ lệch gốc khi bạn tháo điện cực ra khỏi Erowa thôi),nếu máy có sét chiều dài dao tự động nữa thì khỏe.
 
Ðề: Các đoạn Custom Macro hữu ích

với máy chuyên dùng để gia công cực điện thì bạn nên dùng đồ gá, tại mỗi vị trí gá Erowa là một gốc (G54,G55,G56...). Vậy là bạn chỉ cần lấy gốc 1 lần duy nhất cho mỗi vị trí.lần sau chỉ cần gá Erowa lên đồ gá là xong. ưu điểm lớn nữa là Erowa tháo ra lắp vào gia công lại điện cực ko sợ mất gốc (chỉ lệch gốc khi bạn tháo điện cực ra khỏi Erowa thôi),nếu máy có sét chiều dài dao tự động nữa thì khỏe.
Khổ nỗi là chủ không có sắm bộ Erowa đó bạn ah
 
Author
Ðề: Các đoạn Custom Macro hữu ích

Là thế này ạ,cty em có 1 máy chuyên cắt cực phóng điện .Mà mỗi lần cắt ít nhất cũng phải 20EA trở lên mà nhập từng giá trị vào work offset setting đó tổng cộng là mất 6 lần bấm cho 1 phôi(cực lắm anh a)vì nó là cực phóng điện lên chỉ cần chấm cho nó vào tâm(tương đối) rồi nhập thôi nên em muốn mượn đoạn mã này để giảm bớt số lần bấm.
Em cũng đã mò theo và cũng thấy tạm ổi rồi,
#1=#5021(X)
#2=#5022(Y)
#3=#5023(Z)
#3006=1(nhập giá trị XYZ cho P1) vì làm nhiều nên phải chuyển qua G54.1
#7001=#1
#7002=#2
#7003=#3
#1=0
#2=0
#3=0
và cứ như vật em viết 1 lần tới P30 dùng dài dài ,như thế này sẽ bớt được 4 lần bấm:1:
anh check lại giúp em xem có chuẩn chưa ạ?
Đoan macro của bạn mình thấy chưa ổn vì dòng #3006 đặt sau các dòng:
#1=#5021(X)
#2=#5022(Y)
#3=#5023(Z)

Với biến #3006=1, chương trình sẽ tự động stop và hiện thông báo trên màn hình điều khiển. Nội dung thông báo hiển thị chính là phần nằm trong dấu (). Khác với các block khác, phần nằm trong dấu () là chú thích.

Bạn xem kỹ hoặc thử trực tiếp trên máy sẽ thấy dòng #3006 cần được đưa lên đầu. Khi đó dòng #3006 sẽ có chức năng hiện thông báo hướng dẫn người chạy máy đưa tool đến vị trí gốc điện cực cần set, sau khi đã đến đúng vị trí thì mới bấm cycle start để tiến hàng lấy tọa độ. Mỗi gốc chỉ cần 1 lần bấm. ngoài ra không cần dùng biến trung gian #1, #2, #3 trong trường hợp này vì không cần phải tính toán +-*/. Chỉ cần gán thẳng giá trị tọa độ hiện thời cho các biến hệ thống của G41.1 P1, G54.1 P2...

vd:

%
O0911
#3006=1(Thong Bao: Chuyen sang che do handle, di chuyen den dien cuc so 1- G54.1 P1, sau do quay tro lại che do Auto va an Cycle Start)
#7001=#5021(gan gia tri hien thoi của X cho g54.1p1-X)
#7002#5022 (gan gia tri hien thoi của Y cho G54.1 P1-Y)
#7003=#5023 (gan gia tri hien thoi của Z cho G54.1 P1-Z)

#3006=1(Thong Bao: Chuyen sang che do handle, di chuyen den dien cuc so 1- G54.1 P2, sau do quay tro lại che do Auto va an Cycle Start)
#7021=#5021(gan gia tri hien thoi của X cho g54.1P2-X)
#7022#5022 (gan gia tri hien thoi của Y cho G54.1 P2-Y)
#7023=#5023 (gan gia tri hien thoi của Z cho G54.1 P2-Z)
...
m30
%

Hình dưới đây là danh sách biến cho bạn tham khảo nếu bạn cần. (nguồn: Fanuc - CNC Custom Macros - Peter Smid)

 
Ðề: Các đoạn Custom Macro hữu ích

Cảm ơn bạn đã chỉ bảo,đúng là không cần đoạn trung gian lấy toạ độ hiện thời của các trục.Vậy là đoạn code ngắc được đi rất nhiều và nhìn không bị rối mắt,còn #3006 đặt đầu hay đặt ở giữa đoạn của mình vẫn cho kết quả hiển thị như nhau .
 
Ðề: Các đoạn Custom Macro hữu ích

Các bạn có tài liệu hướng dẫn cách lập trình macro cho mình xin . Chân thành cảm ơn và hậu tạ!!!
Email : quocbuuac@gmail.com.
Phone : 0919777609
 
G

Gió Lào

Có bác nào viết được macro cho máy tiện không? (tiện lệch tâm) xin chỉ giùm em với!!!
Em thấy toàn nói về phay thôi à
 

dong2403

New Member
Ðề: Các đoạn CNC Custom Macro hữu ích



Đó là biến hệ thống của fanuc dòng "i", vd:0i, 21i... Hai biến này chứa giá trị X, Y của G54, không phải do người dùng tự đặt bạn nhé.
Các dòng fanuc không "i" có thể sẽ dùng biến khác.
bác có thể cho em xin danh sách biến của hệ này được không? em tìm hoài mầ không thấy có. em cám ơn
 
H

Hoà phát

Các đoạn CNC Custom Macro hữu ích

Chào anh em,

Trên box lập trình CNC hiện tại đã có một topic giới thiệu về lập trình macro. Hôm nay mình lập nên topic này để chia sẻ và hy vọng nhận được từ anh em các đoạn, các chương trình macro hay, hữu ích và có ý nghĩa thực tiễn cao để mọi người để dành gối đầu sau này biết đâu có dịp dùng tới.

Nếu chưa có khái niệm hay hình dung gì về lập trình macro trong đầu, anh em nên đọc qua TOPIC NÀY trước và xem thêm một số tài liệu về Custom macro của Fanuc cũng như các hệ điều khiển khác.

Vì tính phổ biến của hệ điều khiển Fanuc nên các macro mình chia sẻ với mọi người là Fanuc Custom Macro B.

Quan điểm của mình là biết cái gì chia sẻ cái đó, trong quá trình này mình cũng sẽ học được nhiều từ anh em. Không dám múa rìu qua mắt thợ, anh em xin đừng ném đá vỉ mình cũng chỉ mới làm quen với Macro thôi.

Các đoạn macro được chia sẻ có thể do mình tự viết hoặc sưu tầm/chỉnh sửa từ nguồn bên ngoài. Sai xót là điều không thể tránh khỏi, xin anh em cứ thoải mái góp ý nhé.

===========================

Xin mở đầu với 1 chương trình Macro dùng để lấy tọa độ X, Y của tâm phôi và nhập giá trị tọa độ này vào các ô nhớ work offset tương ứng (G54, G55...). Đây là chương trình đơn giản, thuật toán có thể chưa tối ưu và chưa linh hoạt cho người dùng, sẽ nghiên cứu và nâng cấp thêm sau này.

Để chạy macro này, bạn phải chạy qua lại ở hai chế độ MEMORY và HANDLE.
Mỗi lần chạm mép phôi chướng trình sẽ lấy dữ liệu tọa độ machine X, Y hiện hành qua các biến #5021(Tọa độ X-machine hiện thời)#5022 (Tọa độ Y-machine hiện thời) và lưu 4 giá trị này vào 4 biến #1, #2, #3,#4

Sau khi có 4 giá trị #1, #2,#3, #4. Dễ dàng tìm được tọa độ tâm phôi bằng phép tính +-x/.
Sau khi tính được tọa độ X, Y của tâm phôi, ta gán giá trị tính được vào fixture offset G54 qua 2 biến #2501 (G54-X) và #2601 (G54-Y).

Test chương trình chạy OK trên máy chạy Fanuc 0i-MC, Fanuc 0i-MD.

Với các máy fanuc đời khác hoặc nếu dùng work offset khác (G55, G56...), biến số ta dùng sẽ khác với ví dụ.
Bạn cần tham khảo các tài liệu tra cứu về macro để biết chính xác biến số nào ta phải dùng trong chương trình của mình.



Code:
%
O0001 (Auto fixture offset setting)


N1(X+ setting)
#3006=1 (MANUAL [MEDIA=youtube]OD-TOUCH[/MEDIA] X+)
(PRESS CYCLE START)
[COLOR=#FF0000][B]#1=#5021[/B][/COLOR] (CAPTURE CURRENT MACHINE X COOR.)


N2 (X-SETTING)
#3006=1 (MANUAL MODE - TOUCH X-)
(PRESS CYCLE START)
[COLOR=#FF0000][B]#2=#5021[/B][/COLOR] (CAPTURE CURRENT MACHINE X COOR.)

N3 (Y+ SETTING)
#3006=1 (MANUALMODE - TOUCH Y+)
(PRESS CYCLE START)
[B][COLOR=#FF0000]#3=#5022[/COLOR] [/B](CAPTURE CURRENT MACHINE Y COOR.)

N4 (Y- SETTING)
#3006=1 (MANUAL MODE - TOUCH Y-)
(PRESS CYCLE START)
[B][COLOR=#FF0000]#4=#5022[/COLOR] [/B](CAPTURE CURRENT MACHINE Y COOR.)

(WORK OFFSET SETTING)
[B][COLOR=#FF0000]#2501[/COLOR][/B]=[#1+#2]/2 (G54-X)
[COLOR=#FF0000][B]#2601[/B][/COLOR]=[#3+#4]/2 (G54-Y)
#1=0 (VAR RESET)
#2=0
#3=0
#4=0
M30
%
 

Attachments

Top