1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Điều khiển và giám sát hệ thống phân loại sản phẩm dùng delta robot

91 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

56 DANH MỤC CÁC TỪ VIẾT TẮT PLC Programmable Logic ControllerRGB Red, Green và Blue Trang 15 Cuộc sống con người hiện nay cùng với sự phát triển mạnh của khoa học và kỹ thuật, chúng ta

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA ĐIỀU KHIỂN VÀ GIÁM SÁT HỆ THỐNG PHÂN LOẠI SẢN PHẨM DÙNG DELTA ROBOT GVHD: TS TRẦN VI ĐÔ SVTH : NGUYỄN TẤN PHÁT VÕ HẠNH ĐÔNG SKL011315 Tp Hồ Chí Minh, tháng 7/2023 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP ĐIỀU KHIỂN VÀ GIÁM SÁT HỆ THỐNG PHÂN LOẠI SẢN PHẨM DÙNG DELTA ROBOT SVTH1: NGUYỄN TẤN PHÁT MSSV: 19151160 SVTH2: VÕ HẠNH ĐÔNG MSSV: 19151115 Khoá: 2019 - 2023 Ngành: CNKT Điều khiển Tự động hố GVHD: TS TRẦN VI ĐƠ TP HỒ CHÍ MINH – 07/2023 CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc ******* Tp Hồ Chí Minh, ngày tháng năm 2023 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Tấn Phát Võ Hạnh Đông MSSV: 19151160 MSSV: 19151115 Ngành: Cơng nghệ kỹ thuật điều khiển tự động hóa Lớp: 19151CL1B Giảng viên hướng dẫn: TS Trần Vi Đô Ngày nhận đề tài: Ngày nộp đề tài: Tên đề tài: Điều khiển giám sát hệ thống phân loại sản phẩm dùng Delta Robot Các số liệu ban đầu: - PLC S7-1200, Module mở rộng SM 1222, camera 1080p, động băng tải, động bước, bơm hút chân khơng, cơng tắc hành trình Nội dung thực hiện: - Tìm hiểu động học Robot Delta - Tìm hiểu cơng nghệ xử lý ảnh giúp phát sản phẩm - Tìm hiểu, nghiên cứu lập trình xử lý ảnh C# liên kết liệu với Tia Portal - Thiết kế, thi công lập trình phần mềm điều khiển Robot Delta phân loại sản phẩm - Chạy thử nghiệm hiệu chỉnh mơ hình - Đánh giá kết thực viết luận văn Sản phẩm: - Thiết kế mơ hình thực tế điều khiển giám sát hệ thống phân loại sản phẩm dùng Delta Robot bao gồm: Tủ điện, robot, băng tải, buồng tối, đèn trợ sáng, tủ máy bơm, camera - Thiết kế phần mềm điều khiển giám sát máy tính TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên: Nguyễn Tấn Phát Võ Hạnh Đông MSSV: 19151160 MSSV: 19151115 Ngành: Công nghệ Kỹ thuật Điều khiển Tự động hóa Tên đề tài: Điều khiển giám sát hệ thống phân loại sản phẩm dùng Delta Robot Họ tên Giáo viên hướng dẫn: TS Trần Vi Đô NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: ………………………………………………………………………………………………… ………………………………………………………………………………… Ưu điểm: ………………………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………… Khuyết điểm: ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………… Đề nghị cho bảo vệ hay không? ………………………………………………………………………………………… Đánh giá loại: … .………………………….…………………………… Điểm: ……… (Bằng chữ: ) Tp Hồ Chí Minh, ngày … tháng năm 2023 Giảng viên hướng dẫn ii CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Nguyễn Tấn Phát Võ Hạnh Đông MSSV: 19151160 MSSV: 19151115 Ngành: Công nghệ Kỹ thuật Điều khiển Tự động hóa Tên đề tài: Điều khiển giám sát hệ thống phân loại sản phẩm dùng Delta Robot Họ tên Giáo viên phản biện: …………………………………………………… NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: ………………………………………………………………………………………………… ………………………………………………………………………………… Ưu điểm: ………………………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………………………… ……………………………………… ……………………………………… Khuyết điểm: ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………… Đề nghị cho bảo vệ hay không? ……………………………………………………………………………………… Đánh giá loại: ………………………………………………………………… Điểm: ……… (Bằng chữ: ) Tp Hồ Chí Minh, ngày … tháng năm 2023 Giảng viên phản biện iii CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc LỜI CAM ĐOAN Nhóm chúng em xin cam kết đề tài nhóm tự nghiên cứu thực dựa vào tham khảo số tài liệu trước khơng chép từ tài liệu hay mơ hình có trước Sinh Viên thực đề tài Nguyễn Tấn Phát Võ Hạnh Đông iv LỜI CẢM ƠN Lời nhóm chúng em chân thành cảm ơn Quý thầy cô Trường Đại Học Sư Phạm Kỹ Thuật Tp HCM nói chung, thầy khoa Đào tạo Chất lượng cao nói riêng xuyên suốt năm học vừa qua truyền đạt trang bị cho nhóm chúng em kiến thức khơng chun mơn, chun ngành mà cịn kinh nghiệm kỹ cần thiết để nhóm chúng em hoàn thành đề tài đồ án tốt nghiệp Đặc biệt nhóm chúng em xin gửi lời cảm ơn chân thành đến thầy TS Trần Vi Đô, người dành thời gian để tận tình giúp đỡ, hướng dẫn theo sát nhóm chúng em suốt q trình thực đề tài thời gian qua Chúng em xin gửi lời cảm ơn đến thầy cô phản biện thầy cô hội đồng bảo vệ luận văn dành thời gian để nhận xét giúp đỡ chúng em trình bảo vệ luận văn Một lần xin gửi lời cảm ơn đến toàn thể bạn khóa 19151CLC giúp đỡ cho góp ý q trình làm đồ án tốt nghiệp Cuối lời, nhóm chúng em xin gửi đến thầy cô, bạn sinh viên, cán nhân viên Trường Đại Học Sư Phạm Kỹ Thuật Tp HCM lời chúc sức khỏe, kính chúc tồn thể Nhà trường đạt nhiều ngày phát triển gặt hái nhiều thành tựu to lớn Một lần nhóm chúng em xin chân thành cảm ơn! Người thực đề tài Nguyễn Tấn Phát Võ Hạnh Đông v MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CAM ĐOAN iv LỜI CẢM ƠN v DANH MỤC CÁC HÌNH ix DANH MỤC CÁC BẢNG xii DANH MỤC CÁC TỪ VIẾT TẮT xii CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn đề 1.2 Mục tiêu đề tài 1.3 Đối tượng nghiên cứu 1.4 Phạm vi nghiên cứu đề tài 1.5 Giới thiệu nội dung CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Yêu cầu hệ thống 2.1.1 Phân loại sản phẩm theo hình dạng màu sắc 2.1.2 Tìm toạ độ vật tiến hành phân loại 2.2 Phương trình động lực học Robot Delta 2.2.1 Cấu tạo tổng quan Robot Delta 2.2.2 Động học thuận Robot Delta 2.2.3 Động học nghịch Robot Delta 10 2.3 Tổng quan lý thuyết công nghệ xử lý ảnh 13 2.3.1 Các khái niệm xử lý ảnh 13 2.3.2 Các vấn đề xử lý ảnh 16 2.3.3 Những vấn đề lý thuyết sử dụng đề tài 18 CHƯƠNG THIẾT KẾ PHẦN CỨNG 25 vi 3.1 Yêu cầu hệ thống 25 3.1.1 Nhận diện sản phẩm 25 3.1.2 Tìm toạ độ xác vật tiến hành gắp sản phẩm 25 3.2 Yêu cầu thiết kế 26 3.2.1 Xác định mục tiêu thiết kế 26 3.2.2 Lập phương án thiết kế 26 3.3 Lựa chọn thiết bị 27 3.3.1 Lựa chọn thiết bị tiến hành thi cơng mơ hình 27 3.3.2 Lựa chọn điều khiển 33 3.3.3.Các thiết bị linh kiện khác 35 3.4 Sơ đồ kết nối phần cứng 37 CHƯƠNG THUẬT TOÁN ĐIỀU KHIỂN 40 4.1 Thuật toán điều khiển hệ thống 40 4.2 Thuật toán điều khiển PLC 40 4.3 Thuật toán xử lý ảnh 42 4.3.1 Thuật toán nhận diện màu xác định tọa độ 42 4.3.2 Thuật toán chuyển đổi tọa độ khung hình sang tọa độ hệ Robot 44 CHƯƠNG 5: KẾT QUẢ 46 5.1 Phần cứng 46 5.2 Phần mềm 46 5.2.1 Phần mềm điều khiển giám sát Robot Delta 46 5.2.2 Robot hoạt động chế độ auto 55 5.2.3 Robot hoạt động chế độ manual 56 5.3 Nhận xét kết đạt 57 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 58 6.1 Kết luận 58 vii 6.2 Hướng phát triển 58 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC 60 viii Phụ lục Hsv Limitduoi = new Hsv(0, 44, 104); Hsv Limittren = new Hsv(33, 255, 255); //GREEN Hsv Limitduoi1 = new Hsv(24,52, 48); Hsv Limittren1 = new Hsv(95, 255, 255); Image temp = HSV.InRange(Limitduoi, Limittren); Image temp1 = HSV.InRange(Limitduoi1, Limittren1); //co dãn var element = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Cross, new Size(8, 8), new Point(-1, -1)); temp = temp.Erode(2); temp1 = temp1.Erode(2); CvInvoke.Dilate(temp, temp, element, new Point(-1, -1), 2, Emgu.CV.CvEnum.BorderType.Constant, new MCvScalar(0, 0, 0)); CvInvoke.Dilate(temp1, temp1, element, new Point(-1, -1), 2, Emgu.CV.CvEnum.BorderType.Constant, new MCvScalar(0, 0, 0)); #region for RED VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint(); Mat n = new Mat(); CvInvoke.FindContours(temp, contours, n, Emgu.CV.CvEnum.RetrType.Ccomp, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple); for (int i = 0; i < contours.Size; i++) { double pemir = CvInvoke.ArcLength(contours[i], true); VectorOfPoint approx = new VectorOfPoint(); CvInvoke.ApproxPolyDP(contours[i], approx, 0.03 * pemir, true); //lay tam var moments = CvInvoke.Moments(contours[i]); double area = moments.M00; if (area > MIN && area < MAX && ((approx.Size == hinh) | (approx.Size >= && hinh == 20))) { int x = (int)(moments.M10 / moments.M00); int y = (int)(moments.M01 / moments.M00); if (x != && x > 200) { if (y < 200) { y2[i] = y; x2[i] = x; } 62 Phụ lục x1 = x.ToString("D2"); y1 = y.ToString("D2"); td = x1 + "," + y1; } CvInvoke.DrawContours(img, contours, i, new MCvScalar(0, 0, 255), 3); CvInvoke.Circle(img, new Point(x, y), 2, new MCvScalar(0, 0, 255), 2); CvInvoke.PutText(img, td, new Point(x, y), Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2); CvInvoke.PutText(img, "RED OBJECT", new Point(x + 15, y - 15), Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2); } } //sap xep lai theo chieu den noi truoc for (int l = 0; l < 10; l++) { for (int k = l + 1; k < 10; k++) { if (y2[l] < y2[k]) { int tam; tam = x2[l]; x2[l] = x2[k]; x2[k] = tam; int tam2; tam2 = y2[l]; y2[l] = y2[k]; y2[k] = tam2; } } } #endregion #region for GREEN VectorOfVectorOfPoint contours3 = new VectorOfVectorOfPoint(); Mat n3 = new Mat(); CvInvoke.FindContours(temp1, contours3, n3, Emgu.CV.CvEnum.RetrType.Ccomp, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple); for (int i = 0; i < contours3.Size; i++) { double pemir = CvInvoke.ArcLength(contours3[i], true); VectorOfPoint approx = new VectorOfPoint(); CvInvoke.ApproxPolyDP(contours3[i], approx, 0.03 * pemir, true); //lay tam 63 Phụ lục var moments3 = CvInvoke.Moments(contours3[i]); double area = moments3.M00; if (area > MIN && area < MAX && ((approx.Size == hinh) | (approx.Size >= && hinh == 20))) { int x = (int)(moments3.M10 / moments3.M00); int y = (int)(moments3.M01 / moments3.M00); if (x != && x > 200) { if (y < 200) { y4[i] = y; x4[i] = x; } x1 = x.ToString("D2"); y1 = y.ToString("D2"); td = x1 + "," + y1; } CvInvoke.DrawContours(img, contours3, i, new MCvScalar(0, 255, 0), 3); CvInvoke.Circle(img, new Point(x, y), 2, new MCvScalar(0, 255, 0), 2); CvInvoke.PutText(img, td, new Point(x, y), Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 255, 0), 2); CvInvoke.PutText(img, "GREEN OBJECT", new Point(x + 15, y - 15), Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 255, 0), 2); } } //sap xep lai theo chieu den noi truoc for (int l = 0; l < 10; l++) { for (int k = l + 1; k < 10; k++) { if (y4[l] < y4[k]) { int tam; tam = x4[l]; x4[l] = x4[k]; x4[k] = tam; int tam2; tam2 = y4[l]; y4[l] = y4[k]; y4[k] = tam2; } } } CvInvoke.Line(img, new Point(0, 270), new Point(640, 270), new Bgr(Color.Black).MCvScalar, 2); #endregion 64 Phụ lục //hien thi pictureBox2.Image = temp.Bitmap; pictureBox3.Image = temp1.Bitmap; pictureBox1.Image = img.Bitmap; if (y2[0] == && y4[0] == && y6[0] == 0) { label_color.Text = "Nearest Object: "; label_modecolor.Text = "MODE COLOUR: "; } else { label_color.Text = "Nearest Object: " + Colour1; label_modecolor.Text = "Mode Colour: " + Colour.ToString(); } } private void SAPXEP() { if (y2[0] > y4[0]) { X = x2[0]; Y = y2[0]; Colour = 1; Colour1 = "RED"; } else { X = x4[0]; Y = y4[0]; Colour = 2; Colour1 = "GREEN"; } if (Y != && X > 210 && Y < 200) { x3 = Math.Round(X * X2_X1 + + Xlech, 2).ToString(); y3 = Math.Round(-Y * Y2_Y1 - - Ylech - lechdc, 2).ToString(); 65 Phụ lục txbXPresent.Text = X.ToString(); txbYPresent.Text = Y.ToString(); //set Box if (dang_gap == false) { if (Colour == 1) { T1 = TR1; T2 = TR2; T3 = TR3; } if (Colour == 2) { T1 = TB1; T2 = TB2; T3 = TB3; } if (Colour == 3) { T1 = TG1; T2 = TG2; T3 = TG3; } } } if (am == true && dang_gap == false) { txtX.Text = x3; txtY.Text = y3; txbXX.Text = x3; TXBYY.Text = y3; //XYZtoTheta(); } } #endregion 66 Phụ lục  Chương trình điều khiển Delta Robot tự động gắp vật: Int16 zz = 8; Int16 xx = 8; private void timer10_Tick(object sender, EventArgs e) { if (counter == 0) { dang_gap = true; toichovat(); zz = 8; } if (counter == 10) { gapvat(); } if (counter == 10 +8) { nhacvatlen(); if (T1 == TG1) { zz = 8; } if (T1 == TR1) { zz = 9; } } if (counter == 10 +3 + 12) { toichothavat(); } if (counter == 10 +3 + + zz) { thavat(); } if (counter == 10 +3 + + zz + xx + 6) { OpenValve(); } // thả vật xong if (counter == 10 +3 + + zz + xx + + 1) { vevitricu(); CloseValve(); } if (counter == 10 +3 + + zz + xx + + + 4) { dang_gap = false; a = true; timer10.Stop(); counter = 0; } counter++; } private void toichovat() { txtZ.Text = Zchogap; XYZtoTheta(); try { WriteItems.SetValue(txbTheta1.Text, 1); WriteItems.SetValue(txbTheta2.Text, 2); WriteItems.SetValue(txbTheta3.Text, 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Enable_move(); Disable_move(); } private void gapvat() { txtZ.Text = Zgapvat; XYZtoTheta(); 67 Phụ lục try { WriteItems.SetValue(txbTheta1.Text, 1); WriteItems.SetValue(txbTheta2.Text, 2); WriteItems.SetValue(txbTheta3.Text, 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Enable_move(); Disable_move(); } private void nhacvatlen() { double zn = Convert.ToDouble(Znangvat); txtZ.Text = Convert.ToString(zn); XYZtoTheta(); while (Convert.ToDouble(txbTheta1.Text) < ho1 | Convert.ToDouble(txbTheta2.Text) < ho2 | Convert.ToDouble(txbTheta3.Text) < ho3) { zn ; txtZ.Text = Convert.ToString(zn); XYZtoTheta(); } //Znangvat = "-212"; textBox17.Text = txtZ.Text; try { WriteItems.SetValue(txbTheta1.Text, 1); WriteItems.SetValue(txbTheta2.Text, 2); WriteItems.SetValue(txbTheta3.Text, 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Enable_move(); Disable_move(); } private void toichothavat() { try { WriteItems.SetValue(T1, 1); WriteItems.SetValue(T2, 2); // tới ô thả vật 68 Phụ lục WriteItems.SetValue(T3, 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Enable_move(); Disable_move(); } private void thavat() { //thả vật if (T1 == TR1) { R = R + 1; textBoxred.Text = R.ToString(); } if (T1 == TB1) { B = B + 1; textBoxblue.Text = B.ToString(); } if (T1 == TG1) { G = G + 1; textBoxgreen.Text = G.ToString(); } try { WriteItems.SetValue(R, 19); WriteItems.SetValue(B, 20); WriteItems.SetValue(G, 21); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void thavatxong() { CloseValve(); } private void move_position_1() { txtX.Text = textBox3.Text; 69 Phụ lục txtY.Text = textBox6.Text; txtZ.Text = textBox8.Text; try { WriteItems.SetValue(textBox3.Text, 1); WriteItems.SetValue(textBox6.Text, 2); WriteItems.SetValue(textBox8.Text, 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Enable_move(); Disable_move(); } private void move_position_2() { txtX.Text = textBox9.Text; txtY.Text = textBox10.Text; txtZ.Text = textBox11.Text; try { WriteItems.SetValue(textBox9.Text, 1); WriteItems.SetValue(textBox10.Text, 2); WriteItems.SetValue(textBox11.Text, 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Enable_move(); Disable_move(); } private void vevitricu() { try { WriteItems.SetValue("0.74", 1); WriteItems.SetValue("0", 2); WriteItems.SetValue("-0.1", 3); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } 70 Phụ lục Enable_move(); Disable_move(); } private void OpenValve() { try { WriteItems.SetValue("1", 14); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void CloseValve() { try { WriteItems.SetValue("0", 14); ConnectedGroup.SyncWrite(ItemCount, ref ItemServerHandles, ref WriteItems, out ItemServerErrors); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } 71 Phụ lục Chương trình PLC TIA Portal: 72 Phụ lục 73 Phụ lục 74 Phụ lục 75

Ngày đăng: 28/12/2023, 18:48

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w