You are on page 1of 16

1.

Khái niệm
Giao thức truyền thông (communication protocol) là một bộ quy tắc và tiêu
chuẩn được thiết lập để đảm bảo truyền thông hiệu quả giữa các thiết bị hoặc hệ
thống. Giao thức truyền thông định nghĩa các quy trình và định dạng cho việc
truyền thông dữ liệu giữa các thiết bị và đảm bảo tính toàn vẹn, độ tin cậy và độ
bảo mật của dữ liệu truyền đi. Các giao thức truyền thông phổ biến có thể kể
đến như TCP/IP, HTTP, FTP, SMTP, POP3, IMAP, và SSH.
Modbus là một giao thức truyền thông phổ biến được sử dụng trong các ứng
dụng truyền thông công nghiệp để kết nối các thiết bị với nhau. Giao thức
Modbus cho phép các thiết bị truyền thông với nhau thông qua một kết nối vật
lý, chẳng hạn như RS485 hoặc Ethernet, và được sử dụng để truyền tải dữ liệu
giữa các thiết bị như bộ điều khiển, máy tính và thiết bị đo lường. Modbus cung
cấp một phương tiện để thu thập dữ liệu và điều khiển các thiết bị từ xa trong
các ứng dụng khác nhau như điều khiển quá trình, giám sát tòa nhà và cảm biến
thông minh.
2.Các loại giao thức truyền thông Modbus
Có 3 loại giao thức truyền thông Modbus chính là Modbus ASCII, Modbus
RTU và Modbus TCP/IP.

 Modbus ASCII là một giao thức truyền thông nối tiếp được sử dụng để
liên lạc giữa các thiết bị như bộ điều khiển logic khả trình (PLC), máy
tính và các thiết bị khác trong hệ thống tự động hóa công nghiệp. Nó sử
dụng các ký tự ASCII để truyền các gói dữ liệu qua kết nối nối tiếp RS-
232 hoặc RS-485 tiêu chuẩn. Thông điệp Modbus ASCII bao gồm một
loạt các ký tự ASCII và được gửi ở định dạng khung. Khung bao gồm ký
tự bắt đầu, trường dữ liệu, tổng kiểm tra và ký tự kết thúc. Modbus
ASCII được sử dụng rộng rãi trong các ứng dụng tự động hóa công
nghiệp để trao đổi dữ liệu điều khiển và giám sát giữa các thiết bị.

 Modbus RTU là một giao thức truyền thông nối tiếp được sử dụng cho các
hệ thống tự động hóa công nghiệp. Nó là một giao thức phổ biến để kết nối
các thiết bị công nghiệp như bộ điều khiển logic khả trình (PLC), cảm biến
và đồng hồ đo với hệ thống điều khiển. Modbus RTU là một giao thức nhị
phân sử dụng kiến trúc chính-phụ, trong đó thiết bị chính gửi yêu cầu tới
một hoặc nhiều thiết bị phụ để đọc hoặc ghi dữ liệu. Nó sử dụng giao diện
truyền thông nối tiếp, điển hình là RS-485 hoặc RS-232, để trao đổi dữ liệu
giữa các thiết bị.

 Modbus TCP/IP là một giao thức truyền thông được sử dụng để truyền dữ
liệu giữa các thiết bị điều khiển trong hệ thống tự động hóa công nghiệp
thông qua mạng LAN (Local Area Network). Giao thức này sử dụng mô
hình truyền thông TCP/IP để truyền dữ liệu, cho phép các thiết bị đặt tên và
truy cập thông qua địa chỉ IP. Modbus TCP/IP cho phép truyền dữ liệu
nhanh chóng và đáng tin cậy giữa các thiết bị, and được sử dụng phổ biến
trong các ứng dụng như kiểm soát quá trình sản xuất, giám sát hệ thống, và
các hệ thống tự động hóa công nghiệp khác.

3.So sánh
Modbus là một giao thức truyền thông hàng đầu trong ngành công nghiệp, được sử
dụng để kết nối và truyền thông giữa các thiết bị điều khiển và giám sát trong một
hệ thống tự động hóa. Hiện nay, có ba phiên bản chính của giao thức Modbus:
Modbus RTU, Modbus ASCII và Modbus TCP/IP. Dưới đây là một số so sánh
giữa các phiên bản này:
Modbus RTU:
 Là phiên bản Modbus được sử dụng phổ biến nhất trong các hệ thống tự
