BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHÊ BƯU CHÍNH VIỄN THƠNG
KHOA KỸ THUẬT ĐIỆN TỬ I
---------------------
BÁO CÁO MƠN HỌC
ĐỀ TÀI: GIAO TIẾP MODBUS – TCP
HỆ THỐNG ĐIỂM DANH SỬ DỤNG RFID
Môn học: Thiết kế ngoại vi và thiết bị kết nối
Giảng viên: TS.Trần Thị Thuý Hà
Sinh viên thực hiện:
Nhóm 03
Trương Đình Thặng:
B18DCDT243
Nguyễn Quyết Tiến:
B18DCDT211
Trần Quang Tùng:
B18DCDT227
Phạm Duy Thành:
B18DCDT235
Thiều Quang Trường:
B18DCDT259
Hà Nội 3/2022
BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHÊ BƯU CHÍNH VIỄN THƠNG
KHOA KỸ THUẬT ĐIỆN TỬ I
---------------------
BÁO CÁO MƠN HỌC
ĐỀ TÀI: GIAO TIẾP MODBUS – TCP
HỆ THỐNG ĐIỂM DANH SỬ DỤNG RFID
Môn học: Thiết kế ngoại vi và thiết bị kết nối
Giảng viên: TS.Trần Thị Thuý Hà
Sinh viên thực hiện:
Nhóm 03
Trương Đình Thặng:
B18DCDT243
Nguyễn Quyết Tiến:
B18DCDT211
Trần Quang Tùng:
B18DCDT227
Phạm Duy Thành:
B18DCDT235
Thiều Quang Trường:
B18DCDT259
Hà Nội 3/2022
3 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Tài liệu tham khảo..................................................................................................43
LỜI CẢM ƠN..........................................................................................................44
Page 3 of 44
4 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Lời nói đầu
Trong nền công nghiệp hiện nay ,việc ứng dụng mạng truyền thông công
nghiệp trong việc quản lý vận hành và giám sát ngày càng được phổ biến trong các
nhà máy, xí nghiệp và các dây chuyền sản xuất,… để đáp ứng nhu cầu đó thì càng
ngày càng có nhiều thiết bị chấp hành hay thiết bị điều khiển như PLC,biến tần,…
được tích hợp sẵn các giao thức mạng như: Profibus, can, modbus, zigbee,simatic
net,...
Trên cơ sở đã được học trong môn: Thiết kế ngoại vi và kĩ thuật ghép nối và
ứng dụng từ các môn học khác, chúng em đã chọn đề tài tìm hiểu về Giao tiếp
Modbus-Tcp. Với mục đích là tìm hiểu về các giao thức giao tiếp Modbus, nâng
cao kiến thức của mình.
Do kiến thức còn hạn hẹp và thời gian thực hiện khơng nhiều nên đề tài của
chúng em cịn nhiều sai sót và hạn chế. Chúng em mong có được sự đóng góp và
sửa chữa của cô để đề tài của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn cô Trần Thị Thuý Hà – giảng viên bộ môn
Thiết kế ngoại vi và kĩ thuật ghép nối đã hướng dẫn chúng em để chúng em có thể
hoàn thành tốt đề tài này.
Page 4 of 44
5 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
PHẦN 1: CHUẨN GIAO TIẾP MODBUS TCP/IP
I.
Modbus là gì ?
1. Lịch sử hình thành
Modbus được thiết kế vào năm 1979 bởi hãng Modicon (sau này thuộc
Schneilder Automation). Hiện nay, Modbus là một trong những giao thức phổ biến
nhất được sử dụng trong hệ thống điều khiển công nghiệp. Theo khảo sát hiện tại
bởi “American Control Engineering magazine”, 40% số hệ thống điều khiển công
nghiệp quan trọng được triển khai bằng giao thức Modbus. Thành công của
Modbus là nhờ nó tương đối dễ sử dụng, là một tiêu chuẩn mở, được phân phới
miễn phí và được hỗ trợ rộng rãi bởi các thành viên của tổ chức Modbus, vẫn cịn
hoạt đợng đến ngày nay.
2. Khái niệm Modbus
a) Khái niệm
Modbus hay MODBUS là một giao thức truyền thông ở tầng Application theo
mơ hình OSI. Các thiết bị Modbus giao tiếp bằng kỹ thuật master-slave (clientserver) trong đó chỉ một thiết bị (the master/client) có thể khởi chạy giao dịch
(được gọi là truy vấn). Các thiết bị khác (slaves/servers) phản hồi bằng cách cung
cấp dữ liệu được yêu cầu cho thiết bị chính hoặc bằng cách thực hiện hành đợng
được yêu cầu trong truy vấn. Modbus được Modicon (nay là Schneider Electric)
xuất bản vào năm 1979 để sử dụng với các bợ PLC của chính hãng này. Modbus
sau đó đã trở thành một giao thức truyền thông tiêu chuẩn de facto và là một
phương tiện phổ biến để kết nối các thiết bị điện tử công nghiệp.
Page 5 of 44
6 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Hình 1.Mô hình tổng quan quá trình giao tiếp của Modbus RTU
Giao thức Modbus sử dụng các cổng truyền thông nối tiếp, Ethernet hoặc
bộ giao thức Internet làm lớp truyền tải (transport layer) để hỗ trợ giao tiếp truyền
và nhận từ nhiều loại bus hoặc mạng khác nhau.
b) Kỹ thuật Master-Slaves Modbus
Thiết bị phụ (Slaves) là bất kỳ thiết bị ngoại vi nào (bộ chuyển đổi I / O, ổ
đĩa mạng hoặc thiết bị đo lường khác) xử lý thông tin và gửi đầu ra của nó đến thiết
bị chính bằng Modbus.
Thiết bị chính (Master) là mợt thiết bị hoặc mợt quy trình điều khiển các thiết
bị hoặc quy trình khác. Hướng của điều khiển ln ln chuyển từ chủ sang nô lệ.
Master có thể giải quyết các slaves riêng lẻ hoặc có thể bắt đầu một tin nhắn quảng
bá cho tất cả các slaves. Các slaves không tự khởi tạo thông báo, chúng chỉ trả lời
các truy vấn từ master. Truy vấn của master sẽ bao gồm slave address (hoặc
broadcast address), mọi dữ liệu bắt buộc và trường kiểm tra lỗi. Phản hồi của
Slaves bao gồm các trường xác nhận hành động đã thực hiện, mọi dữ liệu sẽ được
trả lại và trường kiểm tra lỗi. Lưu ý rằng cả truy vấn và phản hồi đều bao gồm địa
chỉ thiết bị, mã chức năng, cùng với dữ liệu áp dụng và trường kiểm tra lỗi. Nếu
không có lỗi xảy ra, phản hồi của slaves chứa dữ liệu theo yêu cầu. Nếu lỗi xảy ra
trong truy vấn nhận được hoặc slaves không thể thực hiện hành động được yêu cầu,
slaves sẽ trả về một thông báo ngoại lệ dưới dạng phản hồi của nó.
Page 6 of 44
7 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
c) Cơ chế giao tiếp
MODBUS là một hệ thống “chủ - tớ”, “chủ” được kết nối với một hay nhiều
“tớ”. “Chủ” thường là một PLC, PC, DCS, hay RTU. “Tớ” MODBUS RTU thường
là các thiết bị hiện trường, tất cả được kết nối với mạng trong cấu hình multi-drop.
Khi mợt chủ MODBUS RTU ḿn có thơng tin từ thiết bị, chủ sẽ gửi một thông
điệp về dữ liệu cần, tóm tắt dò lỗi tới địa chỉ thiết bị. Mọi thiết bị khác trên mạng sẽ
nhận thông điệp này nhưng chỉ có thiết bị nào được chỉ định mới có phản ứng.
Hình 2. Cơ chế giao tiếp của Modbus
d) Cấu trúc gói tin
Page 7 of 44
8 Báo cáo môn học: Thiết bị ngoại vi và kĩ tḥt ghép nới
Hình 3. Cấu trúc gói tin Modbus
Các đối tượng dữ liệu
Hình 4. Các đối tượng dữ liệu Modbus
Mơ hình địa chỉ:
Hình 5. Mơ hình địa chỉ Modbus
3. Các chuẩn Modbus phổ biến
Page 8 of 44
9 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Hiện nay, có 03 chuẩn modbus đang được sử dụng phổ biến trong công
nghiệp - tự động hóa là: Modbus RTU, Modbus ASCII, Modbus TCP. Ba chuẩn này
có điểm giống nhau là tất cả tất cả thông điệp được gửi dưới cùng một format.
Modbus RTU
Dữ liệu được mã hóa theo hệ nhị phân, và chỉ cần một byte truyền thông cho
một byte dữ liệu. Đây là giao thức truyền thơng lí tưởng đới với RS232 hay
RS485(các kết nối cổng COM vật lý), tốc độ từ 1200 đến 115000 baud.
Modbus ASCII
Mọi thông điệp được mã hóa bằng hexadecimal, sử dụng đặc tính ASCII 4 bit.
Đới với mỗi một byte thông tin, cần có 2 byte truyền thông, gấp đôi so với
MODBUS RTU hay MODBUS TCP. Tuy nhiên, MODBUS ASCII chậm nhất trong
số 3 loại giao thức, nhưng lại phù hợp với modem điện thoại hay kết nới sử dụng
sóng radio bởi ASCII sử dụng các tính năng phân định thơng điệp. Nhờ tính năng
phân định này, mọi rắc rối trong phương tiện truyền dẫn sẽ không làm thiết bị nhận
dịch sai thông tin. Điều này rất quan trọng khi đề cập đến các giao thức truyền
thông cho các modem cần đợ chính xác thơng tin cao, điện thoại di động, nhiễu âm
thanh hay các phương tiện truyền thông chuyên dụng khác.
Modbus TCP
MODBUS TCP là MODBUS qua Ethernet (RJ45). Với MODBUS TCP, dữ liệu
MODBUS được tóm lược đơn giản trong một gói TCP/IP. Nói một cách đơn giản,
đây như là một thông điệp của Modbus RTU được truyền bằng trình bao bọc
TCP/IP và được gửi qua mạng thay vì các đường nới tiếp. Máy chủ khơng có
SlaveID vì nó sử dụng địa chỉ IP.
II.
Modbus – TCP/IP
1. Bộ giao thức TCP/IP là gì ?
Page 9 of 44
10 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
TCP (Transmission Control Protocol - "Giao thức điều khiển truyền vận") là một
trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các ứng dụng
trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó
chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển giao
dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự.
Internet Protocol (viết tắt: IP, có nghĩa là Giao thức Internet) là một giao thức
hướng dữ liệu được sử dụng bởi các máy chủ nguồn và đích để truyền dữ liệu trong
mợt liên mạng chuyển mạch gói.
Bộ giao thức TCP/IP, (TCP/IP protocol suite) hay cịn gọi là bợ giao thức
Internet (Internet protocol suite hoặc IP suite) là mợt mơ hình khái niệm
(conceptual model) và một tập hợp các giao thức truyền thông dùng trong mạng
Internet và các hệ thớng mạng máy tính tương tự. Tên gọi TCP/IP đến từ hai giao
thức nền tảng của bộ giao thức là TCP (Transmission Control Protocol) và IP
(Internet Protocol).
2. Định nghĩa Modbus TCP
Modbus TCP thường được gọi với cái tên là Modbus truyền qua Ethernet. Modbus
TCP (cũng là ModbusTCP / IP) chỉ đơn giản là giao thức Modbus RTU với giao
diện TCP chạy trên Ethernet. Trong đó, thì cấu trúc truyền tin Modbus là giao thức
ứng dụng xác định các quy tắc tổ chức dữ liệu độc lập với phương tiện truyền dữ
liệu. TCP / IP cho phép giao thức điều khiển truyền và Giao thức Internet, cung cấp
phương tiện truyền dẫn cho việc nhắn tin Modbus TCP / IP.
TCP phải được thiết lập kết nối trước khi truyền dữ liệu, vì nó là giao thức
dựa trên kết nối. Master (hoặc Client trong Modbus TCP) thiết lập kết nối với Slave
(hoặc Server). Server chờ một kết nối đến từ Client. Sau khi kết nối được thiết lập,
Server sẽ phản hồi các truy vấn từ Client cho đến khi Client ngắt kết nối.
3. Tại sao nên kết hợp Modbus với Ethernet?
Page 10 of 44
11 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
IEEE 802.3 Ethernet là một giao thức mạng văn phòng lâu đời có đã được
toàn thế giới chấp nhận. Nó cũng là một tiêu chuẩn mở là được hỗ trợ bởi nhiều nhà
sản xuất và cơ sở hạ tầng của nó có sẵn rộng rãi và được cài đặt phần lớn. Do đó,
bộ giao thức TCP / IP của nó được sử dụng trên toàn thế giới và thậm chí đóng vai
trị là nền tảng để tiếp cận với World Wide Web. Vì nhiều thiết bị đã hỗ trợ
Ethernet, nên việc tăng cường nó để sử dụng trong các ứng dụng công nghiệp.
Cũng giống như với Ethernet, Modbus có sẵn miễn phí, bất kỳ ai cũng có thể truy
cập và được hỗ trợ rộng rãi bởi nhiều nhà sản xuất thiết bị công nghiệp. Nó cũng là
dễ hiểu và là một ứng cử viên tự nhiên để sử dụng trong việc xây dựng tiêu chuẩn
giao tiếp công nghiệp. Với rất nhiều điểm chung, sự kết hợp của giao thức ứng
dụng Modbus với IEEE 802.3 truyền thống. Ethernet tạo thành một tiêu chuẩn
truyền thông công nghiệp mạnh mẽ trong Modbus TCP / IP. Và bởi vì Modbus TCP
/ IP chia sẻ cùng một vật lý và các lớp liên kết dữ liệu của IEEE 802.3 Ethernet
truyền thống và sử dụng. Bộ giao thức TCP / IP, nó vẫn hoàn toàn tương thích với
đã lắp đặt cơ sở hạ tầng Ethernet của cáp, đầu nối, giao diện mạng thẻ, trung tâm và
công tắc.
4. Kiến trúc sever/client của Modbus TCP
Khác với RTU được kết nối theo phương thức dây truyền (daisy chain
network), các điểm hoạt động với cùng 1 tốc đợ baute và khơng thể kết nới dưới
dạng hình sao.
Page 11 of 44
12 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Hình 6. Phương thức kết nối Modbus RTU
Nhưng đối với Modbus TCP/IP lại được sử dụng cáp ethernet thông thường
và các bộ Switch để giao tiếp với nhau.
Hình 7. Phương thức kết nối Modbus TCP/IP
Page 12 of 44
13 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
5. Cách lưu trữ dữ liệu trong Modbus
Mơ hình dữ liệu Modbus có cấu trúc đơn giản chỉ phân biệt giữa bốn kiểu dữ
liệu cơ bản như sau:
Hình 8. Vị trí lưu trữ dữ liệu của Modbus
Discrete Input (Đầu vào rời rạc)
Giá trị rời rạc (On/Off)
Coil (Đầu ra)
Input Regsister (Dữ liệu đầu vào)
Giá trị liên tục (16 bit )
Holding Regsister (Dữ liệu đầu ra)
Đồng thời với mỗi bảng dữ liệu lại có một bảng chỉ đọc và một bảng đọc/ghi.
Các thanh ghi Modbus của một thiết bị được tổ chức xung quanh bốn kiểu tham
chiếu dữ liệu cơ bản đã nêu ở trên và kiểu dữ liệu này được xác định thêm bằng số
đứng đầu của địa chỉ tham chiếu như sau:
Page 13 of 44
14 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Function
code
0xxx
1xxx
3xxx
4xxx
Mô tả
Ghi các đầu ra coil hoặc Discrete Input. Địa chỉ tham
chiếu 0x được sử dụng để truyền dữ liệu đầu ra sang
kênh đầu ra kỹ thuật số.
Đọc đầu vào rời rạc. Trạng thái BẬT / TẮT của địa chỉ
tham chiếu 1x được điều khiển bởi kênh đầu vào kỹ
thuật số tương ứng.
Đọc thanh ghi đầu vào. Thanh ghi tham chiếu 3x chứa
số 16 bit nhận được từ nguồn bên ngoài — ví dụ tín hiệu
tương tự.
Đọc / ghi đầu ra hoặc giữ thanh ghi. Một thanh ghi 4x
được sử dụng để lưu trữ 16 bit dữ liệu số (nhị phân hoặc
thập phân), hoặc để gửi dữ liệu từ CPU đến một kênh
đầu ra.
Bảng II.5.2 Function code
Function code là các mã số đơn giản, cho các thiết bị con biết nên truy cập
vào bảng nào, đọc hay ghi vào bảng đó.
Ký tự “x” theo sau ký tự đầu đại diện cho vị trí địa chỉ gồm bốn chữ số trong
bộ nhớ dữ liệu người dùng.
Ký tự đứng đầu thường được hàm ý bởi mã hàm và được bỏ qua từ mã định
địa chỉ cho một hàm nhất định. Ký tự đứng đầu cũng xác định kiểu dữ liệu
I/O.
6. Cấu trúc gói dữ liệu của Modbus TCP
a) Cấu trúc gói dữ liệu
Modbus TCP nhúng một thông điệp (khung dữ liệu) Modbus chuẩn vào phần
dữ liệu của gói TCP mà không có sự kiểm tra, xác thực giao thức Modbus. Phần
kiểm lỗi (checksum) của Modbus không được sử dụng, thay vào đó sử dụng kiểm
lỗi của TCP/IP để bảo toàn dữ liệu. Mã hàm và dữ liệu của Modbus được chuyển
Page 14 of 44
15 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
thành phần dữ liệu của TCP, không có bất kỳ thay đổi nào và bổ sung thêm 7byte ở
phía trước chia thành 4 trường sau:
Transaction Identifier (2 bytes): được sử dụng để phân biệt các thông điệp khi
có nhiều thông điệp khác nhau truyền đi từ một kết nối TCP.
- l Protocol Identifier (2 bytes): trường này luôn đặt bằng 0 với Modbus, các
giá trị khác mở rộng cho tương lai.
- l Length (2 bytes): cho biết đợ dài của các trường cịn lại gồm Unit ID,
Function code, Data.
- l Unit ID (1 byte): có giá trị từ 0-255, sử dụng để nhận dạng các thiết bị trong
mạng Modbus TCP có ý nghĩa như trường địa chỉ (address) trong Modbus
chuẩn.
Phần PDU của RTU được giữ nguyên có dạng:
- Trường mã chức năng (function code) : thường được mã hóa băng 1 byte. Mã
chức năng có giá trị hợp lệ nằm trong phạm vi 1 … 255 thập phân (128-255
được dành riêng và được sử dụng cho các phản hồi ngoại lệ). Khi một thông
điệp được gửi từ Client đến Server, mã chức năng này sẽ cho Server biết loại
hành động nào sẽ thực hiện.
- Trường dữ liệu (Data field): được gửi từ Client đến Server chứa thông tin bổ
sung mà Server sử dụng để thực hiện hành động được xác định bởi mã chức
năng. Dữ liệu này có thể bao gồm các mục như địa chỉ đăng ký, số lượng
mục cần xử lý và số byte dữ liệu thực tế trong trường.
Page 15 of 44
16 Báo cáo môn học: Thiết bị ngoại vi và kĩ tḥt ghép nới
Hình 9. So sánh cấu gói dữ liệu cảu Modbus TCP/IP với Modbus RTU
b) Ví du
Một gói tin Modbus TCP được gửi đi như sau: 0001 0000 0006 11 03 006B 0003
0001 0000 0006 11 : Là gói truyền tin MBAP header
03 : Function code đọc một dãy thanh ghi đầu ra tương tự (Analog Output
Holding Registers)
006B : Địa chỉ dữ liệu của thanh ghi đầu tiên được yêu cầu, máy tính sẽ đặt
thanh ghi số 1 là mốc, địa chỉ được truy suất sẽ tính từ thanh ghi đó.
(40108-40001 = 107 = 6B hex)
0003 : Tổng số thanh ghi được yêu cầu. (đọc 3 thanh ghi 40108 đến 40110)
7. Cách mã hoá dữ liệu 32 bit
Bản thân giao thức được thiết kế dựa trên các thiết bị có độ dài thanh ghi 16bit. Do đó, cần phải xem xét đặc biệt khi triển khai các phần tử dữ liệu 32-bit như
float và int. Việc triển khai này giải quyết bằng việc sử dụng hai thanh ghi 16 bit
Page 16 of 44
17 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
liên tiếp để biểu diễn 32 bit dữ liệu hoặc về cơ bản là 4 byte dữ liệu và sau đó được
kết hợp lại thành giá trị thực 32 bit bằng cách sao chép hai thanh ghi 16 bit liền kề
sang một giá trị số nguyên 32 bit.
Hình 10. Mã hoá dữ liệu 32 bit
I.
Ứng dung thực tế của Modbus TCP/IP
1. Ứng dung của Modbus TCP/IP trong thực tế
a) Trong công nghiệp
Trên thị trường hiện nay, phần lớn các dịng thiết bị điều khiển và tự đợng hóa
đều được hỗ trợ chuẩn truyền thơng Modbus. Điển hình như là cảm biến nhiệt độ,
cảm biến áp suất, đồng hồ điện năng, PLC, biến tần…Và bên cạnh đó với sự phát
triển ngày càng lớn mạnh của cộng đồng IoT thì càng có nhiều thiết bị điện-điện tử
đã và đang sử dụng chuẩn Modbus. Ta khơng cịn quá xa lạ với các hãng đình đám
như : Schneider, Mitsubishi, ABB, Siemens, Omron, Selec, IFM…
Page 17 of 44
18 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Hình 11. Một số sản phẩm trên thị trường đang sử dụng chuẩn Modbus
b) Trong hệ thống IOT
Giao thức thường được sử dụng trong IoT như một giao diện cục bợ để quản
lý thiết bị chính là Modbus. Nói cách khác, Modbus cũng là giao thức truyền thông
phổ biến nhất trong việc xây dựng hệ thống tự động hóa công nghiệp và là phương
tiện phổ biến nhất hiện có để kết nối các thiết bị điện tử tự động, được gọi chung đó
là IoT (Internet of Things). Tại sao điều đó lại xảy ra? Tại sao Modbus lại có tác
động đến ngành Tự động hóa Công nghiệp cũng như IoT đến mức nó tồn tại cho
đến ngày nay như một trong những mạng công nghiệp hàng đầu của thế kỷ 21? Có
một số lý do.
Modbus là tiêu chuẩn fieldbus đầu tiên được chấp nhận rộng rãi. Trong một
thời gian ngắn, hàng trăm nhà cung cấp đã triển khai hệ thống truyền tin Modbus
trong thiết bị của họ và Modbus đã trở thành tiêu chuẩn thực tế cho các mạng
truyền thông công nghiệp.
Lớp truyền tải dữ liệu cho các lệnh Modbus RTU cũng đơn giản để hiểu. Nó
sử dụng RS485, một tiêu chuẩn giao tiếp khác biệt hỗ trợ tới đa 32 nút trong cấu
hình bus nhiều điểm. RS485 cung cấp khả năng chống ồn vượt trội so với tiêu
chuẩn điện RS232.
Page 18 of 44
19 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Modbus thực hiện một trao đổi dữ liệu rất đơn giản. Mục đích chính của nó
chỉ đơn giản là di chuyển dữ liệu giữa thiết bị Master (Client trong Modbus TCP)
và thiết bị Slave (Server trong Modbus TCP).
Một lý do khác khiến Modbus rất thành công là thực tế là nó có thể dễ dàng
hiểu được bởi những người khơng phải là lập trình viên. Các kỹ sư chế tạo máy dán
keo, máy đo, thiết bị đo lường, v.v. có thể dễ dàng hiểu khái niệm về cuộn dây /
thanh ghi và các lệnh đơn giản để đọc và viết chúng.
Tóm lại: Trong khi các giao thức truyền thông thay thế ‘hiện đại hơn’ đang tồn tại
và đang được phát triển, Modbus chắc chắn sẽ tồn tại trong mợt thời gian dài trong
tương lai và thậm chí có thể lâu hơn chúng ta nghĩ.
2. Tính bảo mật của Modbus TCP
a) Các lỗ hổng bảo mật
Thiếu bảo mật: Tất cả các tin nhắn Modbus được truyền đi dưới dạng văn
bản rõ ràng trên phương tiện truyền thông. Bằng một cách nào đó một kẻ tấn công
có thể lắp đặt một thiết bị thu phát vào mạng Modbus. Kẻ tấn công có thể đọc được
toàn bộ nội dung tin nhắn từ đó thực hiện các hành vi phá hoại.
Thiếu tính toàn vẹn: Khơng kiểm tra được tính toàn vẹn trong giao thức
ứng dụng Modbus TCP/IP (vì đã bỏ đi Error Check CRC). Một kẻ tấn công có thể
đưa ra các yêu cầu đến Master hoặc Slave, từ đó hoàn toàn có thể đưa vào mạng
các tin nhắn không hợp lệ gây ra lỗi mạng.
Thiếu xác thực: Không có xác thực ở bất kỳ cấp độ nào của giao thức
Modbus. Tất cả các thiết bị Modbus đều không cần xác thực quyền truy cập vào
mạng. Một kẻ tấn công nào có thể đưa một thiết bị khác vào mạng Modbus có sẵn
mà không cần xác thực.
Khung đơn giản: Modbus TCP/IP sử dụng TCP/IP và Ethernet để mang dữ
liệu của cấu trúc tin nhắn Modbus giữa các thiết bị tương thích với chuẩn mạng
(TCP/IP). Tin nhắn Modbus có kích cỡ giới hạn là 256 byte. Nếu kẻ tấn công đưa
Page 19 of 44
20 Báo cáo môn học: Thiết bị ngoại vi và kĩ tḥt ghép nới
vào các tin nhắn lỗi có kích thước vượt quá kích thước cho phép có thể gây nên tình
trạng buffer overflow.
Hệ thớng điều khiển tích hợp nhiều giao thức truyền thông khác nhau được
kết nối với Modbus để truyền nhận dữ liệu phục vụ chức năng điều khiển giám sát
thiết bị sản xuất. Một kẻ tấn công có thể thông qua giao thức khác để truy cập vào
dữ liệu và tín hiệu của thiết bị sử dụng Modbus để thực hiện các hành vi phá hoại.
Trong các hệ thống sử dụng Modbus, các trạm điều khiển có chức năng sử
dụng giống nhau thường sử dụng chung một thiết kế. Một kẻ tấn công có thể dùng
những thông tin có sẵn từ trạm điều khiển này để tấn công vào một trạm điều khiển
khác có chức năng lặp lại.
Các thiết bị điều khiển, thiết bị mạng… thường có thể truy cập vào, vì tên và
mật khẩu truy cập để mặc định của nhà sản xuất. Kẻ tấn công có thể dùng các thông
tin để thâm nhập vào mạng Modbus và thực hiện các hành động phá hoại.
Số lượng kết nối Modbus cho phép nhiều hơn thực tế sử dụng. Trong thực tế
sử dụng người dùng để mặc định cài đặt của nhà sản xuất cho phép số lượng tối đa
các thiết bị kết nối, một kẻ tấn công có thể thâm nhập vào, sử dụng các địa chỉ kết
nối chưa dùng đến và thực hiện các hành động phá hoại.
Hệ thống công nghiệp không thường xuyên được cập nhật hoặc cập nhật
chậm hoặc không đồng bộ hóa phần mềm. Kẻ tấn công có thể tận dụng lỗ hổng của
các phiên bản cũ, thâm nhập vào hệ thống để thực hiện các hành vi phá hoại. Điều
này đúng với mọi giao thức trong môi trường công nghiệp nói chung, không chỉ với
riêng Modbus.
b) Giải pháp cho vấn đề bảo mật
Cơ chế bảo mật trên giao thức Modbus TCP được thực hiện như sau:
Page 20 of 44
21 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Hình 12. Quá trình bảo mật cho giao thức Modbus TCP
Trường S (2byte): Là mã số định danh thông điệp mỗi thông điệp gửi đi, có
một mã số khác nhau, giúp chống lại các tấn công phát lại thông điệp.
Trường CRC: Là hàm băm CRC 16bit (với đa thức sinh là: x16 + x2+ x) của
các trường: S, mã hàm, dữ liệu. 16bit mã CRC được chèn vào cuối thông điệp
để tạo cơ chế xác thực, chống sửa đổi gói tin.
Lưu ý các thông điệp của Modbus đã được giao thức TCP/IP truyền tải đảm
bảo chính xác khơng bị lỗi nên mục đích của trường CRC ở đây không để kiểm tra
lỗi truyền thông điệp mà dùng cho mục đích xác thực, phát hiện việc sửa đổi thông
điệp.
Giao thức Modbus TCP thực hiện trao đổi thông điệp giữa Master và Slave
theo cơ chế yêu cầu/đáp ứng. Master thực hiện mã hóa toàn bộ các trường S, mã
hàm, dữ liệu và mã CRC bằng khóa bí mật SCk (chỉ Master và Slave có), rồi gửi
cho Slave. Slave nhận được thông điệp mã hóa tiến hành giải mã bằng khóa SCk,
sau đó tính lại CRC và so sánh với CRC của thông điệp nhận được, tiếp đến kiểm
tra mã số định danh thông điệp S có trùng với thông điệp cũ khơng, nếu tất cả hợp
lệ thì lọc ra mã hàm, dữ liệu để quyết định trả lời yều cầu của Master. Slave trả lời
Page 21 of 44
22 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Master cũng tiến hành tương tự nhưng khác 1 điểm là mã định danh thông điệp
không được Slave tạo ra mà lấy từ thông điệp của Master và tăng thêm một đơn vị.
Quá trình giao tiếp giữa Master và Slave đảm bảo được một số tính chất
sau:
Tính bí mật: tất cả thơng điệp trao đổi giữa Master và Slave đều được mã hóa
AES-128 bit chỉ có Master, Slave có khóa bí mật SCk nên bất kỳ bên thứ 3 nào có
được thông điệp trung gian đều không thể giải mã được nội dung do không có khóa
SCK.
Tính chứng thực: Được thực hiện do kết hợp giữa mã CRC của thông điệp và
mã hóa toàn bộ thông điệp trước khi truyền đi. Khi Slave nhận được thơng điệp tiến
hành giải mã và tính lại CRC của thông điệp nếu khớp với CRC của thông điệp gửi
đi thì chắc chắn thơng điệp đó là của Master. Tính chứng thực này chớng lại được
tất cả các hình thức tấn công mạo danh Master gửi lệnh cho Slave.
Tính toàn vẹn gói tin: giả sử mợt bên thứ 3 nhận được thông điệp trung gian
(bản mã) muốn sửa đổi nội dung thông điệp nhưng do không có khóa bí mật SCk
để giải mã, rồi sửa nợi dung, tính lại CRC, mã hóa lại gửi cho Slave nên buộc phải
sửa đổi bản mã theo một cách nào đó khác, do vậy khi Slave nhận được thông điệp
này, nó sẽ giải mã và tính lại CRC sẽ thấy khơng khớp với CRC của thông điệp gửi
đi, từ đó biết được nội dung thông điệp đã bị thay đổi.
Chống lặp lại: mỗi thông điệp gửi đi, trước khi mã hóa Master chèn mã số
định danh thông điệp (khác nhau mỗi lần truyền) vào trường S, do đó gây khó khăn
cho bên thứ 3 muốn giải mã, thu thập thông tin từ các thông điệp.
Không từ chối: do cả Master và Slave đều có khóa 21 4(1) 1.2016 bí mật
SCk nên về lý thuyết, một thông điệp gửi đi không kết luận được chính xác của
Master hay Slave.
3. Những lưu ý khi sử dung Modbus
Page 22 of 44
23 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Không sử dụng Modbus nếu bạn cần bất kỳ phản hồi theo hướng Event nào.
Bởi vì Modbus không thực hiện các sự kiện. Modbus Master (RTU) hoặc Modbus
Client (TCP) chỉ đơn giản gửi yêu cầu và nhận phản hồi. Đây không phải là những
mạng có thể nhanh chóng phản ứng kịp với tình trạng báo đợng.
Không sử dụng Modbus để truyền dữ liệu nhạy cảm. Modbus không hỗ trợ
bất kỳ loại bảo mật nào. Bất kỳ ai có quyền truy cập vào mạng đều có thể đọc dữ
liệu được truyền trên mạng.
Không sử dụng Modbus nếu bạn có nhiều dữ liệu cần truyền. Các gói được
giới hạn tối đa khoảng 120 byte. Nó không hiệu quả đới với bất kỳ hình thức truyền
dữ liệu lớn nào. Đề xuất đó không thay đổi đối với Modbus TCP. Mặc dù Modbus
TCP được chứa trong một gói TCP, bạn chỉ có thể chuyển cùng 120 byte trong một
thông điệp Modbus.
Không sử dụng Modbus trong các ứng dụng điều khiển. Modbus chỉ là một
giao thức điều khiển “ok”.
Modbus rất phù hợp cho các ứng dụng điều khiển nhỏ, nơi cần chuyển một
lượng nhỏ dữ liệu từ điểm A đến điểm B. Nó u cầu ít khơng gian mã và hầu như
khơng có RAM, vì vậy nó hoàn hảo cho các ứng dụng nhúng nhỏ.
Khắc phục sự cố Modbus có thể được chia thành hai phần chung, Modbus
TCP/IP và Modbus nối tiếp. Khắc phục sự cố Modbus TCP / IP có thể được chia
thành khắc phục sự cố mạng, chẳng hạn như bạn phải đảm bảo rằng các gói
Modbus TCP / IP Ethernet với dữ liệu không có lỗi được đến và đi từ nơi chúng
được cho là phải đến để thực hiện các giao dịch mong muốn.
Modbus — loại Modbus, RTU / ASCII, tốc độ truyền, ký tự bắt đầu, chẵn lẻ,
ký tự kết thúc, thời gian giữa các bản tin, điện trở kết thúc tại chỗ, v.v. có thể đúng.
Điều này cho phép trình khắc phục sự cớ tập trung vào những gì đã thay đổi trên
Page 23 of 44
24 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
liên kết, chẳng hạn như (các) thiết bị mới, hệ thống dây điện đã sửa đổi hoặc thay
đổi, hệ thống dây điện mới gần hệ thống dây điện hiện có, v.v. Nếu cài đặt là một
cài đặt mới, hệ thớng dây điện và cấu hình Modbus đới với tất cả các thiết bị
Modbus trên liên kết nên được kiểm tra kỹ và đảm bảo rằng nó phù hợp với tài liệu
và hướng dẫn liên kết Modbus.
PHẦN 2: ỨNG DỤNG CÁC CHUẨN KẾT NỐI
XÂY DỰNG HỆ THỐNG ĐIỂM DANH TỰ
ĐỘNG
I.
TỔNG QUAN VỀ VI ĐIỀU KHIỂN ESP8266
1. Giới thiệu về ESP8266
ESP8266 là một vi mạch trong gói QFN có khả năng của cả bộ TCP/IP và bộ vi điều
khiển. ESP8266 cung cấp giải pháp WiFi tích hợp cao đáp ứng nhu cầu của các ứng
dụng IoT (Internet of Things) như chi phí thấp, sử dụng năng lượng hiệu quả, hiệu suất
đáng tin cậy và thiết kế nhỏ gọn. Nó được sản xuất bởi Espressif Systems ở Thượng Hải,
Trung Quốc.
Module này cho phép các vi điều khiển kết nối với mạng Wi-Fi và thực hiện các kết
nối TCP/IP đơn giản bằng cách sử dụng các lệnh kiểu Hayes (tập lệnh AT). Tuy nhiên,
ban đầu hầu như không có tài liệu tiếng Anh nào về chip và các tập lệnh của nó. Vì mức
giá rất thấp với rất ít thành phần bên ngoài khác trên module, các module ESP8266 đã thu
hút nhiều hacker khám phá nó và các phần mềm trên đó, cũng như việc dịch thuật các tài
liệu tiếng Trung Q́c của chip.
ESP8266 dựa trên dịng L106 Diamond của Tensilica, là bộ xử lý 32-bit và có SRAM
trên chip. Đồng thời tích hợp module nguồn, balun RF, bợ thu và phát RF, bộ thu và phát
tương tự, băng tần số, bộ khuếch đại, bộ lọc và một số thành phần tối thiểu khác.
Page 24 of 44
25 Báo cáo môn học: Thiết bị ngoại vi và kĩ thuật ghép nối
Hình 13: Các phiên bản module của ESP8266
2. Kit phát triển ESP8266 NodeMCU
ESP8266 NodeMCU (Node MicroController Unit) là một môi trường phát triển phần
mềm và phần cứng mã nguồn mở được xây dựng trên một hệ thống trên chip (SoC) được
gọi là ESP8266. ESP8266, được thiết kế và sản xuất bởi Espressif Systems, chứa các
thành phần quan trọng của mợt máy tính: CPU, RAM, mạng (WiFi), thậm chí cả hệ điều
hành và SDK hiện đại.
Board mạch thu phát wifi ESP8266 NodeMCU với kích thước nhỏ gọn, giá rẻ được
dùng nhiều cho các thiết bị IoT, các ứng dụng cần kết nối mạng wifi.
Sơ đồ chân kết nối
Một điều quan trọng cần lưu ý về ESP8266 là số GPIO không khớp với nhãn trên
màn lụa của bo mạch. Ví dụ, D0 tương ứng với GPIO16 và D1 tương ứng với GPIO5.
Bảng bên dưới cho thấy sự tương ứng giữa các nhãn trên màn lụa và số GPIO cũng như
những chân nào là tốt nhất để sử dụng trong mạch và những chân nào cần phải thận trọng.
Page 25 of 44