CMM – DATUMS : XÂY DỰNG HỆ TRỤC TỌA ĐỘ – Coordinate Systems

Trong đo lường, việc xây dựng hệ trục tọa độ là bước rất quan trọng và ảnh hưởng tới toàn bộ kết quả đo. Ở một bài viết khác, tôi đã đề cập tới 3 yếu tố để xác định và xây dựng hệ trục XYZbản chất của việc dựng hệ trục đo.

DMIS có nhiều câu lệnh để xác định 3 yếu tố dựng hệ trục là mặt phẳng, gốc và trục. Và hệ trục được xây dựng trên DMIS cũng theo nguyên tắc tam diện thuận.

Câu lệnh cơ bản khi thiết lập Datum là DATSET. Các tham số truyền vào sẽ xác định hướng và gốc của các trục X,Y,Z

D(DAT1)=DATSET/DAT(A),ZDIR,ZORIG,DAT(B),YDIR,YORIG,DAT(C),XORIG

Câu lệnh trên là cấu trúc của câu lệnh dựng hệ trục có tên là DAT1 sử dụng đối tượng A là mặt tham chiếu thỏa mãn là hướng của trục Z (trục Z song song với vector pháp tuyến của mặt A thể hiện qua lệnh ZDIR) và gốc Z=0 nằm trên măt A này (thể hiện qua lệnh ZORIG). Sử dụng đối tượng B là trục tham chiếu, thỏa mãn B là hướng của trục Y (vector chỉ phương của B song song với vector đơn vị của trục Y) và gốc Y=0 nằm trên B, hay nói cách khác thì B chính là trục Y. Nếu ko có lệnh YORIG thì trục Y sẽ chỉ song song với B. Và sử dụng đối tượng C là gốc của trục X (XORIG). Như vậy hệ trục DAT1 được xác định và dựng qua bộ 3 thông số là mặt phẳng A, trục B và gốc C.

Các đối tượng A, B, C là các Datum tham chiếu (thường các bản vẽ sẽ chỉ định các datum tham chiếu để người đo dựng hệ trục thông qua các tham chiếu này). Các Datum tham chiếu thường có tiền tố đi kèm là DAT trong câu lệnh Datum Define (DATDEF) như sau.

DATDEF/FA(FACEZ),DAT(A)

DATDEF/FA(FACEY),DAT(B)

DATDEF/FA(FACEX),DAT(C)

Cách thể hiện logic của DMIS có liên hệ mật thiết tới dung sai hình học GD&T

Sau đây chúng ta sẽ phân tích từng thành phần trong câu lệnh dựng hệ trục tọa độ DATSET.

DATDEF/FA(Primary_Face_A),DAT(A)

D(DATUM1)=DATSET/DAT(A),ZDIR,ZORIG

Trong trường hợp này, mặt A được định nghĩa là Datum tham chiếu tên là DAT(A) thông qua dòng lệnh DATDEF đầu tiên.

Sau đó một Datum có tên DATUM1 được thiết lập qua lệnh DATSET với tham số truyền vào là DAT(A) dùng để xác định hướng của trục Z (hay có thể hiểu là vector chỉ phương của Z sẽ song song với vector pháp tuyến của mặt A qua cú pháp ZDIR) và gốc Z=0 nằm trên mặt A này. Như vậy có thể hiểu mặt A được gán là mặt phẳng XY.

Tiếp theo, chúng ta bàn tới trường hợp truyền vào tham số của 2 đối tượng (mặt và trục)

DATDEF/FA(Primary_Face_A),DAT(A)

DATDEF/FA(Secondary_Face_B),DAT(B)

D(DATUM2)=DATSET/DAT(A),ZDIR,ZORIG,DAT(B),XDIR,XORIG

Trong đoạn code trên, chúng ta sẽ define 2 đối tượng và đặt là DAT(A) và DAT(B). Ở dòng lệnh dựng hệ trục tọa độ, DATUM2 được thiết lập thông qua lệnh DATSET và truyền vào bộ 2 tham số. Tham số đầu tiên là đối tượng A, gán cho hướng Z và Z=0 (đã giải thích trước đó), và tham số tiếp theo là DAT(B) được sử dụng là trục tham chiếu thỏa mãn B được dùng làm phương của X (XDIR). Nếu B là đường thẳng thì vector chỉ phương của trục X sẽ song song với vector chỉ phương của B (sau khi xoay hệ trục quay Z), nếu B là mặt phẳng thì vecter chỉ phương của X sẽ song song với vector pháp tuyến của B. Và với lệnh XORIG thì chúng ta sẽ hiểu là B được gán là gốc X=0 (tâp hợp tất cả các điểm trên B đều có tọa độ X=0). Nếu B là đường thẳng thì ta hiểu rằng B chính là trục X sau, nếu B là mặt phẳng thì ta hiểu B là mặt YZ (tập hợp các điểm trên YZ đều có tọa độ X=0)