động hóa.
 Sử dụng truyền thông không đồng bộ và truyền thông điểm đến điểm.
 Tốc độ truyền thông cao và có khả năng hoạt động ở khoảng cách xa.
 Thích hợp cho các ứng dụng yêu cầu tốc độ và độ chính xác cao.
Modbus ASCII:
 Sử dụng truyền thông ký tự để truyền thông giữa các thiết bị.
 Tốc độ truyền thông chậm hơn so với Modbus RTU.
 Thích hợp cho các ứng dụng yêu cầu độ chính xác cao và không yêu cầu tốc
độ truyền thông cao.
Modbus TCP/IP:
 Sử dụng giao thức truyền thông TCP/IP để kết nối và truyền thông giữa các
thiết bị.
 Tốc độ truyền thông cao và có khả năng truyền thông ở khoảng cách xa.
 Thích hợp cho các ứng dụng yêu cầu tích hợp mạng và độ tin cậy cao. Tùy
thuộc vào yêu cầu đặt ra

II. Modbus TCP/IP


Modbus-TCP/IP là giao thức Modbus được sử dụng trên đường truyền Ethernet, sử
dụng mô hình TCP/IP để truyền thông.
Modbus TCP/IP (Hay có thể gọi là Modbus-TCP) là giao thức Modbus thuộc lớp
ứng dụng, có các thông tin dữ liệu đã được đóng gói, sau đó gói dữ liệu được định
tuyến bằng cách gắn thêm địa chỉ IP của thiết bị ở nơi cần gửi đến và TCP là lớp
vận chuyển, đảm bảo việc truyền nhận dữ liệu chính xác và đến đúng địa điểm.
Modbus-TCP là 1 mạng Ethernet công nghiệp mở được nhận diện bởi Modbus-
IDA User Organization

Phương thức truyền thông Modbus TCP/IP


Cũng như các loại modbus khác, Modbus TCP/IP cũng sử dụng mô hình Master-
Slave để truyền thông. Tuy nhiên, được triển khai trên nền Ethernet, sử dụng bộ
giao thức TCP trên nền IP.

Modbus TCP làm cho định nghĩa Master-Slave truyền thống thay đổi. Vì Ethernet
cho phép giao tiếp ngang hàng. Trong mạng TCP, các Slave có thể chủ động
truyền thông tin về các thiết bị quản lý trung tâm – Master. Sử dụng địa chỉ IP trên
các Master để quản lý tập trung từ phần mềm.

Modbus TCP/IP được sử dụng trên các mạng TCP/ IP hiện đại, có 2 loại triển khai
Modbus TCP:

 Modbus RTU qua TCP, đơn giản chỉ là sử dụng TCP làm lớp vận chuyển
cho các thông điệp RTU.

 Modbus TCP bình thường và có một số thay đổi trong định dạng tin nhắn.
Vì được truyền trên nền TCP/IP nên tốc độ truyền của Modbus TCP/IP cao, đáp
ứng realtime. Cao hơn hẳn Modbus RTU.

Có thể kết hợp modbus TCP/IP với modbus RTU. Được gọi là Hybird Modbus.
Như hình dưới.
Kết hợp Modbus TCP và Modbus RTU
Modbus RTU sử dụng RS485, RS232. Modbus TCP sử dụng trên nền Ethernet.
Nên muốn kết hợp được 2 loại modbus này cần tìm một thiết bị có hỗ trợ 2 cổng
kết nối này. Điều này bạn sẽ rất có lợi khi mở rộng quy mô sản xuất, số lượng thiết
bị.

Mô hình kết nối.

Ethernet
PLC S7-1200 Device
Mô hình kết nối giữa PLC và thiết bị đầu cuối bằng chuẩn Modbus TCP/IP và giao
tiếp với nhau bằng mô hình Server và Client.

Các function và thanh ghi.

Thanh ghi.

Địa chỉ Kích thước Mô tả

0xxxx 1bit Đọc viết ngõ đầu ra số.

1xxxx 1bit Đọc ngõ vào số

3xxxx 16bit Đọc thanh ghi đầu vào

4xxxx 16bit Đọc và viết thanh ghi.

Mã hàm được sử dụng trong PLC (Funtion Code). 


Function
Modbus
MODE MB_DATA_ADDR MB_DATA_LEN and data
function
type

