Cấu trúc bức điện
Một thông báo Modbus bao gồm nhiều thành phần và có chiều dài có thể khác nhau.
Trong một mạng Modbus chuẩn, nếu một trong hai chế độ truyền (ASCII hoặc RTU)
được chọn, một thông báo sẽ được đóng khung. Mỗi khung bao gồm nhiều ký tự khung
có cấu trúc như được mô tả ở phần trên. Các ký tự này sẽ được truyền đi liên tục thành
dòng ở chế độ RTU, hoặc có thể gián đoạn với khoảng cách thời gian tối đa một giây ở
chế độ ASCII. Mục đích của việc đóng khung là để đánh dấu khởi điểm và kết thúc của
một thông báo, cũng như bổ sung thông tin kiểm lỗi. Trường hợp thông báo không được
truyền trọn vẹn có thể phát hiện được và báo lỗi.
Hai chế độ truyền ASCII và RTU không những chỉ khác nhau ở cách mã hóa thông
tin gửi đi và cấu trúc ký tự khung, mà còn khác nhau ở cấu trúc một bức điện gửi đi -
hay nói cách khác là cấu trúc khung thông báo, cũng như biện pháp kiểm lỗi.
Trong một mạng khác như MAP hay Modbus Plus, giao thức mạng có qui định riêng
về cấu trúc khung thông báo. Hình thức định địa chỉ và phương thức truyền cũng hoàn
toàn do giao thức mạng cụ thể định nghĩa, vì vậy phần địa chỉ nằm trong một thông báo
Modbus có thể trở nên không cần thiết trong quá trình truyền dẫn. Tuy nhiên, một địa
chỉ Modbus sẽ được chuyển đổi thành một địa chỉ trạm tương ứng của mạng phía dưới.
Khung ASCII
Trong chế độ ASCII, một thông báo bắt đầu với dấu hai chấm (:), tức ký tự ASCII
3A, và kết thúc bằng hai dấu quay lại-xuống dòng (CRLF), tức hai ký tự ASCII 0D và
0A (Hình 4.10). Mỗi byte trong thông báo được truyền đi bằng hai ký tự ASCII, vì vậy
các ký tự được phép xuất hiện trong các phần còn lại của khung là 0-9 và A-F.
Mỗi thiết bị tham gia mạng có trách nhiệm liên tục theo dõi đường truyền và phát
hiện sự xuất hiện của dấu hai chấm. Khi dấu hai chấm nhận được thì hai ký tự tiếp theo
sẽ mang địa chỉ của thiết bị được yêu cầu nhận thông báo hoặc thiết bị đã gửi thông báo
đáp ứng. Khoảng cách thời gian tối đa cho phép giữa hai ký tự trong một thông báo là
một giây. Nếu vượt quá giá trị này, bên nhận sẽ coi là lỗi.
Khung ASCII sử dụng phương pháp LRC (Longitudinal Redundancy Check) để cho
việc kiểm lỗi. Chi tiết về phương pháp này sẽ được mô tả trong chương mục tiếp theo
(Bảo toàn dữ liệu).
Khung RTU
Trong chế độ RTU, một thông báo bắt đầu với một khoảng trống yên lặng tối thiểu là
3.5 thời gian ký tự. Thực tế, người ta chọn thời gian đó bằng một số nguyên lần thời
gian ký tự, như được biểu thị bằng dãy (- - - -) trên Hình 4.11. Ô đầu tiên được truyền sẽ
là 8 bit địa chỉ, sau đó đến 8 bit mã hàm, một số byte tùy ý dữ liệu và cuối cùng là thông
tin kiểm lỗi CRC. Sau khi truyền ký tự cuối của mã CRC, khung thông báo cũng phải
được kết thúc bằng một khoảng trống yên lặng tối thiểu là 3.5 thời gian ký tự, trước khi
bắt đầu một thông báo mới. Thực chất, khoảng trống kết thúc của một thông báo cũng
có thể chính là phần khởi đầu bắt buộc của thông báo tiếp theo.
Khác với chế độ ASCII, toàn bộ khung thông báo RTU phải được truyền thành một
dòng liên tục. Nếu một khoảng trống yên lặng lớn hơn 1.5 thời gian ký tự xuất hiện
trước khi truyền xong toàn bộ khung, thiết bị nhận sẽ hủy bỏ thông báo chưa đầy đủ đó
và cho rằng byte tiếp theo sẽ là địa chỉ của một thông báo mới.
Địa chỉ
Phần địa chỉ trong một khung thông báo bao gồm hai ký tự (ASCII) hoặc tám bit
(RTU). Các giá trị địa chỉ hợp lệ nằm trong khoảng 0-247, trong đó địa chỉ 0 dành riêng
cho các thông báo gửi đồng loạt tới tất cả các trạm tớ. Nếu Modbus được sử dụng trên
một mạng khác, có thể phương thức gửi đồng loạt không được hỗ trợ, hoặc được thay
thế bằng một phương pháp khác. Ví dụ, Modbus Plus sử dụng một cơ sở dữ liệu toàn
cục, được cập nhật trong mỗi chu kỳ quay vòng token.
Một thiết bị chủ sử dụng ô địa chỉ để chỉ định thiết bị tớ nhận thông báo yêu cầu. Sau
khi thực hiện yêu cầu, thiết bị tớ đưa địa chỉ của mình vào khung thông báo đáp ứng,
nhờ vậy thiết bị chủ có thể xác định thiết bị tớ nào đã trả lời. Trong một mạng Modbus
chuẩn chỉ có một trạm chủ duy nhất, vì thế ô địa chỉ không cần thiết phải chứa cả địa
chỉ trạm gửi và trạm nhận.
Mã hàm
Giống như địa chỉ, phần mã hàm trong một khung thông báo bao gồm hai ký tự
(ASCII) hoặc tám bit (RTU). Các giá trị hợp lệ nằm trong khoảng từ 1-255, trong đó các
mã hàm trong thông báo yêu cầu chỉ được phép từ 1-127. Tuy nhiên, hầu hết các thiết bị
chỉ hỗ trợ một phần nhỏ số hàm trên và một số mã hàm được dữ trữ cho sau này. Một số
hàm tiêu biểu được liệt kê trong bảng 4.8.
Khi một thông báo gửi từ thiết bị chủ tới một thiết bị tớ, mã hàm chỉ địn hành động
mà thiết bị tớ cần thực hiện. Khi thiết bị tớ trả lời, nó cũng dùng chính mã hàm đó trong thông báo đáp ứng bình thường. Trong trường hợp xảy ra lỗi, mã hàm trả lại sẽ là mã
hàm trong yêu cầu với bit cao nhất được đặt bằng 1 và phần dữ liệu sẽ chứa thông tin
chi tiết về lỗi đã xảy ra.
Dữ liệu
Trong một thông báo yêu cầu, nội dung phần dữ liệu nói lên chi tiết hành động mà
bên nhận cần thực hiện.Ví dụ trong một yêu cầu đọc các thanh ghi thì phần dữ liệu chứa
thông tin về địa chỉ thanh ghi đầu tiên, số lượng các thanh ghi cần đọc và chiều dài thực
tế của chính phần dữ liệu.
Trong trường hợp bình thường, phần dữ liệu trong thông báo đáp ứng sẽ chứa kết
quả của hành động đã thực hiện, ví dụ nội dung các thanh ghi đã đọc. Nếu xảy ra lỗi,
phần dữ liệu chứa mã ngoại lệ, nhờ đó mà thiết bị chủ xác định hành động tiếp theo cần
thực hiện. Lưu ý rằng, một số hàm không đòi hỏi tham số, vì vậy phần dữ liệu có thể
trống.
Đăng ký:
Đăng Nhận xét
(
Atom
)