Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 130 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
130
Dung lượng
4,92 MB
Nội dung
NGUYỄN TIẾN THỊNH 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 NGÀNH: CƠ ĐIỆN TỬ TÍNHTOÁNĐỘNGHỌC,ĐỘNGLỰCHỌCTRUNGTÂMPHAYCNCTRỤCẢOKIỂUHEXAPOD LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ CƠ ĐIỆN TỬ KHOÁ: 2012B Hà Nội – 9/2014 i 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 TÍNHTOÁNĐỘNGHỌC,ĐỘNGLỰCHỌCTRUNGTÂMPHAYCNCTRỤCẢOKIỂUHEXAPOD CHUYÊN NGÀNH: CƠ ĐIỆN TỬ LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ CƠ ĐIỆN TỬ NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS TẠ KHÁNH LÂM TS NGUYỄN HỒNG THÁI Hà Nội – 9/2014 ii 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ọctrungtâmphayCNCtrụ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 iii LỜI CẢM ƠN Trong trình thực đề tài " Tínhtoánđộnghọc,độnglựchọctrungtâmphayCNCtrụcảokiểuHexapod ", em đạt số kết định: Tìm hiểu cấu trúc má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 iv MỤC LỤC LỜI CAM ĐOAN iii LỜI CẢM ƠN iv MỤC LỤC v DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT vii DANH MỤC CÁC BẢNG xi DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ xi MỞ ĐẦU 1 ĐẶT VẤN ĐỀ MỤC ĐÍCH NGHIÊN CỨU CỦA ĐỀ TÀI Ý 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 Chương TỔNG QUAN VỀ TRUNGTÂMPHAYCNCTRỤCẢOKIỂUHEXAPOD 1.1 MÁY CNC CÓ CẤU TRÚC CHUỖI ĐỘNGHỌC HỞ TRUYỀN THỐNG 1.2 CÁC MÁY CNC 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 1.3 ƯU NHƯỢC ĐIỂM CỦA CƠ CẤU SONG SONG 12 1.4 NHỮNG NGHIÊN CỨU ĐÃ ĐƯỢC CÔNG BỐ VỀ MÁY CNC CÓ CẤU TRÚCĐỘNGHỌC SONG SONG 13 1.5 TÍNH ĐƯỜNG DỤNG CỤ TRONG GIA CÔNG BỀ MẶT KHÔNG GIAN TRÊN MÁY PHAYCNCTRỤC 14 1.5.1 Tính đường dụng cụ với dao phay ngón đầu cầu 16 1.5.2 Tính đường dụng cụ với dao phay ngón đầu 16 1.5.3 Tính đường dụng cụ với dao phay ngón đầu xuyến 17 1.5.4 Định hướng trục dụng cụ hệ tọa độ phôi 18 1.5.5 Xây dựng hệ quy chiếu trungtâmphayCNCtrục 21 1.5.6 Hệ quy chiếu lực cắt gia công CNCtrục 23 1.6 KẾT LUẬN VÀ ĐỊNH HƯỚNG NGHIÊN CỨU 27 Chương 28 PHÂN TÍCH ĐỘNGHỌCTRUNGTÂMPHAYCNCTRỤCẢOKIỂUHEXAPOD 28 2.1 PHÂN TÍCH LỰA CHỌN KẾT CẤU MÁY 28 2.2 THIẾT LẬP PHƯƠNG TRÌNH ĐỘNGHỌC VỊ TRÍ 31 2.2.1 Giải toánđộnghọc ngược 35 2.2.2 Phương pháp điều khiển toánđộnghọc ngược gia công khí35 2.2.3 Thuật toán điều khiển độnghọc gia công bề mặt phức tạp 37 2.2.4 Ví dụ áp dụng 41 2.3 BÀI TOÁN VẬN TỐC 51 2.3.1 Vận tốc dài vận tốc góc giá di động 51 2.3.2 Ma trận jacobi 56 v 2.3.3 Vận tốc góc chân 59 2.3.4 Vận tốc trọng tâm chân 60 2.4 VÍ DỤ ÁP DỤNG 61 Chương 64 BÀI TOÁNĐỘNGLỰCHỌC 64 3.1 BÀI TOÁN GIA TỐC 64 3.2 XÁC ĐỊNH GIA TỐC VÀ GIA TỐC GÓC CỦA KHÂU THAO TÁC 65 3.3 GIA TỐC TRỌNG TÂM CÁC KHÂU 65 3.4 PHÂN TÍCH ĐỘNGLỰCHỌC THEO PHƯƠNG PHÁP NEWTONEULER 66 3.4.1 Xét cho nhánh chân 66 3.4.2 Xét riêng khâu nhánh chân thứ i 70 3.5 Ví dụ áp dụng 71 KẾT LUẬN 81 I Về mặt lý thuyết 81 II Về mặt thực tiễn 81 III Các đề xuất phát triển hoàn thiện kết nghiên cứu luận văn 81 TÀI LIỆU THAM KHẢO 82 PHỤ LỤC 84 PHỤ LỤC A: CHƯƠNG TRÌNH MÔ PHỎNG MATLAB 84 Hàm tínhtoán độ biến thiên chiều dài chân 84 Hàm tínhtoán vẽ đồ thị độ biến thiên vận tốc góc 87 Tínhtoán gia tốc góc chân điểm tạo hình CCi 89 Tínhtoán vận tốc dài chân điểm tạo hình CCi 91 Tínhtoán vận tốc trọng tâm chân điểm tạo hình CCi 93 Tínhtoán gia tốc trọng tâm chân điểm tạo hình CCi 97 PHỤ LỤC B: CHƯƠNG TRÌNH MÔ PHỎNG TRÊN VISUAL C SỬ DỤNG THƯ VIỆN OPENGL 104 Chương trình đọc file liệu đầu vào dạng txt 104 Chương trình tínhtoán đưa thông số điều khiển 105 Chương trình mô 111 PHỤ LỤC C: THÔNG SỐ ĐỘNGLỰCHỌC TỪ SOLIDWORKS 116 vi DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT Ký hiệu CNC Nội dung, ý nghĩa Computer numerical controlled_Điều khiển số máy tí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} ϑ0 ϑ2 ϑd Hệ quy chiếu đặt tâm giá cố định RBSS ϑ0{SRBXRBYRBZRB} 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{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 ϑ vii 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 2 ~ v2 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 Toán tử sóng véc tơ s ji 1 R2 m1 ji m ji Ma trận nghịch đảo ma trận quay R 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 M1 ji Vận tốc dài trọng tâm chân thứ j thời điểm thứ i v M ji Vận tốc dài trọng tâm chân thứ j thời điểm thứ i 2 a Bji ji a M1 ji Gia tốc góc hệ quy chiếu ϑ so với hệ quy chiếu ϑ cố định Gia tốc dài điểm Bj thời điểm thứ i ( j ) Gia tốc góc chân thứ j thời điểm thứ i( j ) Gia tốc dài trọng tâm chân thứ j thời điểm thứ i viii a M ji Gia tốc dài trọng tâm chân thứ j thời điểm thứ i d j0 Chiều dài chân thứ j vị trí “0” ban đầu dmax Giới hạn hành trình trượt lớn chân dmin Giới hạn hành trình trượt nhỏ chân CL Tọa độ tâm dao vị trí “0” ban đầu H Tọa độ theo trục z giá cố định ϑ so với giá cố định ϑ lc Khoảng cách từ tâm bán cầu dao so với hệ quy chiếu động ϑ T CL i Điểm định vị dụng cụ thời điểm thứ i CCi Điểm tạo hình phôi thời điểm thứ i T rAj Véc tơ định vị điểm Aj hệ quy chiếu ϑ rOSRB Véc tơ vị trí điểm SRB hệ quy chiếu ϑ rBji Là véc tơ định vị điểm Bji hệ quy chiếu ϑ T td0 Là véc tơ phương trục dụng cụ vị trí “0” ban đầu P t di Véc tơ hướng trục dụng cụ phôi thời điểm thứ i T t di Véc tơ hướng trục dụng cụ thời điểm thứ i Góc hướng trục dụng cụ T t di hướng trục dụng cụ phôi P tdi Mk i , i rCL0 Ma trận quay góc quanh k Tọa độ điểm tạo hình T CL vị trí “0” ban đầu gi Khoảng dịch chuyển từ vị trí CL0 đến vị trí CLi Q Ma trận quay ix j f Aj Lực liên kết khớp Aj f Bji Lực liên kết khớp Bji thời điểm thứ i m1 j g Trọng lực khớp trượt m2j g Trọng lực khớp trượt j M Aj Mô men tác dụng lên nhánh Aj thời điểm thứ i j L Aj Tổng mô men động lượng hai khâu j j (nối với j j1 ji , j1 ji khớp trượt) tác dụng lên A j Các ma trận quán tínhtĩnh x cdam22j(i)=sqrt(am22j(1,:,i)*am22j(1,:,i)+am22j(2,:,i)*am22j(2,:,i)+am22j(3,:,i)*a m22j(3,:,i)); cdam23j(i)=sqrt(am23j(1,:,i)*am23j(1,:,i)+am23j(2,:,i)*am23j(2,:,i)+am23j(3,:,i)*a m23j(3,:,i)); cdam24j(i)=sqrt(am24j(1,:,i)*am24j(1,:,i)+am24j(2,:,i)*am24j(2,:,i)+am24j(3,:,i)*a m24j(3,:,i)); cdam25j(i)=sqrt(am25j(1,:,i)*am25j(1,:,i)+am25j(2,:,i)*am25j(2,:,i)+am25j(3,:,i)*a m25j(3,:,i)); cdam26j(i)=sqrt(am26j(1,:,i)*am26j(1,:,i)+am26j(2,:,i)*am26j(2,:,i)+am26j(3,:,i)*a m26j(3,:,i)); end plot(cdam21j,'k');hold on plot(cdam22j,'m') 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'); 103 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; 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; 104 i++; } fclose(f); Calculate(); } 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ọc máy - Đầu ra: Các thông số điều khiển - Code: trình =============Chương 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; 105 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; 106 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] td2=td1[1] 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); 107 M[0][2]=zk*xk*(1-cos(m_alpha))+yk*sin(m_alpha); 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]; 108 B1[0]=x1+lp[0]+b1o[0];B1[1]=y1+lp[1]+b1o[1];B1[2]=z1+lp[2]+b1o[2]; 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; 109 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])); 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]; 110 yk5= oz[0]*s5[2] - oz[2]*s5[0]; zk5= s5[0]*oz[1] - oz[0]*s5[1]; 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]*oz[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; 111 m1_dungcu=false; m1_trucdao=false; 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]); 112 m_A1.setMaterial(storageMaterial[12]); m_A2.setMaterial(storageMaterial[12]); 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); 113 Line(0,0,0,0,0,100);*/ glRotated(-alpha1*180/Pi,xk1,yk1,zk1); 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); 114 m_A6.drawObject(); glTranslated(0,0,-m6); m_B6.drawObject(); glPopMatrix(); } if(m1_bemat) m_QuyDao.drawPoints(); if(m1_phoi) ToaDoPhoi(); glPopMatrix(); m_pInitGL->AfterDrawing(); } 115 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 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 116 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 117 ... tài " Tính toán động học, động lực học trung tâm 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. .. Tính toán động học, động lực học trung tâm phay CNC trục ảo kiể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 trung tâm phay CNC trục. .. thấy việc nghiên cứu tính toán động học, động lực học trung tâm 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