Read 1 to
2,000 output
bits on the
0 1 to 9,999 1 to 2,000 01
remote
address 0 to
9,998

Read 1 to
2,000 input
bits on the
0 10,001 to 19,999 1 to 2,000 02
remote
address 0 to
9,998

·   Read 1 to
125 holding
registers on
the remote
address 0 to
· 40,001 to 49,999 9,998
0 1 to 125 03
·   Read 1 to
· 400,001 to 65,535
125 holding
registers on
the remote
address 0 to
65,534
Read 1 to
125 input
words on the
0 30,001 to 39,999 1 to 125 04
remote
address 0 to
9,998
1 1 to 9,999 1 05 Write 1
output bit on
the remote
address 0 to
9,998
·   Write 1
holding
register on
the remote
address 0 to
·40,001 to 49,999 9,998
1 1 06
·400,001 to 465,535 ·   Write 1
holding
register on
the remote
address 0 to
65,534
Write 2 to
1,968 output
bits on the
1 1 to 9,999 2 to 1,968 15
remote
address 0 to
9,998
·   Write 2 to
123 holding
registers on
the remote
address 0 to
·40,001 to 49,999 9,998
1 2 to 123 16
·400,001 to 465,535 ·   Write 2 to
123 holding
registers on
the remote
address 0 to
65,534
Write 1 to
1,968 output
bits on the
2 1 to 9,999 1 to 1,968 15
remote
address 0 to
9,998
·   Write 1 to
123 holding
registers on
the remote
address 0 to
·40,001 to 49,999 9,998
2 1 to 123 16
·400,001 to 465,535 ·   Write 1 to
123 holding
registers on
the remote
address 0 to
65,534
11 11 Read status
The MB_DATA_ADDR and word and
MB_DATA_LEN parameters are not event
evaluated when this function is executed. counter of
the server:
·   The status
word
reflects the
the
processing
status (0 –
not
processing,
0xFFFF –
processing).

·   The event


counter is
incremented
when the
Modbus
request was
executed
successfully.
If an error
occurred
during
execution of
a Modbus
function, a
message is
sent by the
server, but
the event
counter is
not
incremented.
Check the
server status
with the
diagnostic
code 0x0000
(return loop
80 – 1 08 test – the
server sends
the request
back):
·   1 WORD
per call
Reset the
event
counter of
the server
with the
81 – 1 08 diagnostic
code
0x000A:
·   1 WORD
per call
Read 1 to
2,000 output
bits on the
101 0 to 65,535 1 to 2,000 01
remote
address 0 to
65,535
Read 1 to
2,000 input
bits on the
102 0 to 65,535 1 to 2,000 02
remote
address 0 to
65,535
Read 1 to
125 holding
registers on
103 0 to 65,535 1 to 125 03
the remote
address 0 to
65,535
Read 1 to
125 input
words on the
104 0 to 65,535 1 to 125 04
remote
address 0 to
65,535
Write 1
output bit on
105 0 to 65,535 1 05 the remote
address 0 to
65,535
Write 1
holding
register on
106 0 to 65,535 1 06
the remote
address 0 to
65,535
Write 1 to
1,968 output
bits on the
115 0 to 65,535 1 to 1,968 15
remote
address 0 to
65,535
116 0 to 65,535 1 to 123 16 Write 1 to
123 holding
registers on
the remote
address 0 to
65,535

Frame truyền của chuẩn truyền thông.

 Cấu trúc định dạng kiểu truyền dữ liệu Modbus TCP/IP.

Ví dụ 1: Ghi giá trị từ Client lên Server dữ liệu cho phép gửi 6 thanh ghi
(MB_DATA_LEN), thanh ghi bắt đầu 40001, tổng dữ liệu request
(MB_DATA_PTR) là 12 thanh ghi.

Frame Client gửi lên Server:

36 28 00 00 00 13 63 10 9C 41 00 06 0C 00 01 00 02 00 03 00 00 00 00 00 00

