Tổng quan về Modbus RTU
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.
Cấu trúc bản tin 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ể:
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. Đọ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 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
Cách thức hoạt động của Modbus RTU
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) và Slave (bên truyền tín hiệu) 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, Modbus TCP/IP sẽ truyền thông qua internet. 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 sẽ đượ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.
Chuẩn RS-485:
Chuẩn RS-485 sẽ sử truyền trên 2 dây A và B mà thôi. Cách thức hoạt động cũng sẽ là so sánh chênh áp giữa A và B theo logic 0 và 1 và không hề so sánh với đất. Việc này rất thích hợp cho các ứng dụng cần truyền tín hiệu đi xa vì giá trị của
chúng chỉ là 0 với 1.
Giả sử khi giá trị của A và B lần lượt là A = 1, B = 0 thì dữ liệu nhận biết data = Ngược lại nếu A = 0 và B = 1 thì data = 0. Chính vì hoạt động theo cách trên mà khi truyền đi xa dù có sụt áp thì cũng không ảnh hưởng đến quá trình truyền dữ liệu.
Chênh áp giữa A và B trong khoảng -6 ÷ 1,6V thì dữ liệu nhận giá trị là 1 Chênh áp giữa A và B trong khoảng +1,5 ÷ +6V thì dữ liệu nhận giá trị là 0 Ưu điểm:
Có thể dùng cho nhiều loại thiết bị có chung cổng Modbus RTU
Giảm số lượng dây kết nối về cho PLC, tối ưu hóa không gian nhà xưởng hay nơi làm việc.
Tiết kiệm một số lượng lớn module mở rộng PLC.
Ổn định và ít bị nhiễu hơn so với tín hiệu analog 4-20ma.
Các dạng tín hiệu 2 dây RS-485 đều có khả năng truyền đi xa lên đến 1200m mà không sợ mất tín hiệu hay dữ liệu.
Các module hoạt động độc lập nên sẽ dễ dàng quản lý. Nhược điểm:
Tín hiệu sẽ chậm hơn việc sử dụng trực tiếp như tín hiệu analog hay digital. Chỉ phù hợp cho các điều khiển có thời gian từ 1s trở xuống.
Cần trang bị một PLC hay Scada có cấu hình mạnh để đọc hết các thanh ghi của nhiều modbus.