Chương 5 : MẠNG CAN VÀ CHẨN ĐOÁN TRÊN XE ĐIỆN RENAULT ZOE
5.2 Quá trình truyền nhận thông tin giữa OBD II và CAN
5.2.2 Cấu trúc của CAN
CAN Frame: Là chuỗi các bit liên tiếp với nhau để tạo nên một CAN message. CAN protocol định nghĩa 04 loại CAN Frames sau:
1.Data Frame: Dùng khi CAN node muốn truyền dữ liệu đến một (những) CAN
node khác. Dạng Frame này có một vùng DATA để chứa dữ liệu cần gửi.
2.Remote Frame: Còn gọi là Frame yêu cầu hoặc Frame điều khiển. Khi một CAN
node truyền đi một Remote Frame thì tức là node đó muốn u cầu 1 (hoặc nhiều) node khác gửi một Data Frame có ID trùng với ID mà node đó yêu cầu.
3.Error Frame: Dùng trong việc xử lí lỗi Frame. Có thể được gửi bởi bất kì node
114
4.Overload Frame: Dùng trong việc xử lí lỗi Overload. Frame này sẽ tạo ra độ trễ
giữa các Data Frame hoặc Remote Frame. Bất ki node nào cũng có thể dùng node này để ngăn sự truyền tiếp theo nếu node đó phát hiện đang phải nhận quá nhiều dữ liệu (tình trạng Overload).
Data Frame là dạng Frame thường gặp nhất vì tất cả các CAN message đều được truyền đi dưới dạng Frame này. Data Frame lại được chia thành 02 dạng:
- Standard Frame Format: phần Identifier chứa 11 bits, trong đó 07 bits đầu tiên
đóng vai trị Arbitration.
- Extented Frame Format: phần Identifier chứa 29 bits, đồng thời cũng đóng vai trị
là Arbitration.
Hình 5.7:Khung dữ liệu của CAN 2.0A (11bit) và CAN 2.0B (29bit)
5.2.2.1 Start-of Frame
SOF có độ dài 1 bit, là bit khởi đầu 1 CAN Frame → Luôn nằm ở đầu Frame. - Một CAN node muốn gửi một message nào đó thì node đó sẽ đặt SOF về
115 - SOF cịn có nhiệm vụ bắt đầu q trình đồng bộ giữa các CAN node (tính từ thời điểm xuất hiện cạnh xuống chuyển từ Recessive sang Dominant) đồng thời báo hiệu quá trình Arbitration sắp diễn ra.
5.2.2.2 Identifier/Arbitration Field
ID có 11 bit, chứa ID của message để thực hiện Arbitration. - CAN ID càng nhỏ thì có mức ưu tiên càng cao.
- CAN protocol không định nghĩa về việc phân chia ID cho từng hệ thống cụ thể mà chỉ đề cập đến vấn đề Arbitration.
- 11 bits ID sẽ được dánh dấu từ ID-10 đến ID-0 theo chiều từ trái qua phải → ID- 10 sẽ là LSB.
- 7 bits từ ID-10 đến ID-4 được sử dụng cho việc Arbitration và không được cùng là Recessive (111 1111 = 7F).
Lưu ý: Arbitration là một phương tiện ngăn chặn hoặc phát hiện sự va chạm của
dữ liệu được gửi bởi các ECU khác nhau trong cùng một thời điểm. Arbitration là cần thiết để nhận được phản hồi chính xác đối với yêu cầu.
5.2.2.3 Remote-Transmission-Request
RTR có độ dài 1 bit. Nhiệm vụ của RTR là phân biệt giữa Data-Frame với Remote- Frame.
- RTR = 0: Data Frame. - RTR = 1: Remote Frame
Về mặt ý nghĩa, Remote Frame mở ra khả năng cho phép 1 CAN node được quyền yêu cầu một (hoặc nhiều) CAN node khác truyền đi Data Frame với ID cho trước. RTR luôn nằm ngay sau ID (Kể cả CAN 2.0A hay CAN 2.0B, nhưng riêng CAN 2.0B dạng Standard thì RTR sẽ nằm sau bit ID-18).
116 IDE có độ dài 1 bit. IDE chính là bit để phân biệt giữa Standard Frame với Extended Frame, còn được một vài tài liệu gọi là R1.
- IDE = 0: Standard Frame. - IDE = 1: Extended Frame.
Vị trí của IDE sẽ khác nhau phụ thuộc vào CAN Frame Format.
- Standard Frame: IDE sẽ nằm ngay sau RTR, thuộc vùng Control như (Hình 5.7).
- Extended Frame: IDE sẽ nằm ngay sau SRR (lưu ý không phải là RTR), thuộc
vùng Arbitration Field.
Lưu ý: Đối với CAN 2.0A thì sẽ khơng có bit IDE, thay vào đó sẽ là bit dự trự R1
ln có giá trị bằng 1 và hồn tồn khơng có ý nghĩa.
5.2.2.5 Reserved
- Reserved hay cịn gọi là R0, là bit dự trữ, có độ dài 1 bit. - Giá trị của bit này luôn là 1 nhưng sẽ luôn bị bỏ qua.
5.2.2.6 Data-Length-Code
- DLC có độ dài 4 bits, có nhiệm vụ qui định số byte của vùng Data.
- DLC chỉ được mang giá trị (tính theo decimal) từ 0 đến 8, tương ứng với 8 bytes dữ liệu. → Hồn tồn có thể có trường hợp CAN Frame khơng chứa bất kì dữ liệu nào (DLC = 0).
-
5.2.2.7 Data-Field
- Data-Field chính là vùng chứa dữ liệu mà CAN Frame cần truyền. Data-Field sẽ có độ dài 8 bytes (64 bits).
- Độ dài của Data-Field phải tương ứng với giá trị của DLC. Nếu có sự khác biệt thì một lỗi CAN sẽ được phát và dữ liệu truyền/nhận sẽ bị sai lệch.
117
5.2.2.8 Cyclic-Redundancy-Check
CRC là vùng kiểm tra, gồm 16 bits, chia làm 02 phần:
CRC Sequence - Gồm 15 bits.
- Được đánh dấu từ CRC-14 đến CRC-0.
- Giá trị của CRC sẽ ứng với một phép tính, thực chất là một phép chia đa thức (chia bit nhị phân).
CRC Delimiter
- Có độ dài 1 bit.
- Vị trí của CRC Delimiter ln nằm ngay sau CRC-0.
- Giá trị của CRC-Delimiter luôn là Recessive nhằm làm nhiệm vụ phân cách vùng CRC với vùng liền kề nó.
5.2.2.9 Acknowledge
Vùng ACK có độ dài 02 bits và được chia làm 02 phần:
ACK Slot
- Có độ dài 1 bit.
- Node truyền CAN Frame ban đầu sẽ đặt bit này ở giá trị Recessive (ACK = 1). - Khi một hoặc nhiều node nhận đầy đủ các dữ liệu trong vùng Data mà khơng trả
về lỗi nào đồng thời tính tốn CRC chính xác, thì các node đó sẽ phản hồi lại đến node nhận thông qua ACK Slot bit.
- Thông tin phản hồi được thể hiện qua việc các node nhận Data Frame sẽ kéo giá trị ACK Slot thành Dominant (ACK = 0).
ACK Delimiter
- Có độ dài 1 bit.
- Có nhiệm vụ phân cách giữa phần ACK với phần khác liền kề sau nó.
Lưu ý: Bit ACK Slot luôn được đặt giữa 02 bit Recessive là CRC Delimiter và
118
5.2.2.10 End-of-Frame
- EOF là vùng thông báo kết thúc một Data Frame hay một Remote Frame. - EOF có độ dài 07 bits, giá trị của 07 bits này luôn là Recessive.
Sự khác biệt giữa CAN 2.0A & CAN 2.0B:
Trong phiên bản 2.0B Arbitration Field chứa hai trường bit ID. Đầu tiên (ID cơ sở) dài mười một (11) bit để tương thích với phiên bản 2.0A. Trường thứ hai (phần mở rộng ID) dài mười tám (18) bit, để cho tổng độ dài là hai mươi chín (29) bit.
Sự khác biệt giữa hai định dạng được thực hiện bằng cách sử dụng bit ID mở rộng (IDE).
Một bit SRR được bao gồm trong Arbitration Field. Bit SRR luôn được truyền dưới dạng Recessive bit để đảm bảo rằng, trong trường hợp phân xử giữa khung dữ liệu chuẩn và khung dữ liệu mở rộng. Khung dữ liệu chuẩn sẽ luôn được ưu tiên nếu cả hai thơng điệp có cùng số nhận dạng cơ sở (11 bit).
Tất cả các trường khác trong Data Frame 2.0B giống hệt với các trường ở Standard Data Frame.
Khả năng tương thích 2.0A và 2.0B
CAN 2.0B hồn tồn tương thích ngược với CAN 2.0A và có thể truyền và nhận thơng điệp ở một trong hai định dạng.
Tuy nhiên, lưu ý rằng có hai loại CAN 2.0A:
- Loại đầu tiên chỉ có khả năng truyền và nhận thông điệp ở định dạng 2.0A. Với loại CAN 2.0 này, việc nhận bất kỳ thông điệp 2.0B nào sẽ gắn cờ lỗi.
- Loại thứ hai của CAN 2.0A (2.0B Passive) cũng có khả năng gửi và nhận thơng điệp 2.0A, nhưng ngoài ra, các thiết bị này sẽ xác nhận đã nhận thông điệp 2.0B và sau đó bỏ qua chúng.
119 Do đó, trong các hạn chế được đề cập ở trên, có thể sử dụng cả CAN 2.0A (với 2.0B Passive) và CAN 2.0B trên một mạng duy nhất.