Thư Viện EmguCV

Một phần của tài liệu ĐỒ án tốt NGHIỆP chuyên ngành điện công nghiệp đề tài ỨNG DỤNG PLC điều KHIỂN ROBOT DELTA PHÂN LOẠI sản PHẨM THEO màu (Trang 42)

EmguCV là một thư viện xử lý hình ảnh đa nền tảng. Nó có liên quan mật thiết đến OpenCV vì EmguCV là một trình bao bọc .NET cho OpenCV. Có thể nói EmguCV là OpenCV trong .NET. Trình bao bọc tuyệt vời giúp cho các hàm OpenCV có thể được gọi từ các ngôn ngữ lập trình C#.NET, VB, IronPython và VC+ + là một số ngôn ngữ được hỗ trợ.

Về phần OpenCV là một thư viện được phát triển bới Intel. Nó được sử dụng cho thị giác máy tính, được viết bằng C và C++ được tối ưu hóa, chứa hơn 500 hàm, bao gồm nhiều lĩnh vực khác nhau của thị giác máy tính.

26

Thư viện EmguCV trải dài trên nhiều lĩnh vực trong tầm nhìn, bao gồm kiểm tra sản phẩm của nhà máy, hình ảnh y tế, giao diện người dùng, hiệu chuẩn máy ảnh và robot.

Hình 2.36 So sánh tốc độ của các thư viện xử lý ảnh 2.4.2. Phần mềm TIA Portal V15

Phần mềm TIA Portal V15 là phần mềm tích hợp phần mềm Step7Basic và phần mềm WinCC.

2.4.2.1. Motion control trong STEP7

Bộ phát xung PTO:

Ton = Toff =T/2 và có thể điều chỉnh đến µs. PTO trong PLC S7-1200:

Số lượng ngõ ra có thể sử dụng phụ thuộc vào số PTO (đầu ra của đầu ra xung) và số lượng đầu ra của bộ tạo xung có sẵn.

Bảng 2.2 Các ngõ phát xung của PLC 1212C DC/DC/DC

CPU 1212 (DC/DC/DC)

Tần số giới hạn thấp nhất của bộ tạo xung luôn là 1Hz.

Các bước enable bộ phát xung:

27

Hình 2.37 Cho phép phát xung

Hình 2.38 Lựa chọn chế độ phát xung PTO

Hình 2.39 Xung điều khiển di chuyển và hướng

Với 1 chân xung và 1 chân hướng. VD chân Q0.0 là chân xung, Q0.1 là chân hướng.

28

Hình 2.40 Gán biến xuất xung

2.4.2.2. Technology Object, các bước tạo và thiết lập Tổng quan về Technology Object:

29

Hình 2.41 Cấu trúc điều khiển sử dụng technology object

① Hình 2.42 Điều khiển cơ cấu sử dụng Technology Object ② Đọc và ghi dữ liệu cấu hình của Technology Object.

Điều khiển ổ đĩa thông qua Technology Object. Đọc trạng thái trục để hiển ③thị trên bảng điều khiển.

Đọc thông tin về trạng thái hiện tại và thông tin lỗi của Technology Object.

30

Hình 2.43 Add new Technology object

Cấu hình hardware:

Hình 2.44 Thiết lập bộ phát xung cho Technology object

Cấu hình Dynamics:

Hình 2.45 Thiết lập động lực bằng phần mềm 31

Rampup time=Tốc độ tối đa Tốc độ khởi động/ dừng

Lực tăngtốc

Rampdown time=Tốc độ tối đa− Tốc độkhởi động/ dừng

Lực giảm tốc

Trong đó Ramp-up (down) time là thời gian thực hiện tăng tốc hoặc giảm tốc ta có thể tùy chỉnh.

Jerk limit: Có tác dụng giới hạn làm giảm độ giật.

Hình 2.46 Chức năng Jerk Limit vơi khả năng làm mịn

Homing:

Trong PLC S7-1200, trục Homing tích hợp thực hiện với lệnh điều khiển chuyển động, “MC_Home”. Gói lệnh homing gồm các chế độ sau:

