Khung dữ liệu (Data frame)

Một phần của tài liệu Nghiên cứu và chế tạo mô hình mô phỏng hệ thống CAN trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 26 - 31)

Một tin nhắn của một nút muốn truyền dữ liệu thì phải đạt các tiêu chuẩn khung dữ liệu của CAN. Ngoài ra CAN còn hỗ trợ hai dạng khác nhau của khung: CAN 2.0A và CAN 2.0B. Sự khác biệt quan trọng của hai dạng khung là phần định danh. Khung định danh của CAN 2.0A có 11 bit, còn CAN 2.0B có 29 bit chia thành hai phần là 11 bit và 18bit. Cả hai dạng khung đều tƣơng th ch với nhau nên một mạng có thể sử dụng hai dạng khung. Chiều dài tối đa là 130 bit (dạng chuẩn) và 150 bit (dạng mở rộng). Cấu trúc khung tiêu chuẩn thể hiện ở hình sau:

14

Hình 2.6: Khung dữ liệu tiêu chuẩn

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. Khung bắt đầu bằng bit khởi đầu (Start of frame) theo sau đó là vùng phân xử, điều khiển, dữ liệu, CRC. Cuối cùng là ACK fields và bit kết thúc (End of frame).

- Vùng khởi đầu (Start Of Frame): Khi Bus thể hiện trạng thái lặn thì hệ thống CAN ở chế độ chờ. Phần bắt đầu ở trạng thái trội để thông báo bắt đầu quá trình truyền tin và 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.

- Vùng phân xử (Arbitration Field): Đối với CAN 2.0A, vùng phân xử có 11 bit định danh và một bit điều khiển (RTR-Remote Transmission Request). Đối với CAN 2.0B vùng phân xử có 11 bit định danh, tiếp theo là bit điều khiển thay thế từ xa (SRR- Substitute Remote Request) và bit định danh mở rộng (IDE-Identifier Extension). Cả hai bit này đều gửi lần lƣợt để đảm bảo khung CAN 2.0A lu n có ƣu tiên cao hơn khung CAN 2.0B, nó có 11 bit định danh đầu và 18 bit định danh thứ hai. Bit RTR kết thúc vùng phân xử, nó cho biết khung đƣợc truyền là khung dữ liệu hay khung yêu cầu từ xa (bit trội là khung dữ liệu và ngƣợc lại). Ví dụ: Nếu trạm A gửi tin nhắn bằng khung dữ liệu và trạm B bằng khung yêu cầu từ xa cùng một thời điểm thì sự phân xử không thể giải quyết đƣợc bằng định danh của tin nhắn. Khi đó bit RTR là yếu tố quyết định truyền truy cập. Lúc đó, trạm A giành quyền ƣu tiên với việc gửi bit RTR ở trạng thái trội và tiếp tục truyền tin nhắn. Trạm B đã yêu cầu tin nhắn này, chuẩn bị nhân và có thể đọc các dữ liệu khác đƣợc gởi bởi trạm A.

15

Hình 2.7: Vùng phân xử khung tiêu chuẩn và khung mở rộng

- Vùng điều khiển (Control Fields): Vùng điều khiển có 6 bit, nó có cấu trúc khác nhau giữa khung tiêu chuẩn (CAN 2.0A) và khung mở rộng (CAN 2.0B). Đối với CAN 2.0A, vùng điều khiển có bit định danh mở rộng (IDE-Identifier Extension), luôn luôn là bit trội và theo sau là bit dự trữ (r0) để mở rộng trong tƣơng lai. Bốn bit còn lại trong vùng điều khiển thể hiện chiều dài dữ liệu (Data Length Code– DLC) trong vùng dữ liệu, nhờ đó bộ nhận xác định tất cả dữ liệu có đƣợc nhận đầy đủ hay không?

16 Cấu trúc khung của CAN 2.0B giống với CAN 2.0A. Tuy nhiên CAN 2.0B có bit định danh mở rộng thuộc vùng phân xử và thêm một bit dữ trữ để mở rộng trong tƣơng lại và thƣờng xuyên đƣợc gửi đi.