Thông thường tham số thứ 2 truyền vào sẽ là trục, vì ở bước 1 đã xác định mặt XY qua DAT(A), nếu tham số thứ 2 truyền vào là mặt phẳng và ràng buộc XORIG thì đối tương DAT(B) sẽ là mặt YZ. Tuy nhiên thực tế sẽ không bao giờ đo được 2 mặt actual và vuông góc tuyệt đối với nhau. Nên khi ràng buộc như vậy sẽ xảy ra xung đột về mặt lý thuyết do về mặt lý thuyết thì XY và YZ phải vuông góc với nhau tuyệt đối, nhưng thực tế DAT(A) và DAT(B) sẽ không bao giờ vuông góc tuyệt đối với nhau. Trong thực tế, nếu có trường hợp bản vẽ chỉ định xác định trục X qua DAT(B) là mặt phẳng thì hướng xử lý phải là lấy DAT(A) là mặt XY, sau đó giao tuyến của DAT(A) và DAT(B) sẽ là đường thẳng và gán đó là trục X.

Ví dụ chúng ta có DAT(B1) là đường thẳng giao tuyến tuyển 2 mặt phẳng A và B đo được.

Khi đó toàn bộ cách truyền tham số cho trục X đảm bảo logic sẽ là

D(DATUM2)=DATSET/DAT(A),ZDIR,ZORIG,DAT(B1),XDIR,XORIG

Sau ví dụ truyền 2 tham số để xác định mặt Z và trục X, chúng ta thấy rằng hệ trục chưa được xây dựng hoàn toàn vì chưa xác định được gốc Y=0.

Khối lệnh dưới đây, chúng ta sẽ cùng xem khi có đủ 3 tham số để xác định đủ bộ 3 yếu tố dựng trục là mặt phẳng, trục và gốc thì hệ trục có được xác định duy nhất hay ko.

DATDEF/FA(Primary_Face_A),DAT(A)

DATDEF/FA(Secondary_Face_B),DAT(B)

DATDEF/FA(Tertiary_Face_C),DAT(C)

D(DATUM3)=DATSET/DAT(A),ZDIR,ZORIG,DAT(B),XDIR,XORIG,DAT(C),YORIG

Bạn có thể thấy, tiếp nối hệ trục sau khi đã truyền 2 tham số xác định mặt và trục. Ở khối lệnh phía trên, chúng ta truyền tham số xác định gốc Y (YORIG) thông qua Datum C. Khi đó hệ trục tọa độ sẽ được xác định và duy nhất.

Về bản chất, để xác định hệ trục tọa độ, chúng ta cần xác định các yếu tố để định nghĩa hệ trục. Và 3 thông số cơ bản luôn là mặt phẳng tham chiếu, trục tham chiếu và gốc tham chiếu. Trong ứng dụng thực tế, có rất nhiều tùy biến khác nhau để xác định 3 thông số này thông qua thực tế của từng sản phẩm

Ví dụ bên dưới chúng ta sẽ thấy việc dựng hệ trục tọa độ thông qua đối tượng là trụ (cylinder), mặt, và đường thẳng.

DATDEF/FA(A-CYLINDER), DAT(A)

DATDEF/FA(LINE-A-B), DAT(A-B)

DATDEF/FA(B-PT1), DAT(B)

D(AB)=DATSET/DAT(A),XDIR,DAT(A-B),YDIR,DAT(B),XORIG,YORIG,ZORIG

