Phân tích cơ sở dữ liệu

Một phần của tài liệu Xây dựng phần mềm để tính toán thiết kế đồ gá gia công cắt gọt trong sản xuất hàng loạt (Trang 29 - 42)

Dữ liệu ở hình 3.1 và 3.2 và bảng 3.1 bao gồm có hai dạng dữ liệu:

+ Dữ liệu về hình ảnh (dù là vẽ bằng phần mềm 2D hay 3D) + Dữ liệu về các thông số của chi tiết đƣợc tích hợp ở dạng bảng

3.2.1.Phân tích và lựa chọn dữ liệu hình ảnh

Nhƣ phân tích ở trên ta nhận thấy: với dữ liệu bằng hình ảnh ta có 2 hƣớng chính:

d d1 L h h1 t f a R B 18 12 38 10 4 1.5 1 1.0 0.8 16 20 12 38 10 4 1.5 1 1.0 0.8 18 22 16 45 12 4 1.5 2 1.5 1.0 18 25 16 45 12 4 3.0 2 1.5 1.0 21 28 16 48 14 5 3.0 2 1.5 1.0 23 30 16 48 14 5 3.0 2 1.5 1.0 25 32 16 48 14 5 3.0 2 1.5 1.2 27 35 20 35 16 6 3.0 3 2.0 1.2 30 38 20 35 16 6 3.0 3 2.0 1.2 33 40 20 35 16 6 3.0 3 2.0 1.2 35 42 24 62 17 7 3.0 3 2.0 1.2 37 45 24 62 17 7 3.0 3 2.0 1.2 40 48 24 62 17 7 3.0 3 2.0 1.2 43 50 24 62 17 7 3.0 3 2.0 1.2 45

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 30 Tr-êng §H B¸ch khoa Hµ Néi

a) Cơ sở dữ liệu (CSDL) dạng 2D: (Hình 3.3)

Hình 3.3.Lựa chọn cơ sở dữ liệu 2D

- Phương án 1: CSDL hình ảnh tĩnh. Là phƣơng án đơn giản nhất, theo

phƣơng án này ta sẽ sử dụng 1 chƣơng trình lập trình nhƣ: C, C+, Visual Basic... để thiết kế giao diện. Kết quả của phần mềm sau khi tra cứu có thể là 1 bảng dữ liệu các thông số của chi tiết, và hình ảnh chụp hoặc scan của chi tiết đó (kích thƣớc cố định).

Phƣơng án này là phƣơng án đơn giản nhất tuy nhiên hiệu quả và tính ứng dụng không cao.

- Phương án 2: CSDL 2D động, tức là ta có thể lấy ra đƣợc đúng hình ảnh 2D của chi tiết mà ta đang cần với đầy đủ thông số kích thƣớc theo nhu cầu (Kích thƣớc thay đổi).

Đây là 1 phƣơng án giải quyết khá hay và hoàn thiện. Theo phƣơng pháp này để xây dựng CSDL 2D kích thƣớc động, ngƣời lập trình sẽ sử dụng ngôn ngữ lập trình AutoLisp (List Processor)- là ngôn ngữ cho phép ngƣời dùng có thể mở rộng các chức năng của AutoCad- để vẽ ra các hình vẽ mà ta mong muốn: Lập trình viên sẽ sử dụng các câu lệnh trong ngôn ngữ AutoLisp để tiến hành vẽ từng đƣờng nét theo phƣơng pháp tọa độ. Sau khi lập trình hoàn thiện một hình ảnh, lập trình viên phải tìm cách kết nối từ CSDL các thông số (xây dựng bằng MS Acess) sang để có thể lấy ra đƣợc chi tiết có kích thƣớc nhƣ mong muốn.

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 31 Tr-êng §H B¸ch khoa Hµ Néi

Một nhƣợc điểm chính của phƣơng pháp này là phải xử lý một khối lƣợng thông tin lớn do vẽ theo phƣơng pháp tọa độ chính vì vậy khi vẽ các chi tiết phức tạp rất dễ nhầm lẫn và tốn thời gian.

b) Cơ sở dữ liệu (CSDL) 3D:

Về ƣu điểm của dạng dữ liệu này ta đã trình bày qua ở Chƣơng I (Tính trực quan, giảm bớt khoảng thời gian từ ý tƣởng thiết kế đến sản xuất thực tế....) Bên cạnh đó nếu xây dựng đƣợc CSDL 3D thì cũng dễ dàng chuyển nó sang 2D một cách nhanh chóng.

Hình 3.4. Lựa chọn cơ sở dữ liệu 3D

Trong 2 phƣơng án nêu trên ta quyết định sử dụng phƣơng án dùng phần mềm 3D để xây dựng CSDL bởi những nhƣợc điểm khi dùng AutoLisp nhƣ đã trình bày trên.

