.2 Bảng phân công đầu ra

Một phần của tài liệu (Đồ án tốt nghiệp) ỨNG DỤNG PLC s7 1200 điều KHIỂN hệ THỐNG PHÂN LOẠI sản PHẨM THEO mã VẠCH, điều KHIỂN và GIÁM sát QUA WINCC 2 (Trang 59 - 77)

4.4 Giãn đồ thời gian.

Hình 4. 5 Giãn đồ thời gian.

4.5 Sơ đồ kết nối.

Hình 4. 6 Sơ đồ kết nối

4.6 Chương trình điều khiển

Các tập lệnh sử dụng

Tiếp điểm thường hở:

47 Toán hạng n: I, Q, M, L, D.

Tiếp điểm thường đóng:

Tiếp điểm thường đóng sẽ đóng khi giá trị của bit có địa chỉ là n bằng 0. Tốn hạng n: I, Q, M, L, D.

Timer – TOR:

Tín hiệu đầu vào IN là tín hiệu cho phép Timer hoạt động, khi tín hiệu IN mất Timer sẽ được Reset lại từ đầu.

Tín hiệu đầu ra Q = 1 sau khi đầu vào IN được duy trì trong khoảng thời gian PT. Sau khoảng thời gian PT thì đầu ra Q phục thuộc vào đầu vào IN.

Lệnh so sánh:

S7 1200 cung cấp tất cả các lệnh so sanh dành cho các kiểu dữ liệu: INT, DINT, DWORD, REAL …

Kiểu so sánh Ý nghĩa:

== Nếu IN1 = IN2 thì kết quả là 1 <> Nếu IN1 <> IN2 thì kết quả là 1 >= Nếu IN1 ≥ IN2 thì kết quả là 1 <= Nếu IN1 ≤IN2 thì kết quả là 1 > Nếu IN1 > IN2 thì kết quả là 1 < Nếu IN1 < IN2 thì kết quả là 1

Khi thực hiện lệnh so sánh thì IN1 và IN2 phải cùng kiểu dữ liệu.

Lệnh Move:

Move hoạt động khi EN lên 1 thì sẽ thực hiện sao chép giá trị từ IN sang OUT. Vùng nhớ mà lệnh MOVE có thể tác động ba gồm: SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Char, Array, Struct, DTL, Time.

Giá trị bố đếm CV được tăng lên 1 khi tin hiệu ngõ vào CU chuyên từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV>=PV. Nếu trạng thái R = Reset được tác động thì bộ CV = 0.

Lệnh CTUD: counter đếm lên xuống

Mô tả chi tiết lệnh đếm lên xuống trên plc siemens s7-1200 CU là ngõ vào đếm lên

CD là ngõ vào đếm xuống

R là chân reset khi chân này chuyển từ 0=>1 thì giá trị bộ đếm về 0. LD là chân reset về giá trị PV

QU on lên 1 khi giá trị đếm bằng giá trị PV QD on lên 1 khi giá trị đếm =0

49 Lệnh:

Chức năng: tương tự như timer on delay tuy nhiên khi ngõ IN chuyển xuống 0 thì giá trị timer vẫn giữ và khi IN lên 1 thì tiếp tục đếm từ giá trị này. Lệnh này có thêm ngõ vào R để reset timer.

Mơ tả ví dụ: khi M0.0 chuyển từ 0=>1 thì timer bắt đầu đếm cho đủ 10s sau đó ON Q0.0. Nếu trong q trình chưa đủ 10s mà M0.0 bị chuyển về 0 thì giá trị timer lưu lại và để lần sau đếm tiếp.

Lưu ý: khi sử dụng timer các bạn cần phải tham khảo giới hạn bộ nhớ trong từng cpu để không sử dụng quá giới hạn bộ nhớ timer.

4.7 Thiết kế giao diện WinCC (adsbygoogle = window.adsbygoogle || []).push({});

4.8 Thi công hệ thống.

4.8.1 Thiết kế tủ điện.

Hình 4. 8 Măt trọng của tủ điện

51

4.8.2 Thiết kế băng chuyền.

ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN CỦA ĐỀ TÀI.

Sau thời gian làm đồ án tốt nghiệp dưới sự hướng dẫn nhiệt tình của GV hướng dẫn ThS Võ Khách Thoại, đến nay em đã hồn thành đồ án của mình với tên đề tài “Ứng

dụng PLC S7-1200 điều khiển hệ thống phân loại sản phẩm theo mã vạch, điều khiển và giám sát qua WinCC”. Nội dung chính của đồ án bao gồm :

➢ Phần kiến thức:

- Tìm hiểu về bộ điều khiển lập trình PLC S7-1200 của hãng Siemens. - Tìm hiểu về quy trình cơng nghệ phân loại hàng hóa theo mã vạch. - Tìm hiểu về máy đọc mã vạch và các loại cảm biến liên quan. - Thiết kế mạch kết nối và điều khiển trên WINCC