Hình 2.9: Cấu trúc vùng điều khiển

- 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ùng dữ liệu thể hiên độ dài bằng 0 byte thì khung dữ liệu ngắn nhất là 44 bit hoặc 64 bit.Một khung dữ liệu có thể đƣợc dùng để đồng bộ hóa các dữ liệu riêng lẻ. Một số tín hiệu có thể đƣợc gửi bằng một tin nhắn riêng, ví dụ nhƣ: nhiệt độ động cơ và tốc độ động cơ.

Hình 2.10: Vùng dữ liệu

- Vùng điều khiển vòng lặp (CRC-Cyclic Redundancy Check sum): Gồm 15 bit (CRC Sequence)để kiểm tra các vùng trƣớc từ bit bắt đầu đến bit cuối cùng của vùng dữ liệu. Bit thứ 16 (CRC Delimiter-khoảng phân cách) của vùng CRC là bit lặn để hoàn tất việc kiểm tra.CRC đƣợc tính bằng cách chia đa thức để có một đa thức có hệ số dựa vào dãy bit chứa bit khởi đầu đến bit cuối cùng của vùng dữ liệu. Một tin nhắn đƣợc xem nhƣ một đa thức, nó đƣợc chia bởi đa thức tổng quát:

17

X15+X14+ X10+ X8 + X7 + X4 + X3 + 1 (2-1)

Số dƣ của phép chia đa thức là giá trị CRCđƣợc đ nh kèm vào dữ liệu trƣớc khi dữ liệu đƣợc truyền đi hay lƣu trữ. Khi dữ liệu đƣợc sử dụng, nó sẽ đƣợc kiểm thử bằng cách sinh ra mã CRC và so khớp với mã CRC trong dữ liệu. Nếu kết quả tính toàn không khớp mã CRC trong dữ liệu thì bộ phận tiếp nhận gửi một khung lỗi để yêu cầu truyền lại. Vùng CRC là một vùng cần thiết để kiểm tra và phát hiện lỗi trong CAN.

Hình 2.11 Vùng điều khiển vòng lặp thừa

- Vùng xác nhận (ACK-Acknowledgment): Vùng ACK là vùng xác định độ chính xác của tin nhắn không và nó đƣợc thiết lập bởi thiết bị gửi mà đƣợc gửi bởi hệ thống (nút) khác. Nó xác nhận đã nhận đƣợc khung sau vùng dữ liệu. Vùng ACK gồm: Khoảng ACK (ACK Slot) và khoảng phân cách ACK (ACK Delimiter).Thiết bị gửi sẽ gởi một bit lặn ACK và một bit trội ACK sẽ đƣợc ghi đè lên bởi thiết bị nhận đã nhận đúng tin nhắn. Hệ thống (nút) sẽ truyền lại tin nhắn khi không tìm thấy bit ACK trên đƣờng dẫn Bus. Đây là tín hiệu thông báo với thiết bị nhận không có sự cố trong quá trình truyền dữ liệu.

18 - Vùng kết thúc (End Of Frame): Thể hiện sự kết thúc của tin nhắn với 7 bit lặn. Đối với vùng nay nguyên tắc chèn bit kh ng đƣợc thực hiện để tránh lỗi.

Hình 2.13: Vùng kết thúc

- Khoảng phân cách giữa các khung (Interframe Space): Gồm 3 bit lặn liên tiếp để tạo ra khoảng trống để tách rời các tin nhắn kế tiếp nhau. Sau 10 bit lặn, các nút đƣợc phép truyền tin nhắn trong mạng. Khi nhận đủ điều khiện, Bus mới hoạt động trở lại.Chỉ khung dữ liệu và khung yêu cầu từ xa luôn kèm theo khoảng trống. Khung lỗi và khung quá tải có thể đƣợc gửi ngay sau khung cuối. Điều nay giúp báo hiệu ngay các lỗi và các vấn đề liên quan.

Một phần của tài liệu Nghiên cứu và chế tạo mô hình mô phỏng hệ thống CAN trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 26 - 31)