Bảo toàn dữ liệu
Mạng Modbus chuẩn sử dụng hai biện pháp bảo toàn dữ liệu ở hai mức: kiểm soát
khung thông báo và kiểm soát ký tự khung. Đối với hai chế độ truyền ASCII hay RTU,
có thể lựa chọn kiểm tra bit chẵn/lẻ cho từng ký tự khung. Hơn thế nữa, cả khung thông
báo lại được kiểm soát một lần nữa bằng mã LRC (chế độ ASCII) hoặc mã CRC (chế
độ RTU).
Khi đặt cấu hình cho một thiết bị chủ, có thể chọn một khoảng thời gian timeout mà
nó có thể chờ đợi đáp ứng từ trạm tớ. Khoảng thời gian này cần phải đủ lớn để bất cứ
thiết bị tớ nào cũng có thể trả lời trong điều kiện bình thường. Trường hợp thiết bị tớ
phát hiện lỗi ở thông báo yêu cầu, nó sẽ không trả lời. Vì thế thiết bị chủ cũng tự động
nhận biết lỗi và chương trình chủ sẽ có trách nhiệm thực hiện các hành động cần thiết.
Lưu ý rằng, một thông báo gửi tới địa chỉ một trạm không tồn tại cũng sẽ gây ra
timeout.
Các mạng khác như MAP hoặc Modbus Plus sử dụng biện pháp kiểm lỗi riêng cho
cả khung (bao gồm cả nội dung thông báo Modbus), vì vậy các ô CRC hoặc LRC không
được đưa vào trong khung thông báo Modbus nguyên bản. Trong trường hợp xảy ra lỗi
truyền, giao thức mạng cụ thể sẽ báo với thiết bị gửi và cho phép thực hiện gửi lại. Nếu
thông báo được gửi tới đích nhưng trạm tớ không thể trả lời, lỗi timeout cũng sẽ được
chương trình chủ phát hiện.
Kiểm soát LRC
Trong chế độ ASCII, phần thông tin kiểm lỗi của khung thông báo dựa trên phương
pháp LRC (Longitudinal Redundancy Check). Dãy bit nguồn được áp dụng để tính mã
LRC bao gồm phần địa chỉ, mã hàm và phần dữ liệu. Các ô khởi đầu cũng như kết thúc
khung không tham gia vào tính toán. Mã LRC ở đây dài 8 bit (truyền hai ký tự ASCII),
được tính bằng cách cộng đại số toàn bộ các byte của dãy bit nguồn (không để ý tới
tràn), sau đó lấy phần bù hai của kết quả.
Kiểm soát CRC
Mã CRC được áp dụng trong chế độ RTU dài 16 bit. Đa thức phát được sử dụng G =
1010 0000 0000 0001. Khi đưa vào khung thông báo, byte thấp của mã CRC được gửi
đi trước, tiếp sau là byte cao.
Đăng ký:
Đăng Nhận xét
(
Atom
)