You are on page 1of 12

PTN TIN HỌC CÔNG Bài 2: ModBus

NGHIỆP
BM Kỹ thuật đo & THCN
Viện Điện

Danh sách nhóm sinh viên thí nghiệm


TT Họ và tên Lớp
1
2
3
4
5

I. Mục đích bài thí nghiệm:


- Tìm hiểu về giao thức modbus.
- Biết về các khung bản tin và quá trình trao đổi dữ liệu trong modbus.
- Kiểm nghiệm thực tế cấu trúc khung bản tin modbus.
II. Kiến thức cơ bản của Modbus:
Modbus Protocol sử dụng chế độ Master/Slave (hoặc Client/Server trong Ethernet) theo
phương thức truyền nối tiếp RS-232 hoặc RS-485.
Chế độ giao tiếp là yêu cầu/trả lời, chỉ có Master mới được quyền gửi yêu cầu, slave nào
nhận được yêu cầu dành cho mình sẽ thực hiện.
Trong khung bản tin của mạng Modbus chuẩn sẽ gồm 4 trường chính theo thứ tự: trường
địa chỉ, trường mã hàm, trường dữ liệu, trường kiểm tra lỗi. Master gửi bản tin có trường địa chỉ
nằm đầu tiên, địa chỉ này chỉ tới thiết bị cần ra yêu cầu. Slave sẽ kiểm tra bus liên tục đến khi
nhận được địa của mình. Lúc này slave sẽ kiểm tra mã hàm để xem yêu cầu cần thực hiện, ngoài
ra còn có thông tin bổ trợ để thực hiện yêu cầu đó trong trường dữ liệu. Cuối cùng là thông tin về
lỗi trong trường kiểm tra lỗi để xem bản tin nhận được có chính xác không.
 Hai thành phần chính của Modbus Protocol là trường dữ liệu và trường mã hàm,
hai thành phần còn lại sẽ bỏ đi khi truyền trong mạng cấp cao hơn:

ADU: Applicantion Data Unit


PDU: Protocol Data Unit
 Kích thước lớn nhất có thể có khi truyền bằng đường truyền RS-485 là 256 byte
tương ứng với lớp ADU. Do đó lớp PDU có tối đa:
256 – 1 byte địa chỉ – 2 byte check lỗi =253 byte
Nếu phát hiện lỗi truyền trong bản tin, bên nhận sẽ dừng truyền. Quá một thời gian trễ nào
đó (timeout) đã được quy định, Master sẽ coi là có lỗi và quyết định hành động phù hợp. Trong
trường hợp đặc biệt, slave nhận được thông báo không có lỗi nhưng vì một lí do khác, nó không
thể thực hiện được yêu cầu, một thông báo theo kiểu “exception response” sẽ được tạo ra và gửi
cho Master để Master định đoạt hành động tiếp theo.
Master có thể gửi bản tin yêu cầu tới riêng một Slave nào đó bằng cách đưa địa chỉ Slave
đó vào trường địa chỉ hoặc gửi bản tin quảng bá tới tất cả các Slave (đưa giá trị 0 vào trường địa
chỉ), lúc này Slave sẽ không gửi bản tin trả lời.
Ngoài mạng chuẩn một Master và nhiều slave, hai controller có thể nối point-to-point sử
dụng Modbus Protocol để truyền giao tiếp theo chế độ Token-passing, trong đó thiết bị nào truyền
thì đóng vai trò Master còn thiết bị nhận sẽ đóng vai trò slave. Do vậy có thể liên kết bất kì hai
controller với nhau.
Trong mạng cấp cao hơn, Modbus Protocol sẽ được đính kèm vào khung bản tin mạng cấp
cao hơn, do đó sẽ bỏ đi trường địa chỉ và trường kiểm tra lỗi.
Có hai kiểu định dạng khung bản tin khác nhau: ASCII và RTU, mỗi kiểu có ưu điểm
riêng. Hai kiểu này chỉ dùng với mạng Modbus chuẩn, còn ví dụ một mạng cấp cao khác truyền
song song, không phải phương thức truyền nối tiếp của Modbus thì Modbus Protocol sẽ đính vào
khung bản tin đó theo phương thức khác ta sẽ xét sau.
ASCII:
 Sử dụng mã ASCII (7 bít mỗi kí tự), thông tin được chuyển thành các số hexa rồi
