Khung dữ liệu (Data Frame)

Một phần của tài liệu Nghiên cứu và thử nghiệm máy chẩn đoán cơ bản (Trang 43 - 47)

Khung dữ liệu là khung duy nhất để truyền dữ liệu. Mạng CAN hỗ trợ hai đinh dạng khung khác nhau: Định dạng khung tiêu chuẩn - Standard Frame Format (được sử dụng trong cả CAN 2.0A và 2.0B) và Định dạng khung mở rộng - Extended Frame Format (chỉ sử dụng trong CAN 2.0B). Sự khác biệt quan trọng của hai dạng khung là phần định danh - Identifier. Phần định danh của khung tiêu chuẩn có 11 bit và khung mở rộng là 29 bit.

Hình 4.10. Định dạng khung tiêu chuẩn

Hình 4.11. Định dạng của khung mở rộng

Khung dữ liệu của CAN 2.0A và CAN 2.0B có trình tự truyền tin nhắn tương tự nhau. Cấu trúc khung dữ liệu gồm các vùng: Vùng khởi đầu (Start of frame - SOF), Vùng phân xử (Arbitration field), Vùng điều khiển (Control field), Vùng dữ liệu (Data field), Vùng kiểm tra (CRC field), Vùng báo nhận (ACK field), Vùng kết thúc khung (End of

4.4.1.1. Vùng khởi đầu (Start Of Frame)

Khi cổng CAN thể hiện trạng thái Lặn - Recessive thì hệ thống CAN ở chế độ chờ. Khi ở trạng thái Trội - Dominant thì hệ thống bắt đầu quá trình truyền tin, nhồi bit (bit

stuffing) và đồng bộ hóa tất cả các nút. CAN 2.0A và CAN 2.0B có vùng khởi đầu giống nhau.

4.4.1.2. Vùng phân xử (Arbitration Field)

Định dạng vùng phân xử là khác nhau đối với dạng khung chuẩn và dạng khung mở rộng.

Đối với khung tiêu chuẩn, vùng phân xử gồm có 12 bit: • 11 bit Định danh chuẩn.

• 1 bit Yêu cầu truyền từ xa (RTR - Remote Transmission Request). Đối với khung mở rộng, vùng phân xử gồm có 32 bit:

• 11 bit Định danh chuẩn.

• 1 bit Yêu cầu thay thế từ xa (SRR - Substitute Remote Request). • 1 bit Mở rộng mã định danh (IDE – Identifier Extension Bit). • 18 bit Định danh mở rộng.

• 1 bit Yêu cầu truyền từ xa (RTR - Remote Transmission Request).

Bit RTR (Remote Transmission Request) là bit dùng để phân biệt Data Frame và Remove Frame. Bit này luôn bằng 0 (bit Dominant) đối với Data Frame và bằng 1 (bit

Recessive) đối với Remove Frame, luôn ngay sau ID của khung.

Bit SRR (Substitute Remote Request) chỉ có ở Khung mở rộng. Đây là bit

Recessive (1). So sánh với Khung chuẩn, vị trí của bit này trùng với vị trí của bit RTR

nên có tên gọi là bit thay thế (Subsitute) cho bit RTR ở khung chuẩn. Giả sử có hai Node cùng truyền, một Node truyền khung dữ liệu chuẩn, một Node truyền khung dữ liệu mở rộng có ID giống nhau thì Node truyền khung chuẩn sẽ thắng phân xử vì đến vị trí sau Base ID, ở Khung chuẩn là bit RTR = 0, còn Khung mở rộng là bit SRR = 1. Như vậy, khung chuẩn chiếm ưu thế hơn so với khung mở rộng khi có Base ID như nhau.

Bit IDE (IDentifier Extension) là bit phân biệt giữa loại Base Frame và Extended Frame. Bit IDE = 0 (Dominant) thì là Base Frame, IDE = 1 (Recessive) thì là Extended

Frame. Bit này thuộc: Vùng phân xử với Extended Frame và Vùng điều khiển với Base Frame.

Hình 4.12. Các phân lớp bit của vùng phân xử 4.4.1.3. Vùng điều khiển (Arbitration Field)

Vùng điều khiển có 6 bit, có cấu trúc khác nhau giữa Base Frame (CAN 2.0A) và

Extended Frame (CAN 2.0B). Base Frame gồm IDE, r0 (Reserved Bit) và DLC . Extended Frame gồm r1, r0 và DLC.

Hình 4.13. Giá trị của các bit DLC

Bit r1 và r0 là hai bit dự trữ. Tuy hai bit này phải được truyền là bit Recessive (1)

nhưng bộ nhận không quan tâm đến giá trị 2 bit này. Bộ nhận không coi đó là lỗi mà bỏ qua và nhận thông điệp bình thường.

Mã độ dài dữ liệu DLC (Data Length Code) có độ dài 4 bit quy định số byte Data Field của Data Frame. Chỉ được mang giá trị từ 0 đến 8 tương ứng Data Field có từ 0

4.4.1.4. Vùng dữ liệu (Data Field)

Vùng dữ liệu chứa các dữ liệu chính của tin nhắn (0-8 byte) với độ dài dữ liệu được thể hiện ở vùng DLC. Một khung dữ liệu có thể được dùng để đồng bộ hóa các dữ liệu riêng lẻ, bằng một tin nhắn riêng biệt, ví dụ: nhiệt độ, tốc độ động cơ,…

Hình 4.14. Độ dài tối thiểu và tối đa của vùng dữ liệu 4.4.1.5. Vùng kiểm tra (CRC – Cyclic Redundanct Check)

Vùng kiểm tra gồm 16 bit và được chia làm hai phần là chuỗi CRC (CRC

Sequence) và phần phân cách CRC (CRC Delimiter) để phân cách vùng CRC và vùng

ACK. CRC Sequence gồm 15bit CRC tuần tự. Mọi tính toán cho CRC Sequence là phép chia đa thức (hay chia bằng các bit nhi phân) và đều dùng Modulo-2 (phép toán tìm số dư của phép chia cho 2).

Hình 4.15. Các phần của vùng CRC

Mã kiểm tra CRC phù hợp nhất cho các khung mà chuỗi bit có chiều dài dưới 127

bit, mã này thích hợp cho việc phát hiện các trường hợp sai nhóm (Burst Error). Ở đây, tổng bit từ vùng SOF đến vùng dữ liệu tối đa là 83 bit (Base Frame) và 103 bit (Extended

Frame). Bộ nhận cũng sẽ tính toán CRC như bộ truyền khi đã nhận dữ liệu và so sánh kết

quả đó với CRC Sequence mà nó đã nhận được, nếu khác nhau tức là đã có lỗi, nếu giống nhau tức là đã nhận đúng từ vùng SOF đến vùng dữ liệu.

CRC Delimiter theo ngay sau CRC Sequence, nó là một bit Recessive làm nhiệm

vụ phân cách vùng CRC với vùng ACK.

4.4.1.6. Vùng báo nhận (ACK – Acknowledge)

Vùng báo nhận có độ dài 2 bit và bao gồm hai phần là khe ACK (ACK Slot) và phần phân cách ACK (ACK delimiter).

Hình 4.16. Các phần của vùng ACK

ACK slot có độ dài 1 bit, một Node truyền dữ liệu sẽ thiết lập bit này là Recessive.

Khi một hoặc nhiều Node nhận chính xác giá trị tin nhắn (không lỗi và so sánh CRC Sequence trùng khớp) thì nó sẽ báo lại cho bộ truyền bằng cách truyền ra một bit Dominant ngay vị trí ACK Slot để ghi đè lên bit Recessive của bộ truyền.

ACK delimiter có độ dài 1 bit, nó luôn là một bit Recessive. Như vậy, ta thấy rằng ACK Slot luôn được đặt giữa hai bit Recessive là CRC Delimiter và ACK Delimiter.

4.4.1.7. Vùng kết thúc (EOF – End of Frame)

Vùng kết thúc là vùng thông báo kết thúc một khung dữ liệu hay khung yêu cầu. Vùng này gồm 7 bit Recessive (1).

Một phần của tài liệu Nghiên cứu và thử nghiệm máy chẩn đoán cơ bản (Trang 43 - 47)

Tải bản đầy đủ (PDF)

(74 trang)