Ta có thể lựa chọn một trong các phần mềm 3D nhƣ: SolidWorks, Catia, Unigraphic....

Tóm lại: Ta quyết định sẽ sử dụng phần mềm 3D để xây dựng CSDL hình ảnh

cho phần mềm.

3.2.1.Phân tích và lựa chọn dữ liệu các thông số:

Nhiệm vụ là quản lý, cung cấp các thống số của chi tiết cho CSDL hình ảnh đã phân tích trên. Yêu cầu của phần mềm quản lý các thống số:

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 32 Tr-êng §H B¸ch khoa Hµ Néi

- Phù hợp với phần mềm đang xây dựng về mặt quy mô. - Giao tiếp thuần lợi với phần mềm xây dựng CSDL 3D.

Để quản lý tốt CSDL và để thuận tiện cho việc cập nhật, bổ sung vào CSDL đã có đối với những ngƣời không chuyên về lập trình thì ở đây tác giả chọn phần mềm Microsoft Office Access 2003 hoặc Microsoft Exel của tập đoàn Microsoft để quản lý và tra cứu nhanh các chi tiết đồ gá.

3.3.Chọn phần mềm để xây dựng cơ sở dữ liệu: (adsbygoogle = window.adsbygoogle || []).push({});

Từ những phân tích trên ta có:

Hình 3.5. Tổng hợp lựa chọn cơ sở dữ liệu cho phần mềm

Yếu tố quyết định đến việc sẽ lựa chọn phần mềm nào để xây dựng CSDL là làm thế nào để kết nối CSDL hình ảnh và CSDL các thông số với nhau một cách đơn giản và hiệu quả nhất.

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 33 Tr-êng §H B¸ch khoa Hµ Néi

- Giải pháp 1:Tìm trong số các phần mềm 3D sẽ sử dụng để xây dựng CSDL

một phần mềm:

a) Hoặc là mã nguồn mở: do tính bảo mật của các phần mềm nên khả năng này không có khả thi.

b) Hoặc là tích hợp một ngôn ngữ lập trình cho phép mở rộng khả năng của phần mềm.

c) Sử dụng các kỹ thuật để hack, tìm ra mã nguồn của các lệnh trong phần mềm 3D dùng để xây dựng CSDL.

Phương án a: không khả thi bởi các công ty sản xuất ra phần mềm đều có các giải pháp bảo vệ bản quyền của họ. Việc sử dụng các công cụ để hack ra các câu lệnh có thể thực hiện đƣợc nhƣng tốn rất nhiều thời gian và công sức.

Phương án b: có khả quan hơn. Ta biết trong AutoCad có cung cấp ngôn ngữ lập trình AutoLisp cho phép ngƣời sử dụng lập trình mở rộng khả năng của phần mềm. Ngƣời lập trình sẽ sử dụng ngôn ngữ này để vẽ các chi tiết trong thƣ viện, sau đó sử dụng MS Access để quản các kích thƣớc cho các lệnh vẽ đó.

Tuy nhiên nhƣ trình bày trên, phƣơng pháp này có khả năng thực thi đƣợc nhƣng khi các chi tiết phức tạp, nhiều đối tƣợng thì việc thƣc thi sẽ rất tốn thời gian và công sức. Sau đây là 1 ví dụ về việc sử dụng ngôn ngữ AutoLisp để vẽ

;CHUONG TRINH VE HINH 3D KHOET LO-DBL ;Ten file hop3DT.lsp

;Ve hinh khoi chu nhat khoan 4 lo va 1 da giac 6 canh

;++++++++++++++++NHAP CAC SO LIEU VE +++++++++++++++++++

(setq cdai(getreal "\nNhap chieu dai hinh chu nhat:")) (setq crong(getreal "\nNhap chieu rong hinh chu nhat:")) (setq h(getreal "\nNhap chieu cao hinh hop 3D<200>:")) (setq r(getreal "\nNhap ban kinh lo:"))

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 34 Tr-êng §H B¸ch khoa Hµ Néi

(setq mau(getint "\nNhap mau theo y ban <2>:")) (setq p1(getpoint "\nChon diem dau tien:")) (setq p2(polar p1 (/ pi 2) crong))

(setq p3(polar p2 0 cdai))

(setq p4(polar p3 (* (/ pi 2)3) crong)) (command "pline" p1 p2 p3 p4 "c") (command "color" mau )

(setq hcn(entlast))

;---VE CAC LO KHOET---

