Khi làm việc với giao thức Modbus, nhiều người thường chỉ quan tâm đến địa chỉ thanh ghi mà bỏ qua Register Map (bản đồ thanh ghi) – tài liệu quan trọng quyết định cách đọc và ghi dữ liệu của thiết bị. Chỉ cần hiểu sai Register Map, bạn có thể đọc nhầm giá trị, sai kiểu dữ liệu hoặc truy cập không đúng thanh ghi, dẫn đến hệ thống hoạt động không chính xác. Trong bài viết này, Mạnh Tùng sẽ tìm hiểu Register Map Modbus là gì, cấu trúc của một bản đồ thanh ghi và cách đọc đúng để tránh những lỗi thường gặp khi kết nối PLC, HMI, SCADA hoặc các thiết bị công nghiệp khác.
Register Map trong Modbus là gì?

Trong Modbus, Register Map là sơ đồ mô tả cách thiết bị phân chia bộ nhớ thành nhiều vùng dữ liệu khác nhau. Mỗi vùng thanh ghi đảm nhiệm một chức năng riêng, có quy tắc đánh địa chỉ và phương thức truy cập tương ứng.
Thông thường, Register Map của Modbus được chia thành 4 vùng chính:
- Coil (0xxxx): Thanh ghi điều khiển ON/OFF, cho phép đọc và ghi.
- Discrete Input (1xxxx): Thanh ghi trạng thái ON/OFF chỉ cho phép đọc.
- Input Register (3xxxx): Thanh ghi chứa dữ liệu analog ở chế độ chỉ đọc.
- Holding Register (4xxxx): Thanh ghi lưu tham số hoặc dữ liệu analog có thể đọc và ghi.
Xem thêm: Modbus là gì? Nguyên lý hoạt động, RTU, TCP và ứng dụng trong công nghiệp
Các loại thanh ghi trong Modbus

Coil (0xxxx)
Coil là vùng dữ liệu có kích thước 1 bit, thường được sử dụng để điều khiển các thiết bị số như relay, contactor, đèn báo hoặc van điện từ.
Đặc điểm
- Chỉ lưu giá trị 0 hoặc 1.
- Hỗ trợ cả đọc và ghi dữ liệu.
- Thường truy cập bằng Function Code 01, 05 và 15.
Discrete Input (1xxxx)
Discrete Input cũng là vùng dữ liệu 1 bit, tuy nhiên chỉ dùng để đọc trạng thái của các tín hiệu đầu vào số như công tắc, cảm biến hoặc nút nhấn.
Đặc điểm
- Chỉ cho phép đọc.
- Không thể ghi dữ liệu.
- Truy cập bằng Function Code 02.
Input Register (3xxxx)
Input Register là vùng thanh ghi 16 bit dùng để lưu các giá trị đo lường từ thiết bị hiện trường, chẳng hạn như nhiệt độ, áp suất, lưu lượng, độ ẩm hoặc mức chất lỏng.
Đặc điểm
- Mỗi thanh ghi có kích thước 16 bit (2 byte).
- Chỉ hỗ trợ đọc dữ liệu.
- Sử dụng Function Code 04.
Holding Register (4xxxx)
Holding Register là vùng thanh ghi được sử dụng nhiều nhất trong Modbus vì có thể lưu các tham số vận hành và cấu hình của thiết bị như giá trị đặt (Setpoint), hệ số PID, tốc độ động cơ hoặc thời gian trễ.
Đặc điểm
- Kích thước mỗi thanh ghi là 16 bit.
- Cho phép đọc và ghi dữ liệu.
- Thường sử dụng Function Code 03, 06 và 16.
Phân biệt địa chỉ hiển thị và địa chỉ thực trong Modbus

Một trong những lỗi phổ biến khi làm việc với Modbus là nhầm lẫn giữa địa chỉ được ghi trong tài liệu và địa chỉ thực được truyền trong khung dữ liệu Modbus.
Ví dụ, tài liệu của thiết bị ghi Holding Register 40001, nhưng khi gửi yêu cầu đọc, địa chỉ thực lại là 0000 (Hex).
Nguyên nhân là nhiều nhà sản xuất sử dụng cách đánh địa chỉ 1-based, trong khi giao thức Modbus truyền dữ liệu theo 0-based addressing.
Cách ánh xạ dữ liệu trong Register Map
Không phải lúc nào một thanh ghi 16 bit cũng đủ để lưu trữ dữ liệu. Với các giá trị có độ dài lớn hơn, thiết bị sẽ kết hợp hai thanh ghi liên tiếp để tạo thành:
- Số nguyên 32 bit
- Số thực IEEE 754 (Float)
Ví dụ
- Register 40001 = 0x447A
- Register 40002 = 0x0000
Khi ghép hai thanh ghi này lại theo đúng định dạng, chúng có thể biểu diễn một giá trị nhiệt độ ở dạng Float.
Byte Order và Word Swap
Ngoài địa chỉ thanh ghi, thứ tự lưu trữ dữ liệu cũng ảnh hưởng trực tiếp đến kết quả đọc.
Một số thiết bị sử dụng:
- Big-endian: Byte có trọng số cao được lưu trước.
- Little-endian: Byte có trọng số thấp được lưu trước.
- Word Swap: Hoán đổi vị trí của hai thanh ghi 16 bit.
Nếu phần mềm Master cấu hình sai Byte Order hoặc Word Order, dữ liệu đọc được có thể hoàn toàn không chính xác.
Những lỗi thường gặp khi đọc Register Map
Một số lỗi phổ biến trong quá trình triển khai Modbus gồm:
- Đọc Input Register thay vì Holding Register.
- Không trừ địa chỉ Offset đối với thiết bị sử dụng 1-based Address.
- Cấu hình sai Byte Order hoặc Word Swap, dẫn đến dữ liệu hiển thị sai.
Kết luận
Register Map được xem là bản đồ bộ nhớ của thiết bị Modbus, giúp xác định vị trí và cách truy cập từng loại dữ liệu. Khi hiểu đúng cấu trúc Register Map, bạn sẽ dễ dàng đọc dữ liệu từ cảm biến, ghi chính xác các tham số điều khiển và hạn chế những lỗi phát sinh trong quá trình vận hành hệ thống.

Để được tư vấn trực tiếp, quý khách vui lòng liên hệ với chúng tôi theo thông tin sau:
➢ Tư vấn bán hàng: 0827 888 528
➢ Zalo: 0827 888 528
➢ Email: info@mtee.vn
TRỤ SỞ CHÍNH
Địa chỉ: Số 16E/2 Đường số 17, Phường Hiệp Bình, Thành phố Hồ Chí Minh
MST: 0314561574
Cảm ơn quý khách đã truy cập vào website MTEE.VN. Kính chúc quý khách nhận được những thông tin hữu ích và có những trải nghiệm tuyệt vời trên trang.

