Giao thức Modbus hoạt động như thế nào?
Modbus RTU sẽ hoạt động dựa trên nguyên tắc truyền tín hiệu thông qua Master (bên nhận hoặc có tên gọi khác là “chủ”) và Slave (bên truyền tín hiệu-hoặc có tên gọi khác là “tớ”) thông qua địa chỉ thanh ghi. Các phương thức truyền tín hiệu của modbus có các dạng như RS-232, RS-485. Dùng đường truyền vật lí RS485 nên để giao tiếp được giữa master và slave. Việc đầu tiên ta phải cài đặt các thông số về tốc độ truyền “baudrate” ( Tốc đọ thường gặp 9600 hoặc 115200…). Ngoài ra còn có số data bit (7-8), bit stop (0-1-2), Flag Parity dùng để kiểm tra chẵn lẻ (None, Event, Odd). Ở mức độ ứng dụng, quý đọc giả cần lưu ý thiết bị cuối (Đồng hoặc hồ cảm biến) có thông số như thế nào mình sẽ cài đặt các bộ đọc tương đương. Làm Mạng Công Nghiệp sẽ có các bài viết phân tích chuyên sâu sau nhé.
Nhắc lại: Các thông số trên phản giống nhau giữa master và slave, vấn đề tiếp theo đó là bên Chủ-master phải biết được ID của Tớ-slave cần giao tiếp.
Mỗi thiết bị trong mạng modbus sẽ được cung cấp một địa chỉ duy nhất. Trong mạng modbus RTU chỉ có 1 node được gán là Master (ta gọi là Master-Chủ, các node còn lại gọi là Node tớ-Slave) thì ta mới có thể khởi tạo lệnh tryền thông. 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ó. 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 như sau:
- A- (Master) <——> A- (Slave)
- B+ (Master) <——> B+ (Slave)
Dữ liệu truyền trên Modbus như thế nào ?
Dữ liệu được lưu trữ tại Slave trong 4 bảng khác nhau với hai bảng lưu trữ On/OFF các giá trị Coil và hai thanh ghi lưu trữ. Các thanh ghi này đều có khả năng đọc và ghi. Mỗi thanh ghi có 1 Word = 16 bit = 2 bytes có địa chỉ từ 0000 đến 260E.
Trong đó các Coil được xem như là địa chỉ của thanh ghi. Ví dụ 40002 có địa chỉ dữ liệu là 0000 các giá trị này có thể lệch nhau 1 , 10002 , 30002 , 40002.