(setq lo1(polar p1 (angle p1 p3) (/ (distance p1 p3)5))) (setq lo3(polar p3 (angle p3 p1) (/ (distance p3 p1)5))) (setq lo2(polar p2 (angle p2 p4) (/ (distance p2 p4)5))) (setq lo4(polar p4 (angle p4 p2) (/ (distance p4 p2)5))) (command "circle" lo1 r "c")

(setq lo1(entlast))

(command "extrude" lo1 "" h 0) (setq lo1d(entlast))

(command "circle" lo2 r "c") (setq lo2(entlast))

(command "extrude" lo2 "" h 0) (setq lo2d(entlast))

(command "circle" lo3 r "c") (setq lo3(entlast)) (adsbygoogle = window.adsbygoogle || []).push({});

(command "extrude" lo3 "" h 0) (setq lo3d(entlast))

(command "circle" lo4 r "c") (setq lo4(entlast))

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 35 Tr-êng §H B¸ch khoa Hµ Néi

(setq lo4d(entlast))

;++++++++++++++++++++++++++++++++++++++++++++++++++++ (command "extrude" hcn "" h 0)

(setq hopcolo(entlast))

(command "subtract" hopcolo "" lo1d lo2d lo3d lo4d "") (setq hopcolod(entlast))

;=============ve da giac============================ (setq tamdg(polar p1 (angle p1 p4)(/ cdai 2)))

(command "polygon" 6 tamdg "i" rdg) (setq matdg(entlast))

(command "rotate3d" matdg "" "X" tamdg -90) (setq dgiacx(entlast))

(command "extrude" dgiacx "" crong 0) (setq hopdg(entlast))

(setq k(list(car tamdg)(cadr tamdg)(+ (caddr tamdg)(/ h 2)))) (command "move" hopdg "" tamdg k)

(setq dagiac6(entlast))

(command "subtract" hopcolod "" dagiac6 "") (command "Vpoint" (list 1 1 1))

(C:render "r")

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 36 Tr-êng §H B¸ch khoa Hµ Néi

Hình 3.6. Sản phẩm 3D thực hiện bằng ngôn ngữ AutoLisp

Phương án c: Trong thực tế có một khả năng mà các lập trình viên có thể dùng để điều khiển các phần mềm khác, đó là ngôn ngữ lập trình Hook:

Kỹ thuật lập trình hook:

Để hiểu rõ về kỹ thuật này,trƣớc hết ta phải hiểu rõ cơ chế hoạt động của hệ điều hành Windows. Quá trình xử lý thông điệp của Windows diễn ra nhƣ sau : Đầu tiên từ các hành động của ngƣời dùng nhƣ là : click chuột, nhấn phím, … hệ điều hành sẽ chuyển các hành động tƣơng ứng thành các thông điệp (messages). Sau đó Windows đẩy các message này vào hàng đợi của hệ thống (system queue) và từ system queue các messages đƣợc chuyển cho các hàng đợi của ứng dụng (application queue). Từ lúc này các ứng dụng sẽ lấy các message này trong hàng đợi ứng dụng của mình để xử lý (thông qua các vòng lặp chờ thông điệp - message loop).

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 37 Tr-êng §H B¸ch khoa Hµ Néi

Hook là cơ chế mà nhờ đó một hàm có thể chặn các sự kiện (message, mouse actions, keystrokes ) trƣớc khi chúng đƣợc gửi đến hàng đợi của ứng dụng. Các hàm này có thể thực hiện một số thao tác trên sự kiện, và trong một vài trƣờng hợp có thể định nghĩa lại hoặc hủy bỏ sự kiện mà nó chặn đƣợc. Một điểm quan trọng cần lƣu ý là các hàm này đƣợc gọi bởi chính Windows chứ không phải bởi ứng dụng của chúng ta. Một khả năng nữa của hook là cho phép lập trình viên tự tạo ra các thông điệp và gửi tới hàng đợi của ứng dụng.

Vậy thì đâu là tính năng của hook mà ta có thể lợi dụng? Đó chính là khả năng tự tạo ta các thông điệp và đẩy chúng vào hàng đợi của hệ thống.Windows cung cấp cho ta 2 hàm để làm việc này là SendMessage và PostMessage. SendMessage sẽ gửi thông điệp của lập trình viên vào hàng đợi của ứng dụng và chờ cho các thông điệp trƣớc đó đƣợc xử lí. PostMessage thì đẩy trực tiếp thông điệp cho ứng dụng thực hiện, có nghĩa là thông điệp sẽ đƣợc xử lí ngay sau khi hàm này đƣợc gọi.