➢ Phần thiết kế thi công:

- Xây dựng quy trình cơng nghệ phân loại sản phẩm theo mã vạch. - Xây dựng mơ hình cơ khí.

- Thiết kế, gia cơng chi tiết các hệ thống trên mơ hình. - Xây dựng sơ đồ khối, sơ đồ điện hệ thống.

- Viết chương trình điều khiển hệ thống phân loại theo mã vạch.

Trong nội dung đồ án , em đã thiết kế hệ thống điều khiển thành cơng mơ hình “Ứng dụng PLC S7-1200 điều khiển hệ thống phân loại sản phẩm theo mã vạch, điều

khiển và giám sát qua WinCC”. Tuy nhiên đồ án này vẫn do hạn chế kiến thức thực tế

và tay nghề của em chưa được nhiều nên mơ hình điều khiển vẫn chưa được tối ưu. Đó là hạn chế của đề tài, mong rằng đề tài này sẽ được các bạn sinh viên khóa sau sẽ tiếp tục nghiên cứu và khắc phục những mặt hạn chế của đề tài để tạo ra những sản phẩm tối ưu phục vụ cho đời sống sinh hoạt. Cuối cùng em xin trân thành cảm ơn GV hướng dẫn ThS Võ Khách Thoại đã hướng dẫn và giúp đỡ em trong suốt quá trình làm đồ án.

Những hạn chế và hướng phát triển.

❖ Những hạn chế.

✓ Khả năng xử lý của camera còn hạn chế ✓ Tốc độ xử lý của mơ hình của chậm.

✓ Mơ hình khơng thể hoạt đơng dưới mơi trường thiếu nhiều ánh sáng. ❖ Hướng phát triển.

✓ Cải thiện phần cơ khí.

✓ Có thể phân biệt thêm số lượng màu sắc hoặc trọng lượng của sản phẩm ✓ Hồn thiện mơ hình hoạt động trơn tru khơng gặp vấn đề

53

TÀI LIỆU THAM KHẢO

1. Tìm hiểu về mã số mã vạch chi tiết a-z (luatthiendi.com) 2. http://plcvietnam.com.vn/

PHỤ LỤC Code python :

import cv2 import snap7

import numpy as np

from pyzbar.pyzbar import decode from snap7.util import * (adsbygoogle = window.adsbygoogle || []).push({});

from snap7.types import *

def writePLC(plc, byte, bit, datatype, value): # define write memory function result = plc.read_area(Areas.MK, 0, byte, datatype)

if datatype == S7WLBit: set_bool(result, 0, bit, value)

elif datatype == S7WLByte or datatype == S7WLWord: set_int(result, 0, value)

elif datatype == S7WLReal: set_real(result, 0, value) elif datatype == S7WLDWord: set_dword(result, 0, value)

cap=cv2.VideoCapture(1)

IP = '192.168.0.1' # IP plc RACK = 0 # RACK PLC SLOT = 1 # SLOT PLC

plc = snap7.client.Client() # call snap7 client function plc.connect(IP, RACK, SLOT) # connect to plc

state = plc.get_cpu_state() # read plc state run/stop/error print(f'State:{state}') # print state plc

t = 0

while True:

success, img = cap.read() for barcode in decode(img): if t==0 : if barcode.data.decode('utf-8') == "098765": t=1 print(barcode.data.decode('utf-8')) writePLC(plc, 52, 0, S7WLWord, 1) writePLC(plc, 52, 0, S7WLWord, 0) if barcode.data.decode('utf-8') == "012345": t = 1 print(barcode.data.decode('utf-8')) writePLC(plc, 52, 0, S7WLWord, 2) writePLC(plc, 52, 0, S7WLWord, 0)

if barcode.data.decode('utf-8') == "543210": t = 1 print(barcode.data.decode('utf-8')) writePLC(plc, 52, 0, S7WLWord, 3) writePLC(plc, 52, 0, S7WLWord, 0) pts= np.array([barcode.polygon],np.int32) pts = pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(255,0,255),5) pts2 = barcode.rect cv2.putText(img,barcode.data.decode('utf- 8'),(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX, 0.9,(255,0,145),2) cv2.imshow("anh",img) cv2.waitKey(1) if t>=1: t+=1 if t==70: t=0

Lập Trình PLC:

Network 1

Network 3

Network 4

Network 6

Network 7

Network 9

Network 10

Một phần của tài liệu (Đồ án tốt nghiệp) ỨNG DỤNG PLC s7 1200 điều KHIỂN hệ THỐNG PHÂN LOẠI sản PHẨM THEO mã VẠCH, điều KHIỂN và GIÁM sát QUA WINCC 2 (Trang 59 - 77)