Professional Documents
Culture Documents
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
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ị.
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.
Thanh ghi.
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).
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.
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 00 00 00 06 63 10 9C 41 00 06
Trong đó:
Ví dụ 2: Client đọc giá trị từ Server với 5 thanh ghi, thanh ghi bắt đầu là 40000.
01 A5 00 00 00 0D 63 03 9C 40 00 05
Trong đó:
01 A6 00 00 00 06 63 03 0A 00 0C 00 7B 00 02 00 02 00 22
Trong đó:
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.
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.
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
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.
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.