Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 96 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
96
Dung lượng
2,77 MB
Nội dung
DẪN NHẬP I Đặt vấn đề Gia công kim loại cắt gọt phương pháp gia công kim loại phổ biến ngành khí chế tạo máy Quá trình cắt kim loại trình người sử dụng dụng cụ cắt để hớt bỏ lớp kim loại thừa khỏi chi tiết, nhằm đạt yêu cầu cho trước hình dáng, kích thước, vị trí tương quan bề mặt chất lượng bề mặt chi tiết gia công Gia công sơ khí bao gồm nhiều lĩnh vực khác : tiện, phai, bào, xọc, dũa… Trong phương pháp tiện phổ biến nhất, máy tiện gia công kim loại thực tế Henry Maudslay phát minh vào năm 1800 Nó đơn giản công cụ máy giữ mẫu kim loại gia công (hay phôi) bàn kẹp hay trục quay quay mẫu kim loại này, công cụ cắt gia công bề mặt theo đường mức mong muốn Một vấn đề dòng máy ban đầu chúng đòi hỏi nhân viên vận hành phải sử dụng vô lăng để tạo chi tiết Ngoài tính nhàm chán gây mệt mỏi thể chất, khả chế tạo chi tiết vận hành viên bị hạn chế Chỉ khác biệt nhỏ vận hành dẫn đến thay đổi kích thước trục đó, tạo chi tiết không phù hợp Do đó, điều cần thiết phương tiện vận hành chuyển động máy cách tự động Những máy sử dụng động truyền động điện chiều để vận dụng vô lăng vận hành dao cụ Các động nhận dẫn điện từ đầu đọc băng từ – đọc băng giấy có chiều rộng khoảng 2,5cm có đục hàng lỗ Vị trí thứ tự lỗ cho phép đầu đọc sản xuất xung điện cần thiết để quay động với thời gian tốc độ xác, thực tế điều khiển máy giống nhân viên vận hành Các xung điện quản lý máy tính đơn giản nhớ Chúng thường gọi NC hay máy điều khiển số Khoa học kỹ thuật ngày phát triển, thiết bị máy móc có độ phức tạp ngày cao trình cắt gọt không đơn tạo chi tiết kích thước hình dạng, mà hiệu trình cắt gọt kim loại đánh giá ba tiêu: chất lượng, suất giá thành gia công sản phẩm Đối mặt với yêu cầu ngày phức tạp máy NC đáp ứng được, gia công chi tiết đòi hỏi độ xác cao Để đáp ứng yêu cầu đòi hỏi trình gia công phải hoàn toàn tự động hóa bàn tay người tác động trực tiếp vào sản phẩm Từ máy CNC đời Máy Tiện CNC từ viết tắt cho Computer Numerical Control (điều khiển máy tính) – đề cập đến việc điều khiển máy tính máy móc khác với mục đích sản xuất (có tính lập lại) phận kim khí (hay vật liệu khác) phức tạp, cách sử dụng chương trình viết kí hiệu chuyên biệt hay gọi ngônngữ lập trình Máy tiện CNC xuất nhanh chóng thay đổi việc sản xuất công nghiệp Việc tiến hành tiện đường cong, hình phức tạp thực dễ dàng đường thẳng, cấu trúc phức tạp chiều dễ dàng thực hiện, lượng lớn thao tác người thực giảm thiểu Việc gia tăng tự động hóa trình sản xuất với máy CNC tạo nên phát triển đáng kể xác chất lượng Kĩ thuật tự động máy tiện CNC giảm thiểu tối đa sai sót giúp người thao tác có thời gian cho công việc khác Ngoài cho phép linh hoạt thao tác sản phẩm thời gian cần thiết cho thay đổi máy móc để sản xuất linh kiện khác Trong môi trường sản xuất máy tiện CNC kết hợp thành tổ hợp gọi cell, để làm nhiều thao tác phận Máy tiện CNC ngày điều khiển trực tiếp từ vẽ phần mềm CAM (computer - aided design) Có thể nói máy tiện CNC gần giống với hệ thống robot công nghiệp, tức chúng thiết kế để thực nhiều thao tác sản xuất (trong tầm giới hạn) Ngày nay, máy tiện CNC sử dụng phổ biến nhà máy xí nghiệp, với mong muốn có kiến thức tảng máy tiện CNC vận dụng kiến thức học môn điện tử gồm ba phần: khí, điện tử, tin học Cơ khí: Vận dụng phần mềm autocad thiết kế mô hình máy tiện CNC Điện- điện tử: Sử dụng phần mềm eagle thiết kế, thi công mạch điều khiển Tin học: Dùng ngônngữ lập trình C++ viết chương trình điều khiển, chạy môi trường Dos Borland C Với mong muốn đó, chúng em đến thực đề tài “ Thiết kế mạch điều khiển viết chương trình điều khiển hai trục máy tiện CNC” làm đề tài tốt nghiệp Cơ Điện Tử cho chúng em II Tầm quang trọng đề tài Đề tài nhằm vào nhiệm vụ điều khiển hai trục bàn máy tiện CNC cách điều khiển trực tiếp từ máy tính thông qua cổng giao tiếp song song (LPT) máy tính, cách sử dụng hai lệnh xuất nhập liệu từ thư viện Port.ddl Đề tài ứng dụng tổng hợp kiến thức học, ứng dụng phương thức điều khiển trục bàn máy tiện CNC thực tế sản xuất III Giới hạn đề tài Do thời gian có hạn, kiến thức ngônngữ lập trình C, phương pháp điều khiển động bước hạn chế nên đề tài có giới hạn sau: + Điều khiển động bước hai trục máy tiện phương pháp Half step chưa điều khiển phương pháp Micro step + Chương trình thực số lệnh G00, G01, G02, G03 + Chương trình đồ họa chưa thể cắt lớp phôi thực tế IV Mục đích nghiên cứu + Tìm hiểu phần mềm Borland C chạy môi trường Dos + Củng cố kiến thức kỹ học trường + Xây dựng kiến thức tảng máy tiện CNC để phục vụ cho nhu cầu công việc sau + Nâng cao khả học tập nghiên cứu tài liệu PHẦN I CƠ SỞ LÝ THUYẾT CHƯƠNG TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ ĐÔI NÉT VỀ NGÔNNGỮ LẬP TRÌNH C 1.1 Khái niệm lập trình hướng đối tượng Lập trình hướng đối tượng (gọi tắt OOP, từ chữ Anh ngữ object-oriented programming), hay gọi lập trình định hướng đối tượng, kĩ thuật lập trình hỗ trợ công nghệ đối tượng OOP xem giúp tăng suất, đơn giản hóa độ phức tạp bảo trì mở rộng phần mềm cách cho phép lập trình viên tập trung vào đối tượng phần mềm bậc cao Ngoài ra, nhiều người cho OOP dễ tiếp thu cho người học lập trình phương pháp trước Một cách giản lược, khái niệm nỗ lực nhằm giảm nhẹ thao tác viết mã cho người lập trình, cho phép họ tạo ứng dụng mà yếu tố bên tương tác với chương trình giống tương tác với đối tượng vật lý Những đối tượng ngônngữ OOP kết hợp mã liệu mà chúng nhìn nhận đơn vị Mỗi đối tượng có tên riêng biệt tất tham chiếu đến đối tượng tiến hành qua tên Như vậy, đối tượng có khả nhận vào thông báo, xử lý liệu (bên nó), gửi hay trả lời đến đối tượng khác hay đến môi trường 1.2 Các tính chất lập trình hướng đối tượng Đối tượng (object): Các liệu thị kết hợp vào đơn vị đầy đủ tạo nên đối tượng Đơn vị tương đương với chương trình đối tượng chia thành hai phận chính: phần phương thức (method) phần thuộc tính (property) Trong thực tế, phương thức đối tượng hàm thuộc tính biến, tham số hay nội đối tượng (hay nói cách khác tập hợp liệu nội tạo thành thuộc tính đối tượng) Các phương thức phương tiện để sử dụng đối tượng thuộc tính mô tả đối tượng có tính chất Các phương thức thuộc tính thường gắn chặt với thực tế đặc tính sử dụng đối tượng Trong thực tế, đối tượng thường trừu tượng hóa qua việc định nghĩa lớp (class) Tập hợp giá trị có thuộc tính tạo nên trạng thái đối tượng Mỗi phương thức hay liệu nội với tính chất định nghĩa (bởi người lập trình) xem đặc tính riêng đối tượng Nếu lầm lẫn tập hợp đặc tính gọi chung đặc tính đối tượng Lập trình hướng đối tượng phương pháp lập trình có tính chất sau: 1.2.1 Tính trừu tượng (abstraction) Đây khả chương trình bỏ qua hay không ý đến số khía cạnh thông tin mà trực tiếp làm việc lên, nghĩa có khả tập trung vào cốt lõi cần thiết Mỗi đối tượng phục vụ "động tử" hoàn tất công việc cách nội bộ, báo cáo, thay đổi trạng thái liên lạc với đối tượng khác mà không cần cho biết làm cách đối tượng tiến hành thao tác Tính chất thường gọi trừu tượng liệu Tính trừu tượng thể qua việc đối tượng ban đầu có số đặc điểm chung cho nhiều đối tượng khác mở rộng thân đối tượng ban đầu biện pháp thi hành Tính trừu tượng thường xác định khái niệm gọi lớp trừu tượng hay hay lớp sở trừu tượng 1.2.2 Tính đóng gói (encapsulation) che dấu thông tin (information hiding) Tính chất không cho phép người sử dụng đối tượng thay đổi trạng thái nội đối tượng Chỉ có phương thức nội đối tượng cho phép thay đổi trạng thái Việc cho phép môi trường bên tác động lên liệu nội đối tượng theo cách hoàn toàn tùy thuộc vào người viết mã Đây tính chất đảm bảo toàn vẹn đối tượng 1.2.3 Tính đa hình (polymorphism) Thể thông qua việc gửi thông điệp (message) Việc gửi thông điệp so sánh việc gọi hàm bên đối tượng Các phương thức dùng trả lời cho thông điệp tùy theo đối tượng mà thông điệp gửi tới có phản ứng khác Người lập trình định nghĩa đặc tính (chẳng hạn thông qua tên phương thức) cho loạt đối tượng gần thi hành dùng tên gọi mà thi hành đối tượng tự động xảy tương ứng theo đặc tính đối tượng mà không bị nhầm lẫn Thí dụ định nghĩa hai đối tượng "hinh_vuong" "hinh_tron" có phương thức chung "chu_vi" Khi gọi phương thức đối tượng "hinh_vuong" tính theo công thức khác với đối tượng "hinh_tron" 1.2.4 Tính kế thừa (inheritance) Đặc tính cho phép đối tượng có sẵn đặc tính mà đối tượng khác có thông qua kế thừa Điều cho phép đối tượng chia sẻ hay mở rộng đặc tính sẵn có mà tiến hành định nghĩa lại Tuy nhiên, ngônngữ định hướng đối tượng có tính chất 1.3 Đôi nét lập trình C 1.3.1 Nguồn gốc: NgônngữC phát minh cài đặt lần Dennis Ritchie chạy hệ điều hành Unix, Martin Richards phát triển thập niên 70 C sử dụng chuẩn ANSI đề nghị lần cuối vào năm 1989 1.3.2 Cngônngữ bậc trung: Được xem ngônngữ bậc trung C tổ hợp thành phần tốt ngônngữ bậc cao với điều khiển tính linh hoạt ngônngữ Assemly C cho phép thao tác bit, byte địa - phần tử với chức máy tính, mã chương trình C mang tính khả chuyến 1.3.3 Cngônngữ lập trình viên: NgônngữC lập trình viên thực tạo ra, thúc đẩy kiểm tra, để C lại mang cho họ họ muốn: hạn chế, lời phàn nàn, cấu trúc khối, hàm đơn lẻ, tập đóng kín từ khóa 1.3.4 Các phương pháp lập trình Phương Pháp Lập Trình Lệnh: - Chương trình dãy lệnh - Lập trình xác định lệnh thứ tự lệnh - Phương pháp có giá trị với chương trình lệnh (150) feedrate =150; dolineG01(); } if((!strcmp(eia,"G02"))||(!strcmp(eia,"G02"))) { dd=((!strcmp(eia,"G02")==1)||(!strcmp(eia,"g02")==1))?0:1; scanf("%s%s%s%s%s",temp1,temp2,temp3,temp4,temp5); 82 // // // // // // // // fflush(stdin); a1= a4; b1= b4; a3= atof(temp1)*400; b3= atof(temp2)*400; I = atof(temp3)*400; J = atof(temp4)*400; rad =(sqrt( ((a1-I)/400)*((a1-I)/400)+((b1-J)/400)*((b1-J)/400) ))*400; rad1=(sqrt( ((a3-I)/400)*((a3-I)/400)+((b3-J)/400)*((b3-J)/400) ))*400; if(rad!=rad1){ gotoxy(20, 70); printf("Ban da nhap sai toa duong tron,nhap lai"); goto nhap; } a4=a3; b4=b3; feedrate=atoi(temp5); if(feedrate>150) feedrate =150; docircle(); } if(!strcmp(eia,"G03")) { dd=((!strcmp(eia,"G03")==1)||(!strcmp(eia,"g03")==1))?1:0; scanf("%s%s%s%s%s",temp1,temp2,temp3,temp4,temp5); fflush(stdin); a1= a4; b1= b4; a3= atof(temp1)*400; b3= atof(temp2)*400; I = atof(temp3)*400; J = atof(temp4)*400; rad =(sqrt( ((a1-I)/400)*((a1-I)/400)+((b1-J)/400)*((b1-J)/400)) )*400; rad1=(sqrt( ((a3-I)/400)*((a3-I)/400)+((b3-J)/400)*((b3-J)/400)) )*400; if(rad!=rad1){ gotoxy(20, 30); printf("Ban da nhap sai toa duong tron,nhap lai"); goto nhap; } a4= a3; b4= b3; feedrate=atoi(temp5); if(feedrate>150) feedrate =150; docircle(); } outportb(0x378,0xff); goto nhap; 83 thoat: // printf(" Nhan F8 de chon che Di Chuyen bang tay\n"); // printf(" Nhan F9 de chon che Nhap Lenh Noi Suy\n"); // printf(" Nhan F10 de thoat\n"); // ExitGraphic(); clrscr(); clrscr(); clrscr(); return ; } void main() { InitGraphic(); setbkcolor(3); outportb(0x378,0xff); //*** FOR MOTOR SLEEP ***// { clrscr(); //*** Ve Khung Hien Thi ***// drawtextbox(3,3,635,470,15,1,"",""); drawtextbox(10,400,70,440,15,1 ," ESC"," EXIT"); drawtextbox(80,400,140,440,15,1 ," F9"," MDI"); drawtextbox(150,400,210,440,15,1," F8"," JOG"); drawtextbox(220,400,280,440,15,1," "," EDIT "); drawtextbox(290,400,350,440,15,1," "," LOAD"); drawtextbox(360,400,420,440,15,1," "," RUN"); drawtextbox(430,400,480,440,15,1," ","HOME "); drawtextbox(490,400,550,440,15,1," ","OFFSET "); drawtextbox(560,400,620,440,15,1," ","RESET"); // //*** FOR TITLE FOR PROGRAM ***// drawtextbox(7,5,635,50,1,1,"",""); setcolor(8); setfillstyle(1, 2); bar(7,7,633,48); // gotoxy(25,2); settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 1); outtextxy(120,15 , " STEER: A NUMBERICAL CONTROL PROGRAM"); m=getch(); if(m==0) m=getch(); switch(m){ case'B': /* printf("ban da nhan F8\n"); */ manual(); break; case'C': /* printf("ban da nhan F9\n"); */ Auto() ; break; } 84 // // } while(m!=27); /* nhan ESC de thoat*/ printf("\ntoa cua diem Z0 cua may: %d,%d\n",a4,b4); outportb(0x378,xuat); outportb(0x378,0xff); //*** FOR MOTOR SLEEP ***// ExitGraphic(); return ; } void dolineG01(void) { gotoxy(5,23); setfillstyle(1, 2); bar(7,344,633,380); feedrate=feedrate; printf("G01 X%f Z%f F%d",a3/400,b3/400,feedrate); settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 1); gotoxy(33,16);printf("%d mm/min",feedrate); struct time jj; gettime(&jj); // printf("for EIA code '%s' with feedrate =%d Going from(%d,%d) to (%d,%d):\n",eia,feedrate,a1/400,b1/400,a3/400,b3/400); // printf("T_start: %d %d %d",jj.ti_hour,jj.ti_min,jj.ti_sec); int t_ham,t_AB,t0,incre,decre,kk; register t,i; unsigned char value1; i=0 ;t =0; incre=0;decre=3;t0=150/feedrate; t_AB = (t0)*( abs(a3-a1) + abs(b3-b1) ); t_ham= t_AB -10; // printf(" t_delay:= %d",t0); // printf(" t_run:= %d s\n",t_AB/1000); stepnum=a2=b2=fxy=0; x1=a1/400;y1=b1/400; setdirection(); // printf("\nstep\tfxy\ta2\tb2\ta0\tb0"); while ((( a2 != dx) || (b2 !=dy)) && (kk!=1)) { i++; if(0