Chiếc ô tô của bạn cũng giống như một cơ thể người: CAN bus (Mạng vùng điều khiển) là hệ thống thần kinh, cho phép giao tiếp.
Đổi lại, ‘nút’ hoặc ‘đơn vị điều khiển điện tử’ (ECU) giống như các bộ phận của cơ thể, được kết nối với nhau thông qua CAN bus. Thông tin được cảm nhận bởi một bộ phận có thể được chia sẻ với bộ phận khác.
Trong hệ thống CAN bus trên ô tô, các ECU ví dụ: bộ phận điều khiển động cơ, túi khí, hệ thống âm thanh, v.v. Một chiếc ô tô hiện đại có thể có tới 70 ECU – và mỗi ECU có thể có thông tin cần được chia sẻ với các bộ phận khác của mạng.
CAN bus là gì?
Mạng vùng điều khiển (CAN bus) là một tiêu chuẩn bus mạnh mẽ được thiết kế để cho phép các bộ vi điều khiển và thiết bị giao tiếp với các ứng dụng của nhau mà không cần máy chủ. Nó là một giao thức dựa trên gói tin, được thiết kế ban đầu để ghép nối dây điện trong ô tô nhằm tiết kiệm đồng, nhưng nó cũng có thể được sử dụng trong nhiều bối cảnh khác. Đối với mỗi thiết bị, dữ liệu trong khung được truyền tuần tự nhưng theo cách sao cho nếu nhiều thiết bị truyền cùng lúc, thiết bị có mức ưu tiên cao nhất có thể tiếp tục trong khi các thiết bị khác lùi lại. Khung được nhận bởi tất cả các thiết bị, bao gồm cả thiết bị truyền.
Hệ thống CAN bus cho phép mỗi ECU giao tiếp với tất cả các ECU khác – mà không cần đi dây chuyên dụng phức tạp.
Cụ thể, một ECU có thể chuẩn bị và phát thông tin (ví dụ: dữ liệu cảm biến) thông qua CAN bus (bao gồm hai dây, CAN low và CAN high). Dữ liệu đã phát được chấp nhận bởi tất cả các ECU khác trên mạng CAN – và mỗi ECU sau đó có thể kiểm tra dữ liệu và quyết định nhận hay bỏ qua nó.
Lớp vật lý của CAN bus
Theo thuật ngữ kỹ thuật hơn, mạng vùng bộ điều khiển được mô tả bằng lớp liên kết dữ liệu và lớp vật lý. Trong trường hợp CAN tốc độ cao, ISO 11898-1 mô tả lớp liên kết dữ liệu, trong khi ISO 11898-2 mô tả lớp vật lý.
Lớp vật lý bus CAN xác định những thứ như loại cáp, mức tín hiệu điện, yêu cầu nút, trở kháng của cáp, v.v. Ví dụ, ISO 11898-2 quy định một số điều, bao gồm dưới đây:
- Tốc độ truyền: Các nút CAN phải được kết nối qua bus hai dây với tốc độ truyền lên đến 1 Mbit/s (Classical CAN) hoặc 5 Mbit/s (CAN FD)
- Chiều dài cáp: Chiều dài cáp CAN tối đa phải từ 500 mét (125 kbit/s) đến 40 mét (1 Mbit/s)
- Đầu cuối: Bus CAN phải được kết thúc đúng cách bằng cách sử dụng điện trở kết thúc bus CAN 120 Ohms ở mỗi đầu của bus
CAN tốc độ cao, CAN tốc độ thấp, LIN bus, …
- CAN bus tốc độ cao: Trọng tâm của bài viết này là CAN bus tốc độ cao (ISO 11898). Cho đến nay, nó là tiêu chuẩn CAN phổ biến nhất cho lớp vật lý, hỗ trợ tốc độ bit từ 40 kbit/s đến 1 Mbit/s (Classical CAN). Nó cung cấp hệ thống cáp đơn giản và được sử dụng trong thực tế tất cả các ứng dụng ô tô ngày nay. Nó cũng đóng vai trò là cơ sở cho một số giao thức lớp cao hơn như OBD2, J1939, NMEA 2000, CANopen, v.v. Thế hệ thứ hai của CAN được gọi là CAN FD (CAN với tốc độ dữ liệu linh hoạt – CAN with Flexible Data-rate).
- CAN bus tốc độ thấp: Tiêu chuẩn này cho phép tốc độ bit từ 40 kbit/s đến 125 kbit/s và cho phép giao tiếp CAN bus tiếp tục ngay cả khi có lỗi trên một trong hai dây – do đó nó còn được gọi là ‘Khả năng chịu lỗi CAN’. Trong hệ thống này, mỗi nút CAN có đầu cuối CAN của riêng nó.
- LIN bus: LIN bus là phần bổ sung chi phí thấp hơn cho mạng CAN bus, với ít khai thác hơn và các nút rẻ hơn. Các cụm LIN bus thường bao gồm một LIN chính hoạt động như một cổng vào và tối đa 16 nút phụ. Các trường hợp sử dụng điển hình bao gồm ví dụ: các chức năng không quan trọng của xe như điều hòa không khí, chức năng cửa, v.v.
- Mạng ethernet ô tô: Mạng này ngày càng được triển khai trong lĩnh vực ô tô để hỗ trợ các yêu cầu băng thông cao của ADAS (Hệ thống hỗ trợ người lái nâng cao), hệ thống thông tin giải trí, camera, v.v. Ethernet ô tô cung cấp tốc độ truyền dữ liệu cao hơn nhiều so với CAN bus, nhưng thiếu một số về các tính năng an toàn/hiệu suất của Classical CAN và CAN FD. Nhiều khả năng, những năm tới sẽ chứng kiến cả ethernet ô tô, CAN FD và CAN XL được sử dụng trong phát triển ô tô và công nghiệp mới.
4 lợi ích hàng đầu của CAN bus
Tiêu chuẩn CAN bus được sử dụng trên thực tế trên tất cả các phương tiện và nhiều loại máy do những lợi ích chính dưới đây:
Đơn giản và chi phí thấp
ECU giao tiếp thông qua một hệ thống CAN duy nhất thay vì thông qua các đường tín hiệu tương tự phức tạp trực tiếp – giảm lỗi, trọng lượng, hệ thống dây điện và chi phí.
Hoàn toàn tập trung
CAN bus cung cấp ‘một điểm vào’ để giao tiếp với tất cả các ECU mạng – cho phép chẩn đoán trung tâm, ghi dữ liệu và cấu hình.
Cực kỳ mạnh mẽ
Hệ thống mạnh mẽ đối với nhiễu điện và nhiễu điện từ – lý tưởng cho các ứng dụng quan trọng về an toàn (ví dụ: xe cộ).
Hiệu quả
Các khung CAN được ưu tiên theo ID để dữ liệu ưu tiên hàng đầu nhận được quyền truy cập bus ngay lập tức, mà không gây gián đoạn các khung khác
Tóm tắt lịch sử CAN bus
- Pre CAN: ECU ô tô dựa trên hệ thống dây điểm-điểm phức tạp
- 1986: Bosch phát triển giao thức CAN như một giải pháp
- 1991: Bosch xuất bản CAN 2.0 (CAN 2.0A: 11 bit, 2.0B: 29 bit)
- 1993: CAN được thông qua làm tiêu chuẩn quốc tế (ISO 11898)
- 2003: ISO 11898 trở thành một loạt tiêu chuẩn
- 2012: Bosch phát hành CAN FD 1.0 (tốc độ dữ liệu linh hoạt)
- 2015: Giao thức CAN FD được tiêu chuẩn hóa (ISO 11898-1)
- 2016: Lớp CAN vật lý cho tốc độ dữ liệu lên đến 5 Mbit/s được tiêu chuẩn hóa trong ISO 11898-2
Ngày nay, CAN là tiêu chuẩn trong ô tô (ô tô, xe tải, xe buýt, máy kéo, …), tàu thủy, máy bay, pin EV, máy móc và hơn thế nữa.
Tương lai của CAN bus
Trong tương lai, giao thức CAN bus sẽ vẫn phù hợp – mặc dù nó sẽ bị ảnh hưởng bởi các xu hướng chính:
- Nhu cầu về chức năng ngày càng nâng cao của phương tiện
- Sự nổi lên của điện toán đám mây
- Sự phát triển của Internet of Things (IoT) và các phương tiện được kết nối
- Tác động của xe tự hành
Đặc biệt, sự gia tăng của các phương tiện được kết nối (V2X) và đám mây sẽ dẫn đến sự phát triển nhanh chóng trong lĩnh vực viễn thông trên xe và các thiết bị ghi IoT CAN.
Đổi lại, việc đưa mạng CAN bus ‘trực tuyến’ cũng khiến các phương tiện gặp rủi ro về bảo mật – và có thể yêu cầu chuyển sang các giao thức CAN mới như CAN FD.
Sự gia tăng của CAN FD
Khi chức năng của xe được mở rộng, tải trên CAN bus cũng vậy. Để hỗ trợ điều này, CAN FD (Tốc độ dữ liệu linh hoạt) đã được thiết kế làm CAN bus ‘thế hệ tiếp theo’.
Cụ thể, CAN FD cung cấp ba lợi ích (so với Classical CAN):
- Nó cho phép tốc độ dữ liệu lên đến 8 Mbit/s (so với 1 Mbit/s)
- Nó cho phép tải dữ liệu lên đến 64 byte (so với 8 byte)
- Nó cho phép cải thiện bảo mật thông qua xác thực
Tóm lại, CAN FD tăng tốc độ và hiệu quả – và do đó nó đang được triển khai trên các phương tiện mới hơn. Điều này cũng sẽ thúc đẩy nhu cầu ngày càng tăng đối với bộ ghi dữ liệu IoT CAN FD.
CAN frame
Giao tiếp qua CAN bus được thực hiện thông qua khung CAN (frame).
Dưới đây là khung CAN tiêu chuẩn với định danh 11 bit (CAN 2.0A), đây là loại được sử dụng trong hầu hết các xe ô tô. Khung nhận dạng 29-bit mở rộng (CAN 2.0B) giống hệt nhau ngoại trừ ID dài hơn. Nó được sử dụng trong giao thức J1939 cho xe hạng nặng.
Lưu ý rằng ID CAN và Dữ liệu được đánh dấu – đây là những điều quan trọng khi ghi dữ liệu CAN bus, như chúng ta sẽ thấy bên dưới.
8 trường thông báo giao thức bus CAN
- SOF: Start of Frame là ‘dominant 0’ để nói với các nút khác rằng nút CAN có ý định nói chuyện
- ID: ID là mã nhận dạng khung – các giá trị thấp hơn có mức độ ưu tiên cao hơn
- RTR: Yêu cầu truyền từ xa cho biết liệu một nút gửi dữ liệu hay yêu cầu dữ liệu chuyên dụng từ một nút khác
- Control: Điều khiển chứa Bit mở rộng định danh (IDE) là ‘dominant 0’ cho 11 bit. Nó cũng chứa Mã độ dài dữ liệu 4 bit (DLC) chỉ định độ dài của byte dữ liệu được truyền (0 đến 8 byte)
- Data: Dữ liệu chứa các byte dữ liệu hay còn gọi là tải trọng, bao gồm các tín hiệu CAN có thể được trích xuất và giải mã để lấy thông tin
- CRC: Kiểm tra dự phòng theo chu kỳ được sử dụng để đảm bảo tính toàn vẹn của dữ liệu
- ACK: Khe ACK cho biết liệu nút đã xác nhận và nhận dữ liệu chính xác hay chưa
- EOF: EOF đánh dấu phần cuối của khung CAN
Ghi nhật ký dữ liệu CAN – ví dụ về trường hợp sử dụng
Có một số trường hợp sử dụng phổ biến để ghi các khung dữ liệu CAN bus:
Ghi nhật ký / truyền dữ liệu từ ô tô: Dữ liệu OBD2 từ ô tô có thể được sử dụng để giảm chi phí nhiên liệu, cải thiện khả năng lái xe, thử nghiệm các bộ phận nguyên mẫu và bảo hiểm
Viễn tin đội xe hạng nặng: Dữ liệu J1939 từ xe tải, xe buýt, máy kéo, v.v. có thể được sử dụng trong quản lý đội xe để giảm chi phí hoặc cải thiện độ an toàn
Bảo dưỡng dự đoán: Phương tiện và máy móc có thể được giám sát thông qua trình ghi IoT CAN trên đám mây để dự đoán và tránh sự cố
Hộp đen xe / máy: Bộ ghi CAN có thể đóng vai trò như một ‘hộp đen’ cho các phương tiện hoặc thiết bị, cung cấp dữ liệu cho xung đột hoặc chẩn đoán
Cách ghi dữ liệu CAN bus
Như đã đề cập, hai trường CAN rất quan trọng đối với ghi nhật ký CAN: CAN ID và Data (Dữ liệu).
Để ghi lại dữ liệu CAN, bạn cần có bộ ghi CAN. Điều này cho phép bạn ghi dữ liệu CAN có dấu thời gian vào thẻ SD. Trong một số trường hợp, bạn cần giao diện CAN để truyền dữ liệu tới PC.
Kết nối với CAN bus
Bước đầu tiên này là kết nối bộ ghi CAN của bạn với CAN bus của bạn. Thông thường, điều này liên quan đến việc sử dụng cáp bộ điều hợp:
- Ô tô: Trong hầu hết các ô tô, bạn chỉ cần sử dụng bộ chuyển đổi OBD2 để kết nối. Trong hầu hết các ô tô, điều này sẽ cho phép bạn ghi dữ liệu CAN thô, cũng như thực hiện các yêu cầu OBD2 / UDS để ghi dữ liệu OBD2 / UDS
- Xe hạng nặng: Để ghi dữ liệu J1939 từ xe tải, máy xúc, máy kéo, v.v., bạn thường có thể kết nối với J1939 CAN bus thông qua cáp kết nối J1939 tiêu chuẩn (deutsch 9 chân)
- Hàng hải: Hầu hết các tàu / thuyền sử dụng giao thức NMEA 2000 và cho phép kết nối thông qua bộ điều hợp M12 để ghi dữ liệu hàng hải
- CANopen: Để ghi nhật ký CANopen, bạn thường có thể sử dụng trực tiếp đầu nối CiA 303-1 DB9, tùy chọn với cáp mở rộng CAN bus
- Không tiếp xúc: Nếu không có đầu nối, giải pháp điển hình là sử dụng đầu đọc CAN không tiếp xúc – ví dụ: CANCrocodile. Điều này cho phép bạn ghi dữ liệu trực tiếp từ dây dẫn xoắn CAN thô mà không cần kết nối trực tiếp với CAN bus (thường hữu ích cho các mục đích bảo hành)
- Khác: Trong thực tế, vô số đầu nối khác được sử dụng và thường bạn sẽ cần tạo một bộ điều hợp CAN bustùy chỉnh
Khi bạn đã xác định đúng đầu nối và xác minh đầu ra, bạn có thể kết nối bộ ghi CAN của mình để bắt đầu ghi dữ liệu. Đối với CANedge/CLX000, tốc độ truyền CAN được tự động phát hiện và thiết bị sẽ bắt đầu ghi dữ liệu CAN thô ngay lập tức.
Ví dụ về dữ liệu CAN thô (J1939)
Dưới đây là ví dụ CSV về khung CAN thô được ghi lại từ một xe tải hạng nặng bằng giao thức J1939. Lưu ý rằng ID CAN và byte dữ liệu ở định dạng thập lục phân:
Mở xem tệp dữ liệu J1939-CAN
Cách giải mã dữ liệu CAN thô thành ‘giá trị vật lý’
Nếu bạn xem lại mẫu dữ liệu bus CAN thô ở trên, bạn có thể sẽ nhận thấy điều gì đó: Dữ liệu bus CAN thô không thể đọc được.
Để diễn giải nó, bạn cần giải mã các khung CAN thành các giá trị kỹ thuật được chia tỷ lệ hay còn gọi là giá trị vật lý (km/h, degC, …).
Dưới đây, trình bày từng bước cách hoạt động của điều này:
Trích xuất tín hiệu CAN từ khung CAN thô
Mỗi khung CAN trên bus chứa một số tín hiệu CAN (tham số) bên trong các gói dữ liệu CAN. Ví dụ: khung CAN có CAN ID cụ thể có thể mang dữ liệu cho ví dụ: 2 tín hiệu CAN .
Để trích xuất giá trị vật lý của tín hiệu CAN, thông tin sau là bắt buộc:
- Bit start: Tín hiệu bắt đầu ở bit nào
- Bit length: Độ dài của tín hiệu tính bằng bit
- Offset: Giá trị bù đắp giá trị tín hiệu
- Scale: Giá trị nhân giá trị tín hiệu
Để trích xuất tín hiệu CAN, bạn ‘khắc ra’ các bit có liên quan, lấy giá trị thập phân và thực hiện chia tỷ lệ tuyến tính: physical_value = offset + scale * raw_value_decimal
Thách thức của dữ liệu CAN độc quyền
Thông thường, “quy tắc giải mã” CAN bus là độc quyền và không dễ dàng có sẵn (ngoại trừ OEM, tức là Nhà sản xuất thiết bị gốc). Có một số giải pháp cho vấn đề này khi bạn không phải là OEM:
- Ghi dữ liệu J1939: Nếu bạn đang ghi dữ liệu thô từ các phương tiện vận tải hạng nặng (xe tải, máy kéo, …), bạn thường ghi dữ liệu J1939. Điều này được tiêu chuẩn hóa giữa các thương hiệu.
- Ghi dữ liệu OBD2/UDS: Nếu bạn cần ghi dữ liệu từ ô tô, bạn thường có thể yêu cầu dữ liệu OBD2/UDS, đây là một giao thức được chuẩn hóa trên ô tô.
- Sử dụng tệp DBC công khai: Đối với ô tô, cơ sở dữ liệu trực tuyến tồn tại trong đó những cơ sở dữ liệu khác đã thiết kế ngược lại một số dữ liệu CAN độc quyền.
- Dữ liệu kỹ sư đảo ngược: Bạn cũng có thể cố gắng tự đảo ngược dữ liệu bằng cách sử dụng bộ dò tìm CAN bus, mặc dù việc này có thể tốn thời gian và khó khăn.
- Sử dụng mô-đun cảm biến: Trong một số trường hợp, bạn có thể cần dữ liệu cảm biến không có sẵn trên CAN bus (hoặc khó thiết kế ngược). Tại đây, có thể sử dụng các mô-đun cảm biến thành CAN như dòng CANmod. Bạn có thể tích hợp các mô-đun như vậy với CAN bus của mình hoặc sử dụng chúng làm tiện ích bổ sung cho bộ ghi CAN của bạn để thêm dữ liệu như GNSS/IMU hoặc dữ liệu nhiệt độ.
- Hợp tác với OEM: Trong một số trường hợp, OEM sẽ cung cấp các quy tắc giải mã như một phần của thông số kỹ thuật hệ thống CAN bus. Trong các trường hợp khác, bạn có thể lấy thông tin qua quan hệ đối tác.