Website đang trong quá trình cập nhật

Vui lòng nhập mật khẩu để truy cập

Quyền truy cập sẽ được lưu trong 48 giờ
Trần Thị Bình
Trần Thị Bình
5 bài viết · Tham gia Jul 2025

Lập trình Macro cho gia công lặp lại trên CNC Fanuc - Tối ưu thời gian lập trình

1,144 lượt xem
5 phản hồi
5 người tham gia
1 tháng trước

Ứng dụng Macro Programming

Em đang học Fanuc Macro B để tự động hóa gia công các chi tiết có pattern lặp lại.

Bài toán cụ thể

Gia công 36 lỗ tròn phân bố đều trên vòng tròn Ø200mm, mỗi lỗ cách nhau 10°.

Code Macro đơn giản

O1000 (MAIN PROGRAM)
#1=0          (START ANGLE)
#2=36         (NUMBER OF HOLES)
#3=100        (RADIUS = Ø200/2)

WHILE [#1 LT #2] DO1
  #4=#1*10                    (ANGLE)
  #5=#3*COS[#4]              (X POSITION)
  #6=#3*SIN[#4]              (Y POSITION)

  G00 X#5 Y#6               (RAPID TO POSITION)
  G83 Z-20 R2 Q5 F100       (DRILL CYCLE)

  #1=#1+1                    (INCREMENT)
END1

M30

Lợi ích

  • Giảm thời gian lập trình từ 2 giờ xuống 15 phút
  • Dễ sửa đổi (chỉ cần thay #2 và #3)
  • Giảm sai sót
  • Áp dụng cho nhiều chi tiết tương tự

Câu hỏi

  1. Làm sao debug macro khi có lỗi?
  2. Variable #1-#33 có phải là local không?
  3. Có thể dùng IF...THEN trong Macro B không?

Rất hữu ích cho production!

4 hình ảnh
Vui lòng đăng nhập hoặc đăng ký để đăng phản hồi.

5 phản hồi

Bài cuối bởi Trần Thị Bình 3 tuần trước
Trần Thị Bình 36 bình luận · Tham gia Jul 2025
3 tuần trước
Mình hay dùng Macro để:
1. Tính tọa độ vị trí lỗ trên vòng tròn
2. Tự động bù dao theo số đo thực tế
3. Gia công pattern lặp lại (honeycomb, grid)
4. Adaptive roughing (tự điều chỉnh Ap theo load)

Sinh năng suất tăng x3 lần!
Vũ Thị Mai 35 bình luận · Tham gia Feb 2025
3 tuần trước
Debug Macro: Dùng DPRNT[] để print giá trị variable ra console:

DPRNT[ANGLE=#4[43]]
DPRNT[X POS=#5[53]]

Sẽ thấy giá trị thực tế khi chạy
Lê Minh Cường 33 bình luận · Tham gia Apr 2025
3 tuần trước
Macro C mạnh hơn nhiều!
Ví dụ vòng lặp:

#100 = 1 (COUNTER)
WHILE [#100 LE 10] DO 1
G65 P9200 D[20 + #100*2] L[30 + #100*5]
#100 = #100 + 1
END 1

Có thể làm IF/ELSE phức tạp, tính toán trigonometry...
Lê Minh Cường 33 bình luận · Tham gia Apr 2025
4 tuần trước
Code của bạn OK nhưng nên thêm điều kiện kiểm tra:

IF [#1 GT 100] THEN #3000 = 1 (ERROR)

Đảm bảo không nhập sai tham số làm va chạm. Variable #1-#33 là local, mất sau M30.
Nguyễn Văn An 37 bình luận · Tham gia Aug 2025
4 tuần trước
Fanuc có sẵn Macro library:
- G65 P9010 (Bolt hole circle)
- G65 P9020 (Linear array)
- G65 P9030 (Arc milling)

Không cần viết lại từ đầu, chỉ cần gọi với tham số