Học Automation cùng MINATA #43: Modbus RTU: đọc đúng bus RS-485 trước khi kết nối thiết bị
Modbus RTU: đọc đúng bus RS-485 trước khi kết nối thiết bị
Modbus RTU là giao thức đơn giản và phổ biến để PLC nói chuyện với biến tần, đồng hồ đo, cảm biến thông minh qua RS-485. Chính vì đơn giản nên người ta hay bỏ qua lớp vật lý; và phần lớn sự cố "cả bus không giao tiếp" đến từ baud rate, địa chỉ, cực A/B hoặc termination chứ không phải logic chương trình.
Khung cảnh: một master, nhiều slave
Trên một bus Modbus RTU, một thiết bị làm master (client) hỏi, các slave (server) trả lời theo địa chỉ node. Mỗi slave có một địa chỉ duy nhất từ 1 đến 247. Master gửi khung yêu cầu (địa chỉ, function code, dữ liệu, CRC); slave đúng địa chỉ trả lời. Không có hai master cùng chủ động trên một bus cổ điển.
Bốn thông số lớp vật lý phải khớp
Mọi thiết bị trên bus phải cùng: baud rate, số bit dữ liệu, parity và stop bit. Chỉ cần một biến tần đặt 9600-8-E-1 còn PLC đặt 19200-8-N-1 là thiết bị đó im lặng. Kiểm tra bốn giá trị này trước khi động vào chương trình.
Vùng dữ liệu Modbus
Modbus chia dữ liệu thành bốn vùng; đọc đúng vùng là điều kiện để lấy đúng số:
| Vùng | Kiểu | Function code đọc | Ví dụ dùng |
|---|
| Coils | Bit đọc/ghi | 01 | Lệnh ON/OFF |
| Discrete inputs | Bit chỉ đọc | 02 | Trạng thái đầu vào |
| Input registers | Word chỉ đọc | 04 | Giá trị đo |
| Holding registers | Word đọc/ghi | 03 | Tham số, setpoint |
Bản đồ thanh ghi phải lấy từ manual đúng model và firmware; cùng một hãng nhưng khác dòng có thể đánh địa chỉ khác. Lưu ý quy ước đánh số lệch 1 (thanh ghi 40001 ↔ địa chỉ 0) giữa các tài liệu.
Lớp vật lý RS-485: A/B, termination, phân cực
- Cực A/B (D+/D−): đảo hai dây này là lỗi phổ biến nhất; nếu nghi ngờ, thử đảo và kiểm tra.
- Topology daisy-chain: nối nối tiếp từ thiết bị này sang thiết bị kia, tránh nhánh rẽ dài.
- Termination 120Ω ở hai đầu bus khi đường dài/tốc độ cao để giảm phản xạ.
- Điện trở phân cực (bias): giữ bus ở mức xác định khi rảnh, tránh nhiễu đọc sai.
- Dùng cáp xoắn có shield, nối GND tín hiệu theo hướng dẫn thiết bị.
Tình huống kỹ thuật tham khảo
PLC đọc trạng thái và dòng của một biến tần qua Modbus RTU. HMI báo timeout truyền thông riêng với lỗi drive: nếu mất phản hồi, người vận hành biết cần kiểm tra dây/địa chỉ; nếu drive báo lỗi, kiểm tra động cơ/tải. Hai loại lỗi này không được gộp thành một đèn chung.
Baud rate, địa chỉ, bản đồ thanh ghi và cấu hình bus cuối cùng phải theo manual thiết bị và hồ sơ máy.
Sai lầm thường gặp
- Sửa chương trình trước khi kiểm tra baud/parity/địa chỉ/A-B.
- Đặt trùng địa chỉ node trên cùng một bus.
- Quên termination/bias trên đường dài, đọc chập chờn.
- Lấy sai vùng dữ liệu (input register vs holding register).
- Gộp lỗi truyền thông và lỗi thiết bị vào một cảnh báo.
Checklist Modbus RTU
- [ ] Baud, data bit, parity, stop bit giống nhau trên toàn bus.
- [ ] Mỗi slave một địa chỉ duy nhất, ghi trong hồ sơ.
- [ ] Bản đồ thanh ghi theo đúng model/firmware, xử lý lệch 1.
- [ ] A/B đúng cực, có termination/bias khi cần.
- [ ] Timeout/retry có kiểm soát; tách cảnh báo giao tiếp và thiết bị.
Hiểu bus trước khi nối thiết bị giúp bạn tránh nhiều giờ dò lỗi vô hình. Bài #44 mở rộng sang Modbus TCP trên Ethernet.
Đọc thêm kiến thức tự động hóa tại MINATA: https://minatavn.com/vi/blog/tu-dong-hoa
Bài liền trước — #42: Kết nối HMI–PLC: thiết kế tag và trạng thái trước khi kéo dây: https://minatavn.com/vi/blog/hoc-automation-cung-minata-42-ket-noi-hmi-plc
Bài tiếp theo — #44: Modbus TCP: dữ liệu qua Ethernet vẫn cần kỷ luật công nghiệp: https://minatavn.com/vi/blog/hoc-automation-cung-minata-44-modbus-tcp
Xem tất cả bài viết kỹ thuật MINATA