(KHẢO SÁT VÍ DỤ CHO MÁY CẮT ĐIỀU KHIỂN SỐ KRISTAL CỦA NGA) 6.1 CÁC KHÁI NIỆM
Thảo đồ chi tiết: đây là một dạng bản vẽ chi tiết của tấm tôn, với
các kích thước và ký hiệu đường gấp, bẻ, uốn cong cần thiết cũng như các ký hiệu vết đường sườn kết cấu mà người chế tạo cần đối chiếu, kiểm tra khi gia công uốn, bẻ, gấp chi tiết cũng như hàn ốp vào các kết cấu trên tàu.
Hình 6.1
Hình 6.2
Thảo đồ hạ liệu: là bản vẽ sơ đồ sắp xếp các chi tiết sẽ được cắt
trên tấm vật liệu này. Trên mỗi chi tiết có thể hiện đầy đủ các ghi chú, ký hiệu... như trên thảo đồ chi tiết đã nêu (xem hình 6.1 và 6.2).
6.2 GIỚI HẠN NHIỆM VỤ CỦA BÀI TOÁN
Thực tế sản xuất hiện nay tại một số nhà máy đóng tàu là các thảo đồ hạ liệu đã có thể "thực hiện thủ công" trên một phần mềm thông dụng như AutoCAD. Kỹ năng thực hiện các bản vẽ sơ đồ loại này hoàn toàn ở mức sử dụng AutoCAD căn bản. Tất nhiên cũng cần một số đoạn chương trình hỗ trợ cho việc vẽ các chi tiết theo những mẫu có sẵn (nhưng khác kích thước cụ thể). Những chương trình hỗ trợ mang tính mã hóa các mẫu chi tiết thông dụng như vậy có thể tìm thấy trong các đề tài luận văn tốt nghiệp của sinh viên các khóa 1991 - 1992 chuyên ngành tại Bộ môn Tàu thủy.
Vấn đề đặt ra ở đây là một chương trình nối tiếp sau đó, với mục đích xuất các dữ liệu hình học của các chi tiết đã được sắp xếp trong một diện tích - khổ tôn cho trước ra ở dạng qui định, phù hợp với yêu cầu điều khiển cho một máy cắt điều khiển số cụ thể.
Trong phạm vi tài liệu này không đề cập đến giải pháp sắp xếp hợp lý hay tối ưu các chi tiết trên khổ tôn, mà chỉ là chấp nhận một sơ đồ sắp xếp có sẵn và tiếp đó là xuất dữ liệu điều khiển theo đó mà thôi. Trong phần phụ lục cuối chương có trình bày hai thảo đồ hạ liệu do một nhà máy cung cấp để làm ví dụ xuất điều khiển cho máy cắt tôn tự động.
6.3 GIỚI THIỆU VỀ MÁY CẮT TÔN TỰ ĐỘNG KRISTAL
6.3.1 Giới thiệu chung
Đây là hệ máy cắt do Liên Xô cũ chế tạo, có khả năng điều khiển ở dạng NC, nhờ bàn phím, màn hình và máy đọc băng lỗ. Một số máy thế hệ sau có lắp bộ giao tiếp với PC để trở thành hệ máy CNC. Máy di chuyển theo hệ thống X-Y, có hai đầu công tác để cắt và để vạch dấu bằng tia lửa điện. Máy có khả năng cắt nghiêng để kết hợp vát mép và tự động dịch trái hoặc phải theo chương trình để bù trừ khe hở cắt. Máy tự giảm tốc độ ở cuối hành trình để chuyển hướng nếu cần.
Hành trình di chuyển được mô tả qua các đoạn thẳng, cung tròn đơn giản, bởi tọa độ tuyệt đối hay tương đối tính từ điểm dừng trước đó. Các mã điều khiển và công nghệ có nêu trong Tài liệu hướng dẫn kèm theo máy. Sau đây là một số điểm chính.
999999 đơn vị).
+ Đơn vị tính góc ... là 0,01 độ (và giá trị tối đa cho phép là 36000 đơn vị).
2- Mô tả hành trình thẳng
Áp dụng công thức +X Y+ , nếu x = 0 (và/hoặc Y = 0) thì có thể ghi là: ++Y hoặc +X+ hoặc ++, tức là có thể bỏ qua số 0 nhưng vẫn giữ lại các dấu +/–.
3- Tọa độ tuyệt đối và tương đối
Trong cặp số tọa độ trên thì X và Y là khoảng cách tính từ gốc tọa độ. Trong trường hợp có qui định lại bằng mã lệnh 6 thì cặp số đó sẽ mang ý nghĩa tương đối, tính theo khoảng cách kể từ điểm tham chiếu ngay trước đó, tức là (+DX+DY). Hũy bỏ mã lệnh 6 là mã lệnh 5 - "tọa độ tuyệt đối".
4- Mô tả hành trình theo cung tròn
Áp dụng công thức +X2+Y2+Xc Yc+ + trong đó X2, Y2 tọa độ điểm kết thúc cung: Xc, Yc - tọa độ tâm; dấu +/- cuối cùng cho biết cung đi theo chiều dương hay âm. Các giá trị X2,Y2, Xc,Yc có thể lấy theo hệ tọa độ tương đối, tính từ điểm xuất phát của cung (là vị trí dừng trước khi vào cung).
5- Mô tả đường tròn: tương tự như cung tròn nhưng ngắn gọn hơn
nếu áp dụng cho trường hợp tương đối như sau: + + +DXc DYc+ + trong đó điểm cuối trùng với điểm xuất phát nên được thay bằng ++.
6- Sử dụng chương trình con - Procedure: để định nghĩa một
nhóm mã lệnh thành một procedure Kristal qui ước bằng một dòng mã đặt tên có dạng từ 1 đến 4 ký tự số và một dấu "+", tiếp đó là các mã lệnh cần thiết ghép nhóm, cuối cùng là dòng mã kết thúc cũng với các ký tự số trên và một dấu "-". Ví dụ: khai báo procedure 8205 như sau:
8205 82 5 8205 + −
Sau này, khi cần dùng, chỉ cần gọi bằng tên 8205.
Chương trình con còn có thể được gọi lại để thực hiện với n lần lập, với tỉ lệ TLx và tỉ lệ TLy khác nhau.
6.4 CHƯƠNG TRÌNH XUẤT NGỮ DỮ LIỆU CHO MÁY CẮT KRISTAL ;--- ;---
; Xuất đường cắt tôn ra file mã hóa cho KRISTAL ;--- (defun to Kr ( / ss1; xuất một nhóm entities
NewEnt; ra file tọa độ đường cắt [*.CAT] Pxcu Pycu); -- (chú ý: Tương đối = 1, 2, nil) - (setq fname (getstring" \n \n \nCho tên file: ") fname (open fname "w")
(setq Tương đối (if Tương đối Tương đối 2) Tle (if Tle Tle 10)
maxR (if maxR maxR 99999. 9) ssl (ssget) sslen (sslength ssl) ent (ssname ssl 0)
Pxcu 0 Pycu ) i 0 )
;--- (cond (cond
( ( = tương đối 2) (setq mã ~ nhanh "8205"; 82\n5\n mã ~ chậm "8106"; 81\n6\n
) )
( ( = tương đối 1) (setq mã ~ nhanh "8205"; 81\n5\n mã ~ chậm "8106"; 81\n6\n
) )
( ( not tương đối) (setq mã ~ nhanh "8205"; 82\n5\n mã ~ chậm "8106"; 81\n6\n
) )
(write-line (strcat ma~nhanh "+\n82\n54\n5\n" ma~nhanh "-") F1) (write-line (strcat ma~cham "+\n81\n6\n53\n" ma~cham "-") F1)
(setq vertx (entnext Ent) EList (entget vertx) closeP
(= (rem (cdr (assoc 70 (entget ent) ) ) 2) 1) Bulge nil Closept nil
(while (= "VERTEX" (cdr (assoc 0 Elist )) ) (setq Pti (cdr (assoc 10 Elist ) )
Bulgei (cdr (assoc 42 Elist ) ) )
(if (and CloseP (not ClosePt) ) (setq ClosePt Pti ) ) (setq Px (car Pti) Py (cadr Pti) )
(if bulge (CenCal) (setq Center "") ) (if (or Bulge Tuongdoi)
(setq Px (- Px Pxcu) Py (-Py Pycu) ) ) (if (= Tuongdoi 2)
(setq tuongdoi -2 Px (car Pti) Py (cadr Pti) )
(princ (strcat "\n" (chuso PX TLe) (chuso PY TLe) Center) ) (if newEnt (write-line ma~nhanh F1) )
(write-line (strcat (chuso PX Tle) (chuso PY TLe) Center) F1) (if newEnt (progn (setq newEnt nil) (write-line ma~cham F1) ) ) (setq Bulge (if (or (/= 0 Bulgei) (not Bulgei) ) Bulgei nil)
Pxcu (car Pti) Pycu (cadr Pti)
;--- (setq vertx (entnext Vertx) EList (entget vertx) ) (setq vertx (entnext Vertx) EList (entget vertx) ) ; end while VERTEX
(if ClosePt ; neu Pline dang close, ve tiep den diem xuat phat: (progn
(setq Pti Closept Px (car Pti) Py (cadr Pti) ) (if bulge (CenCal) (setq Center "") ) (if (or Bulge tuongdoi)
(setq Px (- Px Pxcu) Py (- Py Pycu) ) )
(princ (strcat "\n" (chuso PX TLe) (chuso PY TLe) Center) ) (write-line (strcat (chuso PX TLe) (chuso PY TLe) Center) F1) (setq Pxcu (car Pti) Pycu (cadr Pti) )
) )
) ; if cond=Polyline
( ( = Etype "LINE") ;---neu la LINE: (sepq elist (entget ent)
P1 (cdr (assoc 10 elist) ) P2 (cdr (assoc 11 elist) ) )
(setq Px (car P1) PY (cadr P1) ) (Repeat 2
(if tuongdoi
(setq Px (- Px Pxcu) Py (-Py Pycu) ) ) (if (= Tuongdoi 2)
(setq tuongdoi -2 Px (car P1) PY (cadr P1) ) (princ (strcat "\n" (chuso PX TLe) (chuso PY TLe) ) ) (if newEnt (write-line ma~nhanh F1) )
(write-line (strcat (chuso PX TLe) (chuso PY TLe) ) F1) (if newEnt (progn (write-line ma~cham F1) (setq newEnt nil) ) ) (setq Pxcu (car P1) Pycu (cadr P1)
Px (car P2) Py (cadr P2) )
) (setq Pxcu (car P2) Pycu (cadr P2) ) ) )
( ( = Etype 'CIRCLE") ;--- neu la CIRCLE: (setq elist (entget ent)
Pc (cdr (assoc 10 elist) ) R (cdr (assoc 40 elist) ) P2 (polar Pc Pi R) )
(setq Px (car P2) PY (cadr P2) ) (if tuongdoi
(setq Px (- Px Pxcu) Py (- Py Pycu) ) ) (if (= Tuongdoi 2)