Kỹ thuật

Góc kỹ thuật

2020.08.04
Truyền thông CN

Giao thức CAN - Phần 4: Phân tích dữ liệu CAN và các vấn đề thường gặp với dữ liệu CAN

Trong những phần trước chúng tôi đã giải thích các kiến thức cơ bản như giao thức CAN cũng như đi vào cơ chế tầng vật lý của CAN để các bạn có kiến thức tổng quan về cách thức làm việc và thiết lập để giao tiếp với các thiết bị CAN.

Trong phần này chúng tôi sẽ giải thích về việc phân tích dữ liệu CAN và những vấn đề xảy ra khi giao tiếp với CAN trong thực tế.

1. Phân tích dữ liệu CAN

Một trong những việc cần thiết sẽ được thực hiện nhiều lần trong quá trình phát triển sẽ là "phân tích nội dung tín hiệu truyền dẫn". Ở đây, chúng tôi giải thích quy trình cần thiết cho việc phân tích dữ liệu CAN và đưa ra một số ví dụ cụ thể.

Trước tiên, hãy xem xét, phân tích nội dung của tín hiệu truyền dẫn bằng thiết bị đo lường thông dụng.

Việc phân tích nội dung tín hiệu truyền dẫn với thiết bị đo thông dụng bắt đầu bằng việc ghi lại các dạng sóng giao tiếp (Hình 1). Sau đó, tính toán độ dài 1 bit từ tốc độ truyền dẫn, sau đó chuyển đổi toàn bộ dữ liệu theo định dạng thập lục phân (Hex) (Hình 2) và so sánh với thông số kỹ thuật đã được thiết lập trước đó.

CAN P4-pic1

Hình 1. Dạng sóng của giao thức CAN

CAN P4-pic2

Hình 2. Chuyển đổi bit

Khi không có thiết bị đo mạng CAN trên xe, thiết bị đo lường thông dụng thường được sử dụng. Tuy nhiên, mặc dù có thể kiểm tra các đặc tính tín hiệu bằng thiết bị đo thông dụng như vậy, nhưng rất khó để phân tích dữ liệu được truyền và cập nhật trong chu kỳ chỉ có khoảng 10ms theo thời gian thực.

Mặt khác, các thiết bị đo mạng CAN trên xe hiện chủ yếu dựa trên phần cứng CAN hoặc các thiết bị kết hợp phần mềm chạy trên PC đóng vai trò là giao diện và được dùng phổ biến hơn so với các thiết bị đo thông dụng. Dữ liệu có thể được lấy một cách dễ dàng. Tuy nhiên, nó giống với thiết bị đo lường thông dụng ở chỗ dạng sóng giao tiếp và thông số kỹ thuật giao tiếp phải được so sánh.

CAN Database hay Cơ sở dữ liệu CAN được sử dụng như một cơ chế để so sánh các dạng sóng giao tiếp và thông số kỹ thuật giao tiếp như vậy (Hình 3). Điều này cho phép thiết bị tự động phân tích và cập nhật dữ liệu theo thời gian thực. Một cơ sở dữ liệu CAN cũng có thể sử dụng chung khi phát triển ứng dụng với nhiều người, giảm thiểu hệ quả của sự khác nhau trong việc hiểu từng thông số kỹ thuật. Ngoài ra, có thể thay đổi thông số kỹ thuật của một thiết bị đo mạng CAN trong xe chỉ bằng cách thay đổi cơ sở dữ liệu CAN hay sử dụng ngay môi trường mà bạn đã quen thuộc để phát triển những ứng dụng khác nhau.

Quan sát một cơ sở dữ liệu CAN được biểu diễn trong NI-XNET Database Editor toolkit.

 Hình 3. Cấu trúc của một CAN database

        Về cơ bản, cơ sở dữ liệu CAN thay thế các thông số kỹ thuật giao tiếp CAN bằng định dạng có thể đọc được bằng các dụng cụ đo và có cùng nội dung với thông số kỹ thuật giao tiếp.
Trong cơ sở dữ liệu CAN, các khung dữ liệu CAN thường được biểu thị dưới dạng Message. Ngoài ra, người thiết kế có thể tự do thiết lập trường dữ liệu (tối đa 8 byte) trong khung dữ liệu như dữ liệu 1 byte, dữ liệu 2 byte, dữ liệu 1 bit, v.v. Những dữ liệu riêng lẻ này thường được gọi chung là các Signal (Hình 4).

CAN P4-pic4

Hình 4: Mô tả một tín hiệu trong CAN Database

        Trong Message, có thể định nghĩa các thông tin của Message như: ID, Name, Payload Length,... (Hình 3).
Trong Signal, có thể  định nghĩa thông tin của tín hiệu như: Name, Start Bit, Num Bits, Factor value, Offset value,... (Hình 4).
        Dựa trên cơ sở dữ liệu này người phát triển phân tích và sử dụng thông tin của nó để chuyển đổi các tín hiệu được mã hóa thành giá trị vật lý của chúng.
        Tuy nhiên, cần lưu ý rằng trong hầu hết các trường hợp, nội dung các cơ sở dữ liệu CAN là khác nhau, tùy theo thông số kỹ thuật của các nhà sản xuất.

