Phần 3 – Giải phẫu Frame CAN & cơ chế Arbitration

Trong Phần 2, chúng ta đã phân tích tầng vật lý CAN Bus – dây CAN_H / CAN_L, truyền vi sai, termination và topology mạng. Sang Phần 3, BKAII sẽ đi sâu vào trái tim của giao thức CAN: cấu trúc CAN Framecơ chế arbitration – lý do vì sao CAN là một trong những giao thức ổn định và không xảy ra collision trong hệ thống điều khiển thời gian thực.


1. CAN Frame là gì?

CAN Frame là đơn vị dữ liệu cơ bản được truyền trên bus CAN. Không giống các giao thức dựa trên địa chỉ thiết bị, CAN truyền thông theo message-based – dữ liệu được nhận diện bằng Identifier (ID) thay vì địa chỉ node.

Mỗi frame CAN không chỉ chứa dữ liệu, mà còn mang thông tin: độ ưu tiên, kiểm tra lỗi, xác nhận và kết thúc khung truyền.

2. Cấu trúc chi tiết của CAN Data Frame

Một CAN Data Frame tiêu chuẩn (Standard Frame – 11-bit ID) được cấu trúc chặt chẽ theo từng trường bit, giúp đảm bảo truyền thông tin cậy, có kiểm soát lỗi trong môi trường công nghiệp nhiều nhiễu.

2.1. Các trường trong CAN Data Frame

  • SOF (Start of Frame): 1 bit dominant – đánh dấu bắt đầu frame
  • Identifier (ID): xác định nội dung và mức ưu tiên thông điệp
  • RTR (Remote Transmission Request): xác định frame dữ liệu hay frame yêu cầu
  • Control Field: chỉ ra độ dài dữ liệu (DLC)
  • Data Field: 0–8 byte dữ liệu
  • CRC Field: kiểm tra lỗi
  • ACK Field: xác nhận frame hợp lệ
  • EOF (End of Frame): kết thúc frame

2.2. Ví dụ trực quan cấu trúc CAN Data Frame

Giả sử một cảm biến nhiệt độ gửi dữ liệu lên PLC qua CAN Bus, với thông tin:

  • ID = 0x123 (11-bit Standard ID)
  • Dữ liệu = 02 7A (2 byte – ví dụ nhiệt độ 0x027A)

CAN Data Frame tương ứng có thể biểu diễn đơn giản như sau:

| SOF |   ID (11-bit)   | RTR | CTRL | DATA (0–8 byte) | CRC | ACK | EOF |
|  0  | 001 0010 0011  |  0  | 0010 |   02   7A       | ... |  1  | 111 |

2.3. Giải thích ví dụ theo từng trường

  • SOF: Bit dominant (0) → báo hiệu bus sắp truyền frame mới
  • Identifier = 0x123:
    • Xác định loại dữ liệu (ví dụ: nhiệt độ)
    • ID càng nhỏ → ưu tiên càng cao trong arbitration
  • RTR = 0: Đây là Data Frame (không phải Remote Frame)
  • Control Field (DLC = 2):
    • Cho biết frame mang 2 byte dữ liệu
  • Data Field:
    • Byte 1: 0x02
    • Byte 2: 0x7A
  • CRC:
    • Node phát tự tính CRC
    • Node nhận kiểm tra để phát hiện lỗi bit
  • ACK:
    • Nếu ít nhất một node nhận frame hợp lệ → kéo ACK xuống dominant
  • EOF: 7 bit recessive → kết thúc frame

2.4. Ý nghĩa thực tế của cấu trúc CAN Frame

Nhờ cấu trúc frame chặt chẽ này, CAN Bus có khả năng:

  • Phát hiện lỗi bit, lỗi CRC, lỗi frame rất mạnh
  • Đảm bảo dữ liệu quan trọng luôn được ưu tiên truyền trước
  • Hoạt động ổn định trong môi trường công nghiệp nhiều nhiễu

Đây chính là lý do CAN được sử dụng rộng rãi trong PLC, robot, máy công nghiệp, thiết bị di động và ô tô.

3. Standard ID (11-bit) vs Extended ID (29-bit)

CAN định nghĩa hai định dạng frame chính:

🔹 CAN Standard Frame (CAN 2.0A)

  • Identifier dài 11 bit
  • Độ ưu tiên cao hơn khi ID nhỏ
  • Thường dùng trong hệ thống CAN cổ điển, xe hơi, máy móc

🔹 CAN Extended Frame (CAN 2.0B)

  • Identifier dài 29 bit
  • Không gian ID lớn hơn – phân loại message tốt hơn
  • Phổ biến trong hệ thống lớn, CANopen, J1939

Quan trọng: CAN 2.0B tương thích ngược CAN 2.0A, giúp hệ thống mở rộng mà không phá vỡ cấu trúc cũ. Điều này chúng ta sẽ làm rõ hơn ở phần dưới.

4. CAN 2.0A và CAN 2.0B – Hiểu đúng về khả năng tương thích ngược