chuyền đi các chuỗi nhị phân ứng với mã ASCII của từng kí tự hexa đó. Nói cách
khác mỗi byte 8 bit của thông tin cần truyền sẽ tách ra chuyển thành hai số hexa,
mỗi số hexa sau đó tuỳ theo mã ASCII mà chuyển thành một chuỗi 7 bit, cuối cùng
chuỗi bit này sẽ được chuyển đi. Ví dụ địa chỉ thanh ghi là 0001 0100 (20 thập
phân) sẽ chuyển thành 1E hexa rồi truyền đi, tức là truyền đi chuỗi nhị phân là mã
ASCII của 1&E (49&69): 0110001 1000101
 Ngoài các trường chính, bản tin được khởi đầu bằng kí tự “:”, kết thúc bằng kí tự 2
“CR+LF”. Các thiết bị kiểm tra bus liên tục đến khi nhận được kí tự “:” thì sẽ bắt
đầu sử lí cho đến khi nhận được 2 kí tự kết thúc “CRLF”.
 Kiểm tra lỗi bản tin bằng phương pháp LRC
 Số lượng bit/byte phân bố như sau
 1 start bit
 7 data bit biểu diễn mã ASCII của một kí tự hexa cần truyền
 có hoặc không 1 bit kiểm tra chẵn lẻ
 1 stop bit (nếu có bit kt chẵn lẻ) hoặc 2 (không có kiểm tra chẵn lẻ).
 Khung bản tin sử dụng ASCII như sau:

RTU:
 Truyền từng 8 bít nhị phân, cũng chuyển thông tin thành các số hexa (mỗi 8 bít
chứa 2 kí tự ASCII). Ví dụ địa chỉ thanh ghi 0001 0100 (20) chuyển thành 1E rồi
truyền, tức là truyền đi chuỗi 8 bit 0001-1110 (1-E).
 Cấu trúc bit truyền 1 byte như sau:
 1 start bit
 8 data bit biểu diễn 2 hexa cần truyền.
 có hoặc không 1 bit kiểm tra chẵn lẻ
 1 stop bit (nếu có bit kt chẵn lẻ) hoặc 2 (không có kiểm tra chẵn lẻ).
 Kiểm tra lỗi bằng phương pháp CRC.
 RTU khởi đầu và kết thúc bằng một khoảng thời gian trễ qui uớc theo từng mạng,
ít nhất là 3.5 lần thời gian truyền một kí tự.
 Khung bản tin có dạng:

 Thiết bị kiểm tra thời gian tĩnh trên bus đến khi >3.5 lần thời gian qui định truyền
1 kí tự thì thông tin nhận được đầu tiên sẽ là trường địa chỉ. Sau đó khi thời gian
trễ quá 3.5 lần thời gian truyền 1 kí tự thì sẽ coi là kết thúc bản tin.
Ta có thể thấy nếu truyền bằng định dạng RTU sẽ tiết kiệm số bít hơn vì 8 bit nhị phân
truyền được 2 kí tự, còn ASCII truyền 2 kí tự mất 7x2=14 bít. Tuy nhiên ASCII có thời gian trễ
giữa 2 bít liền nhau lên tới 1 giây cho nên sẽ ổn định hơn còn RTU phải truyền thông tin thành
một dòng liên tục.
Trường địa chỉ (address field):
 Gồm 2 kí tự hexa, trường địa chỉ kéo dài từ 0 đến 247.
 Master muốn gửi thông tin yêu cầu đến thiết bị nào sẽ đặt địa chỉ của thiết bị đó
vào trường địa chỉ, Slave sau khi thực hiện yêu cầu sẽ gửi bản tin trả lời cho
Master (kể cả trường hợp Slave kiểm tra thấy bản tinyêu cầu có lỗi và gửi phản hồi
báo lỗi) cũng sẽ đặt địa chỉ của mình vào trường địa chỉ.
 Trong trường hợp Master muốn gửi bản tin quảng bá tới tất cả các bản tin, nó sẽ
