Tóm tắt Luận văn Xây dựng mạng truyền thông công nghiệp Modbus RTU bằng ngôn ngữ python trên máy tính nhúng linux

ĐẠI HỌC ĐÀ NẴNG  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
________________________  
PHẠM NGỌC CƯỜNG  
XÂY DỰNG MẠNG TRUYỀN THÔNG CÔNG NGHIỆP  
MODBUS RTU BẰNG NGÔN NGỮ PYTHON  
TRÊN MÁY TÍNH NHÚNG LINUX  
Chuyên ngành: Kỹ thuật điều khiển và tự động hóa  
Mã số: 60520216  
TÓM TẮT LUẬN VĂN THẠC SĨ  
KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA  
Đà Nẵng – Năm 2017  
Công trình được hoàn thành tại  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
Người hướng dẫn khoa học: TS. TRẦN ĐÌNH KHÔI QUỐC  
Phản biện 1: TS. Nguyễn Lê Hòa  
Phản biện 2: TS. Giáp Quang Huy  
Luận văn được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp  
thạc sĩ Kỹ thuật Điều khiển và Tự động hóa, họp tại Trường Đại học  
Bách khoa – Đại học Đà Nẵng vào ngày 25 tháng 03 năm 2017.  
Có thể tìm hiểu luận văn tại:  
Trung tâm Học liệu, Đại học Đà Nẵng tại trường Đại học  
Bách khoa.  
Thư viện Khoa Điện, Trường Đại học Bách khoa – Đại học  
Đà Nẵng.  
MỤC LỤC  
MỤC LỤC..........................................................................................3  
MỞ ĐẦU............................................................................................1  
1. Tính cấp thiết của đề tài........................................................1  
2. Mục tiêu nghiên cứu.............................................................2  
3. Đối tượng và Phạm vi nghiên cứu........................................3  
4. Phương pháp nghiên cứu ......................................................3  
5. Ý nghĩa khoa học và thực tiễn ..............................................4  
6. Cấu trúc luận văn..................................................................4  
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ GIAO THỨC MẠNG  
MODBUS RTU.............................................................................6  
1.1 GIỚI THIỆU MẠNG MODBUS.......................................6  
1.2 CẤU TRÚC ĐOẠN TIN GIAO THỨC MODBUS..........7  
CHƯƠNG 2: GIỚI THIỆU TỔNG QUAN VỀ PYTHON VÀ MÁY  
TÍNH NHÚNG LINUX.................................................................8  
2.1 NGÔN NGỮ PYTHON ...................................................8  
2.2 MÁY TÍNH NHÚNG CÔNG NGHIỆP...........................8  
CHƯƠNG 3: XÂY DỰNG CÁC LỚP DỮ LIỆU VÀ THUẬT  
TOÁN............................................................................................9  
3.1 SƠ ĐỒ CHUNG...............................................................9  
3.1.1. Lớp dữ liệu của Slaver......................................... 9  
3.1.2. Lớp dữ liệu của Master........................................ 9  
3.2 XÂY DỰNG THUẬT TOÁN..........................................9  
3.2.1. Lớp Utilities....................................................... 10  
3.2.2. Lớp physical....................................................... 16  
3.2.3. Lớp transaction .................................................. 16  
3.2.4. Lớp Factory........................................................ 17  
3.2.5.  
Lớp  
bit_read_message.py  
&
&
&
bit_write_message.py  
register_read_message.py  
register_write_message.py................................ 18  
3.2.6. Lớp dành riêng cho kho dữ liệu (server  
mode)................................................................ 18  
CHƯƠNG 4: KẾT QUẢ MÔ PHỎNG ............................................21  
4.1 KHỞI TẠO HỆ THỐNG ẢO...........................................21  
4.2 KẾT QUẢ MÔ PHỎNG...................................................21  
4.2.1. Kết quả kiểm tra mã chức năng Write Coil  
(FC=05). ........................................................... 21  
4.2.2. Kết quả kiểm tra mã chức năng Write Coils  
(FC=15). ........................................................... 21  
4.2.3. Kết quả kiểm tra mã chức năng Read Coils  
Status (FC=01).................................................. 21  
4.2.4. Kết quả kiểm tra mã chức năng Read Coils  
Status (FC=01).................................................. 21  
4.2.5. Kết quả kiểm tra mã chức năng Write  
Holding Registers (FC=16)............................... 21  
4.2.6. Kết quả kiểm tra mã chức năng Read  
Holding Registers (FC=3)................................. 22  
4.2.7. Kết quả kiểm tra mã chức năng Write  
Holding Registers (FC=16)(kiểm tra lần thứ  
2 cho 1 thanh ghi duy nhất). ............................. 22  
4.2.8. Kết quả kiểm tra mã chức năng Read  
Holding Registers (FC=3) (kiểm tra lần thứ  
2 cho 1 thanh ghi duy nhất). ............................. 22  
4.2.9. Kết quả kiểm tra mã chức năng Read  
Discrete Inputs (FC=02). 4.2.10. Kết quả  
kiểm tra mã chức năng Read Inputs Register  
(FC=04). ........................................................... 22  
4.2.11. Kết quả kiểm tra Mã Ngoại lệ nếu có vấn đề  
trên khung truyền hoặc kho dữ liệu. ................. 22  
4.3. KẾT QUẢ MÔ PHỎNG KHI KẾT NỐI MÁY  
TÍNH NHÚNG VÀ MÁY TÍNH NGOÀI .............................22  
4.3.1. Phương pháp thực hiện. ..................................... 22  
4.3.2. Mô phỏng quá trình ghi cuộn dây (FC=5 và  
FC=15).............................................................. 22  
4.3.3. Mô phỏng quá trình ghi thanh ghi (FC=16)....... 22  
4.3.4. Mô phỏng quá trình đọc thanh ghi (FC=3)........ 22  
4.3.5. Mô phỏng quá trình đọc đầu vào số (FC=2)...... 22  
4.3.6. Mô phỏng quá trình đọc thanh ghi analog  
(FC=4). ............................................................. 22  
KẾT LUẬN ......................................................................................23  
Các điểm đã làm được ............................................................23  
Các điểm hạn chế....................................................................23  
Hướng phát triển đề tài...........................................................23  
1
MỞ ĐẦU  
1. Tính cấp thiết của đề tài  
Hiện nay, PLC và máy tính nhúng công nghiệp đang được dùng để  
làm các thiết bị đầu cuối trong các mạng cục bộ công nghiệp. Cả hai  
loại PLC và máy tính nhúng công nghiệp đều có ưu điểm và nhược  
điểm riêng. Xét riêng về máy tính nhúng công nghiệp, khả năng mở  
rộng ngoại vi, lưu trữ dữ liệu là cực kì rộng lớn. Máy tính nhúng có  
các khả năng chịu va đập, nhiệt độ môi trường, tốc độ xử lý cao.  
Tuy nhiên khi sử dụng máy tính trong mạng THCN cần có một trong  
những yếu tố sau:  
Phần cứng ngoài: các module/card xử lý dữ liệu ngoài như Modbus,  
Profibus…Các module/card có giá thành từ 200-1000$ tùy theo chức  
năng và số cổng.  
Phần mềm từ đối tác thứ 3: nếu không dùng phần cứng ngoài có thể  
dùng ngoại vi trực tiếp của máy tính nhúng nhưng cần driver để điều  
khiển và các phần mềm, mã nguồn để thực hiện các giao thức. Cần  
phải mua bản quyền để sử dụng. Có những phần mềm không hỗ trợ  
nguồn mở để phát triển các ứng dụng riêng.  
Thông qua đề tài "Xây dựng mạng truyền thông công nghiệp  
Modbus RTU bằng ngôn ngữ Python trên máy tính nhúng Linux",  
mạng Modbus RTU và các ngăn xếp của nó được tìm hiểu và xây  
dựng bằng ngôn ngữ Python trên nền tảng máy tính Banana Pro  
nhúng hệ điều hành Linux. Dựa theo cách thức hoạt động tiêu chuẩn  
của mạng công nghiệp Modbus RTU, đề tài này nghiên cứu thuật  
2
toán để xây dựng các lớp hướng đối tượng nhằm truyền nhận dữ liệu  
và xử lý dữ liệu truyền thông nối tiếp. Theo đó, các thuật toán giúp  
tạo khung truyền, nhận khung truyền, sinh ra giá trị kiểm thử, các mã  
ngoại lệ,... sẽ được xây dựng chính xác và viết bằng ngôn ngữ  
Python.  
Thông qua máy tính nhúng Linux, người lập trình ngoài việc sử dụng  
mã nguồn Modbus được xây dựng để truyền nhận dữ liệu còn lập  
nhiều chức năng điều khiển mới cho module này như đóng cắt thiết  
bị, đọc giá trị cảm biến, giao tiếp người – máy (HMI),... mà các  
module Modbus thông thường không làm được. Đề tài này hướng tới  
mục tiêu chính là tạo ra mã nguồn mở chỉ có chức năng truyền thông  
tin giữa các nút mạng theo chuẩn modbus. Ngoài ra không có chức  
năng xử lý khác như PID, mạng neuron…  
2. Mục tiêu nghiên cứu  
Tìm hiểu cấu tạo các lớp ngăn xếp của mạng Modbus RTU. Sau đó  
tìm hiểu các hình thức trao đổi dữ liệu và xử lý dữ liệu giữa các lớp  
ngăn xếp.  
Tìm hiểu ngôn ngữ Python hướng đối tượng và cách thức xử lý dữ  
liệu lớp vật lý của giao thức truyền thông nối tiếp.  
Tìm hiểu các cổng ngoại vi của máy tính nhúng Banana Pro được sử  
dụng cho mạng Modbus.  
Xây dựng các lớp ngăn xếp dùng ngôn ngữ Python hướng đối tượng  
sau khi đã tìm hiểu về cách thức hoạt động của các lớp ngăn xếp này.  
3
Mô phỏng đánh giá hoạt động trên các chương trình Server/Client  
thông qua cổng truyền thông ảo.  
3. Đối tượng và Phạm vi nghiên cứu  
Mạng Modbus có 3 phương thức giao tiếp là RTU, ASCII và  
TCP/IP, trong đề tài này đối tượng nghiên cứu là mạng Modbus  
RTU.  
Phạm vi nghiên cứu là tích hợp mạng Modbus bằng ngôn ngữ Python  
trên máy tính Banana Pro nhúng hệ điều hành Linux. Như vậy đề tài  
giới hạn phạm vi ở việc lập trình dùng ngôn ngữ Python, máy tính  
Banana Pro và hệ điều hành Linux.  
4. Phương pháp nghiên cứu  
Tìm hiểu các tài liệu sách vở có liên quan đến mạng Modbus, cấu  
tạo, chức năng và cách thức hoạt động của chúng. Từ đó kết hợp với  
ngôn ngữ Python hướng đối tượng để xây dựng phần mềm.  
Tìm hiểu cấu trúc phần cứng của máy tính Banana Pro, các thông số  
kĩ thuật và cách sử dụng nó thông qua sổ tay từ nhà sản xuất  
LeMaker.  
Từ các kiến thức trên, đưa ra các lưu đồ thuật toán để xử lý dữ liệu  
nhằm truyền và nhận khung truyền dữ liệu theo tiêu chuẩn của  
Modbus RTU.  
Mô phỏng phương thức truyền đạt dữ liệu thông qua các cổng truyền  
thông nối tiếp ảo có sẵn trên hệ điều hành Linux. Xây dựng hai  
chương trình có cơ chế Server/Client để thực hiện mô phỏng này.  
4
Chạy mạng Modbus thực tế bằng cách gán cổng truyền thông thực,  
thông qua module PL2303 trao đổi dữ liệu với một thiết bị Modbus  
khác, đó là một máy tính hệ điều hành Windows có cài sẵn phần  
mềm mô phỏng Modbus.  
5. Ý nghĩa khoa học và thực tiễn  
Tích hợp được mạng Modbus RTU trên máy tính nhúng đem lại cho  
lập trình hệ thống mở rộng tính năng hơn so với các module Modbus  
thông thường vì máy tính nhúng hiện nay có hỗ trợ nhiều ngoại vi  
giúp giao tiếp với cảm biến (nhiệt, quang, gia tốc,...), các thiết bị  
đóng cắt, các thiết bị truyền thông mạng công nghiệp, thậm chí là  
giao tiếp với các màn hình HMI (Human Machine Interface: Giao  
tiếp người-máy) cũng như bản thân có thể làm thành thiết bị HMI.  
Máy tính nhúng có giá thành rẻ hơn nhiều so với các module mạng  
công nghiệp đang sử dụng, có khả năng làm trong môi trường công  
nghiệp, không cần thiết bị làm mát, dễ dàng lắp đặt vì có kích thước  
nhỏ, không cồng kềnh.  
6. Cấu trúc luận văn  
Chương 1: Giới thiệu tổng quan về giao thức mạng Modbus RTU.  
Chương này giới thiệu khái niệm mạng Modbus và cấu trúc đoạn tin  
mạng Mod bus RTU.  
Chương 2: Giới thiệu tổng quan về python và máy tính nhúng Linux.  
Chương này so sánh ngôn ngữ Python với các ngôn ngữ lập trình  
nhúng hiện có, đồng thời so sánh máy tính nhúng và các vi điều  
5
khiển thông thường.  
Chương 3: Xây dựng các lớp dữ liệu và thuật toán.  
Chương này mô tả cấu tạo của các lớp, thuật toán để xử lý khung  
truyền/nhận dữ liệu.  
Chương 4: Kết quả mô phỏng.  
Chương này đưa ra kết quả mô phỏng bằng hai phương pháp, đó là  
kết nối 2 máy ảo với nhau và kết nối máy tính nhúng và một máy  
tính khác có cài phần mềm mô phỏng Modbus.  
6
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ GIAO THỨC  
MẠNG MODBUS RTU  
1.1 GIỚI THIỆU MẠNG MODBUS  
Modbus là một giao thức mạng truyền dữ liệu theo kiểu nối tiếp. Nó  
hỗ trợ cả 2 chuẩn truyền RS232 và RS485. Việc truyền dữ liệu được  
thực hiện theo cơ chế 1 Master/ nhiều Slave.  
Sơ đồ bên dưới trình bày sự tham chiếu giao thức modbus lên mô  
hình chuẩn OSI. Theo đó thì giao thức modbus nằm ở lớp thứ 7, thứ  
2, và thứ 1 của mô hình OSI. Lớp thứ 7 này (lớp ứng dụng) giúp hỗ  
trợ phương thức truyền thông server/client giữa các thiết bị kết nối  
trên bus hoặc trên mạng không dây. Lớp thứ 2 và lớp thứ 1 quy định  
hình thức truyền dữ liệu theo kiểu nối tiếp và chuẩn truyền vật lý là  
EIA/TIA – 485 (hoặc EIA/TIA – 232).  
Hình 1.1: Giao thức modbus và mô hình OSI  
Căn cứ vào cách thức truyền dữ liệu trong mạng, thì mạng Modbus  
được chia làm 3 loại: Modbus RTU, Modbus ASCII và Modbus  
TCP/IP.  
7
1.2 CẤU TRÚC ĐOẠN TIN GIAO THỨC MODBUS  
Hình dưới đây trình bày cấu trúc của một đoạn tin truyền trong giao  
thức mạng modbus .  
Hình 1.2: Cấu trúc đoạn tin mạng Modbus  
8
CHƯƠNG 2: GIỚI THIỆU TỔNG QUAN VỀ PYTHON VÀ  
MÁY TÍNH NHÚNG LINUX  
2.1 NGÔN NGỮ PYTHON  
Python được giới thiệu vào năm 1991, là một loại ngôn ngữ bậc cao.  
Ngôn ngữ Python đưa ra cú pháp dễ đọc và tái sử dụng cú pháp của  
các ngôn ngữ khác đến 10%  
Phần này so sánh ngôn ngữ Python và các ngôn ngữ khác là C và  
java  
2.2 MÁY TÍNH NHÚNG CÔNG NGHIỆP  
Phần này so sánh giữa máy tính nhúng Raspberry Pi và các vi điều  
khiển  
Trong các ứng dụng nhỏ và cực nhỏ, không trong môi trường công  
nghiệp thì có thể dùng vi điều khiển. Tuy nhiên trong môi trường  
công nghiệp, việc sử dụng máy tính nhúng thể hiện các ưu điểm vượt  
trội hơn, đảm bảo một hệ thống nhanh, an toàn và có thể mở rộng.  
9
CHƯƠNG 3: XÂY DỰNG CÁC LỚP DỮ LIỆU VÀ THUẬT  
TOÁN  
3.1 SƠ ĐỒ CHUNG  
Phần sơ đồ chung đưa ra các lớp, sự sắp xếp và cách phân tích cũng  
như đóng gói dữ liệu  
3.1.1. Lớp dữ liệu của Slaver  
3.1.2. Lớp dữ liệu của Master  
3.2 XÂY DỰNG THUẬT TOÁN  
Dựa theo nguyên lý hoạt động của chuẩn truyền thông công nghiệp  
Modbus, em xin đưa ra các lớp (class) viết theo ngôn ngữ python cho  
Slave (server) và Master (client).  
Nhìn chung, luận văn sẽ đưa ra các lớp giúp máy tính nhúng có thể  
xử lý dữ liệu một cách hiệu quả và các lớp này sử dụng được cho cả  
2 mode là server và client. Các lớp đó bao gồm:  
-
-
-
-
Lớp Utilities  
Lớp Transaction  
Lớp Factory  
Lớp Bit_read_messabe.py ; bit_write_message.py  
register_read_message.py register_write_message.py  
-
-
-
Lớp Physical  
Lớp Context  
Lớp Store  
10  
3.2.1. Lớp Utilities  
Lớp Utitlities đóng vai trò quan trọng trong việc xử lý dữ liệu và  
được tái sử dụng ở các lớp khác như sync và transaction. Nhờ lớp  
utilites mà việc đóng gói dữ liệu trở nên dễ dàng và chính xác hơn.  
Vì thế lớp utilities được Modbus lớp cơ bản nhất trong xử lý dữ liệu.  
Do đặc trưng về khung truyền của chuẩn Modbus, cần phải xử lý dữ  
liệu dạng bit, byte cũng như mã crc nên em đưa ra các phép toán ở  
lớp này như sau:  
-
-
-
-
-
pack_bitstring  
unpack_bitstring  
generate_crc_table  
computeCRC  
checkCRC  
Việc xử lý và tách byte sẽ được sử dụng nhờ vào module struct của  
python.  
a. Hàm pack_bitstring  
pack_bitstring giúp tạo 1 chuỗi từ các bit. Pack_bitstring được sử  
dụng ở lớp Bit_read_messabe.py ; bit_write_message.py  
register_read_message.py.  
11  
Vì ở các lớp này dữ liệu của các cuộn dây ở dạng bit là True hoặc  
False.  
Hình 3.3: Thuật toán cho hàm pack_bitstring  
12  
b. Hàm unpack_bitstring  
Hàm unpack_bitstring có chức năng chuyển chuỗi thành các bit. Khi  
giải mã khung truyền có chức năng tác động lên cuộn dây, cần phải  
tách chuỗi từ khung truyền thành các bit tương ứng với vị trí của  
từng cuộn dây.  
Hình 3.4: Thuật toán cho hàm unpack_bitstring  
13  
c. Hàm generate_CRC_table  
Để tạo mã CRC cho khung truyền modbus, cần có 2 bước là  
1- tạo bảng CRC.  
2- dùng bảng CRC này và dữ liệu của khung truyền để tạo mã CRC  
sau đó thêm vào cuối khung truyền.  
Các bước chính tạo mã CRC như sau:  
Bước 1. Đặt thanh ghi CRC 16 bit giá trị 0xFFFF.  
Bước 2. XOR 8 bit đầu tiên của khung truyền với 8 bit thấp của  
thanh ghi CRC sau đó đưa lại vào thanh ghi CRC.  
Bước 3. Dịch thanh ghi CRC sang phải 1 bit (về phía bit thấp), điền 0  
vào bít cao. Trích bit thấp LSB đó ra.  
Bước 4. Nếu bit thấp LSB là 0 : lặp lại bước 3 (dịch mới)Nếu bit  
thấp LSB là 1: XOR thanh ghi CRC với giá trị 0xA001.  
Bước 5. Lặp lại bước 3 và 4 cho đến khi đã dịch được 8 bước. Khi  
kết thúc, ta có được 8 bit đầu tiên.  
Bước 6. Lặp lại bước từ 2 đến 5 cho 8 bit dữ liệu tiếp theo. Tiếp tục  
làm cho đến khi hết khung truyền.  
Bước 7. Kết quả cuối cùng là giá trị CRC cần tìm Khi đặt khung  
truyền vào chuỗi cần đảo bit cao với bit thấp .  
Hoặc chúng ta có thể tạo bảng mã trước, sau đó đưa dữ liệu vào bảng  
để chọn mã CRC. Trong phần thực nghiệm, em dùng cách thứ 2. Sơ  
đồ thuật toán tạo bảng mã như sau:  
14  
Hình 3.5: Thuật toán tạo bảng mã CRC.  
15  
d. Hàm computeCRC(data)  
Hàm computeCRC sử dụng bảng CRC đã sinh ra trong phần 3.2.1c  
và dữ liệu (data). Sơ đồ thuật toán như sau:  
Hình 3.6: Thuật toán tạo mã CRC từ dữ liệu.  
Tải về để xem bản đầy đủ
pdf 29 trang yennguyen 11120 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tóm tắt Luận văn Xây dựng mạng truyền thông công nghiệp Modbus RTU bằng ngôn ngữ python trên máy tính nhúng linux", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftom_tat_luan_van_xay_dung_mang_truyen_thong_cong_nghiep_modb.pdf