- Actice homing: Khi phát hiện chuyển động homing, trục được về home đã cấu hình. Chuyển động di chuyển đang thực hiện bị loại bỏ.

- Pasive homing: Lệnh “MC_Home” không thực hiện bất kì chuyển động nào nữa. Chuyển động tiếp theo được thực hiện bới người dùng.

- Direction homing absolute: Vị trí được đặt không cần công tắc homing. Giá trị tham số đầu vào “Position” của khối “MC_Home” được đặt ngay lập tức làm điểm tham chiếu (gốc 0) của trục.

- Direct homing relative: Vị trí trục được đặt không cần công tắc homing. Chuyển động di chuyển hoạt động không bị hủy bỏ. Vị trí trục sau khi homing: Vị trí trục mới = vị trí trục hiện tại + giá trị của tham số "Position" của lệnh "MC_Home".

32

2.4.2.3. Các khối lập trình Motion control MC_Power:

Hình 2.47 Khối MC_Power

Chức năng: Lệnh "MC_Power" cho phép và tắt một trục chuyển động. Bảng 2.3 Các chân của khối MC_Power

Tham số Khai báo

Axis INPUT Enable INPUT StopMode INPUT MC_Reset: Hình 2.48 Khối MC_Reset 33 download by : skknchat@gmail.com

Chức năng: Lệnh "MC_Reset" có thể được sử dụng để xác nhận "Lỗi vận hành với dừng trục" và "Lỗi cấu hình". Các lỗi có thể được tìm thấy trong danh sách “ErrorIDs” và “ErrorInfos”.

Bảng 2.4 Các chân của khối MC_Reset

Tham số Khai báo

Axis INPUT Execute INPUT Done OUTPUT Error OUTPUT MC_Home: Hình 2.49 Khối MC_Home

Chức năng: Lệnh điều khiển chuyển động "MC_Home" được sử dụng để khớp tọa độ trục với vị trí thực, driver vật lý. Homing là cần thiết cho vị trí tuyệt đối của trục. Các loại homing sau đây có thể được thực thi:

- Active homing (Mode = 3): Thủ tục homing được thực hiện tự động.

- Passive homing (Mode = 2): Trong khi Passive homing, lệnh "MC_Home" Motion Control không thực hiện bất kỳ chuyển động homing nào. Chuyển động di chuyển cần thiết cho điều này phải được người dùng triển khai

34

thông qua các điều khiển chuyển động khác. Khi phát hiện chuyển mạch homing, trục được homed.

- Direct homing absolute (Mode = 0): Vị trí trục hiện tại được đặt thành giá trị của tham số "Vị trí".

- Direct homing relative (Mode = 1): Vị trí trục hiện tại được bù đắp bằng giá trị của tham số "Vị trí".

Bảng 2.5 Các chân của khối MC_Home.

Tham số Khai báo

Axis INPUT Execute INPUT Position INPUT MODE INPUT Done OUTPUT Error OUTPUT MC_Halt: 35 download by : skknchat@gmail.com

Hình 2.50 Khối MC_Halt

Chức năng: Lệnh "MC_Halt" dừng tất cả các chuyển động và mang trục tới một vị trí dừng với giảm tốc đã được cấu hình. Vị trí dừng lại không được xác định.

Bảng 2.6 Các chân của khối MC_Halt

Tham số Khai báo

Axis INPUT Execute INPUT Done OUTPUT Error OUTPUT MC_MoveAbsolute: Hình 2.51 Khối MC_MoveAbsolute

Chức năng: Lệnh "MC_MoveAbsolute" bắt đầu chuyển động định vị trục để di chuyển nó đến vị trí tuyệt đối được xác định trong “Position”. Bảng 2.7 Các chân của khối MC_MoveAbsolute

Tham số Khai báo

Axis INPUT

Execute INPUT Position INPUT Velocity INPUT Done OUTPUT Error OUTPUT MC_MoveRelative: Hình 2.52 Khối MC_MoveRelative.

Chức năng: Lệnh " MC_MoveRelative " bắt đầu một chuyển động định vị tương đối so vị trí bắt đầu.

Bảng 2.8 Các chân của khối MC_MoveRelative

Tham số Khai báo