Trong thực tế triển khai CAN Bus, khái niệm CAN 2.0B tương thích ngược CAN 2.0A thường bị hiểu sai. Để thiết kế hệ thống mở rộng mà không phá vỡ mạng CAN hiện hữu, cần phân biệt rõ hai phiên bản này và cách chúng cùng tồn tại trên một bus CAN.

4.1. CAN 2.0A và CAN 2.0B khác nhau ở điểm nào?

Phiên bảnLoại FrameĐộ dài IdentifierBit IDE
CAN 2.0A Standard Frame 11-bit IDE = 0
CAN 2.0B Standard + Extended Frame 11-bit / 29-bit IDE = 0 hoặc 1

Có thể xem CAN 2.0B là phiên bản mở rộng (superset) của CAN 2.0A, vì nó hỗ trợ cả Standard ID (11-bit)Extended ID (29-bit).

4.2. Tương thích ngược trong CAN nghĩa là gì?

Tương thích ngược (backward compatibility) trong CAN không có nghĩa là CAN 2.0A có thể hiểu được Extended Frame, mà có nghĩa là:

  • Thiết bị CAN 2.0B có thể tham gia mạng CAN 2.0A
  • Không làm gián đoạn truyền thông hiện hữu
  • Không gây lỗi bus hoặc collision

Điều này chỉ đạt được khi thiết bị CAN 2.0B hoạt động ở chế độ CAN 2.0B Passive.

4.3. CAN 2.0B Passive – Chìa khóa của khả năng tương thích

Một node CAN 2.0B Passive có hành vi như sau:

  • Chỉ phát Standard Frame (11-bit ID)
  • Khi nhận Extended Frame:
    • Nhận biết IDE = 1
    • Bỏ qua một cách im lặng
    • Không phát Error Frame

Nhờ cơ chế này, thiết bị CAN 2.0B có thể được bổ sung vào mạng CAN 2.0A hiện hữu mà không phá vỡ cấu trúc cũ.

4.4. Vì sao Extended Frame có thể làm sập mạng CAN 2.0A?

Node CAN 2.0A không hiểu bit IDE = 1. Khi phát hiện Extended Frame, node CAN 2.0A sẽ:

  • Xem frame là không hợp lệ
  • Phát Error Frame
  • Khi lỗi lặp lại → chuyển sang trạng thái Bus-Off

Do đó, không được phép gửi Extended ID trong mạng còn tồn tại node CAN 2.0A.

4.5. Kết luận kỹ thuật

CAN 2.0B tương thích ngược CAN 2.0A theo nghĩa:

Thiết bị CAN 2.0B ở chế độ passive có thể tham gia mạng CAN 2.0A và chỉ sử dụng Standard Frame (11-bit ID) mà không gây lỗi hoặc làm gián đoạn hệ thống.

Nếu hệ thống cần sử dụng Extended ID (29-bit), cần tách bus hoặc dùng gateway CAN để đảm bảo an toàn truyền thông.

5. Dominant & Recessive – Nền tảng của Arbitration

Trên bus CAN, dữ liệu được truyền dưới dạng bit vi sai với hai trạng thái:

  • Dominant (logic 0): mức điện áp chi phối bus
  • Recessive (logic 1): mức điện áp lặn

Nguyên tắc quan trọng: Dominant luôn thắng Recessive. Đây chính là nền tảng cho cơ chế arbitration không phá hủy dữ liệu.

6. Cơ chế Arbitration của CAN hoạt động như thế nào?

Khi nhiều node cùng truyền dữ liệu:

  • Các node gửi ID của frame bit-by-bit
  • Mỗi node vừa truyền vừa so sánh bus thực tế
  • Nếu node gửi bit recessive nhưng bus ở trạng thái dominant → node đó thua arbitration
  • Node thua sẽ ngừng truyền ngay lập tức và chuyển sang chế độ lắng nghe

Node có ID nhỏ nhất (ưu tiên cao nhất) sẽ tiếp tục truyền frame mà không làm mất dữ liệu.

7. Vì sao CAN không xảy ra collision?

Khác với Ethernet truyền thống (CSMA/CD), CAN sử dụng CSMA/CR – Collision Resolution. Xung đột được giải quyết ngay trong quá trình truyền ID, trước khi dữ liệu thực sự được gửi.

Do đó:

  • Không có frame bị phá hủy
  • Không cần truyền lại dữ liệu do collision
  • Độ trễ xác định – rất phù hợp cho điều khiển thời gian thực

8. Ý nghĩa thực tế khi thiết kế hệ thống CAN

Hiểu rõ cấu trúc frame và arbitration giúp kỹ sư:

  • Thiết kế ID hợp lý theo mức độ ưu tiên
  • Tránh starvation của message quan trọng
  • Tối ưu thời gian phản hồi hệ thống
  • Dễ dàng debug lỗi bus CAN ngoài hiện trường


 
 

Số lượng người đang truy cập...

Không thể hiển thị dữ liệu người dùng trực tuyến vào lúc này.