Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 128 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
128
Dung lượng
16,76 MB
Nội dung
NGUY ỄN BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - KS NGUYỄN TIẾN THỊNH CHUYÊ N TÍNHTOÁNĐỘNGHỌC,ĐỘNGLỰCHỌCMÁYPHAYCNCTRỤCẢOKIỂUHEXAPOD LUẬN VĂN THẠC SĨ KHOA HỌC CƠ ĐIỆN TỬ KHOÁ: Hà Nội – 9/2014 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - i KS NGUYỄN TIẾN THỊNH TÍNHTOÁNĐỘNGHỌC,ĐỘNGLỰCHỌCMÁYPHAYCNC LỜI CAM ĐOAN Tên em Nguyễn Tiến Thịnh, học viên cao học khóa 2012B.CĐT.KH chuyên ngành Cơ Điện Tử Sau năm học tập, nghiên cứu trường Đại Học Bách Khoa Hà Nội, giúp đỡ thày cô giáo, đặc biệt PGS.TS Tạ Khánh Lâm TS Nguyễn Hồng Thái, em hoàn thành xong luận văn tốt nghiệp thạc sĩ Em xin cam đoan đề tài luận văn “Tính toánđộnghọc,độnglựchọcphayCNCtrụcảokiểu Hexapod” công trình nghiên cứu cá nhân em dự hướng dẫn PGS.TS Tạ Khánh Lâm TS Nguyễn Hồng Thái tham khảo tài liệu liệt kê Em không chép công trình cá nhân khác hình thức Nếu có, em xin hoàn thành chịu trách nhiệm Hà Nội, ngày tháng năm 2014 Người cam đoan Nguyễn Tiến Thịnh ii LỜI CẢM ƠN Trong trình thực đề tài " Tínhtoánđộnghọc,độnglựchọcphayCNCtrụcảokiểuHexapod ", em đạt số kết định: Tìm hiểu cấu trúcmáy song song kiểuhexapod gia công khí, tínhtoánđộnghọc,độnglựchọc điều khiển, thực mô gia công OpenGL Em xin trân trọng cảm ơn giúp đỡ PGS.TS Tạ Khánh Lâm, TS.Nguyễn Hồng Thái thầy cô môn hướng dẫn, giúp đỡ tạo điều kiện cho em hoàn thành đề tài Tuy nhiên, với kinh nghiệm thực tế hạn chế nên luận văn tránh thiếu sót chưa thể hoàn thiện mong đợi, kính mong quý thầy cô đóng góp ý kiến để đề tài hoàn thành tốt Em xin trân trọng cảm ơn! Học viên Nguyễn Tiến Thịnh iii MỤC LỤC LỜI CAM ĐOAN .ii LỜI CẢM ƠN iii MỤC LỤC iv DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT .v DANH MỤC CÁC BẢNG vii DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ vii MỞ ĐẦU 1 ĐẶT VẤN ĐỀ MỤC ĐÍCH NGHIÊN CỨU CỦA ĐỀ TÀI .2 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI NỘI DUNG NGHIÊN CỨU CỦA LUẬN VĂN .2 Chương .3 TỔNG QUAN VỀ MÁYCNCTRỤCẢOKIỂUHEXAPOD .3 1.1 MÁYCNC CÓ CẤU TRÚC CHUỖI ĐỘNGHỌC HỞ TRUYỀN THỐNG .4 1.2 CÁC MÁYCNC CÓ CẤU TRÚC CHUỖI ĐỘNGHỌC SONG SONG 1.2.1 Sự phát triển máy có cấu trúc chuỗi độnghọc song song 1.2.2 Sự phát triển máy công cụ CNC có cấu trúc chuỗi độnghọc song song 10 1.3 ƯU NHƯỢC ĐIỂM CỦA CƠ CẤU SONG SONG 14 1.4 NHỮNG NGHIÊN CỨU ĐÃ ĐƯỢC CÔNG BỐ VỀ MÁYCNC CÓ CẤU TRÚCĐỘNGHỌC SONG SONG 15 1.5 TÍNH ĐƯỜNG DỤNG CỤ TRONG GIA CÔNG BỀ MẶT KHÔNG GIAN TRÊN MÁYPHAYCNCTRỤC 16 1.6 KẾT LUẬN VÀ ĐỊNH HƯỚNG NGHIÊN CỨU 29 Chương 30 PHÂN TÍCH ĐỘNGHỌCMÁYCNCTRỤCẢOKIỂU HAXAPOD 30 2.1 PHÂN TÍCH LỰA CHỌN KẾT CẤU MÁY 30 2.2 THIẾT LẬP PHƯƠNG TRÌNH ĐỘNGHỌC VỊ TRÍ 33 2.3 BÀI TOÁN VẬN TỐC 53 2.4 VÍ DỤ ÁP DỤNG 64 Chương 67 BÀI TOÁNĐỘNGLỰCHỌC .67 3.1 BÀI TOÁN GIA TỐC 67 3.2 XÁC ĐỊNH GIA TỐC VÀ GIA TỐC GÓC CỦA KHÂU THAO TÁC 68 3.3 GIA TỐC TRỌNG TÂM CÁC KHÂU 68 3.4 PHÂN TÍCH ĐỘNGLỰCHỌC THEO PHƯƠNG PHÁP NEWTONEULER 69 3.5 Ví dụ áp dụng 74 KẾT LUẬN .84 PHỤ LỤC 87 iv PHỤ LỤC A: CHƯƠNG TRÌNH MÔ PHỎNG MATLAB 87 PHỤ LỤC B: CHƯƠNG TRÌNH MÔ PHỎNG TRÊN VISUAL C SỬ DỤNG THƯ VIỆN OPENGL 107 PHỤ LỤC C: THÔNG SỐ ĐỘNGLỰCHỌC TỪ SOLIDWORKS .119 DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT v Ký hiệu CNC Nội dung, ý nghĩa Computer numerical controlled_Điều khiển số máytính Aj Tọa độ khớp cầu thứ j giá cố định ( j = − ) Bji Tọa độ khớp cầu thứ j giá di động thời điểm thứ i ϑu Hệ quy chiếu gốc máy RBSS: ϑu{OXYZ} ϑB Hệ quy chiếu gốc phôi RBSS: ϑB{OBMXBMYBMZBM} Hệ ϑ0 quy chiếu đặt tâm giá cố định RBSS ϑ0{SRBXRBYRBZRB} ϑ2 Hệ quy chiếu đặt tâm giá di động RBSS: ϑ2{PUVW} Hệ quy chiếu đặt điểm định vị dụng cụ chọn dụng cụ: ϑd ϑd{CLTuvw} dji Chiều dài chân thứ j thời điểm thứ i R Bán kính đường tròn qua khớp giá cố định r Bán kính đường tròn qua khớp giá di động aj Tọa độ khớp cầu thứ j giá cố định ( j = − ) bj Tọa độ khớp cầu thứ j giá di động so với gốc tọa độ AjBji Chiều dài chân thứ j thời điểm thứ i ( j = − ) P Tọa độ gốc P đặt tâm giá di động so với gốc tọa độ sji Véc tơ hướng của chân thứ j thời điểm i ( j = − ) bj Tọa độ khớp cầu thứ j so với hệ quy chiếu động R2 Ma trận quay chuyển từ hệ quy chiếu ϑ hệ quy chiếu ϑ 0 ωij Vận tốc góc khâu thứ j thời điểm thứ i ( j = − ) v2 Vận tốc dài hệ quy chiếu ϑ so với hệ quy chiếu ϑ cố định ω2 v Bji Vận tốc góc hệ quy chiều động ϑ so với hệ quy chiếu ϑ cố định Vận tốc dài khớp cầu thứ j giá di động thời điểm thứ i( j = − ) ~ ω Toán tử sóng vận tốc góc ω ~v Toán tử sóng vận tốc dài v R Ma trận đạo hàm ma trận quay R ~s ji −1 R2 m1 ji m ji v M1 ji Toán tử sóng véc tơ s ji Ma trận nghịch đảo ma trận quay R vi Véc tơ vị trí trọng tâm chân thứ j thời điểm thứ i Véc tơ vị trí trọng tâm chân thứ j thời điểm thứ i Vận tốc dài trọng tâm chân thứ j thời điểm thứ i DANH MỤC CÁC BẢNG Nội dung Trang Bảng 2.1 Tính chọn góc điều khiển hướng thực RBSS 28 Bảng 2.2 Bảng thông số kích thước độnghọc 33 Bảng 3.1 Dữ liệu cắt [22] 72 Bảng 3.2 Các giá trị lực cắt lớn mô 74 thí nghiệm dao đầu cầu phayCNCtrục Bảng 3.3 Bảng thông số độnglựchọc 76 Bảng 3.4 Bảng trích ngang quỹ đạo mô lực 77 DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ vii MỞ ĐẦU ĐẶT VẤN ĐỀ Quá trình công nghiệp hóa mục tiêu phát triển nhiều quốc gia giới, sản phẩm công nghiệp ngày yêu cầu đạt độ xác độ bóng cao, chi tiết ngày tinh xảo phức tạp Chính mà máy công cụ điều khiển số hay gọi máyCNC ngày đại hóa sử dụng rộng rãi toàn giới MáyCNC phát triển năm 1940 trở nên phổ biến từ năm 1970, ban đầu từ máy 2, ½ , 3, 4, trục, thông thường máy có cấu trúcđộnghọc hở truyền thống Tuy nhiên đến đầu năm 1990 ngành công nghiệp an ninh quốc phòng đòi hỏi cần tạo sản phẩm có bề mặt phức tạp, có độ xác cao đòi hỏi ngày phải phát triển hoản thiện máyCNC hệ có tính linh động cao bên cạnh máyCNC chuỗi độnghọc hở truyền thống Từ năm 1990 bắt đầu phát triển máy có cấu trúcđộnghọc song song nhằm tăng tính linh hoạt máy công cụ trình gia công chi tiết có bề mặt phức tạp Các máy công cụ gọi máy có trụcảo ứng dụng việc chế tạo máyphayCNC cao tốc sử dụng cho loại bề mặt phức tạp Cho đến hầu hết máy thương mại hóa Mỹ, Nhật Bản dùng gia công sản phẩm có độ xác cao, cấu trúcmáy song song ứng dụng nhiều nghành công nghiệp khác nghành công nghiệp hàng không, y học… Những năm gần nhiều nước tiến hành nghiên cứu phát triển kiểu cấu trúcmáy này, điều thể qua công trình nghiên cứu đăng tạp chí uy tín giới Như nói mẫu máyCNC Do em chọn đề tài nghiên cứu: “Tính toánđộnghọc,độnglựchọcphayCNCtrụcảokiểu Hexapod” để thực luận văn MỤC ĐÍCH NGHIÊN CỨU CỦA ĐỀ TÀI - Phân tích lựa chọn kết cấu máy, thiết kế cấu máyCNCtrụcảokiểuhexapod - Phân tích độnghọcmáyCNCtrụcảo hiểu hexapod, thiết lập thuật toán điều khiển vị trí đầu trục - Thiết lập phương trình độnglựchọc, xây dựng hệ thống điều khiển máy - Xây dựng phần mềm mô trình gia công bề mặt cong phức tạp máyCNCtrụcảokiểuhexapod Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI Luận văn nghiên cứu cấu trúc thuật toán điều khiển cho máyCNCtrụcảokiểuhexapod gia công bề mặt phức tạp, kết nghiên cứu nhằm đưa kết cấu hợp lý thuật toán điều khiển cho máyCNCtrụcảokiểuhexapod Các nghiên cứu luận văn sở cho việc nghiên cứu chế tạo máyCNC cấu trúc song song Việt Nam NỘI DUNG NGHIÊN CỨU CỦA LUẬN VĂN Luận văn trình bày 81 trang A4 35 trang phụ lục với chương: Chương 1: Tổng quan máyCNCtrụcảokiểu hexapod, ưu nhược điểm máy có cấu trúc chuỗi độnghọc hở máy có cấu trúcđộnghọc song song Chương 2: Phân tích lựa chọn kết cấu máy, phân tích độnghọcđộnghọc thuận, tínhtoán đưa thuật toán điều khiển toánđộnghọc ngược gia công khí Chương 3: Thiết lập phương trình độnglựchọc, giải toánđộnglựchọc, xây dựng hệ thống điều khiển máy Luận văn kết thúc với ba phụ lục: Phụ lục A: Các chương trình MATLAB tínhtoán mô đặc tínhđộnghọc biến khớp Phụ lục B: Chương trình phần mềm gia công bề mặt phức tạp Phụ lục C: Thông số độnglựchọc từ Solidworks Chương TỔNG QUAN VỀ MÁYCNCTRỤCẢOKIỂUHEXAPOD plot(cdam23j,'r') plot(cdam24j,'g') plot(cdam25j,'c') plot(cdam26j,'b') title('GIA TOC TRONG TAM CAC CHAN') xlabel('Tai diem thu i') ylabel('GIA TOC'); PHỤ LỤC B: CHƯƠNG TRÌNH MÔ PHỎNG TRÊN VISUAL C SỬ DỤNG THƯ VIỆN OPENGL Chương trình đọc file liệu đầu vào dạng txt - Tên hàm: ReadFile - Mục đích: Đọc file liệu lấy giá trị CCi giá trị hướng phục vụ cho việc tínhtoánđộnghọc - Đầu vào: file txt - Đầu ra: Tọa độ điểm CCi - Code: =================Đọc file liệu đầu vào===================== void CCTRPANEL::ReadFile(CString filename) { FILE *f; int i; double a2,b2,c2,R1_dao,r_dao,delta_ldao; double a3,b3,c3,a4,b4,c4,a5,b5,c5; 107 int noP_row,noP_col,typeTool,type_TP; noP=10045; i=0; f=fopen(filename,"rt"); a=new double[noP]; b=new double[noP]; c=new double[noP]; td1=new double[noP]; td2=new double[noP]; td3=new double[noP]; while (!feof(f)) { fscanf(f,"%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",&a[i], &b[i], &c[i],&a2, &b2, &c2,&a3, &b3, &c3,&a4, &b4, &c4,&a5, &b5, &c5, &td1[i], &td2[i], &td3[i]); td1[i]=td1[i]; td2[i]=td2[i]; td3[i]=td3[i]; a[i]=a[i]; b[i]=b[i]; c[i]=c[i]+200; i++; } fclose(f); Calculate(); } 108 Chương trình tínhtoán đưa thông số điều khiển - Tên hàm: Calculate - Mục đích: Tínhtoán thông số độnghọc phục vụ cho toán mô - Đầu vào: Tọa độ điểm Cci, thông số điều khiển hướng, thông số độnghọcmáy - Đầu ra: Các thông số điều khiển - Code: =============Chương trình toán================================== void CCTRPANEL::Calculate() { UpdateData(true); double Pi=3.145926535897932384626433832795; double l,za,zb,lc,i,xkn,ykn,zkn; lc=113.539; zb=0; za=689.811; double *lp,*lo,*b1o,*b2o,*b3o,*b4o,*b5o,*b6o; 109 tính lp=new double[3],lo=new double[3],b1o=new double[3],b2o=new double[3],b3o=new double[3],b4o=new double[3],b5o=new double[3],b6o=new double[3]; double *B1,*B2,*B3,*B4,*B5,*Bp1,*Bp2,*Bp3,*Bp4,*Bp5,*Bp6,*B6,oz[3]; oz[0]=0;oz[1]=0;oz[2]=1; double*A1,*A2,*A3,*A4,*A5,*A6,*s2,*s3,*s4,*s5,*s6,*s1,*k1,*k2,*k3,*k4,*k5,* k6,*k,M[3][3]; s1=new double[3],s2=new double[3],s3=new double[3],s4=new double[3], s5=new double[3],s6=new double[3]; Bp1=new double[3],Bp2=new double[3],Bp3=new double[3],Bp4=new double[3], Bp5=new double[3],Bp6=new double[3]; B1=new double[3],B2=new double[3],B3=new double[3],B4=new double[3], B5=new double[3],B6=new double[3]; A1=new double[3],A2=new double[3],A3=new double[3],A4=new double[3], A5=new double[3],A6=new double[3]; x1=a[t];//-300 y1=b[t];//+300 z1=c[t];//250 Bp1[0]=46.297;Bp1[1]=95.980;Bp1[2]=zb; Bp2[0]=-47.518;Bp2[1]=95.776;Bp2[2]=zb; Bp3[0]=-105.782;Bp3[1]=-8.89;Bp3[2]=zb; Bp4[0]=-59.98;Bp4[1]=-88;Bp4[2]=zb; Bp5[0]=59.64;Bp5[1]=-88.5;Bp5[2]=zb; Bp6[0]=106.5;Bp6[1]=-7.4;Bp6[2]=zb; A1[0]=60.073;A1[1]=177.397;A1[2]=za; 110 A2[0]=-59.927;A2[1]=177.397;A2[2]=za; A3[0]=-194.978;A3[1]=-56.266;A3[2]=za; A4[0]=-134.978;A4[1]=-160.189;A4[2]=za; A5[0]=134.905;A5[1]=-160.316;A5[2]=za; A6[0]=194.905;A6[1]=-56.393;A6[2]=za; xkn= td2[t]*oz[2] - oz[1]*td3[t]; //td1=td1[0] td3=td1[2] ykn= oz[0]*td3[t] - oz[2]*td1[t]; zkn= td1[t]*oz[1] - oz[0]*td2[t]; xk=xkn/(sqrt(xkn*xkn+ykn*ykn+zkn*zkn)); yk=ykn/(sqrt(xkn*xkn+ykn*ykn+zkn*zkn)); zk=zkn/(sqrt(xkn*xkn+ykn*ykn+zkn*zkn)); l=sqrt(td1[t]*td1[t]+td2[t]*td2[t] +td3[t]*td3[t])*sqrt(oz[0]*oz[0]+oz[1]*oz[1]+oz[2]*oz[2]); m_alpha=acos((td1[t]*oz[0]+td2[t]*oz[1]+td3[t]*oz[2])/l); if(m_alpha>Pi/6) { m_alpha=Pi/3-m_alpha; } M[0][0]=xk*xk*(1-cos(m_alpha))+cos(m_alpha); M[1][0]=xk*yk*(1-cos(m_alpha))+zk*sin(m_alpha); M[2][0]=xk*zk*(1-cos(m_alpha))-yk*sin(m_alpha); M[0][1]=yk*xk*(1-cos(m_alpha))-zk*sin(m_alpha); M[1][1]=yk*yk*(1-cos(m_alpha))+cos(m_alpha); M[2][1]=yk*zk*(1-cos(m_alpha))+xk*sin(m_alpha); M[0][2]=zk*xk*(1-cos(m_alpha))+yk*sin(m_alpha); 111 td2=td1[1] M[1][2]=zk*yk*(1-cos(m_alpha))-xk*sin(m_alpha); M[2][2]=zk*zk*(1-cos(m_alpha))+cos(m_alpha); lp[0]=0;lp[1]=0;lp[2]=lc; lo[0]=M[0][0]*lp[0]+M[0][1]*lp[1]+M[0][2]*lp[2]; lo[1]=M[1][0]*lp[0]+M[1][1]*lp[1]+M[1][2]*lp[2]; lo[2]=M[2][0]*lp[0]+M[2][1]*lp[1]+M[2][2]*lp[2]; b1o[0]=M[0][0]*Bp1[0]+M[0][1]*Bp1[1]+M[0][2]*Bp1[2]; b1o[1]=M[1][0]*Bp1[0]+M[1][1]*Bp1[1]+M[1][2]*Bp1[2]; b1o[2]=M[2][0]*Bp1[0]+M[2][1]*Bp1[1]+M[2][2]*Bp1[2]; b2o[0]=M[0][0]*Bp2[0]+M[0][1]*Bp2[1]+M[0][2]*Bp2[2]; b2o[1]=M[1][0]*Bp2[0]+M[1][1]*Bp2[1]+M[1][2]*Bp2[2]; b2o[2]=M[2][0]*Bp2[0]+M[2][1]*Bp2[1]+M[2][2]*Bp2[2]; b3o[0]=M[0][0]*Bp3[0]+M[0][1]*Bp3[1]+M[0][2]*Bp3[2]; b3o[1]=M[1][0]*Bp3[0]+M[1][1]*Bp3[1]+M[1][2]*Bp3[2]; b3o[2]=M[2][0]*Bp3[0]+M[2][1]*Bp3[1]+M[2][2]*Bp3[2]; b4o[0]=M[0][0]*Bp4[0]+M[0][1]*Bp4[1]+M[0][2]*Bp4[2]; b4o[1]=M[1][0]*Bp4[0]+M[1][1]*Bp4[1]+M[1][2]*Bp4[2]; b4o[2]=M[2][0]*Bp4[0]+M[2][1]*Bp4[1]+M[2][2]*Bp4[2]; b5o[0]=M[0][0]*Bp5[0]+M[0][1]*Bp5[1]+M[0][2]*Bp5[2]; b5o[1]=M[1][0]*Bp5[0]+M[1][1]*Bp5[1]+M[1][2]*Bp5[2]; b5o[2]=M[2][0]*Bp5[0]+M[2][1]*Bp5[1]+M[2][2]*Bp5[2]; b6o[0]=M[0][0]*Bp6[0]+M[0][1]*Bp6[1]+M[0][2]*Bp6[2]; b6o[1]=M[1][0]*Bp6[0]+M[1][1]*Bp6[1]+M[1][2]*Bp6[2]; b6o[2]=M[2][0]*Bp6[0]+M[2][1]*Bp6[1]+M[2][2]*Bp6[2]; B1[0]=x1+lp[0]+b1o[0];B1[1]=y1+lp[1]+b1o[1];B1[2]=z1+lp[2]+b1o[2]; 112 B2[0]=x1+lp[0]+b2o[0];B2[1]=y1+lp[1]+b2o[1];B2[2]=z1+lp[2]+b2o[2]; B3[0]=x1+lp[0]+b3o[0];B3[1]=y1+lp[1]+b3o[1];B3[2]=z1+lp[2]+b3o[2]; B4[0]=x1+lp[0]+b4o[0];B4[1]=y1+lp[1]+b4o[1];B4[2]=z1+lp[2]+b4o[2]; B5[0]=x1+lp[0]+b5o[0];B5[1]=y1+lp[1]+b5o[1];B5[2]=z1+lp[2]+b5o[2]; B6[0]=x1+lp[0]+b6o[0];B6[1]=y1+lp[1]+b6o[1];B6[2]=z1+lp[2]+b6o[2];*/ B1[0]=x1+lo[0]+b1o[0];B1[1]=y1+lo[1]+b1o[1];B1[2]=z1+lo[2]+b1o[2]; B2[0]=x1+lo[0]+b2o[0];B2[1]=y1+lo[1]+b2o[1];B2[2]=z1+lo[2]+b2o[2]; B3[0]=x1+lo[0]+b3o[0];B3[1]=y1+lo[1]+b3o[1];B3[2]=z1+lo[2]+b3o[2]; B4[0]=x1+lo[0]+b4o[0];B4[1]=y1+lo[1]+b4o[1];B4[2]=z1+lo[2]+b4o[2]; B5[0]=x1+lo[0]+b5o[0];B5[1]=y1+lo[1]+b5o[1];B5[2]=z1+lo[2]+b5o[2]; B6[0]=x1+lo[0]+b6o[0];B6[1]=y1+lo[1]+b6o[1];B6[2]=z1+lo[2]+b6o[2]; m1=sqrt((-A1[0]+B1[0])*(-A1[0]+B1[0])+(-A1[1]+B1[1])*(A1[1]+B1[1])+(-A1[2]+B1[2])*(-A1[2]+B1[2])); s1[0]=(A1[0]-B1[0])/m1;s1[1]=(A1[1]-B1[1])/m1;s1[2]=(A1[2]B1[2])/m1; m2=sqrt((A2[0]-B2[0])*(A2[0]-B2[0])+(A2[1]-B2[1])*(A2[1]-B2[1]) +(A2[2]-B2[2])*(A2[2]-B2[2])); s2[0]=(A2[0]-B2[0])/m2;s2[1]=(A2[1]-B2[1])/m2;s2[2]=(A2[2]B2[2])/m2; m3=sqrt((A3[0]-B3[0])*(A3[0]-B3[0])+(A3[1]-B3[1])*(A3[1]-B3[1]) +(A3[2]-B3[2])*(A3[2]-B3[2])); s3[0]=(A3[0]-B3[0])/m3;s3[1]=(A3[1]-B3[1])/m3;s3[2]=(A3[2]B3[2])/m3; m4=sqrt((A4[0]-B4[0])*(A4[0]-B4[0])+(A4[1]-B4[1])*(A4[1]-B4[1]) +(A4[2]-B4[2])*(A4[2]-B4[2])); 113 s4[0]=(A4[0]-B4[0])/m4;s4[1]=(A4[1]-B4[1])/m4;s4[2]=(A4[2]B4[2])/m4; m5=sqrt((A5[0]-B5[0])*(A5[0]-B5[0])+(A5[1]-B5[1])*(A5[1]-B5[1]) +(A5[2]-B5[2])*(A5[2]-B5[2])); s5[0]=(A5[0]-B5[0])/m5;s5[1]=(A5[1]-B5[1])/m5;s5[2]=(A5[2]B5[2])/m5; m6=sqrt((A6[0]-B6[0])*(A6[0]-B6[0])+(A6[1]-B6[1])*(A6[1]-B6[1]) +(A6[2]-B6[2])*(A6[2]-B6[2])); s6[0]=(A6[0]-B6[0])/m6;s6[1]=(A6[1]-B6[1])/m6;s6[2]=(A6[2]B6[2])/m6; d1=m1;d2=m2;d3=m3;d4=m4;d5=m5;d6=m6; xk1= s1[1]*oz[2] - oz[1]*s1[2]; yk1= oz[0]*s1[2] - oz[2]*s1[0]; //td1=oz[0] td2=oz[1] td3=oz[2] zk1= s1[0]*oz[1] - oz[0]*s1[1]; xk2= s2[1]*oz[2] - oz[1]*s2[2]; yk2= oz[0]*s2[2] - oz[2]*s2[0]; zk2= s2[0]*oz[1] - oz[0]*s2[1]; xk3= s3[1]*oz[2] - oz[1]*s3[2]; yk3= oz[0]*s3[2] - oz[2]*s3[0]; zk3= s3[0]*oz[1] - oz[0]*s3[1]; xk4= s4[1]*oz[2] - oz[1]*s4[2]; yk4= oz[0]*s4[2] - oz[2]*s4[0]; zk4= s4[0]*oz[1] - oz[0]*s4[1]; xk5= s5[1]*oz[2] - oz[1]*s5[2]; yk5= oz[0]*s5[2] - oz[2]*s5[0]; zk5= s5[0]*oz[1] - oz[0]*s5[1]; 114 xk6= s6[1]*oz[2] - oz[1]*s6[2]; yk6= oz[0]*s6[2] - oz[2]*s6[0]; zk6= s6[0]*oz[1] - oz[0]*s6[1]; m_alpha1=acos((s1[0]*oz[0]+s1[1]*oz[1]+s1[2]*oz[2])/ (sqrt(s1[0]*s1[0]+s1[1]*s1[1]+s1[2]*s1[2])*sqrt(oz[0]*oz[0]+oz[1]*oz[1]+oz[2]*o z[2]))); m_alpha2=acos(s2[2]/(sqrt(s2[0]*s2[0]+s2[1]*s2[1]+s2[2]*s2[2]))); m_alpha3=acos(s3[2]/(sqrt(s3[0]*s3[0]+s3[1]*s3[1]+s3[2]*s3[2]))); m_alpha4=acos(s4[2]/(sqrt(s4[0]*s4[0]+s4[1]*s4[1]+s4[2]*s4[2]))); m_alpha5=acos(s5[2]/(sqrt(s5[0]*s5[0]+s5[1]*s5[1]+s5[2]*s5[2]))); m_alpha6=acos(s6[2]/(sqrt(s6[0]*s6[0]+s6[1]*s6[1]+s6[2]*s6[2]))); UpdateData(false); } Chương trình mô - Tên hàm: Paint - Mục đích: Mô chuyển động gia công bề mặt phức tạp - Đầu vào: Các thông số điều khiển - Đầu ra: Giao diện mô với chuyển động gia công - Code: ==================Chương trình vẽ khâu mô phỏng====================== void CPSKView::OnInitialUpdate() { CView::OnInitialUpdate(); m1_bemat=false; m1_banmay=false; m1_phoi=false; m1_dungcu=false; m1_trucdao=false; 115 m1_phaptuyen=false; init=false; Pi=3.145926535897932384626433832795; m_pInitGL->SetBkgColor(RGB(44,167,255)); m_pInitGL->BeginGLCommand(); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); m_khung.setModel("STL1/CUM KHUNG.STL"); m_A1.setModel("STL1/TRUC NGOAI.STL"); m_A2.setModel("STL1/TRUC NGOAI.STL"); m_A3.setModel("STL1/TRUC NGOAI.STL"); m_A4.setModel("STL1/TRUC NGOAI.STL"); m_A5.setModel("STL1/TRUC NGOAI.STL"); m_A6.setModel("STL1/TRUC NGOAI.STL"); m_Dao.setModel("STL1/CUMDAO.STL"); m_B1.setModel("STL1/TRUC TRONG.STL"); m_B2.setModel("STL1/TRUC TRONG.STL"); m_B3.setModel("STL1/TRUC TRONG.STL"); m_B4.setModel("STL1/TRUC TRONG.STL"); m_B5.setModel("STL1/TRUC TRONG.STL"); m_B6.setModel("STL1/TRUC TRONG.STL"); m_QuyDao.clear(); m_QuyDao.setSize(10045*3); m_QuyDao.setColor(CColor(1,0,0)); m_QuyDao.set_line(1); m_QuyDao.setSizePoint(1); m_pInitGL->EndGLCommand(); m_pInitGL->EndGLCommand(); } void CPSKView::Paint() { m_QuyDao.addPoint(CPoint4D(x1,y1,z1)); m_pInitGL->BeforeDrawing(); glPushMatrix(); /* m_KhungRoBot.setMaterial(storageMaterial[5]); m_ConTruot.setMaterial(storageMaterial[13]); m_Cum1.setMaterial(storageMaterial[20]); m_Cum2.setMaterial(storageMaterial[20]); m_CumDauDao.setMaterial(storageMaterial[13]); m_CumVM.setMaterial(storageMaterial[8]);*/ m_khung.setMaterial(storageMaterial[5]); m_A1.setMaterial(storageMaterial[12]); m_A2.setMaterial(storageMaterial[12]); 116 m_A3.setMaterial(storageMaterial[12]); m_A4.setMaterial(storageMaterial[12]); m_A5.setMaterial(storageMaterial[12]); m_A6.setMaterial(storageMaterial[12]); m_Dao.setMaterial(storageMaterial[9]); m_B1.setMaterial(storageMaterial[6]); m_B2.setMaterial(storageMaterial[6]); m_B3.setMaterial(storageMaterial[6]); m_B4.setMaterial(storageMaterial[6]); m_B5.setMaterial(storageMaterial[6]); m_B6.setMaterial(storageMaterial[6]); m_pInitGL->UseUCS(); m_pInitGL->TranslateGL(); m_pInitGL->MouseMoveGL(); m_pInitGL->ScaleGL(); glScalef(1.5,1.5,1.5); glTranslated(200,300,-200); if(init) { glPushMatrix(); // ToaDoDauDao(); m_khung.drawObject(); glPopMatrix(); glPushMatrix(); glTranslated(x1,y1,z1); glRotated(alpha*180/Pi,xk,yk,zk); m_Dao.drawObject(); /*glColor3d(1,0,0); Line(0,0,0,100,0,0); glColor3d(0,1,0); Line(0,0,0,0,100,0); glColor3d(0,0,1); Line(0,0,0,0,0,100);*/ glPopMatrix(); glPushMatrix(); glTranslated(60.073,177.397,689.811); /*glColor3d(1,0,0); Line(0,0,0,100,0,0); glColor3d(0,1,0); Line(0,0,0,0,100,0); glColor3d(0,0,1); Line(0,0,0,0,0,100);*/ glRotated(-alpha1*180/Pi,xk1,yk1,zk1); 117 m_A1.drawObject(); glTranslated(0,0,-m1); m_B1.drawObject(); /*glColor3d(1,0,0); Line(0,0,0,100,0,0); glColor3d(0,1,0); Line(0,0,0,0,100,0); glColor3d(0,0,1); Line(0,0,0,0,0,100);*/ glPopMatrix(); glPushMatrix(); glTranslated(-59.927,177.397,689.811); glRotated(-alpha2*180/Pi,xk2,yk2,zk2); m_A2.drawObject(); glTranslated(0,0,-m2); m_B2.drawObject(); glPopMatrix(); glPushMatrix(); glTranslated(-194.978,-56.266,689.811); glRotated(-alpha3*180/Pi,xk3,yk3,zk3); m_A3.drawObject(); glTranslated(0,0,-m3); m_B3.drawObject(); glPopMatrix(); glPushMatrix(); glTranslated(-134.978,-160.189,689.811); glRotated(-alpha4*180/Pi,xk4,yk4,zk4); m_A4.drawObject(); glTranslated(0,0,-m4); m_B4.drawObject(); glPopMatrix(); glPushMatrix(); glTranslated(134.905,-160.316,689.811); glRotated(-alpha5*180/Pi,xk5,yk5,zk5); m_A5.drawObject(); glTranslated(0,0,-m5); m_B5.drawObject(); glPopMatrix(); glPushMatrix(); glTranslated(194.905,-56.393,689.811); glRotated(-alpha6*180/Pi,xk6,yk6,zk6); m_A6.drawObject(); glTranslated(0,0,-m6); 118 m_B6.drawObject(); glPopMatrix(); } if(m1_bemat) m_QuyDao.drawPoints(); if(m1_phoi) ToaDoPhoi(); glPopMatrix(); m_pInitGL->AfterDrawing(); } PHỤ LỤC C: THÔNG SỐ ĐỘNGLỰCHỌC TỪ SOLIDWORKS Để lấy thông số độnglựchọc mô hình như: khối lượng, ma trận quán tính, tọa độ trọng tâm… ta sử dụng chức Mass Properties phần mềm Solid Works 119 Hình C.1 Thông số độnglựchọc cụm khung đế Hình C.2 Thông số độnglựchọc cụm giá di động 120 Hình C.3 Thông số độnglựchọc khớp chân Hình C.4 Thông số độnglựchọc khớp chân 121 ... đề tài " Tính toán động học, động lực học phay CNC trục ảo kiểu Hexapod ", em đạt số kết định: Tìm hiểu cấu trúc máy song song kiểu hexapod gia công khí, tính toán động học, động lực học điều... máy, thiết kế cấu máy CNC trục ảo kiểu hexapod - Phân tích động học máy CNC trục ảo hiểu hexapod, thiết lập thuật toán điều khiển vị trí đầu trục - Thiết lập phương trình động lực học, xây dựng hệ... cho thấy việc nghiên cứu tính toán động học, động lực học máy phay CNC trục ảo kiểu Hexapod cần thiết việc nghiên cứu mô trình điều khiển động lực học để xuất tín hiệu lực điều khiển quan trọng