Trong đó:

 36 27: mã định danh giao thức Transaction ID.


 00 00: mã xác định giao thức Protocol ID.
 00 06: độ dài tin nhắn.
 63 : địa chỉ ID thiết bị ( ID là 99).
 10 : Funtion 16 mode 116.
 9C 41: Địa chỉ thanh ghi bắt đầu (40001) ở mục MB_DATA_ADDR.
 00 06: Số lượng thanh ghi được phép ghi (MB_DATA_LEN).
 0C : Độ dài dữ liệu gửi ( 6 thanh ghi, mỗi thanh ghi 2 byte, tổng độ dài gửi là 12
byte).
 00 01 00 02 00 03 00 00 00 00 00 00: dữ liệu.
Frame phản hồi từ Server:

36 27 00 00 00 06 63 10 9C 41 00 06

Trong đó:

 36 27: mã định danh giao thức Transaction ID.


 00 00: mã xác định giao thức Protocol ID.
 00 06: độ dài tin nhắn.
 63  : địa chỉ ID thiết bị (ID là 99).
 10 : Funtion 16 mode 116.
 9C 41: Địa chỉ thanh ghi bắt đầu (40001) ở mục MB_DATA_ADDR.
 00 06: Số lượng thanh ghi được phép ghi (MB_DATA_LEN).
 

Ví dụ 2: Client đọc giá trị từ Server với 5 thanh ghi, thanh ghi bắt đầu là 40000.

Frame Client gửi lên Server:

01 A5 00 00 00 0D 63 03 9C 40 00 05

Trong đó:

 01 A5: mã định danh giao thức Transaction ID.


 00 00: mã xác định giao thức Protocol ID.
 00 0D: độ dài tin nhắn.
 63 : địa chỉ ID thiết bị (ID là 99).
 03 : Funtion 3 mode 103.
 9C 40: Địa chỉ thanh ghi bắt đầu (40000) ở mục MB_DATA_ADDR.
 00 05: Số lượng thanh ghi được phép ghi (MB_DATA_LEN).
Frame Server phản hồi:

01 A6 00 00 00 06 63 03 0A 00 0C 00 7B 00 02 00 02 00 22

Trong đó:

 01 A6: mã định danh giao thức Transaction ID.


 00 00: mã xác định giao thức Protocol ID.
 00 0D: độ dài tin nhắn.
 63 : địa chỉ ID thiết bị (ID là 99).
 03 : Funtion 3 mode 103.
 0A : Độ dài dữ liệu ( 5 thanh ghi, mỗi thanh ghi 2 byte, tổng là 10 byte).
 00 0C 00 7B 00 02 00 02 00 22: dữ liệu Server phản hồi.
 Các lệnh được sử dụng truyền thông trong PLC.
 

Cấu hình PLC S7-1200 trong TIA Portal

III. MODBUS RTU

1.Giới thiệu chung


Modbus RTU là một giao thức truyền thông nối tiếp được sử dụng cho các hệ
thống tự động hóa công nghiệp. Nó là một giao thức phổ biến để kết nối các thiết
bị công nghiệp như bộ điều khiển logic khả trình (PLC), cảm biến và đồng hồ đo
với hệ thống điều khiển. Modbus RTU là một giao thức nhị phân sử dụng kiến trúc
chính-phụ, trong đó thiết bị chính gửi yêu cầu tới một hoặc nhiều thiết bị phụ để
đọc hoặc ghi dữ liệu. Nó sử dụng giao diện truyền thông nối tiếp, điển hình là RS-
485 hoặc RS-232, để trao đổi dữ liệu giữa các thiết bị.
Giao thức Modbus RTU là một giao thức mở, sử dụng đường truyền vật lý
RS-232 hoặc RS485 và mô hình dạng Master-Slave. Đây là một giao thức được sử
dụng rộng rãi trong nhiều lĩnh vực như BMS (Building Management Systems), tự
động hóa, công nghiệp, điện lực,....

Modbus được coi là giao thức truyền thông hoạt động ở tầng "Application",
cung cấp khả năng truyền thông Master/Slave giữa các thiết bị được kết nối thông
qua các bus hoặc network. Trên mô hình OSI, Modbus được đặt ở lớp 7. Modbus
được xác định là một giao thức hoạt động theo "hỏi/đáp" và sử dụng các "function
codes" tương ứng để hỏi đáp.

2.Cấu trúc frame truyền Modbus RTU

Một bản tin Modbus RTU bao gồm: 1 byte địa chỉ  -  1 byte mã hàm - n byte dữ
liệu - 2 byte CRC.