2. Các sự cố xảy ra khi dùng CAN

2.1. Ví dụ về việc sử dụng CAN

Hiện tại, CAN được sử dụng trong các bộ phận khác nhau như trong hệ thống truyền động hay phần thân xe.

Vậy mỗi ECU được sử dụng như thế nào?

Như bạn đã biết, công dụng chính của CAN là trao đổi dữ liệu giữa các ECU (giao tiếp giữa các ECU). Có nhiều phương thức giao tiếp khác nhau, chẳng hạn như truyền dữ liệu theo chu kỳ và truyền khi có có sự kiện xảy ra. Tuy nhiên, nếu người ta coi rằng việc truyền theo chu kỳ cũng là một sự kiện do bộ đếm thời gian bên trong ECU, có thể nói rằng CAN về cơ bản là truyền dựa trên sự kiện.

Cho đến nay, CAN chủ yếu được sử dụng cho việc trao đổi thông tin giữa các ECU, nhưng bây giờ nó đã trở nên phổ biến đến mức có thể nói là cơ sở của các mạng trên xe. Việc sử dụng nó cũng ngày càng phổ biến hơn cho các mục đích khác, nơi có sự trao đổi dữ liệu giữa các ECU.

Ví dụ: Khi chẩn đoán lỗi trong mỗi ECU, thay vì sử dụng giao tiếp thông thường, có thể sử dụng:

+ Diag On CAN (giao tiếp chẩn đoán): Trao đổi thông tin chẩn đoán của từng ECU bằng giao thức CAN.

CAN P4-pic5

Hình 5. Diag on CAN

+ XCP (Universal Measurement and Calibration Protocol) hoặc CCP(CAN Calibration Protocol) đã được cải thiện và tích hợp, và có thể được sử dụng với các giao thức khác ngoài CAN. Có thể đo và hiệu chỉnh bằng cách sử dụng giao tiếp CAN.

CAN P4-pic6

Hình 6.XCP

Tuy nhiên, việc sử dụng CAN trong các ứng dụng khác nhau này và việc tăng số lượng ECU ảnh hưởng đến tốc độ truyền tải trên Bus. Do đó, CAN hiện không sử dụng một kênh để liên lạc mà sử dụng hai hoặc nhiều kênh và áp dụng phương thức giao tiếp CAN được gửi đến các kênh khác nhau khi cần.

Ngoài CAN đa kênh này, việc có nhiều giao thức giao tiếp khác nhau được sử dụng trong cùng một phương tiện đang gia tăng. Ví dụ như LIN (Local Interconnect Network) và FlexRay. Cụ thể, LIN được sử dụng trong phạm vi đo các cảm biến và bộ truyền động, vì nó có chi phí rẻ hơn so với CAN còn FlexRay được sử dụng trong các lĩnh vực yêu cầu thời gian thực thay vì dựa trên sự kiện giống như CAN.

2.2. Ví dụ về các vấn đề với CAN

Tiếp theo, sẽ là một số các vấn đề có thể xảy ra khi sử dụng CAN và một số mẹo xử lý.

  • Vấn đề 1: Chu kỳ giao tiếp được thiết lập trong thông số kỹ thuật khác với chu kỳ giao tiếp thực tế.

CAN sử dụng cơ chế CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) để tránh xung đột xảy ra khi các Node truyền tín hiệu trên cùng một Bus. Nó sẽ chờ tới lượt truyền khi các khung dữ liệu từ các Node khác đang chạy trên CAN Bus. Vì lý do này, có nhiều trường hợp việc truyền dữ liệu không thể được thực hiện theo chu kỳ đã thiết lập một cách chính xác (thông số kỹ thuật giao tiếp thường mô tả một phạm vi cho phép).

  • Vấn đề 2: Không thể giao tiếp.

Trường hợp này nguyên nhân có thể là trở kháng đầu cuối không được kết nối với tầng vật lý trong giai đoạn mới bắt đầu phát triển. Ngoài ra, trạng thái Bus tắt (Bus-off) do ngắt kết nối hoặc do lỗi cũng có khả năng xảy ra.

  • Vấn đề 3: Không thể đo bằng thiết bị đo

Trường hợp này nguyên nhân có thể là các bước trong cài đặt cơ bản: tốc độ giao tiếp, đặc điểm tín hiệu,…

  • Vấn đề 4: Khung lỗi nhiều lần hoặc lỗi xảy ra khi giao tiếp bình thường

Nếu tần suất sử dụng CAN Bus (Bus Load) cao, có thể dẫn đến khả năng tín hiệu bị truyền lại nhiều lần, việc phân xử quyền ưu tiên cũng xảy ra thường xuyên. Cũng có thể là không có xác nhận nào được trả về từ Node nhận do sự cố ở tầng vật lý.

  • Vấn đề 5: Xảy ra Bus-off

Trường hợp này Bus-off do lỗi truyền nhiều lần, cần kiểm tra các yếu tố vật lý như dây nối trước tiên.

Các thông tin liên quan