110
Bảng 5.1: Thông số kỹ thuật của CAN High Speed và CAN Low Speed
CAN High-Speed [CAN-C]
CAN Low-Speed [CAN-B]
Singal CAN bus
CAN H CAN L CAN H CAN L CAN bus
Tiêu chuẩn ISO 11898-2 ISO 11898-3, 11519-2 SAE J2411 Tốc độ 125 Kb/s đến 1Mb/s 125 Kb/s 33.3 đến 83.3 Kb/s
Dominant [0] 3.25 V 1.5 V 4 V 1 V 4V
Recessive [1] 2.5 V 2.5 V 1.75V 3.25V 1.75V
Mức điện áp 5V 5V 5V
Cable 2 x 120 Ohm ở 2 đầu Mắc điện trở từng node Tương tự như CAN Low-speed Độ lệch điện áp Độ lệch tối thiểu là
2.0V (Tính từ 3.5V đến 1.5V) - Độ lệch của mức Dominant > 2.3 V - Recessive < 0.6 V Khơng có (do đường truyền 1
dây)
5.1.3 Nguyên lý hoạt động
CAN sử dụng CSMA / CD + AMP. Trước khi gửi thông điệp, nút CAN sẽ kiểm tra xem bus có bận khơng. Nó cũng sử dụng để phát hiện khả năng trùng lặp. Những phương thức này cũng tương tự như Ethernet.
Tuy nhiên, khi một mạng Ethernet phát hiện xung đột, cả hai nút gửi sẽ ngừng truyền. Sau đó, nó đợi một khoảng thời gian trễ ngẫu nhiên trước khi thử gửi lại. Điều này làm cho mạng Ethernet rất nhạy cảm với tải bus cao. Có thể giải quyết vấn đề này với nguyên tắc xác định quyền ưu tiên rất thông minh trong mạng CAN.
Nguyên tắc
Thông điệp dữ liệu được truyền từ bất kỳ nút nào trên bus CAN không chứa địa chỉ của nút truyền hoặc của bất kỳ nút nhận dự kiến nào.
111 Thay vào đó, nội dung của thơng điệp được gắn nhãn bởi một số nhận dạng (ID) là duy nhất trên toàn mạng. Tất cả các nút khác trên mạng đều nhận được thông điệp và mỗi nút thực hiện kiểm tra sự chấp nhận trên mã ID để xác định xem thơng điệp có liên quan đến nút đó hay khơng. Nếu thơng điệp có liên quan, nó sẽ được xử lý, nếu khơng thì nó bị bỏ qua.
Hình 5.5:Mơ hình phát - nhận tín hiệu của ECU thơng qua mạng CAN
5.1.4 Ưu điểm của CAN
Đơn giản, chi phí thấp: bus CAN chỉ có 2 dây giúp kết nối các module điều khiển với nhau dễ dàng hơn khi so sánh với cách làm truyền thống. Kèm theo đó là nhiều lợi ích về việc dễ lắp đặt và dễ sửa chữa, bảo trì khi có sự cố.
Tạo ra một giao thức chung để nhiều nhà cung cấp khác nhau có thể phát triển các module điều khiển tương thích với nhau
Tính ưu tiên của thông điệp (Prioritization of messages): mỗi thông điệp được truyền ra từ một nút (node) hay trạm (station) trên bus CAN đều có mức ưu tiên. Khi nhiều thơng điệp được truyền ra bus cùng lúc thì thơng điệp có mức ưu tiên cao nhất sẽ được truyền. Các thơng điệp có mức ưu tiên thấp hơn sẽ tạm dừng và được truyền lại khi bus rảnh. Việc xác định mức ưu tiên của thông điệp dựa trên cấu tạo (cấu trúc) thông điệp và cơ chế phân xử quy định trong chuẩn chuẩn CAN.
112 Cấu hình linh hoạt: cho phép thiết lập cấu hình thời gian bit, thời gian đồng bộ, độ dài dữ liệu truyền, dữ liệu nhận, …
Nhận dữ liệu đa điểm với sự đồng bộ thời gian: một thông điệp có thể được nhận bởi nhiều node khác nhau trong bus cùng lúc. Tất cả các node trên bus đều có thể thấy thơng điệp đang truyền trên bus, tùy vào cấu hình ở mỗi node mà node sẽ quyết định có chấp nhận thơng điệp này hay không.
Nhiều master (multimaster): Về mặt lý thuyết, CAN có thể liên kết tới 2032 thiết bị (giả sử một nút với một mã ID) trên một mạng duy nhất.
Phát hiện và báo hiệu lỗi: Mỗi thông điệp có kèm theo mã CRC để thực hiện kiểm tra lỗi. Nếu lỗi xuất hiện, node nhận sẽ bỏ qua thông điệp lỗi và truyền khung báo lỗi (Error frame) lên bus CAN. Mỗi node trong bus có bộ đếm quản lý lỗi truyền nhận riêng để xác định trạng thái lỗi của chính nó. Nếu lỗi xuất hiện q nhiều, một node có thể tự động ngắt khỏi bus. Ngồi ra cịn một số dạng lỗi khác có thể được phát hiện với chuẩn CAN.
Tự động truyền lại các thông điệp bị lỗi khi bus rảnh: Một thông điệp được truyền ra bus nếu bị lỗi thì sẽ khơng mất đi mà node truyền thơng điệp này sẽ giữ nó lại và tự động phát lại thông điệp này khi bus CAN rảnh cho đến khi thành công. Điều này giúp đảm bảo tính tồn vẹn dữ liệu trong bus
5.2 Q trình truyền nhận thơng tin giữa OBD II và CAN
5.2.1 Lớp vật lý của CAN
ISO 11898 định nghĩa 02 lớp Physical Layer và Data-link Layer:
- Physical Layer định nghĩa cách biểu diễn cũng như cách thu nhận bit 0 và 1, cách định thời và cách đồng bộ hóa.
- Data-link Layer lại được chia làm 02 lớp con nhỏ hơn là LLC và MAC nhằm định nghĩa Frame truyền và những nguyên tắc về quyền ưu tiên.
113 - Trạng thái Dominant của CAN được định nghĩa: Là trạng thái mà tại đó, giá trị điện áp của CAN bus được chủ động thay đổi bởi CAN node muốn truyền tín hiệu. Giá trị tương ứng của trạng thái này là 0.
- Trạng thái Recessive của CAN được định nghĩa: Là trạng thái mà tại đó, giá trị điện áp của CAN bus bị động trả về giá trị mặc định bởi termination resistance → Trạng thái Recessive chỉ xảy ra khi khơng có bất kì CAN node nào muốn truyền tín hiệu. Giá trị tương ứng của trạng thái này là 1.
Hình 5.6: Lớp vật lý của CAN High-speed và CAN Low-speed
Đối với CAN High-Speed và CAN Low-Speed, giá trị của 02 trạng thái Dominant và Recessive là hoàn toàn khác nhau, nhưng cách định nghĩa vẫn giống nhau.
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.
5.2.3 Giao tiếp giữa CAN và OBD II
OBD-II thực chất là một Protocol có Layer cao hơn so với CAN (cũng như 4 protocol còn lại mà OBD-II hoạt động) → Là một dạng Higher-Layer-Protocol. Điều này có nghĩa rằng khi sử dụng OBD-II on CAN, ta hồn tồn có được tồn bộ các cơ chế đã được định nghĩa bởi CAN.
ISO 15765 là một tiêu chuẩn được phát hành vào năm 2008 nhằm quy định các thiết lập về Physical Layer nhằm hỗ trợ cho OBD-II mà sau này đã được phổ biến rộng rãi.
OBD-II on CAN sẽ hoạt động như một yếu tố “kí sinh” theo CAN Frame.
Khi ta kết nối một thiết bị đọc OBD-II vào CAN Network và Capture Data giao tiếp, ta chỉ thấy CAN Raw Data chứ hồn tồn khơng phải Data OBD-II cho đến khi ta gửi một Request đúng để bắt đầu đọc OBD-II.
Một OBD-II on CAN message sẽ bao gồm 1 ID (11 bits – ID lấy từ CAN Frame) và 8 bytes data (64 bits). Các ID có dạng 7xx cho phần chẩn đốn. OBD-II Data (8 bytes) được chia thành các vùng khác nhau: [MODE] [PID] [DATA]
120
Hình 5.8:Cấu trúc của OBD-II Massage
Bảng 5.2: CácMode cơ bản của OBD II theo tiêu chuẩn ISO 15031
Mode Chức Năng
01 Hiển thị dữ liệu hiện tại. 02 Hiển thị dữ liệu tĩnh.
03 Hiển thị các mã lỗi DTC được lưu trữ.
04 Xóa thơng tin lỗi liên quan phát thải. Điều này bao gồm xóa các mã DTC đã lưu trữ và dữ liệu.
05 Kiểm tra và giám sát cảm biến oxy. 06 Kiểm tra và giám sát các hệ thống khác. 07 Hiển thị các mã lỗi DTC chờ xử lý
08 Điều khiển hoạt động của một hệ thống trên xe, hoặc các thiết bị. 09 Yêu cầu thông tin xe.
121
Cách truyền thông tin của Can bus
Ví dụ: Về thơng báo CAN u cầu/phản hồi cho PID 'tốc độ xe' với giá trị 50km/h
như sau:
Yêu cầu: 7DF 02 01 0D 55 55 55 55 55
Phản hồi: 7E8 03 41 0D 32 AA AA AA AA AA
Định danh: Đối với thông báo OBD II, định danh là chuẩn 11-bit và được sử
dụng để phân biệt giữa “thông báo yêu cầu” (ID 7DF) và “thông báo phản hồi” (ID 7E8 đến 7EF). Lưu ý rằng 7E8 thường sẽ là nơi động cơ chính hoặc ECU phản hồi tại.
Độ dài: Điều này chỉ phản ánh độ dài theo số byte của dữ liệu còn lại (03 đến 06).
Đối với ví dụ về tốc độ xe, nó là 02 cho u cầu (vì chỉ có 01 và 0D tn theo), trong khi đối với phản hồi, nó là 03 vì cả 41, 0D và 32 đều tuân theo.
Chế độ: Đối với các yêu cầu, giá trị này sẽ nằm trong khoảng từ 01-0A. Đối với