Axis INPUT Execute INPUT Distance INPUT Velocity INPUT Done OUTPUT Error OUTPUT MC_MoveJog: download by : skknchat@gmail.com

Hình 2.53 Khối MC_MoveJog

Chức năng: Lệnh "MC_MoveJog" di chuyển trục liên tục ở vận tốc xác định ở ngõ vào “Velocity”. Ta thường sử dụng lệnh điều khiển chuyển động này cho mục đích thử nghiệm và vận hành thử.

Bảng 2.9 Các chân của khối MC_MoveJog Tham số Axis JogForward JogBackward Velocity 2.4.3. OPC và SQL a. OPC

OPC là 1 tiêu chuẩn giao tiếp cho phép giao tiếp giữa nhiều ứng dụng và cho phép tương tác giữa nhiều nhà sản xuất phần cứng và phần mềm khác nhau.

KEPServerEX là nền tảng kết nối các nguồn dữ liệu tự động hóa công nghiệp giữa các ứng dụng, giúp thiết kế nền tảng cho phép người dùng kết nối, quản lý, theo dõi và kiểm soát các thiết bị tự động hóa và ứng dụng phần mềm đa dạng thông qua một giao diện trực quan. KEPServerEX thúc đẩy OPC và IT-centric communication

38

protocols - các giao thức truyền thông trung tâm (như SNMP, ODBC, và các dịch vụ web) để cung cấp cho người dùng một nguồn cung cấp dữ liệu duy nhất cho công nghiệp.

Hình 2.54 Ứng dụng Kepserver

b. SQL Server

SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ sử dụng câu lệnh SQL (Transact-SQL) để trao đổi dữ liệu giữa máy Client và máy cài SQL Server được phát triển và tiếp thị bởi Microsoft.

SQL cung cấp các tập lệnh phong phú cho các công việc hỏi đáp dữ liệu như: - Chèn, xóa và cập nhật các hàng trong 1 quan hệ

- Tạp, thêm, xóa và sửa đổi các đối tượng trong của cơ sở dữ liệu.

- Điều khiển việc truy cấp tới cơ sở dữ liệu và các đối tượng của cơ sở dữ liệu để đảm bảo tính bảo mật, tính nhất quán và sự ràng buộc của cơ sở dữ liệu.

39

CHƯƠNG 3: THUẬT TOÁN ĐIỀU KHIỂN 3.1. Thuật toán điều khiển cho PLC

PLC S7-1200 được thiết kế để thực hiện tuần tự các các chuỗi công việc dựa theo chương trình được nạp vào. Ứng với mỗi trạng thái của Robot, ta lập trình riêng mỗi khối FB/FC để dễ dàng diều khiển.

Hình 3.55 Sơ đồ hoạt động của các chương trình con của PLC

Chương trình điều khiển sẽ được phân ra thành từng khối FC và FB đảm nhiệm một nhiệm vụ cụ thể và được quản lý chung bởi các khổi OB. Phương pháp lập tình này giúp làm tinh giản hóa các bài toán phức tạp, nhiều chức năng và người lập trình cũng dễ dàng năng cấp, hiệu chỉnh trong tương lai.

3.1.1. Chương trình điều khiển robot delta

40

Hình 3.56 Lưu đồ điều khiển PLC với 3 nút nhấn START, STOP, RESET được tạo bởi WinForm.

- Khối Power

Hình 3.57 Khối Power

Khối Power để khởi động và tắt 3 trục động cơ chuyển động, khối này được điều khiển nút nhấn START của ứng dụng điều khiển.

- Khối Homing:

Hình 3.58 Khối Homing

Khối Homing để điều khiển động cơ thu các trục về công tắc hành trình để tiến hành đặt vị trí Home.

- Khối Pick_place:

Hình 3.59 Khối điều khiển vị trí động cơ bước

Khối Pick_and_place để điều khiển vị trí 3 trục chuyển động theo giá trị các góc theta1, theta2, theta3 nhận được từ Kepserver.

41

- Khối Manual:

Hình 3.60 Khối điều khiển bằng tay

