Bảo toàn dữ liệu Modbus

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.