Chức năng và vai trò cụ thể như sau:

 Byte địa chỉ: xác định thiết bị mang địa chỉ được nhận dữ liệu (đối với
Slave) hoặc dữ liệu nhận được từ địa chỉ nào (đối với Master). Địa chỉ này
được quy định từ 0 - 254
 Byte mã hàm: được quy định từ Master, xác định yêu cầu dữ liệu từ thiết bị
Slave. Ví dụ mã 01: đọc dữ liệu lưu trữ dạng Bit, 03: đọc dữ liệu tức thời
dạng Byte, 05: ghi dữ liệu 1 bit vào Slave, 15: ghi dữ liệu nhiều bit vào
Slave ...
 Byte dữ liệu: xác định dữ liệu trao đổi giữa Master và Slave.
o Đọc dữ liệu:  
 Master:  2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu            
 Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ
liệu đọc được
o Ghi dữ liệu:   
 Master: 2 byte địa chỉ dữ liệu  - 2 byte độ dài dữ liệu - n byte dữ
liệu cần ghi     
 Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu  
 Byte CRC: 2 byte kiểm tra lỗi của hàm truyền. cách tính giá trị của Byte
CRC 16 Bit

3. Cách giao tiếp Modbus RTU

Modbus RTU có mô hình dạng Master-Slave, dùng đường truyền vật lí RS485
nên để giao tiếp được giữa master và slave ta phải cài đặt các thông số về tốc độ
truyền baudrate (4800.9600.115200...), số data bit (7-8), bit stop (0-1-2) ,  Flag
Parity kiểm tra chẵn lẻ (None, Event, Odd). Ngoài các thông số trên phản giống
nhau giữa master và slave, thì bên master phải biết được ID của slave cần giao
tiếp. 

Mỗi thiết bị trong mạng modbus được cung cấp một địa chỉ duy nhất. Trong
mạng modbus chỉ có 1 node được gán là Master (ta gọi là Master, các node còn lại
gọi là Node) mới có thể khởi tạo lệnh. Trong frame truyền có chứa địa chỉ của thiết
bị slave  (1 đến 247), chỉ thiết bị có ID  tương ứng mới đáp ứng, mặc dù các thiết
bị khác có thể nhận được nó (một ngoại lệ là các lệnh có thể phát được cụ thể được
gửi đến nút 0, được thực hiện nhưng không được xác nhận). Tất cả các lệnh
Modbus chứa thông tin tổng kiểm tra (check sum CRC) để cho phép người nhận
phát hiện lỗi truyền. Master sẽ đọc và ghi các dữ liệu vào thanh ghi của thiết bị
slave. 

Cách đấu nối

A-      (Master) <------> A-      (Slave)

B+     (Master) <------> B+     (Slave)

GND (Master) <-------> GND (Slave)


Dây GND cần nối trong trường hợp khu vực đấu nối ở vùng nhiều sấm sét,
máy móc hoạt động dòng lớn, nhiễu phức tạp...để tránh bị phá hỏng thiết bị hoặc
tín hiệu thu được bị sai. Điện thế chênh lệch giữa GND hai bên tối đa là 7V.

Nếu thiết bị cần đọc là một đồng hồ điện (ví dụ Select MFM383A) thì mạch
arduino của chúng ta sẽ làm master để truy xuất vào đọc thanh ghi của nó. Các
thông số baud rate, data bit, bit stop, parity chúng ta phải cài đặt đồng bộ giữa
mastter và slave. Thông thường với các slave là đồng hồ điện, đồng hồ nước, cảm
biến..chúng ta sẽ xem chúng ở màn hình cài đặt hay ở manual, datasheet của thiết
bị. Ở phần code arduino chúng ta sẽ chỉnh sửa các thông tin đó cho giống trên thiết
bị hoặc với các thiết bị có LCD đa số chúng ta đều set được các thông số đó cho
salve. Nếu cần đọc các thanh ghi chứa dữ liệu của slave chúng ta sẽ dùng các
function code 01, 02, 03, 04.

 FC01: Đọc trạng thái coil, một coil là một giá trị output.
Số coil numbers kéo dài từ 0 00001 đến 0 65536 , 
 FC02: Đọc trạng thái input, số discrete input kéo dài từ 1 00001
đến 1 65536,
 FC04: Đọc các input register, số input register trải dài từ 3 00001
đến 3 65536,
 FC03: Đọc các holding register, số holding register trải dài từ 4 00001
đến 4 65536.

You might also like