Khối Manual dùng để di chuyển lên xuống các trục khi nhận được lệnh điều khiển từ PC. Ta thường sử dụng lệnh điều khiển chuyển động này cho mục đích thử nghiệm, tinh chỉnh khi có lỗi xảy ra.

3.1.2. Chương trình tính toán tốc độ động cơ băng tải

Sau khi nhận được tín hiệu xung tốc độ cao từ Encoder, ta sử dụng khối lệnh HSC để chuyển đổi xung thành số vòng quay được của động cơ băng tải trong 1 phút. Tốc độ băng tải sẽ được gửi qua C# để tính toán tọa độ gắp vật 1 cách chính xác nhất.

Hình 3.61 Lưu đồ tính toán tốc độ động cơ băng tải

42

Hình 3.62 Khối điều khiển HSC

3.2. Chương trình điều khiển cho ứng dụng Winform3.2.1. Giao diện điều khiển 3.2.1. Giao diện điều khiển

Lưu đồ giao diện điều khiển:

Hình 3.63 Lưu đồ điều khiển chương trình điều khiển Robot

Giao diện điều khiển sẽ bao gồm 4 phần: kết nối với PLC, chế độ điều khiển bằng tay, chế độ điều khiển tự động và tùy chình thông số.

Trang kết nối sẽ giúp liên kết Application C# với PLC thông qua OPC Kepserver.

43

Chế độ điều khiển bằng tay sẽ cho phép tùy chính các góc theta của từng động cơ một, chọn điểm đến thủ công, các ô để xem tọa độ hiện tại của robot, tọa độ các góc của động cơ.

Chế độ tự động sẽ cho phép tắt mở camera, cho phép robot bắt vị trí và gắp vật theo màu tự động.

3.2.2. Chương trình nhận diện màu và xác định tọa độ

Lưu đồ xử lý ảnh:

Hình 3.64 Lưu đồ xử lý ảnh

- Ảnh gốc được thu vào từ camera sẽ có kích thước 480x640 sẽ được chuyển đổi từ hệ ảnh màu RGB sang hệ màu HSV.

- Sau đó ảnh màu HSV sẽ được nhị phân hóa theo các khoảng sau: RED (0,100,135) – (29,255,255)

GREEN (104,171,64)-(150,255,255) BLUE (40,122,48)-(92,255,255)

44

- Tiếp đó ảnh nhị phân sẽ trải qua 2 lần co sau đó 2 lần dãn với phần từ cấu trúc là ma trận 8x8 giúp việc tìm đường biên dễ dàng hơn.

- Cuối cùng ảnh sau khi làm mượt sẽ được tìm biên và tìm tọa độ tâm.

Hình 3.65 Ảnh vật qua chuyển đổi HSV

Hình 3.66 Ảnh sau khi nhị phân hóa theo ngưỡng dùng hàm InRange

45

Hình 3.67 Ảnh qua 1 lần co dãn ảnh

Hình 3.68 Ảnh qua 2 lần co dãn ảnh

46

3.2.3. Điều khiển robot tự động gắp vật:

Hình 3.69 Lưu đồ xử lý ảnh

Khi băng tải chuyển động, tọa độ X của vật giữ nguyên, tọa độ Y thay đổi nên để gắp trúng vật ta bù tọa độ (X, Y) của vật ta thu được khi gửi xuống PLC sẽ là (X, Y+a) (a được chỉnh dựa vào tốc độ chuyển động của băng tải và tốc độ của robot).

3.2.4. Sắp xếp vật theo thứ tự trên băng tải

Mục tiêu bài toán đặt ra là xác định được tọa độ (X, Y), màu sắc, kích thước, hình dáng phù hợp của vật cần gắp trên băng tải theo thứ tự xuất hiện trước. Mục tiêu luận văn sẽ nhận dạng 3 màu cơ bản đặc trưng là Đỏ (Red), Lục (Green), Lam (Blue).

Từ vị trí Camera và băng tải, tọa độ vật đến trước cũng là vật gần đầu hút nhất sẽ có tung độ y lớn hơn vật đến sau. Ta sẽ so sánh và lưu vị trí vật đến trước vào vị trí gần nhất (x(0), y(0)).

