Professional Documents
Culture Documents
Trí tuệ nhân tạo (AI) là một nhánh rộng lớn của khoa học máy tính liên
quan đến việc xây dựng các máy thông minh có khả năng thực hiện các tác vụ
thường đòi hỏi trí tuệ con người. AI là một khoa học liên ngành với nhiều cách
tiếp cận, nhưng những tiến bộ trong học máy và học sâu đang tạo ra sự thay đổi
mô hình trong hầu hết mọi lĩnh vực của ngành công nghệ.. Nó đơn giản việc sử
dụng các thuật toán để tạo ra sự thông minh cho máy móc và giúp chúng thực
hiện những việc mà trước tới giờ con người vẫn làm tốt hơn.
Thuật ngữ này thường được áp dụng cho dự án phát triển các hệ thống
được ưu đãi với các đặc tính của quá trình trí tuệ của con người, chẳng hạn như
khả năng suy luận, khám phá ý nghĩa, khái quát hóa hoặc học hỏi từ kinh
nghiệm trong quá khứ. Kể từ khi máy tính kỹ thuật số phát triển vào những năm
1940, người ta đã chứng minh rằng máy tính có thể được lập trình để thực hiện
các nhiệm vụ rất phức tạp - chẳng hạn như khám phá các chứng minh cho các
định lý toán học hoặc chơi cờ với sự thành thạo tuyệt vời.
Tuy nhiên, mặc dù có những tiến bộ liên tục về tốc độ xử lý máy tính và
dung lượng bộ nhớ, vẫn chưa có chương trình nào có thể phù hợp với tính linh
hoạt của con người trên các miền rộng hơn hoặc trong các công việc đòi hỏi
nhiều kiến thức hàng ngày. Mặt khác, một số chương trình đã đạt được mức hiệu
suất của các chuyên gia và chuyên gia con người trong việc thực hiện các nhiệm
vụ cụ thể nhất định, do đó trí tuệ nhân tạo theo nghĩa hạn chế này được tìm thấy
trong các ứng dụng đa dạng như chẩn đoán y tế, máy tính, công cụ tìm kiếm và
nhận dạng giọng nói hoặc chữ viết tay.
Nghiên cứu AI ban đầu vào những năm 1950 khám phá các chủ đề như
giải quyết vấn đề và các phương pháp biểu tượng. Trong những năm 1960, Bộ
Quốc phòng Hoa Kỳ đã quan tâm đến loại công việc này và bắt đầu đào tạo máy
tính để bắt chước các suy luận cơ bản của con người. Ví dụ, Cơ quan Dự án
Nghiên cứu Tiên tiến Quốc phòng (DARPA) đã hoàn thành các dự án lập bản đồ
đường phố vào những năm 1970. Và DARPA đã sản xuất các trợ lý cá nhân
thông minh vào năm 2003, rất lâu trước khi Siri, Alexa hay Cortana là những cái
tên quen thuộc.
Công việc ban đầu này đã mở đường cho tự động hóa và lý luận chính
thức mà chúng ta thấy trong máy tính ngày nay, bao gồm hệ thống hỗ trợ quyết
định và hệ thống tìm kiếm thông minh có thể được thiết kế để bổ sung và tăng
cường khả năng của con người.
Từ năm 1950-1970, trí tuệ nhân tạo phát triển một lĩnh vực với tên gọi
“Neural Network”, dịch ra tiếng việt là mạng thần kinh nhân tạo. Mạng thần
kinh là hệ thống tính toán với các nút kết nối với nhau hoạt động giống như các
tế bào thần kinh trong não người. Bằng cách sử dụng các thuật toán, họ có thể
nhận ra các mẫu và mối tương quan ẩn trong dữ liệu thô, phân cụm và phân loại
nó, và theo thời gian liên tục học hỏi và cải thiện.
Hình 1. 1. Cấu trúc mạng thần kinh nhân tạo
Từ năm 1980 – 2010, trí tuệ nhân tạo phát triển mạnh lĩnh vực học máy
(machine learning). Học máy là một phương pháp phân tích dữ liệu tự động hóa
việc xây dựng mô hình phân tích. Đây là một nhánh của trí tuệ nhân tạo dựa trên
ý tưởng rằng các hệ thống có thể học hỏi từ dữ liệu, xác định các mẫu và đưa ra
quyết định với sự can thiệp tối thiểu của con người.
Từ năm 2010 đến ngày nay, lĩnh vực học máy đã phát triển một chi
nghành có tên gọi là học sâu (deep learning). Học sâu là một loại máy học đào
tạo máy tính thực hiện các tác vụ giống như con người, chẳng hạn như nhận
dạng giọng nói, xác định hình ảnh hoặc đưa ra dự đoán. Thay vì tổ chức dữ liệu
để chạy thông qua các phương trình được xác định trước, học sâu thiết lập các
tham số cơ bản về dữ liệu và huấn luyện máy tính tự học bằng cách nhận dạng
các mẫu sử dụng nhiều lớp xử lý.
AI trong thương mại điện tử: Công nghệ Trí tuệ nhân tạo được sử dụng để
tạo công cụ đề xuất mà qua đó bạn có thể tương tác tốt hơn với khách hàng của
mình. Những đề xuất này được đưa ra phù hợp với lịch sử duyệt web, sở thích
và sở thích của họ. Nó giúp cải thiện mối quan hệ của bạn với khách hàng và
lòng trung thành của họ đối với thương hiệu của bạn.
AI trong Robotics: Robotics là một lĩnh vực khác mà các ứng dụng trí tuệ
nhân tạo thường được sử dụng. Robot được hỗ trợ bởi AI sử dụng các bản cập
nhật theo thời gian thực để cảm nhận các chướng ngại vật trên đường đi của nó
và lập kế hoạch trước cho hành trình của nó ngay lập tức.
AI trong chăm sóc sức khỏe: Trí tuệ nhân tạo tìm thấy các ứng dụng đa
dạng trong lĩnh vực chăm sóc sức khỏe. AI được sử dụng trong lĩnh vực chăm
sóc sức khỏe để tạo ra những cỗ máy tinh vi có thể phát hiện bệnh và xác định tế
bào ung thư. AI có thể giúp phân tích các tình trạng mãn tính với dữ liệu phòng
thí nghiệm và y tế khác để đảm bảo chẩn đoán sớm. AI sử dụng sự kết hợp của
dữ liệu lịch sử và trí thông minh y tế để phát hiện ra các loại thuốc mới.
AI trong ô tô: Trí tuệ nhân tạo được sử dụng để xây dựng các phương tiện
tự lái. AI có thể được sử dụng cùng với camera của xe, radar, dịch vụ đám mây,
GPS và các tín hiệu điều khiển để vận hành xe. AI có thể cải thiện trải nghiệm
trong xe và cung cấp các hệ thống bổ sung như phanh khẩn cấp, giám sát điểm
mù và đánh lái hỗ trợ người lái.
Ngoài ra còn rất nhiều ứng dụng được sử dụng trong các lĩnh vực khác.
Hệ thống nhận dạng giọng nói cho phép người tiêu dùng tương tác với
công nghệ chỉ bằng cách nói chuyện với nó, cho phép các yêu cầu rảnh tay, lời
nhắc và các tác vụ đơn giản khác.
Phần mềm nhận dạng giọng nói trên máy tính yêu cầu âm thanh tương
tự phải được chuyển đổi thành tín hiệu kỹ thuật số , được gọi là chuyển đổi
tương tự sang kỹ thuật số . Để một máy tính giải mã một tín hiệu, nó phải có
một cơ sở dữ liệu kỹ thuật số, hoặc từ vựng, các từ hoặc âm tiết, cũng như một
phương tiện nhanh chóng để so sánh dữ liệu này với các tín hiệu. Các mẫu giọng
nói được lưu trữ trên ổ cứng và được tải vào bộ nhớ khi chương trình được
chạy. Bộ so sánh kiểm tra các mẫu được lưu trữ này so với đầu ra của bộ chuyển
đổi A/D - một hành động được gọi là nhận dạng mẫu.
Trên thực tế, kích thước vốn từ vựng hiệu quả của chương trình nhận
dạng giọng nói liên quan trực tiếp đến dung lượng bộ nhớ truy cập ngẫu nhiên
của máy tính mà nó được cài đặt. Một chương trình nhận dạng giọng nói chạy
nhanh hơn nhiều lần nếu toàn bộ từ vựng có thể được tải vào RAM , so với việc
tìm kiếm một số khớp trong ổ cứng. Tốc độ xử lý cũng rất quan trọng vì nó ảnh
hưởng đến tốc độ máy tính có thể tìm kiếm các kết quả trùng khớp trên RAM.
Trong khi công nghệ nhận dạng giọng nói bắt nguồn từ PC, nó đã được
chấp nhận trong cả không gian kinh doanh và tiêu dùng trên thiết bị di động và
trong các sản phẩm trợ lý gia đình. Sự phổ biến của điện thoại thông minh đã
mở ra cơ hội để thêm công nghệ nhận dạng giọng nói vào túi người tiêu dùng,
trong khi các thiết bị gia đình, như Google Home và Amazon Echo, đưa công
nghệ nhận dạng giọng nói vào phòng khách và nhà bếp. Nhận dạng giọng nói,
kết hợp với sự phát triển ổn định của cảm biến vạn vật kết nối Internet, đã bổ
sung thêm một lớp công nghệ cho nhiều sản phẩm tiêu dùng mà trước đây
không có bất kỳ khả năng thông minh nào.
Khi việc sử dụng công nghệ nhận dạng giọng nói ngày càng tăng và nhiều
người dùng tương tác với nó, các công ty triển khai phần mềm nhận dạng giọng
nói sẽ có nhiều dữ liệu và thông tin hơn để cung cấp cho mạng nơ-ron cung cấp
năng lượng cho hệ thống nhận dạng giọng nói, do đó cải thiện khả năng và độ
chính xác của các sản phẩm nhận dạng giọng nói.
Việc sử dụng nhận dạng giọng nói đã phát triển nhanh chóng khi AI, máy
học và sự chấp nhận của người tiêu dùng đã trưởng thành. Các trợ lý kỹ thuật số
nội bộ từ Google, Amazon đến Apple đều đã triển khai phần mềm nhận dạng
giọng nói để tương tác với người dùng. Cách người tiêu dùng sử dụng công nghệ
nhận dạng giọng nói khác nhau tùy thuộc vào sản phẩm, nhưng nó có thể bao
gồm chuyển giọng nói thành văn bản, thiết lập lời nhắc, tìm kiếm trên internet
và trả lời các câu hỏi và yêu cầu đơn giản, chẳng hạn như phát nhạc hoặc chia sẻ
thông tin thời tiết hoặc giao thông.
Ngày nay, với sự phát triển của các ngôn ngữ lập trình bậc cao, chúng ta
có thể dễ dàng lập trình nhận dạng giọng nói cho máy tính. Chỉ cần cài đặt ngôn
ngữ lập trình và thư viện nhận dạng giọng nói của ngôn ngữ đó, có thể viết
được chương trình này cho máy tính. Và ngôn ngữ python là một trong những
ngôn ngữ có thể hỗ trợ công việc này.
1.2.5. Khả năng điều khiển giọng nói trong hệ thống sử dụng PLC
Hiện nay trên thị trường không có bất kỳ loại PLC có điều khiển giọng
nói tích hợp. Vì thế việc điều khiển PLC bằng giọng nói chỉ có thể thực hiện
được thông qua máy tính.
Để thực hiện điều này, việc đầu tiên cần làm là viết một chương trình
nhận diện giọng trên máy tính bằng ngôn ngữ lập trình bậc cao. Sau đó sẽ gửi
các lệnh tương ứng với địa chỉ cụ thể của PLC. Việc sử dụng giọng nói điều
khiển PLC trong các hệ thống ngày nay vẫn còn hạn chế nhưng tương lai không
xa nó sẽ có thể trở nên phổ biến hơn.
a) Khái niệm
Python là một ngôn ngữ lập trình đa nền tảng, có nghĩa là nó có thể chạy
trên nhiều nền tảng như Windows, macOS, Linux và thậm chí đã được chuyển
sang các máy ảo Java và .NET. Nó là miễn phí và mã nguồn mở. Nó được sử
dụng trong phát triển web, khoa học dữ liệu, tạo nguyên mẫu phần mềm,…May
mắn thay cho người mới bắt đầu, python có cú pháp đơn giản, dễ sử dụng. Điều
này làm cho python trở thành một ngôn ngữ tuyệt vời để học lập trình cho
người mới bắt đầu. Nó sử dụng các từ khóa tiếng Anh thường xuyên khi các
ngôn ngữ khác sử dụng dấu câu và nó có ít cấu trúc cú pháp hơn các ngôn ngữ
khác.
Python được thông dịch: Python được trình thông dịch xử lý trong thời
gian chạy. Bạn không cần phải biên dịch chương trình của mình trước khi thực
thi nó. Điều này tương tự với PERL và PHP.
Python hướng đối tượng: Python hỗ trợ phong cách hướng đối tượng
hoặc kỹ thuật lập trình đóng gói mã bên trong các đối tượng.
Python là ngôn ngữ dành cho người mới bắt đầu: Python là một ngôn ngữ
tuyệt vời cho các lập trình viên mới bắt đầu và hỗ trợ phát triển một loạt các ứng
dụng từ xử lý văn bản đơn giản đến trình duyệt www đến trò chơi.
Python được phát triển bởi Guido van Rossum vào cuối những năm 80
và đầu những năm 90 tại Viện Nghiên cứu Quốc gia về Toán học và
Khoa học Máy tính ở Hà Lan.
Tên gọi python xuất phát từ một đoàn hài kịch nổi tiếng ở Anh Monty
Python mà bản thân Guido là một fan hâm mộ nó.
Python có nguồn gốc từ nhiều ngôn ngữ khác, bao gồm ABC,
Modula-3, C, C ++, Algol-68, SmallTalk và Unix shell và các ngôn
ngữ kịch bản khác.
Python hiện được duy trì bởi một nhóm phát triển cốt lõi tại viện, mặc
dù Guido van Rossum vẫn giữ một vai trò quan trọng trong việc định
hướng sự phát triển của nó.
Dễ học: Python có ít từ khóa, cấu trúc đơn giản và cú pháp được xác
định rõ ràng. Điều này cho phép học sinh tiếp thu ngôn ngữ một cách
nhanh chóng.
Dễ đọc: Mã python được xác định rõ ràng hơn và có thể nhìn thấy
bằng mắt.
Chế độ tương tác: Python có hỗ trợ chế độ tương tác cho phép kiểm
tra tương tác và gỡ lỗi các đoạn mã.
Portable: Python có thể chạy trên nhiều nền tảng phần cứng khác nhau
và có giao diện giống nhau trên tất cả các nền tảng.
Có thể mở rộng: Bạn có thể thêm các mô-đun cấp thấp vào trình thông
dịch Python. Các mô-đun này cho phép các lập trình viên thêm vào
hoặc tùy chỉnh các công cụ của họ để hiệu quả hơn.
Cơ sở dữ liệu: Python cung cấp giao diện cho tất cả các cơ sở dữ liệu
thương mại chính.
Lập trình GUI: Python hỗ trợ các ứng dụng GUI có thể được tạo và
chuyển sang nhiều lệnh gọi hệ thống, thư viện và hệ thống cửa sổ,
chẳng hạn như Windows MFC, Macintosh và hệ thống X Window của
Unix.
Khả năng mở rộng: Python cung cấp cấu trúc và hỗ trợ tốt hơn cho các
chương trình lớn hơn so với kịch bản shell.
Ngoài các tính năng được đề cập ở trên, Python có một danh sách lớn các
tính năng tốt, một số ít được liệt kê dưới đây:
Nó hỗ trợ các phương pháp lập trình có cấu trúc và chức năng cũng
như OOP.
Nó có thể được sử dụng như một ngôn ngữ kịch bản hoặc có thể được
biên dịch thành mã byte để xây dựng các ứng dụng lớn.
Nó cung cấp các kiểu dữ liệu động cấp rất cao và hỗ trợ kiểm tra kiểu
động.
Lệnh trong python đơn giản hơn các ngôn ngữ khác không cần phải kết
thúc bằng bất cứ ký tự gì.
Từ khóa class để khai báo lớp ( sử dụng trong lập trình hướng đối
tượng).
d) Ứng dụng
Có thể nhập trực tiếp các câu lệnh của python trên Command Prompt – là
một công cụ có sẵn của hệ điều hành Window.
Hình 2. 1. Chạy python trên Command Prompt
Tuy nhiên để thuận tiện hơn trong việc lập trình có thể chạy python trong
môi trường phát triển tích hợp (IDE). IDE tích hợp sẵn trình biên dịch hoặc trình
thông dịch bên trong nó giúp bạn thực thi code trực tiếp khi đang lập trình ứng
dụng, tiêu biểu như Visual Studio, Esclipe, Xcode, Android studio…v.v. Và khi
viết chương trình trên các phần mềm này ta chỉ cần lưu file với đuôi .py có thể
chạy chương trình trên Command Prompt.
Một trong những phần mềm phổ biến và dễ dàng để lập trình là Visual
Studio Code. Nó là một trình soạn thảo mã nguồn nhẹ nhưng mạnh mẽ, chạy
trên máy tính và có sẵn cho windows, macOS và Linux. Nó đi kèm với hỗ trợ
tích hợp cho JavaScript, TypeScript và Node.js và có một hệ sinh thái mở rộng
phong phú cho các ngôn ngữ khác ( chẳng hạn như C++, C#, Java, Python, PHP,
Go).
PIP là một trình quản lý thư viện cho Python, viết tắt của từ Preferred
Installer Program. Đây là một tiện ích dòng lệnh cho phép bạn cài đặt, cài đặt
lại hoặc gỡ cài đặt các gói PyPI bằng một dòng lệnh đơn giản và dễ hiểu: pip.
PIP đã được cài đặt sẵn trong python ở các phiên bản mới ngày nay.
Với hệ điều hành Windows, mở Command Prompt bằng Windows key +
X và chọn Command Prompt.
2.2.2. Thư viện chuyển văn bản thành giọng nói Pyttsx3
a. Khái niệm
Pyttsx3 là một thư viện chuyển đổi văn bản thành giọng nói bằng Python.
Không giống như các thư viện thay thế, nó hoạt động ngoại tuyến và tương thích
với cả Python 2 và 3.
Các tính năng chuyển văn bản thành giọng nói cho mô-đun này dựa trên
các ngôn ngữ được cài đặt trong hệ điều hành của người sử dụng. Theo mặc
định, nó sẽ đi kèm với gói ngôn ngữ trong quá trình cài đặt hệ điều hành. Cần
cài đặt gói ngôn ngữ theo cách thủ công nếu định sử dụng các ngôn ngữ khác.
b. Thiết lập
a. Khái niệm
Speech_recognition là thư viện để thực hiện nhận dạng giọng nói, với sự
hỗ trợ cho một số công cụ và API, trực tuyến và ngoại tuyến.
Ngoài ra do chương trình điều khiển sử dụng đầu vào là Micro nên thư
viện Pyaudio được yêu cầu cài đặt.
b. Thiết lập
Trong trường hợp cài đặt thư viện pyaudio bị lỗi, ta sử dụng hai dòng lệnh
sau để fix lỗi:
a. Khái niệm
OpenOPC for Python là bộ công cụ OPC (OLE for Process Control) miễn
phí, mã nguồn mở được thiết kế để sử dụng với ngôn ngữ lập trình Python phổ
biến. Các tính năng độc đáo làm cho nó khác biệt với nhiều bộ công cụ OPC có
sẵn trên thị trường. Tương thích với Python 32Bit.
Dễ sử dụng: vì thư viện OpenOPC triển khai một số lượng tối thiểu các
hàm Python có thể được xâu chuỗi với nhau theo nhiều cách khác nhau, nên thư
viện rất đơn giản để học và dễ nhớ. Ở dạng đơn giản nhất, bạn có thể đọc và ghi
các mục OPC dễ dàng như bất kỳ biến nào trong chương trình Python của bạn ...
Hỗ trợ nhiều nền tảng: OpenOPC hoạt động với cả nền tảng Windows và
không phải Windows. Nó đã được thử nghiệm với Windows, Linux và Mac OS
X.
Phong cách lập trình chức năng: OpenOPC cho phép các cuộc gọi OPC
được xâu chuỗi lại với nhau. Ví dụ: bạn có thể đọc giá trị của tất cả các mục
khớp với mẫu ký tự đại diện bằng cách sử dụng một dòng mã Python.
import OpenOPC
opc = OpenOPC.client()
opc.connect('Kepware.KEPServerEX.V6')
opc.write(('PLC FX5UJ.Device1.X0',True))
opc.close()
a. Khái niệm
Tkinter là một gói trong Python có chứa module Tk hỗ trợ cho việc lập
trình GUI. Tk ban đầu được viết cho ngôn ngữ Tcl. Sau đó Tkinter được viết ra
để sử dụng Tk bằng trình thông dịch Tcl trên nền Python. Ngoài Tkinter ra còn
có một số công cụ khác giúp tạo một ứng dụng GUI viết bằng Python như
wxPython, PyQt, và PyGTK.
b. Sử dụng Tkinter
from tkinter import *
from tkinter.ttk import *
from tkinter import messagebox
Import lớp Tk dùng để tạo cửa sổ, import tất cả thư viện trong gói tkinter
và tkinter.ttk, import messagebox để tạo cửa sổ xác nhận
root = Tk()
root.geometry("250x150+300+300")
Phương thức geometry() quy định kích thước cửa sổ và vị trí hiển thị trên
màn hình. Hai tham số đầu tiên là kích thước cửa sổ, hai phương thức sau là vị
trí của cửa sổ trên màn hình.
root.mainloop()
Cửa sổ hiện lên màn hình trong khoảng thời gian rất ngắn nên ta dùng
vòng lặp để cửa sổ luôn hiện trên màn hình.
Btn1 = tk.Button(root, text="***",command=***)
Btn1.place(x=30,y=50)
Tạo nút ấn rồi gán vào biến Btn1, nút ấn đặt trong cửa sổ root, tên nút ấn
tùy chọn, command sẽ gọi hàm mà nút ấn thực thi. Phương thức place() để quy
định vị trí của nút bấm trên cửa sổ. Ngoài ra ta có thể thiết lập chiều rộng –
width(size), font chữ - font(“name font”,size), background - bg(color) và màu
chữ - fg(color) của nút ấn bằng cách thêm chúng vào lệnh khởi tạo nút.
a. Khái niệm
Pillow là một fork từ thư viện PIL của Python được sử dụng để xử lý hình
ảnh.
b. Cách sử dụng
#kết nối Kepserver
opc = OpenOPC.client()
opc.servers()
opc.connect('Kepware.KEPServerEX.V6')
PLC=pyttsx3.init() #khởi tạo object PLC chuyển text thành speech
voice = PLC.getProperty('voices') #lấy giọng nói trong máy
PLC.setProperty('voice', voice[2].id) #chọn giọng trong máy
#hàm nói của AI
def speak(audio1):
print('PLC: ' + audio1)
PLC.say(audio1)
PLC.runAndWait()
#hàm nhận diện giọng nói
def command():
print("PLC đang nghe...")
c=sr.Recognizer()
you = "" #khởi tạo biến you = string(rỗng)
while you == "": #khi you = string(rỗng) thực hiện lệnh dưới
with sr.Microphone() as source: #nghe với nguồn là Micro
audio = c.record(source, duration=3) #thời gian nghe 3s
try: #dùng try-except để bắt lỗi
you = c.recognize_google(audio,language='vi-VN') #nghe bằng tiếng
Việt
print("Phuc: "+you)
except:
you = "" #nếu không nghe được gì thì quay lại while
if you != "": #nếu nghe được thì thoát vòng lặp
break
return you
#hàm khởi động băng tải
def START():
opc.write(('PLC FX5UJ.Device1.X0',True)) #X0 logic1
opc.write(('PLC FX5UJ.Device1.X1',False)) #X1 logic0
#hàm dừng băng tải
def STOP():
opc.write(('PLC FX5UJ.Device1.X0',False)) #X0 logic0
opc.write(('PLC FX5UJ.Device1.X1',True)) #X1 logic1
#hàm brain
def begin():
while True:
you=command().lower() #chuyển về chữ thường để máy tính hiểu
#tạo cửa sổ xác nhận lệnh
Msg1 = tk.messagebox.askquestion(title="Confirm",message="Do you want"
+ you + "?",icon = 'warning')
if Msg1 == 'no': #bấm "no" để từ chối lệnh
tk.messagebox.showinfo('Return','You will now return to the
application screen')
else: #bấm "yes" xác nhận lệnh
if "tắt" in you:
speak("Tạm biệt ông chủ")
quit()
elif "khởi động" in you:
START()
speak("tôi bắt đầu khởi động")
elif "dừng lại" in you:
STOP()
speak("tôi đã dừng")
else:
speak("Xin lỗi! Tôi không hiểu, làm ơn thử lại")
#giao diện khởi động
root=tk.Tk() #tạo cửa sổ
root.title("Control PLC Program") #tên cửa sổ
root.geometry("484x274") #kích cỡ
root.iconbitmap("AI.ico") #icon cửa sổ
bg1 = PhotoImage(file = "bg1.png") #import ảnh và gán vào biến bg1
img = tk.Label( root, image = bg1,bg="yellow") #đưa ảnh lên cửa sổ vừa tạo
làm background
img.place(x = 0, y = 0) #size ảnh = size cửa sổ nên đặt ảnh ở vị trí gốc
tọa độ
#thêm label
lbl = tk.Label(root,text="Wellcome to program",fg="#780001",bg="#668EF0",font=
(".Vn3DH",12))
lbl.place(x=120,y=10)
#thêm texbox
txt = tk.Entry(root, width=50)
txt.place(x=30,y=52)
#thêm combobox
combo = Combobox(root)
combo["values"] = ("Lê Hữu Phúc","Trần Trung Hiếu","Nguyễn Đức Thành Dương")
combo.place(x=30,y=90,width=305)
#lệnh của Client Login
def handleBtn1():
MsgBox1 = tk.messagebox.askquestion(title="Confirm", message="Do you want
loggin?",icon = 'warning')
if MsgBox1 == 'no':
tk.messagebox.showinfo('Return','You will now return to the
application screen')
else: #khi bấm "yes" xác nhận đăng nhập, cửa sổ thứ 2 hiện ra
root1=tk.Tk()
root1.title("Control PLC Program")
root1.geometry("480x252")
root1.iconbitmap("AI.ico")
img2 = tk.Label( root1, bg="#ADD2E2")
img2.place(height=252,width=480)
lbl1 = tk.Label(root1,fg="red",font=("Tahoma",14))
lbl1.place(x=10,y=10)
lbl1.configure(text = "Xin Chào, " + txt.get(),bg="#ADD2E2")
lbl2 = tk.Label(root1,text="Please select content",fg="blue",
bg="#ADD2E2",font=("Tahoma",18))
lbl2.place(x=110,y=50)
lbl3 = tk.Label(root1,text=":::<Click to command by voice>:::",
bg="#ADD2E2",font=("Tahoma Bold",11))
lbl3.place(x=170,y=110)
lbl4 = tk.Label(root1,text=":::<Click to Exit>:::",bg="#ADD2E2",
font=("Tahoma Bold",11))
lbl4.place(x=170,y=150)
#thêm button
Btn3 = tk.Button(root1,text="Command",font=("Tahoma Bold",9),fg="blue"
,bg="yellow",width=10,command=begin)
Btn3.place(x=70,y=110)
Btn4 = tk.Button(root1,text="Quit",font=("Tahoma Bold",9),fg="blue",
bg="yellow",width=10,command=quit)
Btn4.place(x=70,y=150)
return
#lệnh của Manager Login
def handleBtn2():
MsgBox2 = tk.messagebox.askquestion(title="Confirm", message="Do you want
loggin?",icon = 'warning')
if MsgBox2 == 'no':
tk.messagebox.showinfo('Return','You will now return to the
application screen')
else: #khi bấm "yes" xác nhận đăng nhập, cửa sổ thứ 2 hiện ra
root1=tk.Tk()
root1.title("Control PLC Program")
root1.geometry("480x252")
root1.iconbitmap("AI.ico")
img2 = tk.Label( root1, bg="#ADD2E2")
img2.place(height=252,width=480)
lbl1 = tk.Label(root1,fg="red",font=("Tahoma",14))
lbl1.place(x=10,y=10)
lbl1.configure(text = "Xin Chào, " + combo.get() + " ĐTĐ58ĐH",
bg="#ADD2E2")
lbl2 = tk.Label(root1,text="Please select content",fg="blue",
bg="#ADD2E2",font=("Tahoma",18))
lbl2.place(x=140,y=50)
lbl3 = tk.Label(root1,text=":::<Click to command by voice>:::",
bg="#ADD2E2",font=("Tahoma Bold",11))
lbl3.place(x=170,y=110)
lbl4 = tk.Label(root1,text=":::<Click to Exit>:::",bg="#ADD2E2",
font=("Tahoma Bold",11))
lbl4.place(x=170,y=150)
#thêm button
Btn3 = tk.Button(root1,text="Command",font=("Tahoma Bold",9),fg="blue"
,bg="yellow",width=10,command=begin)
Btn3.place(x=70,y=110)
Btn4 = tk.Button(root1, text="Quit",font=("Tahoma Bold",9),fg="blue",
bg="yellow",width=10,command=quit)
Btn4.place(x=70,y=150)
return
#lệnh của nút Help?
def handleBtn3():
root1=tk.Tk()
root1.title("Trợ giúp")
root1.geometry("430x500")
root1.iconbitmap("AI.ico")
img3=tk.Label(root1,bg="#ADD2E2")
img3.place(height=500,width=430)
img4=tk.Label(root1,bg="#F8F284")
img4.place(height=250,width=430)
#tạo button
Link1=tk.Button(root1,text="Link 1",font=("Tahoma Bold",9),fg="white",
bg="black",width=7,command=web1)
Link1.place(x=18,y=310)
Link2=tk.Button(root1,text="Link 2",font=("Tahoma Bold",9),fg="white",
bg="black",width=7,command=web2)
Link2.place(x=18,y=350)
Link3=tk.Button(root1,text="Link 3",font=("Tahoma Bold",9),fg="white",
bg="black",width=7,command=web3)
Link3.place(x=18,y=390)
Link4=tk.Button(root1,text="Link 4",font=("Tahoma Bold",9),fg="white",
bg="black",width=7,command=web4)
Link4.place(x=18,y=430)
#thêm label nửa dưới Help
lbl = tk.Label(root1,text=":::<Hướng dẫn lập trình AI cơ bản bằng python>:
::",bg="#ADD2E2",font=("Tahoma",10))
lbl.place(x=95,y=310)
lbl1 = tk.Label(root1,text=":::<Link cài speech tiếng Việt>:::",
bg="#ADD2E2",font=("Tahoma",10))
lbl1.place(x=95,y=350)
lbl2 = tk.Label(root1,text=":::<Hướng dẫn lập trình giao diện đồ họa>:::",
bg="#ADD2E2",font=("Tahoma",10))
lbl2.place(x=95,y=390)
lbl3 = tk.Label(root1,text=":::<Giao tiếp giữa PLC và python qua
KepserverEx>:::",bg="#ADD2E2",font=("Tahoma",10))
lbl3.place(x=95,y=430)
lbl4 = tk.Label(root1,text="Please click on Link1, Link2,... to go to the
instructions",bg="#ADD2E2",fg="blue",font=("ROBOTO",10))
lbl4.place(x=50,y=470)
lbl5 = tk.Label(root1,text="Software creation instructions",bg="#ADD2E2",
fg="red",font=("ROBOTO",18))
lbl5.place(x=50,y=270)
#thêm label nửa trên Help
lbl6 = tk.Label(root1,text="Software manuals",bg="#F8F284",fg="red",
font=("ROBOTO",18))
lbl6.place(x=120,y=10)
lbl7=tk.Label(root1,text="Bước 1: Đăng nhập với tên của người sử dụng \n \
cửa sổ điều khiển hiện ra",bg="#F8F284",font=("Times New Roman",14))
lbl7.place(x=30,y=40)
lbl8 = tk.Label(root1,text="Bước 2: Để ra lệnh cho PLC click vào Command",
bg="#F8F284",font=("Times New Roman",14))
lbl8.place(x=30,y=85)
lbl9 = tk.Label(root1,text="Các lệnh mà Trợ lí ảo hỗ trợ bao gồm: \n \khởi
động :::<Khởi động băng tải>::: \n dừng lại :::<Dừng băng tải>::: \n \tắt :::<
Thoát chương trình>:::",bg="#F8F284",font=("Times New Roman",14))
lbl9.place(x=30,y=105)
lbl10 = tk.Label(root1,text="Bước 3: Để thoát chương trình click vào Quit"
,bg="#F8F284",font=("Times New Roman",14))
lbl10.place(x=30,y=190)
def web1():
url = f"https://youtu.be/Nx_kwUQKqV8"
wb.get().open(url)
def web2():
url = f"https://drive.google.com/file/d/1RxcHrHi_eXOAObNVLh00YWV2sa5RQgsL/
view"
wb.get().open(url)
def web3():
url = f"https://youtu.be/MHva487-DH0"
wb.get().open(url)
def web4():
url = f"https://youtu.be/RyTtbSLYarM"
wb.get().open(url)
#thêm button login, Help?
Btn1 = tk.Button(root, text="Client Login",font=("Tahoma Bold",9),bg="yellow",
fg="blue",width=12,command=handleBtn1)
Btn1.place(x=359,y=50)
Btn2 = tk.Button(root, text="Manager Login",font=("Tahoma Bold",9),bg="yellow"
,fg="blue",width=12,command=handleBtn2)
Btn2.place(x=359,y=88)
Btn3 = tk.Button(root, text="Help?",font=("Tahoma Bold",9), bg="#008C8A",fg="y
ellow",width=8,command=handleBtn3)
Btn3.place(x=205,y=235)
root.mainloop()
CHƯƠNG 3: GIAO TIẾP GIỮA PLC VÀ PYTHON QUA ETHERNET
3.1. Các phương thức giao tiếp giữa PLC và python qua ethernet
3.1.1. Giao tiếp bằng cách sử dụng thư viện giao thức hỗ trợ của python
Hình 3. 1. Cấu trúc giao tiếp PLC và python qua ethernet
Đây là phương thức giao tiếp dễ thực hiện để kết nối giữa PLC và python
qua ethernet. Với mỗi loại ngôn ngữ đều có thư viện hỗ trợ riêng với từng loại
PLC tương ứng. Ngôn ngữ python cũng vậy, giả sử muốn giao tiếp với PLC S7
1200 thì có thư viện Snap 7 hỗ trợ, giao tiếp với PLC Mitsubishi có thư viện
pymcrotocol.
Cách thức thực hiện rất đơn giản, ta đặt địa chỉ IP cho PLC. Sau đó chạy
một dòng lệnh đặt địa chỉ IP với ngôn ngữ python. Việc sử dụng các lệnh trong
thư viện hỗ trợ được giải thích rất cụ thể trên các diễn đàn và các hướng dẫn về
nó. Giao tiếp giữa python và PLC, ta sử dụng các lệnh đọc và viết.
Tuy nhiên với dòng PLC FX hiện tại chưa có thư viện hỗ trợ. Thư viện
pymcrotocol chỉ hỗ trợ các PLC dòng Q, L, QnA, iQ-L, iQ-R. Do đó với đề tài
sử dụng dòng PLC FX thì không thể sử dụng phương thức này.
Sử dụng thư viện pymodbus để giao tiếp giữa PLC và python là cách khá
phức tạp. Về phía PLC ta phải viết chương trình cho nó thành modbus server,
còn python là modbus client.
Với cách này ta sẽ sử dụng một phần mềm OPC trung gian để giao tiếp
giữa python và PLC. Phần mềm OPC có thể sử dụng là Kepserverex.
KEPServerEX là nền tảng kết nối hàng đầu trong ngành cung cấp một nguồn dữ
liệu tự động hóa công nghiệp duy nhất cho tất cả các ứng dụng của bạn. Thiết kế
nền tảng cho phép người dùng kết nối, quản lý, giám sát và điều khiển các thiết
bị tự động hóa đa dạng và các ứng dụng phần mềm thông qua một giao diện
người dùng trực quan.
Sử dụng cách này phải giải quyết hai vấn đề. Một là kết nối kepserverex
với PLC, hai là kết nối giữa python với kepserverex. Vấn đề thứ nhất hoàn toàn
có thể giải quyết được, vì kepserverex hiện nay được phát triển hầu như có thể
kết nối với các dòng PLC. Vấn đề thứ hai để kết nối giữa python và kepserverex
ta có thể sử dụng thư viện Open OPC.
3.2. Các phần mềm sử dụng để giao tiếp thông qua phương thức OPC
KEPServerEX là một phần mềm cho phép bạn kết nối các thiết bị và ứng
dụng khác nhau với nhau. Nền tảng được thiết kế để kết nối, giám sát và điều
khiển các thiết bị khác nhau này. Tất cả các luồng thông tin khác nhau kết hợp
với nhau trong một giao diện người dùng, vì vậy người dùng có cái nhìn tổng
quan và toàn quyền kiểm soát toàn bộ hệ thống của họ. Nó được phát triển để
đáp ứng nhu cầu của khách hàng: nó có hiệu suất cao, rất đáng tin cậy và dễ sử
dụng.
KEPServerEX là một hệ thống dễ truy cập, cung cấp cho người dùng
quyền truy cập dữ liệu cho các ứng dụng khách, Internet of Things và phần mềm
phân tích dữ liệu lớn. Kepware cung cấp cho người dùng quyền truy cập bằng
cách tương thích và hỗ trợ các sản phẩm sau:
OPC (Truyền thông nền tảng mở)
Giao diện tự động hóa
Giao diện CNTT
Giao diện đám mây
KEPServerEX giảm thời gian tải mạng và thiết bị, đồng thời tối ưu hóa
thông tin liên lạc bằng cách liên kết các máy với nhau. KEPServerEX tạo liên
kết giữa các thiết bị khác nhau vì các thiết bị và bộ điều khiển phải có thể giao
tiếp với nhau, ngay cả khi chúng không thuộc cùng một nhà sản xuất hoặc
không nói cùng một ngôn ngữ. Nó cũng đảm bảo rằng nhiều yêu cầu về dữ liệu
được ghép nối với nhau, theo cách này, cần ít yêu cầu hơn và điều này làm giảm
thời gian tải của mạng và thiết bị.
Bên cạnh việc kết nối các thiết bị khác nhau với nhau, KEPServerEX còn
có chức năng như một điểm vào. KEPServerEX cung cấp một điểm vào duy
nhất cho tất cả các luồng thông tin và lưu trữ và lưu trữ dữ liệu đến theo thời
gian thực.
Do các tính năng này, giao tiếp được tối ưu hóa, điều này mang lại cho
người dùng khả năng đưa ra quyết định nhanh hơn và thích ứng nhanh hơn với
các thay đổi, để tối ưu hóa hệ thống của họ với tiềm năng tối đa. Cuối cùng,
KEPServerEX giảm tổng chi phí sở hữu.
KEPServerEX có công cụ trình quản lý người dùng được tích hợp sẵn.
Công cụ này cho phép người dùng xác định người dùng nào có quyền truy cập
nhất định với các dự án và nhiệm vụ khác nhau. Quyền truy cập bị hạn chế này
có thể bị giới hạn bởi một thẻ thuộc về một số dự án nhất định.
Bên cạnh công cụ quản lý, có thể xây dựng các đường hầm dữ liệu an
toàn, chẳng hạn như khi thông tin được truyền qua internet, chẳng hạn như đến
các thiết bị từ xa, KEPServerEX bổ sung xác thực và mã hóa cho các nguồn dữ
liệu của nó. Bằng cách này KEPServerEX đảm bảo rằng thông tin của một công
ty, doanh nghiệp, tổ chức được bảo mật.
Ứng dụng này hỗ trợ các hệ điều hành Microsoft Windows sau:
Windows 10 x64 (Pro và Enterprise Edition) 3
GX Works 3 là một công cụ kỹ thuật để định cấu hình cài đặt, lập trình,
gỡ lỗi và thực hiện hiện bảo trì cho các bộ điều khiển có thể lập trình như
MELSEC iQ-R series/ MELSEC iQ-F series. Khả năng sử dụng của nó tốt hơn
nhiều so với GX Works 2 vì các chức năng đã được cải thiện.
3.3. Xây dựng giao tiếp giữa PLC và python qua Kepserverex
CHƯƠNG 4: XÂY DỰNG ĐIỀU KHIỂN MÔ HÌNH PHÂN LOẠI BẰNG
GIỌNG NÓI
4.1. Mô hình phân loại sản phẩm
Hệ thống phân loại có thể được điều khiển bằng nút ấn trên tủ điện hoặc
có thể điều khiển bằng giọng nói thông qua máy tính.
Hệ thống phân loại bao gồm: PLC FX5UJ, 3 xi lanh tác động bằng nam
châm điện, 2 cảm biến màu, 1 cảm biến tiệm cận
a. PLC FX5UJ
Hình 4. 1. PLC FX5UJ
Cổng kết nối Ethernet, cổng nạp chương trình Mini-B USB.
Có sẵn 8 cổng ngõ vào đếm xung tốc độ cao HSC: 4 chân 100KHz và 4
chân 10KHz.
+ Khối I/O mở rộng dùng nguồn AC/DC với 16/32 I/O và có cả đầu ra
relay và transistor ( sourcing và sinking ).
+ Khối vào tương tự (A/D): 4 kênh, 8 kênh được chế tạo kiểu điện áp có
các dải điện áp: 0 -5V, 1 – 5V, 0 – 10V và -10 - 10V.
+ Khối ra tương tự (D/A): 4 kênh được chế tạo kiểu điện áp có các dải
điện áp: 0 -5V, 1 – 5V, 0 – 10V và -10 - 10V.
+ Khối đầu vào kết nối trực tiếp với cảm biến nhiệt độ: 4 kênh, 8 kênh và
loại cảm biến nhiệt độ: -200 °C - 1200 °C (Pt100, Ni100,...Cặp nhiệt ngẫu:
K,J,T,B,R,S,...).
+ Khối chuyên dụng cho điều khiển chuyển động: 4 trục và 8 trục.