Chúng ta phân tích từng câu lệnh trong ví dụ này. Đầu tiên là lệnh định nghĩa DAT(A) từ hình trụ A-Cylinder và ở câu lệnh DATSET, ở tham số đầu tiên truyền vào ta thấy DAT(A) được dùng để xác định XDIR. Như vậy có thể hiểu rằng đường sinh của A-Cylinder sẽ được dùng để xác định phương của trục X (Hiểu một cách tường minh thì sau khi truyền tham số này, hệ trục sẽ được thay đổi để thỏa mãn rằng trục X sẽ phải song song và cùng phương với đường sinh của hình trụ A-Cylinder. (lưu ý, trong ví dụ này chưa gán gốc XORIG)

Tiếp theo là line A-B được dựng (constructed) bằng cách nối 2 điểm B-PT1 và B-PT2 trong hình minh họa trên. Trong đó, B-PT1 là giao điểm của đường tâm trụ A-Cylinder và mặt A-Face, còn B-PT2 là giao điểm của đường tâm trụ B-Cylinder với mặt A-Face. Và tham số thứ 2 truyền vào thể hiện Line A-B được xác định là phương của trục Y. (Hiểu một cách tường mình thì hệ trục sẽ thay đổi để thỏa mãn trục Y sẽ song song và cùng phương với Line A-B)

Và cuối cùng, tham số thứ 3 sẽ xác định giao điểm B-PT1 là gốc X=0, Y=0, Z=0 (hiểu một cách đơn giản thì hệ trục sẽ tịnh tiến trực tiếp gốc tọa độ về vị trí điểm B-PT1.

Trong ví dụ này, có thể bạn sẽ thắc mắc là yếu tố đầu tiên trong 3 yếu tố cơ bản là mặt tham chiếu chưa thể hiện rõ. Tuy nhiên mặt tham chiếu đã được xác định khi truyền tham số đầu tiên, chúng ta xác định được mặt tham chiếu YZ là một mặt phẳng vuông góc với đường sinh của trụ (XDIR). Có vô số mặt phẳng thỏa mãn điều kiện này. Nhưng ở tham số thứ 3 đã ràng buộc X=0 tại B-PT1, như vậy chỉ có 1 mặt phẳng duy nhất thỏa mãn điều kiện là vuông góc với đương sinh của A-Cylinder và đi qua B-PT1.

Yếu tố mặt tham chiếu này cũng hiểu tưng tự trong tham số thứ 2. Tóm lại, hệ trục tọa độ luôn tuân thủ theo nguyên tắc tam diện thuận, nên khi xác định được trục thì sẽ ràng buộc được mặt tham chiếu và ngược lại khi xác định được mặt tham chiếu thì sẽ ràng buộc được trục (phải vuông góc với đối tượng còn lại). Khi đã ràng buộc được mặt và trục, chỉ cần xác định gốc tọa độ là hệ trục tọa độ sẽ được xác định là duy nhất. Bản chất của hệ trục đã được trình bày rất rõ ở bài viết về các yếu tố xác định hệ trục.

Câu lệnh DATSET không phải câu lệnh duy nhất để dựng hệ trục trong DMIS. Chúng ta còn sử dụng các câu lệnh khác để tùy biến hệ trục như TRANS (tịnh tiến), ROTATE (xoay).

Cả 2 câu lệnh dưới đây đều cho ra một kết quả hệ trục tọa độ giống nhau.

D(TRANS-DAT_FTRS)=TRANS/XORIG,FA(B-PT1),YORIG,FA(A-CYLINDER),YORIG,FA(A-CYLINDER)

D(TRANS-DAT_DTMS)=TRANS/XORIG,DAT(B),YORIG,DAT(A),ZORIG,DAT(A)

Hoặc bạn có thể truyền giá trị trực tiếp thay vì đối tượng đã định nghĩa

D(TRANS-DAT_MOVE)=TRANS/XORIG,-25.75,ZORIG,10.0

Hoặc qua vị trí hiện tại của đầu đo

D(TRANS-DAT_PRBY)=TRANS/YORIG,PRBRAD

Tóm lại, lệnh TRANS là lệnh tùy biến hệ trục bằng cách tịnh tiến gốc tọa độ theo các trục X,Y,Z bằng cách truyền tham số vào lệnh để xác định giá trị tịnh tiến.

Lệnh ROTATE dùng để xoay hệ trục quanh một trục tọa độ với giá trị góc xoay được truyền vào

D(ROTATE-DAT_VAL)=ROTATE/ZAXIS,-45.0

Hoặc xoay quanh một đối tượng

D(ROTATE-DAT_FTR)=ROTATE/XAXIS,FA(LINE-A-B),YDIR

Lệnh trên sẽ xoay hệ trục quanh trục X để trục Y sau phép xoay sẽ song song và cùng phương với đối tượng LINE-A-B

Với lệnh DATSET, các thành phần đi kèm là DIR (phương) và ORIG (gốc). Để tùy biến hệ trục tốt hơn, cần kết hợp với các lệnh TRANSROTATE. Cần chú ý rằng lệnh ROTATE sẽ không phù hợp để tạo đối tượng mặt tham chiếu (primary axis) và lệnh DATSET được thiết kế để thực hiện việc này. Sau khi đã có mặt tham chiếu thì sẽ tùy biến hệ trục bằng việc kết hợp với các lệnh như TRANSROTATE.

Ví dụ đoan code sau cũng có thể thiết lập được hệ trục tọa độ của vật thể cylinder trong hình minh họa trước đó

DATDEF/FA(A-CYLINDER), DAT(A)

DATDEF/FA(LINE-A-B), DAT(A-B)

DATDEF/FA(B-PT1), DAT(B)

D(PRE_AB)=TRANS/XORIG,DAT(B),YORIG,DAT(B),ZORIG,DAT(B)

D(A)=DATSET/DAT(A),XDIR

D(AB)=ROTATE/XAXIS,FA(LINE-A-B),YDIR

Trong đoạn code trên, ta thấy được 3 câu lệnh đầu tiên chỉ là define (định nghĩa) các datum bằng cú pháp DATDEF. Vị trí cụ thể của các đối tượng (Feature) các bạn có thể xem ở hình minh họa trước đó để dễ hình dung)

3 câu lệnh tiếp theo là các lệnh xử lý hệ trục. Lệnh đầu tiên là dịch chuyển gốc hệ trục tọa độ về DAT(B) thức là điểm B-PT1 (điểm này được xác định bằng giao điểm của đường sinh A-Cylinder với A-Face như đã giải thích trước đó).

Câu lệnh tiếp theo sẽ yêu cầu hệ trục phải thỏa mãn hướng của trục X trùng với hướng của DAT(A) (chính là A-Cylinder hay nói cách khác là đường sinh của A-Cylinder). Trong trường hợp này, khi gốc tọa độ đã về B-PT1 thì có thể hiểu trục X lúc này chính là đường sinh của A-Cylinder.

Câu lệnh cuối cùng là xoay hệ trục quanh trục X (đường sinh của A-Cylinder) sao cho thỏa mãn điều kiện trục Y có phương song song với LINE-A-B (đường nối giữa B-PT1 và B-PT2). Ở câu lệnh này, LINE-A-B nằm trên măt tham chiếu (A-Face) nên bản chất là xoay quanh trục X một góc bằng giá trị góc tạo bởi Line-A-B và trục Y của hệ trục tọa độ gần nhất. Đây là lý do tại sao lệnh ROTATE sẽ ko sử dụng để xác định mặt tham chiếu.

Lưu ý: Trong hình minh họa này, chúng ta giả định hướng của đường sinh A-Cylinder khi đo là từ phía trước ra phía sau, nên hệ trục được minh họa như trong hình trước đó. Trường hợp muốn đổi hệ trục theo hướng ngược lại, chúng ta có thể sử dụng lệnh DATSET và đổi dấu tham số truyền vào

D(A)=DATSET/DAT(A),-XDIR

Tương tự như vậy, Line-A-B được giả định đo từ B-PT1 tới B-PT2 (thứ tự bắt điểm sẽ quyết định phương của line constructed). Trường hợp Line-A-B có phương ngược lại và ta vẫn muốn hướng của trục Y phải giống như trên hình minh họa thì sẽ đổi dấu của tham số truyền vào đại diện hướng của trục.

D(AB)=ROTATE/XAXIS,FA(LINE-A-B),-YDIR

Và bạn cũng có thể chuyển đổi giữa các hệ trục đã dựng bằng lệnh RECALL (gọi lại hệ trục)

RECALL/DA(AB)

DMIS cũng cung cấp tùy chọn để lưu hệ trục vào một thiết bị bên ngoài để truy xuất ngoài chương trình đo hiện tại. Với các hệ trục được dựng trong cùng một chương trình đo, bạn có thể RECALL lại mà ko cần lưu trước đó (trừ khi bạn đóng chương trình). Trường hợp muốn RECALL ngoài chương trình (từ chương trình đo khác) thì bạn phải lưu lại hệ trục này ra thiết bị bên ngoài (ví dụ trong folder máy tính)

KẾT LUẬN

Bài viết này đã giới thiệu các câu lệnh cơ bản đẩy xây dựng và tùy biến hệ trục tọa độ cơ bản và đáp ứng được phần lớn nhu  cầu đo thông thường. Với các trường hợp sản phẩm có biên dạng phức tạp, việc xây dựng hệ trục sẽ phức tạp hơn và cần đến các lệnh khác như LOCATE, ITERAT, MATDEF. Các lệnh này là các thuật toán phức tạp để dựng và xác định hệ trục phù hợp nhất thỏa mãn các điều kiện đưa ra (best fitting).

 

Viết một bình luận