Cấu trúc frame M-Bus & cơ chế truyền thông
Sau khi đã lần lượt tìm hiểu bản chất giao thức M-Bus (Phần 1), kiến trúc hệ thống Master – Meter (Phần 2) và chuẩn vật lý – topology mạng (Phần 3), chúng ta đã có trong tay một bức tranh tương đối đầy đủ về cách một hệ thống M-Bus được thiết kế và triển khai ngoài thực tế.
Tuy nhiên, để thực sự làm chủ M-Bus ở mức giao thức – từ việc đọc dữ liệu công tơ, phân tích lỗi truyền thông cho đến tích hợp vào PLC, SCADA hay BMS – kỹ sư bắt buộc phải hiểu rõ cấu trúc khung tin (frame / telegram) của M-Bus.
Trong Phần 4 này, BKAII sẽ cùng bạn giải phẫu chi tiết khung tin M-Bus: từ các byte Start, Length, Control, Address, Data, Checksum cho đến cách phân biệt Short frame, Long frame và Telegram. Đây là nền tảng quan trọng giúp bạn có thể đọc – hiểu – phân tích bất kỳ gói tin M-Bus nào trong thực tế.
1. Tổng quan về cơ chế truyền thông M-Bus
M-Bus sử dụng mô hình Master – Slave, trong đó toàn bộ hoạt động truyền thông đều do Master khởi xướng. Các Meter (Slave) chỉ phản hồi khi nhận được yêu cầu hợp lệ từ Master.
- Master gửi lệnh (request)
- Meter phản hồi dữ liệu (response)
- Không có truyền thông ngang hàng giữa các Meter
Cơ chế này giúp M-Bus kiểm soát tốt xung đột truyền thông, phù hợp với hệ thống có số lượng lớn công tơ đo đếm.
2. Frame (Telegram) trong M-Bus là gì?
Trong M-Bus, dữ liệu được truyền dưới dạng telegram – hay còn gọi là frame truyền thông. Mỗi telegram là một chuỗi byte có cấu trúc xác định, tuân theo tiêu chuẩn EN 13757-3.
Tùy theo mục đích truyền thông, M-Bus sử dụng nhiều loại frame khác nhau, phổ biến nhất là Short frame và Long frame.
3. Cấu trúc tổng quát của frame M-Bus
Trong giao thức M-Bus (EN 13757-3), mọi quá trình trao đổi dữ liệu giữa Master và Meter (Slave) đều được thực hiện thông qua các frame (khung tin). Mỗi frame M-Bus được thiết kế theo cấu trúc chặt chẽ nhằm đảm bảo truyền thông ổn định, dễ kiểm tra lỗi và phù hợp với môi trường công nghiệp có nhiều nhiễu.
Một frame M-Bus điển hình bao gồm các trường sau:
- Start byte
- Length
- Control field
- Address field
- Data field
- Checksum
- Stop byte
3.1. Start Byte – Byte bắt đầu khung
Chức năng: Đánh dấu điểm bắt đầu của một frame M-Bus.
Start byte giúp thiết bị nhận đồng bộ luồng dữ liệu và xác định loại frame đang được truyền. Trong M-Bus, Start byte thường có các giá trị đặc trưng như:
0x10– Short Frame0x68– Long Frame
Việc phân biệt Start byte cho phép Master và Meter xử lý đúng cấu trúc frame ngay từ byte đầu tiên.
3.2. Length – Trường độ dài khung
Chức năng: Xác định số byte dữ liệu trong frame.
Trường Length cho biết độ dài phần dữ liệu (tính từ Control field đến Checksum). Đối với Long Frame, giá trị Length thường được lặp lại hai lần nhằm tăng độ tin cậy khi truyền.
Nhờ Length field, thiết bị nhận có thể:
- Biết chính xác số byte cần đọc
- Phát hiện frame bị thiếu hoặc dư dữ liệu
3.3. Control Field – Trường điều khiển
Chức năng: Xác định loại frame và hướng truyền thông.
Control field chứa các bit điều khiển cho biết:
- Frame được gửi từ Master hay từ Meter
- Loại lệnh (yêu cầu dữ liệu, phản hồi dữ liệu, xác nhận…)
- Trạng thái truyền thông (ACK, NACK, lỗi…)
Đây là trường quan trọng giúp Master phân biệt giữa các phản hồi hợp lệ và frame lỗi.
3.4. Address Field – Trường địa chỉ
Chức năng: Xác định Meter tham gia truyền thông.
M-Bus hỗ trợ hai cơ chế địa chỉ:
- Primary Address: địa chỉ ngắn (0–250), phù hợp cho hệ thống nhỏ
- Secondary Address: địa chỉ mở rộng, cho phép định danh Meter duy nhất trong mạng lớn
Address field giúp Master giao tiếp chính xác với từng Meter, ngay cả khi trên bus có hàng chục hoặc hàng trăm thiết bị.
3.5. Data Field – Trường dữ liệu
Chức năng: Mang thông tin đo và dữ liệu ứng dụng.
Data field là phần lớn nhất và quan trọng nhất của frame M-Bus. Nó có thể chứa:
- Giá trị đo (điện năng, nước, nhiệt, gas…)
- Đơn vị đo
- Thông tin trạng thái Meter
- Mã dữ liệu theo chuẩn EN 13757
Cách giải mã Data field phụ thuộc vào loại Meter và thường được xử lý bởi gateway hoặc phần mềm trung tâm.
3.6. Checksum – Trường kiểm tra lỗi
Chức năng: Phát hiện lỗi truyền dữ liệu.
Checksum được tính toán dựa trên các byte trong frame (từ Control field đến Data field). Thiết bị nhận sẽ so sánh checksum nhận được với checksum tự tính:
- Khớp → frame hợp lệ
- Không khớp → frame bị loại bỏ
Cơ chế này giúp đảm bảo dữ liệu đo không bị sai lệch do nhiễu đường truyền.
3.7. Stop Byte – Byte kết thúc khung
Chức năng: Đánh dấu kết thúc frame M-Bus.
Stop byte thường có giá trị 0x16. Khi nhận byte này, thiết bị hiểu rằng frame đã được truyền hoàn chỉnh và sẵn sàng xử lý nội dung.
Như vậy, mỗi frame M-Bus là một khối dữ liệu có cấu trúc rõ ràng, giúp hệ thống đo đếm hoạt động ổn định, dễ mở rộng và dễ tích hợp vào các nền tảng PLC, SCADA hoặc BMS.
4. Phân tích chi tiết cấu trúc frame M-Bus qua ví dụ thực tế
Để giúp bạn đọc dễ hình dung, trong mục này chúng ta sẽ phân tích một frame M-Bus Long Frame thực tế – dạng khung tin thường gặp nhất khi Master đọc dữ liệu đo từ công tơ.
4.1. Ví dụ một frame M-Bus Long Frame
Giả sử Master gửi lệnh đọc dữ liệu và Meter phản hồi bằng frame sau (dạng HEX):
68 1B 1B 68 08 01 72 01 00 00 00 2C 01 00 00 00 0F 00 00 00 3A 16
Chúng ta sẽ lần lượt “bóc tách” từng byte trong frame này.
4.2. Start Byte – Byte bắt đầu
Byte: 68
Giá trị 0x68 cho biết đây là Long Frame. Trong M-Bus, Start byte giúp thiết bị nhận biết loại frame và đồng bộ quá trình đọc dữ liệu.
4.3. Length Field – Trường độ dài
Bytes: 1B 1B
Hai byte này cho biết độ dài phần dữ liệu trong frame (tính từ Control field đến Checksum). Việc lặp lại giá trị Length hai lần giúp tăng độ tin cậy khi nhận frame.
- 0x1B = 27 byte dữ liệu
4.4. Start Byte lặp lại
Byte: 68
Start byte xuất hiện lần thứ hai để xác nhận frame hợp lệ trước khi đọc nội dung.
4.5. Control Field – Trường điều khiển
Byte: 08
Control field xác định:
- Hướng truyền: Meter → Master
- Loại phản hồi: trả dữ liệu đo
Byte này giúp Master hiểu được đây là frame phản hồi hợp lệ từ Meter.
4.6. Address Field – Địa chỉ Meter
Byte: 01
Đây là Primary Address của Meter trong mạng M-Bus. Trong thực tế, Primary Address thường được dùng cho các hệ thống nhỏ hoặc đã được quy hoạch địa chỉ rõ ràng.
4.7. Data Field – Trường dữ liệu
Các byte:
72 01 00 00 00 2C 01 00 00 00 0F 00 00 00
Đây là phần quan trọng nhất của frame, chứa:
- Giá trị đo (ví dụ: điện năng, lưu lượng, nhiệt lượng)
- Đơn vị đo
- Mã dữ liệu theo chuẩn M-Bus
Việc giải mã Data field thường do gateway M-Bus hoặc phần mềm BMS/SCADA thực hiện, dựa trên chuẩn EN 13757-3.
4.8. Checksum – Kiểm tra lỗi
Byte: 3A
Checksum được tính toán dựa trên toàn bộ dữ liệu trước đó trong frame. Nếu checksum không khớp, frame sẽ bị loại bỏ nhằm tránh sử dụng dữ liệu sai.
4.9. Stop Byte – Kết thúc frame
Byte: 16
Giá trị 0x16 đánh dấu kết thúc frame M-Bus. Khi nhận byte này, thiết bị hiểu rằng frame đã hoàn chỉnh.
4.10. Tổng kết ví dụ
Qua ví dụ trên, có thể thấy một frame M-Bus Long Frame bao gồm đầy đủ:
- Đồng bộ truyền thông (Start)
- Xác định độ dài (Length)
- Điều khiển & địa chỉ hóa (Control, Address)
- Dữ liệu đo (Data)
- Kiểm tra lỗi & kết thúc (Checksum, Stop)
Việc hiểu rõ cấu trúc này giúp kỹ sư:
- Phân tích log truyền thông M-Bus
- Xử lý lỗi không đọc được công tơ
- Tích hợp M-Bus vào PLC, SCADA, BMS một cách chủ động
5. Phân biệt Short Frame – Long Frame – Telegram
- Short Frame: dùng cho lệnh đơn giản, xác nhận (ACK)
- Long Frame: dùng khi truyền dữ liệu đo đếm
- Telegram: thuật ngữ chung chỉ mọi frame M-Bus
Việc phân biệt đúng các loại frame giúp kỹ sư dễ dàng phân tích log truyền thông và xử lý lỗi khi tích hợp hệ thống.