đặt địa chỉ 0 (00) vào trường địa chỉ.
 Ví dụ thiết bị số 7 sẽ có địa chỉ dạng hexa là 07; thiết bị số 17 sẽ có địa chỉ 12.
Trường mã hàm (function codes field):
 Gồm hai kí tự hexa, khoảng địa chỉ kéo dài từ 0 đến 255
 Tuỳ theo giá trị giá trị mã hàm, Slave sẽ xác định công việc được yêu cầu. Sau đó
nó gửi bản tin trả lời với trường này được giữ nguyên. Nếu phát hiện thấy lỗi trong
bản tin yêu cầu từ Master, Slave gửi bản tin báo lỗi với một thay đổi trong trường
mã hàm: bít cao nhất (most significant bit) chuyển thành 1 hay cộng thêm 80 vào
địa chỉ cũ ở dạng hexa.
 Ví dụ mã 03 (0000 0011) là đọc thanh ghi giữ (holding register), nếu có lỗi bản tin
phản hồi sẽ có trường mã hàm là 83 (1000 0011).
Trường dữ liệu (data field):
 Trường dữ liệu chứa 2 kí tự hexa từ 00 đến FF
 Trường dữ liệu bổ xung những thông tin cần để thiết bị thực hiện những yêu cầu
nêu ra trong trường mã hàm, như khi yêu cầu đọc giá trị một nhóm coil liên tiếp
trong một thiết bị nào đó thì cần cho biết địa chỉ coil đầu tiên và số lượng coil cần
đọc. Chú ý địa chỉ coil khác với địa chỉ thiết bị đã được ghi trong trường địa chỉ.
Đối với những hàm chức năng mà thiết bị có thể thực hiện ngay mà không cần
thông tin bổ xung thì trường dữ liệu sẽ bỏ trống.
 Nếu yêu cầu không có lỗi, slave sẽ thực hiện và gửi trả lời trong đó trường dữ liệu
chứa kết quả thực hiện, còn nếu phát hiện có lỗi trong bản tin yêu cầu thì sẽ ngừng
truyền trường và Master sẽ biết được lỗi xảy ra khi quá thời gian timeout. Còn nếu
yêu cầu không thực hiện được mặc dù không phát hiên lỗi truyền, slave sẽ gửi
thông báo dạng “exception response” và dữ liệu trong trường này gọi là “exception
code” ta sẽ sét kĩ trong phần sau.
 Kết lại là có 3 dạng:
 Dữ liệu yêu cầu:n byte (Master =>Slave)
 Dữ liệu trả lời:n byte (Slave=>Master)
 Dữ liệu đặc biệt: 1byte (exception code, khi có không thể thực hiện được
yêu cầu)
Trường kiểm tra lỗi (data checking field):
 Chứa thông tin đi kèm để xác định tính đúng đắn của bản tin nhận được. Bên nhận
sẽ so sánh bản tin nhận được với thông tin này theo một phương pháp qui định
trước.
 Kiểm tra đối với từng byte sẽ dùng phương pháp kiểm tra chẵn lẻ
 Kiểm tra đối với toàn bộ khung bản tin sẽ tuỳ theo phương thức truyền: ASCII sẽ
dùng phương pháp LRC, còn RTU dùng phương pháp CRC.
 LRC: Mã LRC gồm 8 bit tạo ra bằng cách cộng đại số tất cả các byte của
bản tin (không tính kí tự mở đầu và kết thúc “:” “CRLF”) không để ý tới
tràn rồi lấy phần ù hai kết quả.
 CRC:Mã CRC 16 bít tạo ra bằng cách sử dụng đa thức chia G=1010 0000
0000 0001
Các kiểu dữ liệu của Modbus
Một thiết bị có 4 thành phần chính:
 Coil-1bit: Tạo ra đầu ra (gián đoạn) đưa ra bus hoặc network, có thể đọc hoặc ghi.
Địa chỉ coil từ 00001-09999
 Input Status-1bit (trạng thái đầu vào gián đoạn): Lấy từ bus vào thiết bị, chỉ có thể