Lần lượt với 3 màu Red, Green, Blue với thông số HSV được xác định sẵn ta sẽ có 3 cặp tọa độ gần nhất đặt tên lần lượt là ( X R ,Y R ¿, (XG ,Y G ¿, (X B ,Y B ¿. Ta sẽ so sánh 3 tung độY R,Y G , Y B để xác định tọa độ vật cần gắp (X, Y).

47

Hình 3.70 Thuật toán nhận diện vật theo thứ tự trên băng tải

3.2.5. Phương pháp chuyển đổi tọa độ khung hình sang tọa độ của hệ Robot

Gọi hệ trục tọa độ khung ảnh là O1x1y1, hệ trục tọa độ gắn vào đáy Robot là O2x2y2.

Hình 3.71 Minh họa trục tọa độ gốc robot và trục tọa độ vật 48

Ví dụ: Ta có khung ảnh thu được từ camera có thước 640x480 (pixel). Xét độ dài tia O1x1 = 640 (pixel), tia O1y1 = 480 (pixel). Ta thực hiện đo ngoài mô hình thực tế và xác định được tia O1x1 = a (cm). Giả sử: a đo được 10 cm. Vậy tính toán ta được 1 cm = 32 pixel.

Ta sẽ thực hiện việc chuyển đổi từ hệ trục tọa độ O1x1y1 sang hệ trục tọa độ O2x2y2.

Ta xét tọa độ O2 ứng với hệ trục O1x1y1 sẽ có tọa độ (xO; yO) đơn vị pixel và giả sử tọa độ A bất kì ứng với hệ trục O1x1y1 là (xA, yA) đơn vị pixel. Như đã nói ở trên thì O2 là gốc của Robot, nên muốn Robot di chuyển đến điểm A thì ta phải tính được tọa độ vecto

phương khác

hướng, tia O2x2 và tia O1x1 cùng phương cùng hướng. Nên vector

sẽ có tọa độ là (Px, Py), tương ứng với Px = xO – xA (pixel); Py = -yO + yA

đây Px và Py cũng chính là tọa độ vị trí trong phương trình động học nghịch cánh tay máy. Px, Py khi chuyển sang tọa độ mặt phẳng thực tế sẽ có giá trị Px = (xO - xA)/32 (cm), Py = (-yO +yA)/32 (cm).

Vì đề tài chỉ thực hiện xử lý ảnh 2D nên chỉ cần xác định được tọa độ Px, Py. Còn Pz ta sẽ cho bằng một hằng số cố định. Như vậy khi có được 3 thông số Px, Py, Pz ta sẽ xác định được các giá trị góc xoay θ1, θ2 3 từ đó Robot sẽ di chuyển đến vị trí mà ta mong muốn.

3.3. Kết nối giữa PC-PLC-SQL

Hình 3.72 Sơ đồ kết nối giữa PC-PLC-SQL thông qua OPC KepServer

C# kết nối với PLC và lưu thông tin kết quả vào cơ sở dữ liệu SQLserver thông qua phần mềm OPC KEPServer như sau:

49

- Sau khi cài đặt chương trình Kepware V6, ta tiến hành cài đặt cấu hình để Kepware có thể kết nối tới PLC S7-1200 thông qua Ethernet TCP/IP.

- Tiếp theo ta tạo các Group và Tag với các địa chỉ tương ứng với địa chỉ ô nhớ trong PLC để có thể truy cập vào dữ liệu ta mong muốn trên PLC.

- Vì Kepware có sẵn các thư viện Driver (.dll) hầu như tất cả các PLC hiện nay, nên có thể dễ dàng tự động kết nối tới dữ liệu PLC mà người dùng không cần thao tác nhiều.

- Trong chương trình C# ta thêm vào thư viện OPCAutomation.dll, thư viện này được cung cấp miễn phí bởi OPC Foundation.

- Ta tiến hành khai báo các biến OPCItem trong C# để link tới các tag trong KEPServer mà ta đã tạo trước đó.

Một phần của tài liệu ĐỒ án tốt NGHIỆP chuyên ngành điện công nghiệp đề tài ỨNG DỤNG PLC điều KHIỂN ROBOT DELTA PHÂN LOẠI sản PHẨM THEO màu (Trang 42)