Tuy nhiên, có một vấn đề phát sinh là cả 2 hàm SendMessage và PostMessage đều đòi hỏi lập trình viên xác định rõ cán (handle) – tức là phải hack ra các lệnh của của chƣơng trình cần gửi đến. Cán của chƣơng trình có thể tạm hiểu là địa chỉ của một ngôi nhà. Để có thể gửi bƣu phẩm đến đúng ngƣời nhận, bạn phải cung cấp địa chỉ đúng cho bƣu điện, Trong trƣờng hợp này cũng vậy, ta phải chỉ rõ cán của chƣơng trình mà ta muốn kết nối. Nhƣng thật không may là để xác định đƣợc cán của chƣơng trình, đòi hỏi lập trình viên phải có kiến thức chuyên sâu về gỡ rối (debug) chƣơng trình. Đối với các phần mềm lớn nhƣ các phần mềm 3D thì việc gỡ rối thành công cán của chƣơng trình gần nhƣ là không thể xảy ra.

Tóm lại, ta có thể tạm hiểu rằng điểm hạn chế của kĩ thuật lập trình hook là khó khăn trong việc tìm ra cán của chƣơng trình.

-Giải pháp 2: Ta sẽ tận dụng luôn các lệnh vẽ trong phần mềm 3D, mà không

LuËn v¨n Th¹c sü Bé m«n CNCTM (adsbygoogle = window.adsbygoogle || []).push({});

NguyÔn Thµnh Trung 38 Tr-êng §H B¸ch khoa Hµ Néi

sẽ xác định đƣờng dẫn và mở đến file cần tìm, thực hiện một số can thiệp để lấy ra chi tiết mong muốn.

Theo giải pháp này, để vẽ 1 nhóm sản phẩm (ví dụ: nhóm chốt trụ) ta tiến hành vẽ 1 chi tiết đại diện với các thông số đặc trƣng nhƣ: d, D, l... Sau đó khi muốn lấy ra chi tiết mình muốn thì phần mềm chỉ việc truyền các thông số đặc trƣng này vào là đƣợc.

Một yêu cầu quan trọng trong giải pháp này là: làm thế nào để truyền các thông số chúng ta đang cần vào trong phần mềm 3D ta đang vẽ kia?

Qua quá trình sử dụng và tìm hiểu, tác giả phát hiện ra rằng trong phần mềm SolidWorks có hỗ trợ công cụ Design Table để vẽ các chi tiết có cùng hình dạng nhƣng khác kích thƣớc. Phƣơng pháp này thực chất là sự kết hợp giữa việc sử dụng phần mềm 3D để thiết kế chi tiết cơ sở và MS Excel để truyền các thống số vào cho các chi tiết để có thể thay đổi hình kích thƣớc cho chúng.

Ví dụ minh họa sử dụng công cụ Design table trong SolidWorks để tạo phiến tỳ:

Bƣớc 1: Vẽ chi tiết phiến tỳ

Hình 3.7. Xây dựng phiến tỳ trong SolidWorks

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 39 Tr-êng §H B¸ch khoa Hµ Néi

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 40 Tr-êng §H B¸ch khoa Hµ Néi

Hình 3.9.Nhập các thông số của chi tiết vào bảng Excel

Bƣớc 4:Nhập các thông số của chi tiết

Hình 3.10. Kết quả sau khi hoàn thành

Với các chi tiết còn lại, việc thực hiện xây dựng trên Solidworks cũng làm tƣơng

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 41 Tr-êng §H B¸ch khoa Hµ Néi

Tóm lại: Ta sẽ sử dụng công cụ Design Table trong SolidWorks để xây dựng

CSDL cho phần mềm.

Ưu điểm: Đơn giản, hiệu quả.

Điểm khó trong phƣơng pháp này là ta phải tìm cách liên kết đƣợc giao diện phần mềm của chúng ta (xây dựng bằng VB) với CSDL mà ta vừa tìm đƣợc cách xây dựng trên.

Để giải quyết khó khăn này, trong SolidWorks đã cung cấp cho ngƣời dùng các hàm API để có thể can thiệp và điều khiển vào SolidWorks.(Sẽ đƣợc trình bày vào chƣơng sau).

LuËn v¨n Th¹c sü Bé m«n CNCTM

NguyÔn Thµnh Trung 42 Tr-êng §H B¸ch khoa Hµ Néi

CHƢƠNG IV. PHÂN NHÓM CÁC CHI TIẾT CỦA ĐỒ GÁ GIA CÔNG CƠ KHÍ

4.1. Chi tiết và cơ cấu định vị

Nhận xét: Việc phân nhóm các chi tiết và cơ cấu định vị dựa vào dạng bề mặt đƣợc chọn làm chuẩn. Việc lựa chọn này rất phù hợp với tiến trình tính toán thiết kế đồ gá. Cụ thể nhƣ sau:

Một phần của tài liệu Xây dựng phần mềm để tính toán thiết kế đồ gá gia công cắt gọt trong sản xuất hàng loạt (Trang 29 - 42)