đọc. Địa chỉ Input Status từ 10001-19999
 Input register-16bit (trạng thái đầu vào liên tục): Lấy từ bus vào thiết bị, chỉ có thể
đọc. Địa chỉ Input register từ 30001-49999
 Hold register-16bit: Tạo ra đầu ra (liên tục) đưa ra bus hoặc network, có thể đọc
hoặc ghi. Địa chỉ Hold register từ 40001-49999
Các hàm chức năng trong Modbus
 Ví dụ mã hàm 03: đọc trạng thái thanh ghi giữ

 FC 06: (0x06) Write Single Register


III. Thiết bị và phần mềm thí nghiệm:
1. Máy tính có cổng USB - Bộ chuyển đổi USB – RS485
2. Thiết bị thí nghiệm: Đồng hồ DPM380

Để thay đổi màn hình hiển thị các thông số ta thực hiện theo sơ đồ
Giao tiếp đồng hồ

3. Phần mềm kiểm tra MULTIWAY:


+ Worksheet 1 hiển thị thông tin gửi đi. Worksheet 1: phần mền tự tính toán CRC
+ Worksheet 4 hiển thị thông tin nhận được.
+ Trên thanh 2: công cụ và các menu.
IV. Các bước thí nghiệm:
1. Xác định cổng COM được sử dụng trên máy tính thí nghiệm của mình:
Control panel->System Properties->Hardwave-> Device Manager.
Cổng COM dùng trên máy tính thí nghiệm của em là.......................
2. Giáo viên hướng dẫn đọc cho sinh viện cấu hình cài đặt của thiết bị
Địa chỉ thiết bị:
Tốc độc truyền:
Parity:
3. Vào phần mềm và cài đặt cổng COM phù hợp với cổng em đã kiểm tra.
4. Kiểm tra lại ID, Parity, Baudrate của thiết bị

4.1: Địa chỉ thiết bị


Chuẩn bị: Bản tin hỏi
Start Address Function Data Error check End

Kết quả thí nghiệm


Bản tin nhận:
Start Address Function Data Error check End

Địa chỉ thiết bị là: …………


4.2: Parity
Chuẩn bị: Bản tin hỏi
Start Address Function Data Error check End

Kết quả thí nghiệm


Bản tin nhận:
Start Address Function Data Error check End

Parity là: …………


1.3 Tốc độ truyền
Chuẩn bị: Bản tin hỏi
Start Address Function Data Error check End

Kết quả thí nghiệm


Bản tin nhận:
Start Address Function Data Error check End

Tốc độ truyền là: …………


5. Chức năng 03/04: Xác định I, P:
Thay đổi tải các pha bằng cách bật tắt công tắc bóng đèn
a. Bản tin gửi: đo dòng pha 1, một bóng sáng
Start Address Function Data Error check End

Bản tin nhận:


Start Address Function Data Error check End

Kết quả dòng điện đọc trên đồng hồ:………………

b. Bản tin gửi: đo công suất pha 1, một bóng sáng


Start Address Function Data Error check End

Bản tin nhận:


Start Address Function Data Error check End

Kết quả công suất đọc trên đồng hồ:………………


c. Bản tin gửi: đo dòng pha 2, hai bóng sáng
Start Address Function Data Error check End

Bản tin nhận:


Start Address Function Data Error check End

Kết quả dòng điện đọc trên đồng hồ:………………


d. Bản tin gửi: đo công suất pha 2, hai bóng sáng
Start Address Function Data Error check End

Bản tin nhận:


Start Address Function Data Error check End

Kết quả công suất đọc trên đồng hồ:………………


Nhận xét về các giá trị nhận được trên máy tính và giá trị hiển thị trên đồng hồ.
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................

5. Chức năng 06:


Ghi giữ liệu lên thanh ghi

a. Bản tin gửi: ghi giờ


Start Address Function Data Error check End

Bản tin nhận:


Start Address Function Data Error check End

a. Bản tin gửi: ghi phút


Start Address Function Data Error check End

Bản tin nhận:


Start Address Function Data Error check End

Nhận xét về các giá trị nhận được trên máy tính và giá trị hiển thị trên đồng hồ.

............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................

Kết luận tự rút ra về bài TN:


............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................

You might also like